summaryrefslogtreecommitdiffstats
path: root/src/grep/po
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-11 08:21:29 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-11 08:21:29 +0000
commit29cd838eab01ed7110f3ccb2e8c6a35c8a31dbcc (patch)
tree63ef546b10a81d461e5cf5ed9e98a68cd7dee1aa /src/grep/po
parentInitial commit. (diff)
downloadkbuild-29cd838eab01ed7110f3ccb2e8c6a35c8a31dbcc.tar.xz
kbuild-29cd838eab01ed7110f3ccb2e8c6a35c8a31dbcc.zip
Adding upstream version 1:0.1.9998svn3589+dfsg.upstream/1%0.1.9998svn3589+dfsg
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r--src/grep/po/LINGUAS43
-rw-r--r--src/grep/po/Makefile.in.in453
-rw-r--r--src/grep/po/Makevars67
-rw-r--r--src/grep/po/POTFILES.in33
-rw-r--r--src/grep/po/Rules-quot47
-rw-r--r--src/grep/po/af.gmobin0 -> 1171 bytes
-rw-r--r--src/grep/po/af.po847
-rw-r--r--src/grep/po/be.gmobin0 -> 1439 bytes
-rw-r--r--src/grep/po/be.po834
-rw-r--r--src/grep/po/bg.gmobin0 -> 22669 bytes
-rw-r--r--src/grep/po/bg.po769
-rw-r--r--src/grep/po/boldquot.sed10
-rw-r--r--src/grep/po/ca.gmobin0 -> 12532 bytes
-rw-r--r--src/grep/po/ca.po879
-rw-r--r--src/grep/po/cs.gmobin0 -> 17859 bytes
-rw-r--r--src/grep/po/cs.po989
-rw-r--r--src/grep/po/da.gmobin0 -> 13489 bytes
-rw-r--r--src/grep/po/da.po830
-rw-r--r--src/grep/po/de.gmobin0 -> 17133 bytes
-rw-r--r--src/grep/po/de.po758
-rw-r--r--src/grep/po/el.gmobin0 -> 3746 bytes
-rw-r--r--src/grep/po/el.po866
-rw-r--r--src/grep/po/en@boldquot.header25
-rw-r--r--src/grep/po/en@quot.header22
-rw-r--r--src/grep/po/eo.gmobin0 -> 16844 bytes
-rw-r--r--src/grep/po/eo.po952
-rw-r--r--src/grep/po/es.gmobin0 -> 7632 bytes
-rw-r--r--src/grep/po/es.po951
-rw-r--r--src/grep/po/et.gmobin0 -> 16094 bytes
-rw-r--r--src/grep/po/et.po735
-rw-r--r--src/grep/po/eu.gmobin0 -> 1278 bytes
-rw-r--r--src/grep/po/eu.po831
-rw-r--r--src/grep/po/fi.gmobin0 -> 17251 bytes
-rw-r--r--src/grep/po/fi.po982
-rw-r--r--src/grep/po/fr.gmobin0 -> 16316 bytes
-rw-r--r--src/grep/po/fr.po781
-rw-r--r--src/grep/po/ga.gmobin0 -> 10510 bytes
-rw-r--r--src/grep/po/ga.po957
-rw-r--r--src/grep/po/gl.gmobin0 -> 16215 bytes
-rw-r--r--src/grep/po/gl.po1000
-rw-r--r--src/grep/po/grep.pot636
-rw-r--r--src/grep/po/he.gmobin0 -> 1138 bytes
-rw-r--r--src/grep/po/he.po813
-rw-r--r--src/grep/po/hr.gmobin0 -> 17302 bytes
-rw-r--r--src/grep/po/hr.po976
-rw-r--r--src/grep/po/hu.gmobin0 -> 12671 bytes
-rw-r--r--src/grep/po/hu.po838
-rw-r--r--src/grep/po/id.gmobin0 -> 16709 bytes
-rw-r--r--src/grep/po/id.po749
-rw-r--r--src/grep/po/insert-header.sin23
-rw-r--r--src/grep/po/it.gmobin0 -> 15988 bytes
-rw-r--r--src/grep/po/it.po755
-rw-r--r--src/grep/po/ja.gmobin0 -> 11404 bytes
-rw-r--r--src/grep/po/ja.po1445
-rw-r--r--src/grep/po/ko.gmobin0 -> 18276 bytes
-rw-r--r--src/grep/po/ko.po749
-rw-r--r--src/grep/po/ky.gmobin0 -> 1518 bytes
-rw-r--r--src/grep/po/ky.po891
-rw-r--r--src/grep/po/lt.gmobin0 -> 1384 bytes
-rw-r--r--src/grep/po/lt.po867
-rw-r--r--src/grep/po/nb.gmobin0 -> 16769 bytes
-rw-r--r--src/grep/po/nb.po925
-rw-r--r--src/grep/po/nl.gmobin0 -> 17704 bytes
-rw-r--r--src/grep/po/nl.po900
-rw-r--r--src/grep/po/pa.gmobin0 -> 5084 bytes
-rw-r--r--src/grep/po/pa.po708
-rw-r--r--src/grep/po/pl.gmobin0 -> 17594 bytes
-rw-r--r--src/grep/po/pl.po756
-rw-r--r--src/grep/po/pt.gmobin0 -> 16703 bytes
-rw-r--r--src/grep/po/pt.po953
-rw-r--r--src/grep/po/pt_BR.gmobin0 -> 16503 bytes
-rw-r--r--src/grep/po/pt_BR.po966
-rw-r--r--src/grep/po/quot.sed6
-rw-r--r--src/grep/po/remove-potcdate.sin19
-rw-r--r--src/grep/po/ro.gmobin0 -> 14257 bytes
-rw-r--r--src/grep/po/ro.po940
-rw-r--r--src/grep/po/ru.gmobin0 -> 22201 bytes
-rw-r--r--src/grep/po/ru.po876
-rw-r--r--src/grep/po/sk.gmobin0 -> 17168 bytes
-rw-r--r--src/grep/po/sk.po944
-rw-r--r--src/grep/po/sl.gmobin0 -> 10177 bytes
-rw-r--r--src/grep/po/sl.po1014
-rw-r--r--src/grep/po/sr.gmobin0 -> 19902 bytes
-rw-r--r--src/grep/po/sr.po825
-rw-r--r--src/grep/po/stamp-po1
-rw-r--r--src/grep/po/sv.gmobin0 -> 16671 bytes
-rw-r--r--src/grep/po/sv.po959
-rw-r--r--src/grep/po/th.gmobin0 -> 16907 bytes
-rw-r--r--src/grep/po/th.po788
-rw-r--r--src/grep/po/tr.gmobin0 -> 1249 bytes
-rw-r--r--src/grep/po/tr.po816
-rw-r--r--src/grep/po/uk.gmobin0 -> 22750 bytes
-rw-r--r--src/grep/po/uk.po772
-rw-r--r--src/grep/po/vi.gmobin0 -> 15706 bytes
-rw-r--r--src/grep/po/vi.po864
-rw-r--r--src/grep/po/zh_CN.gmobin0 -> 15229 bytes
-rw-r--r--src/grep/po/zh_CN.po912
-rw-r--r--src/grep/po/zh_TW.gmobin0 -> 16228 bytes
-rw-r--r--src/grep/po/zh_TW.po918
99 files changed, 39265 insertions, 0 deletions
diff --git a/src/grep/po/LINGUAS b/src/grep/po/LINGUAS
new file mode 100644
index 0000000..66177cf
--- /dev/null
+++ b/src/grep/po/LINGUAS
@@ -0,0 +1,43 @@
+af
+be
+bg
+ca
+cs
+da
+de
+el
+eo
+es
+et
+eu
+fi
+fr
+ga
+gl
+he
+hr
+hu
+id
+it
+ja
+ko
+ky
+lt
+nb
+nl
+pa
+pl
+pt
+pt_BR
+ro
+ru
+sk
+sl
+sr
+sv
+th
+tr
+uk
+vi
+zh_CN
+zh_TW
diff --git a/src/grep/po/Makefile.in.in b/src/grep/po/Makefile.in.in
new file mode 100644
index 0000000..fce63a6
--- /dev/null
+++ b/src/grep/po/Makefile.in.in
@@ -0,0 +1,453 @@
+# Makefile for PO directory in any package using GNU gettext.
+# Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+#
+# This file can be copied and used freely without restrictions. It can
+# be used in projects which are not available under the GNU General Public
+# License but which still want to provide support for the GNU gettext
+# functionality.
+# Please note that the actual code of GNU gettext is covered by the GNU
+# General Public License and is *not* in the public domain.
+#
+# Origin: gettext-0.18.2
+GETTEXT_MACRO_VERSION = 0.18
+
+PACKAGE = @PACKAGE@
+VERSION = @VERSION@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+
+SHELL = /bin/sh
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+datarootdir = @datarootdir@
+datadir = @datadir@
+localedir = @localedir@
+gettextsrcdir = $(datadir)/gettext/po
+
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+
+# We use $(mkdir_p).
+# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as
+# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions,
+# @install_sh@ does not start with $(SHELL), so we add it.
+# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined
+# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake
+# versions, $(mkinstalldirs) and $(install_sh) are unused.
+mkinstalldirs = $(SHELL) @install_sh@ -d
+install_sh = $(SHELL) @install_sh@
+MKDIR_P = @MKDIR_P@
+mkdir_p = @mkdir_p@
+
+GMSGFMT_ = @GMSGFMT@
+GMSGFMT_no = @GMSGFMT@
+GMSGFMT_yes = @GMSGFMT_015@
+GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT))
+MSGFMT_ = @MSGFMT@
+MSGFMT_no = @MSGFMT@
+MSGFMT_yes = @MSGFMT_015@
+MSGFMT = $(MSGFMT_$(USE_MSGCTXT))
+XGETTEXT_ = @XGETTEXT@
+XGETTEXT_no = @XGETTEXT@
+XGETTEXT_yes = @XGETTEXT_015@
+XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT))
+MSGMERGE = msgmerge
+MSGMERGE_UPDATE = @MSGMERGE@ --update
+MSGINIT = msginit
+MSGCONV = msgconv
+MSGFILTER = msgfilter
+
+POFILES = @POFILES@
+GMOFILES = @GMOFILES@
+UPDATEPOFILES = @UPDATEPOFILES@
+DUMMYPOFILES = @DUMMYPOFILES@
+DISTFILES.common = Makefile.in.in remove-potcdate.sin \
+$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3)
+DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \
+$(POFILES) $(GMOFILES) \
+$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
+
+POTFILES = \
+
+CATALOGS = @CATALOGS@
+
+# Makevars gets inserted here. (Don't remove this line!)
+
+.SUFFIXES:
+.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update
+
+.po.mo:
+ @echo "$(MSGFMT) -c -o $@ $<"; \
+ $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
+
+.po.gmo:
+ @lang=`echo $* | sed -e 's,.*/,,'`; \
+ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+ echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \
+ cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
+
+.sin.sed:
+ sed -e '/^#/d' $< > t-$@
+ mv t-$@ $@
+
+
+all: all-@USE_NLS@
+
+all-yes: stamp-po
+all-no:
+
+# Ensure that the gettext macros and this Makefile.in.in are in sync.
+CHECK_MACRO_VERSION = \
+ test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \
+ || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \
+ exit 1; \
+ }
+
+# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no
+# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because
+# we don't want to bother translators with empty POT files). We assume that
+# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty.
+# In this case, stamp-po is a nop (i.e. a phony target).
+
+# stamp-po is a timestamp denoting the last time at which the CATALOGS have
+# been loosely updated. Its purpose is that when a developer or translator
+# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS,
+# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent
+# invocations of "make" will do nothing. This timestamp would not be necessary
+# if updating the $(CATALOGS) would always touch them; however, the rule for
+# $(POFILES) has been designed to not touch files that don't need to be
+# changed.
+stamp-po: $(srcdir)/$(DOMAIN).pot
+ @$(CHECK_MACRO_VERSION)
+ test ! -f $(srcdir)/$(DOMAIN).pot || \
+ test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES)
+ @test ! -f $(srcdir)/$(DOMAIN).pot || { \
+ echo "touch stamp-po" && \
+ echo timestamp > stamp-poT && \
+ mv stamp-poT stamp-po; \
+ }
+
+# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
+# otherwise packages like GCC can not be built if only parts of the source
+# have been downloaded.
+
+# This target rebuilds $(DOMAIN).pot; it is an expensive operation.
+# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed.
+# The determination of whether the package xyz is a GNU one is based on the
+# heuristic whether some file in the top level directory mentions "GNU xyz".
+# If GNU 'find' is available, we avoid grepping through monster files.
+$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
+ if { if (LC_ALL=C find --version) 2>/dev/null | grep GNU >/dev/null; then \
+ LC_ALL=C find -L $(top_srcdir) -maxdepth 1 -type f -size -10000000c -exec grep 'GNU @PACKAGE@' /dev/null '{}' ';' 2>/dev/null; \
+ else \
+ LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null; \
+ fi; \
+ } | grep -v 'libtool:' >/dev/null; then \
+ package_gnu='GNU '; \
+ else \
+ package_gnu=''; \
+ fi; \
+ if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \
+ msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \
+ else \
+ msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \
+ fi; \
+ case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \
+ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
+ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
+ --files-from=$(srcdir)/POTFILES.in \
+ --copyright-holder='$(COPYRIGHT_HOLDER)' \
+ --msgid-bugs-address="$$msgid_bugs_address" \
+ ;; \
+ *) \
+ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
+ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
+ --files-from=$(srcdir)/POTFILES.in \
+ --copyright-holder='$(COPYRIGHT_HOLDER)' \
+ --package-name="$${package_gnu}@PACKAGE@" \
+ --package-version='@VERSION@' \
+ --msgid-bugs-address="$$msgid_bugs_address" \
+ ;; \
+ esac
+ test ! -f $(DOMAIN).po || { \
+ if test -f $(srcdir)/$(DOMAIN).pot; then \
+ sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
+ sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \
+ if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \
+ rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \
+ else \
+ rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \
+ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
+ fi; \
+ else \
+ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
+ fi; \
+ }
+
+# This rule has no dependencies: we don't need to update $(DOMAIN).pot at
+# every "make" invocation, only create it when it is missing.
+# Only "make $(DOMAIN).pot-update" or "make dist" will force an update.
+$(srcdir)/$(DOMAIN).pot:
+ $(MAKE) $(DOMAIN).pot-update
+
+# This target rebuilds a PO file if $(DOMAIN).pot has changed.
+# Note that a PO file is not touched if it doesn't need to be changed.
+$(POFILES): $(srcdir)/$(DOMAIN).pot
+ @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
+ if test -f "$(srcdir)/$${lang}.po"; then \
+ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+ echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \
+ cd $(srcdir) \
+ && { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
+ $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \
+ *) \
+ $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot;; \
+ esac; \
+ }; \
+ else \
+ $(MAKE) $${lang}.po-create; \
+ fi
+
+
+install: install-exec install-data
+install-exec:
+install-data: install-data-@USE_NLS@
+ if test "$(PACKAGE)" = "gettext-tools"; then \
+ $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
+ for file in $(DISTFILES.common) Makevars.template; do \
+ $(INSTALL_DATA) $(srcdir)/$$file \
+ $(DESTDIR)$(gettextsrcdir)/$$file; \
+ done; \
+ for file in Makevars; do \
+ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
+ done; \
+ else \
+ : ; \
+ fi
+install-data-no: all
+install-data-yes: all
+ @catalogs='$(CATALOGS)'; \
+ for cat in $$catalogs; do \
+ cat=`basename $$cat`; \
+ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+ dir=$(localedir)/$$lang/LC_MESSAGES; \
+ $(mkdir_p) $(DESTDIR)$$dir; \
+ if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
+ $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
+ echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
+ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
+ if test -n "$$lc"; then \
+ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
+ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
+ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
+ for file in *; do \
+ if test -f $$file; then \
+ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
+ fi; \
+ done); \
+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+ else \
+ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
+ :; \
+ else \
+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
+ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+ fi; \
+ fi; \
+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+ ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
+ ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
+ cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+ echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \
+ fi; \
+ done; \
+ done
+
+install-strip: install
+
+installdirs: installdirs-exec installdirs-data
+installdirs-exec:
+installdirs-data: installdirs-data-@USE_NLS@
+ if test "$(PACKAGE)" = "gettext-tools"; then \
+ $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
+ else \
+ : ; \
+ fi
+installdirs-data-no:
+installdirs-data-yes:
+ @catalogs='$(CATALOGS)'; \
+ for cat in $$catalogs; do \
+ cat=`basename $$cat`; \
+ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+ dir=$(localedir)/$$lang/LC_MESSAGES; \
+ $(mkdir_p) $(DESTDIR)$$dir; \
+ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
+ if test -n "$$lc"; then \
+ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
+ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
+ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
+ for file in *; do \
+ if test -f $$file; then \
+ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
+ fi; \
+ done); \
+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+ else \
+ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
+ :; \
+ else \
+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
+ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+ fi; \
+ fi; \
+ fi; \
+ done; \
+ done
+
+# Define this as empty until I found a useful application.
+installcheck:
+
+uninstall: uninstall-exec uninstall-data
+uninstall-exec:
+uninstall-data: uninstall-data-@USE_NLS@
+ if test "$(PACKAGE)" = "gettext-tools"; then \
+ for file in $(DISTFILES.common) Makevars.template; do \
+ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
+ done; \
+ else \
+ : ; \
+ fi
+uninstall-data-no:
+uninstall-data-yes:
+ catalogs='$(CATALOGS)'; \
+ for cat in $$catalogs; do \
+ cat=`basename $$cat`; \
+ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+ for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \
+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+ done; \
+ done
+
+check: all
+
+info dvi ps pdf html tags TAGS ctags CTAGS ID:
+
+mostlyclean:
+ rm -f remove-potcdate.sed
+ rm -f stamp-poT
+ rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
+ rm -fr *.o
+
+clean: mostlyclean
+
+distclean: clean
+ rm -f Makefile Makefile.in POTFILES *.mo
+
+maintainer-clean: distclean
+ @echo "This command is intended for maintainers to use;"
+ @echo "it deletes files that may require special tools to rebuild."
+ rm -f stamp-po $(GMOFILES)
+
+distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
+dist distdir:
+ $(MAKE) update-po
+ @$(MAKE) dist2
+# This is a separate target because 'update-po' must be executed before.
+dist2: stamp-po $(DISTFILES)
+ dists="$(DISTFILES)"; \
+ if test "$(PACKAGE)" = "gettext-tools"; then \
+ dists="$$dists Makevars.template"; \
+ fi; \
+ if test -f $(srcdir)/$(DOMAIN).pot; then \
+ dists="$$dists $(DOMAIN).pot stamp-po"; \
+ fi; \
+ if test -f $(srcdir)/ChangeLog; then \
+ dists="$$dists ChangeLog"; \
+ fi; \
+ for i in 0 1 2 3 4 5 6 7 8 9; do \
+ if test -f $(srcdir)/ChangeLog.$$i; then \
+ dists="$$dists ChangeLog.$$i"; \
+ fi; \
+ done; \
+ if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
+ for file in $$dists; do \
+ if test -f $$file; then \
+ cp -p $$file $(distdir) || exit 1; \
+ else \
+ cp -p $(srcdir)/$$file $(distdir) || exit 1; \
+ fi; \
+ done
+
+update-po: Makefile
+ $(MAKE) $(DOMAIN).pot-update
+ test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES)
+ $(MAKE) update-gmo
+
+# General rule for creating PO files.
+
+.nop.po-create:
+ @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \
+ echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \
+ exit 1
+
+# General rule for updating PO files.
+
+.nop.po-update:
+ @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \
+ if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \
+ tmpdir=`pwd`; \
+ echo "$$lang:"; \
+ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+ echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
+ cd $(srcdir); \
+ if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
+ $(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
+ *) \
+ $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
+ esac; \
+ }; then \
+ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
+ rm -f $$tmpdir/$$lang.new.po; \
+ else \
+ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+ :; \
+ else \
+ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+ exit 1; \
+ fi; \
+ fi; \
+ else \
+ echo "msgmerge for $$lang.po failed!" 1>&2; \
+ rm -f $$tmpdir/$$lang.new.po; \
+ fi
+
+$(DUMMYPOFILES):
+
+update-gmo: Makefile $(GMOFILES)
+ @:
+
+# Recreate Makefile by invoking config.status. Explicitly invoke the shell,
+# because execution permission bits may not work on the current file system.
+# Use @SHELL@, which is the shell determined by autoconf for the use by its
+# scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient.
+Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@
+ cd $(top_builddir) \
+ && @SHELL@ ./config.status $(subdir)/$@.in po-directories
+
+force:
+
+# Tell versions [3.59,3.63) of GNU make not to export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/grep/po/Makevars b/src/grep/po/Makevars
new file mode 100644
index 0000000..b81d9f1
--- /dev/null
+++ b/src/grep/po/Makevars
@@ -0,0 +1,67 @@
+# Makefile variables for PO directory in any package using GNU gettext.
+
+# Usually the message domain is the same as the package name.
+DOMAIN = $(PACKAGE)
+
+# These two variables depend on the location of this directory.
+subdir = po
+top_builddir = ..
+
+# These options get passed to xgettext.
+XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ \
+ \
+ --flag=_:1:pass-c-format\
+ --flag=N_:1:pass-c-format\
+ --flag=error:3:c-format --flag=error_at_line:5:c-format\
+\
+ --flag=asnprintf:3:c-format\
+ --flag=asprintf:2:c-format\
+ --flag=error:3:c-format\
+ --flag=error_at_line:5:c-format\
+ --flag=vasnprintf:3:c-format\
+ --flag=vasprintf:2:c-format\
+ --flag=wrapf:1:c-format\
+ --from-code=UTF-8\
+ $${end_of_xgettext_options+}
+
+# This is the copyright holder that gets inserted into the header of the
+# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
+# package. (Note that the msgstr strings, extracted from the package's
+# sources, belong to the copyright holder of the package.) Translators are
+# expected to transfer the copyright for their translations to this person
+# or entity, or to disclaim their copyright. The empty string stands for
+# the public domain; in this case the translators are expected to disclaim
+# their copyright.
+COPYRIGHT_HOLDER = Free Software Foundation, Inc.
+
+# This is the email address or URL to which the translators shall report
+# bugs in the untranslated strings:
+# - Strings which are not entire sentences, see the maintainer guidelines
+# in the GNU gettext documentation, section 'Preparing Strings'.
+# - Strings which use unclear terms or require additional context to be
+# understood.
+# - Strings which make invalid assumptions about notation of date, time or
+# money.
+# - Pluralisation problems.
+# - Incorrect English spelling.
+# - Incorrect formatting.
+# It can be your email address, or a mailing list address where translators
+# can write to without being subscribed, or the URL of a web page through
+# which the translators can contact you.
+MSGID_BUGS_ADDRESS = bug-grep@gnu.org
+
+# This is the list of locale categories, beyond LC_MESSAGES, for which the
+# message catalogs shall be used. It is usually empty.
+EXTRA_LOCALE_CATEGORIES =
+
+# This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt'
+# context. Possible values are "yes" and "no". Set this to yes if the
+# package uses functions taking also a message context, like pgettext(), or
+# if in $(XGETTEXT_OPTIONS) you define keywords with a context argument.
+USE_MSGCTXT = no
+
+# These options get passed to msgmerge.
+# Useful options are in particular:
+# --previous to keep previous msgids of translated messages,
+# --quiet to reduce the verbosity.
+MSGMERGE_OPTIONS =
diff --git a/src/grep/po/POTFILES.in b/src/grep/po/POTFILES.in
new file mode 100644
index 0000000..4d41ff9
--- /dev/null
+++ b/src/grep/po/POTFILES.in
@@ -0,0 +1,33 @@
+# List of files which containing translatable strings.
+#
+# Copyright 1997-1998, 2005-2021 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+lib/argmatch.c
+lib/argmatch.h
+lib/c-stack.c
+lib/closeout.c
+lib/dfa.c
+lib/error.c
+lib/getopt.c
+lib/obstack.c
+lib/openat-die.c
+lib/xbinary-io.c
+lib/quotearg.c
+lib/regcomp.c
+lib/version-etc.c
+lib/xalloc-die.c
+src/grep.c
+src/pcresearch.c
diff --git a/src/grep/po/Rules-quot b/src/grep/po/Rules-quot
new file mode 100644
index 0000000..d2ac20d
--- /dev/null
+++ b/src/grep/po/Rules-quot
@@ -0,0 +1,47 @@
+# Special Makefile rules for English message catalogs with quotation marks.
+
+DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot
+
+.SUFFIXES: .insert-header .po-update-en
+
+en@quot.po-create:
+ $(MAKE) en@quot.po-update
+en@boldquot.po-create:
+ $(MAKE) en@boldquot.po-update
+
+en@quot.po-update: en@quot.po-update-en
+en@boldquot.po-update: en@boldquot.po-update-en
+
+.insert-header.po-update-en:
+ @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \
+ if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \
+ tmpdir=`pwd`; \
+ echo "$$lang:"; \
+ ll=`echo $$lang | sed -e 's/@.*//'`; \
+ LC_ALL=C; export LC_ALL; \
+ cd $(srcdir); \
+ if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$lang -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \
+ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
+ rm -f $$tmpdir/$$lang.new.po; \
+ else \
+ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+ :; \
+ else \
+ echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+ exit 1; \
+ fi; \
+ fi; \
+ else \
+ echo "creation of $$lang.po failed!" 1>&2; \
+ rm -f $$tmpdir/$$lang.new.po; \
+ fi
+
+en@quot.insert-header: insert-header.sin
+ sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header
+
+en@boldquot.insert-header: insert-header.sin
+ sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header
+
+mostlyclean: mostlyclean-quot
+mostlyclean-quot:
+ rm -f *.insert-header
diff --git a/src/grep/po/af.gmo b/src/grep/po/af.gmo
new file mode 100644
index 0000000..4bcb8cc
--- /dev/null
+++ b/src/grep/po/af.gmo
Binary files differ
diff --git a/src/grep/po/af.po b/src/grep/po/af.po
new file mode 100644
index 0000000..5fef5f9
--- /dev/null
+++ b/src/grep/po/af.po
@@ -0,0 +1,847 @@
+# grep
+# Copyright (C) 2004 Free Software Foundation, Inc.
+# Petri Jooste <rkwjpj@puk.ac.za>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: grep 2.5g\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2004-03-03 13:33+0200\n"
+"Last-Translator: Petri Jooste <rkwjpj@puk.ac.za>\n"
+"Language-Team: Afrikaans <i18n@af.org.za>\n"
+"Language: af\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr ""
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr ""
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr ""
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr ""
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr ""
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr ""
+
+#: lib/dfa.c:896
+#, fuzzy
+msgid "unbalanced ["
+msgstr "Ongebalanseerde ["
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr ""
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr ""
+
+#: lib/dfa.c:1210
+#, fuzzy
+msgid "unfinished \\ escape"
+msgstr "Onbeindigde \\-ontsnapstring"
+
+#: lib/dfa.c:1371
+#, fuzzy
+msgid "invalid content of \\{\\}"
+msgstr "ongeldige maks-telling"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr ""
+
+#: lib/dfa.c:1858
+#, fuzzy
+msgid "unbalanced ("
+msgstr "Ongebalanseerde ("
+
+#: lib/dfa.c:1975
+#, fuzzy
+msgid "no syntax specified"
+msgstr "Geen sintaks gespesifiseer"
+
+#: lib/dfa.c:1986
+#, fuzzy
+msgid "unbalanced )"
+msgstr "Ongebalanseerde )"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "Onbekende stelselfout"
+
+#: lib/getopt.c:278
+#, fuzzy, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: opsie `%s' is dubbelsinnig\n"
+
+#: lib/getopt.c:284
+#, fuzzy, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: opsie `%s' is dubbelsinnig\n"
+
+# +option or -option
+#: lib/getopt.c:319
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: onbekende opsie `%c%s'\n"
+
+#: lib/getopt.c:345
+#, fuzzy, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: opsie `%c%s' laat nie 'n parameter toe nie\n"
+
+#: lib/getopt.c:360
+#, fuzzy, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: opsie `%s' benodig 'n parameter\n"
+
+#: lib/getopt.c:621
+#, fuzzy, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: ongeldige opsie -- %c\n"
+
+# 1003.2 specifies the format of this message.
+#: lib/getopt.c:636 lib/getopt.c:682
+#, fuzzy, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: opsie benodig 'n parameter -- %c\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "geheue uitgeput"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr ""
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr ""
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr ""
+
+# Get translations for open and closing quotation marks.
+# The message catalog should translate "`" to a left
+# quotation mark suitable for the locale, and similarly for
+# "'". If the catalog has no translation,
+# locale_quoting_style quotes `like this', and
+# clocale_quoting_style quotes "like this".
+# For example, an American English Unicode locale should
+# translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+# should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+# MARK). A British English Unicode locale should instead
+# translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+# U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "'"
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "'"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr ""
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "Geheue uitgeput"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr ""
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr ""
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr ""
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr ""
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr ""
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr ""
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr ""
+
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr ""
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(standaardtoevoer)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "ongeldige konteks-lengte-parameter"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "toevoer is te veel om te tel"
+
+#: src/grep.c:1641
+#, fuzzy, c-format
+msgid "%s: binary file matches"
+msgstr "Binre ler %s pas\n"
+
+#: src/grep.c:1679
+#, fuzzy, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "rekursiewe lus van gidsinskrywings"
+
+#: src/grep.c:1899
+#, c-format
+msgid "%s: input file is also the output"
+msgstr ""
+
+#: src/grep.c:1961 src/grep.c:1968
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "Gebruik so: %s [OPSIE]... PATROON [LER]...\n"
+
+#: src/grep.c:1963
+#, fuzzy, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "Probeer `%s --help' vir meer inligting.\n"
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr ""
+
+#: src/grep.c:1970
+#, fuzzy, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"Soek vir PATROON in elke LER of in standaardtoevoer.\n"
+"Voorbeeld: %s -i 'hello world' menu.h main.c\n"
+"\n"
+"Relmatige uitdrukking-seleksie en -interpretasie:\n"
+
+#: src/grep.c:1975
+#, fuzzy, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp PATROON is 'n uitgebreide relmatige "
+"uitdrukking\n"
+" -F, --fixed-strings PATROON is 'n reeks stringe geskei met "
+"nuwerelkarakters\n"
+" -G, --basic-regexp PATROON is 'n basic regular expression\n"
+" -P, --perl-regexp PATROON is 'n Perl regular expression\n"
+
+#: src/grep.c:1981
+#, fuzzy, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=PATROON gebruik PATROON as 'n relmatige uitdrukking\n"
+" -f, --file=FILE verkry PATROON vanaf LER\n"
+" -i, --ignore-case ignoreer kasverskille\n"
+" -w, --word-regexp dwing PATROON om slegs op hele woorde te pas\n"
+" -x, --line-regexp dwing PATROON om slegs op hele rels te pas\n"
+" -z, --null-data elke datarel eindig met 'n 0-greep, nie 'n "
+"nuwerelkarakter nie\n"
+
+#: src/grep.c:1989
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"Verskeie:\n"
+" -s, --no-messages onderdruk foutboodskappe\n"
+" -v, --invert-match soek nie-passende rels\n"
+" -V, --version wys weergaweinligting en stop\n"
+" --help wys hierdie hulpboodskap en stop\n"
+" --mmap gebruik geheue-gebonde toevoer indien moontlik\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+
+#: src/grep.c:2023
+#, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+
+#: src/grep.c:2043
+#, fuzzy, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+"\n"
+"Konteksbeheer:\n"
+" -B, --before-context=AANTAL wys AANTAL rels voorafgaande konteks\n"
+" -A, --after-context=AANTAL wys AANTAL rels daaropvolgende konteks\n"
+" -C, --context=AANTAL wys AANTAL rels afvoerkonteks\n"
+" -AANTAL dieselfde as --context=AANTAL\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] gebruik merkers om die passende string uit te "
+"wys\n"
+" WHEN kan wees: `always', `never' of `auto'.\n"
+" -U, --binary moenie CR-karakters by releindes wegvat nie "
+"(MSDOS)\n"
+" -u, --unix-byte-offsets wys uitwyking asof die CR nie daar is nie "
+"(MSDOS)\n"
+"\n"
+"`egrep' beteken `grep -E'. `fgrep' beteken `grep -F'.\n"
+"Met geen LER, of wanneer LER 'n - is, lees standaardtoevoer. \n"
+"Indien minder as twee LERs gegee is, aanvaar -h. Uittreestatus is\n"
+" 0 vir passing, 1 vir geen passing, en 2 vir probleemgevalle.\n"
+
+#: src/grep.c:2052
+#, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "teenstrydige passers is gespesifiseer"
+
+#: src/grep.c:2101
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr ""
+
+#: src/grep.c:2103
+#, fuzzy, c-format
+msgid "invalid matcher %s"
+msgstr "ongeldige maks-telling"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "onbekende metode vir toestelle"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr ""
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "ongeldige maks-telling"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "onbekende binre-lertipe"
+
+#: src/grep.c:2829
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr ""
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr ""
+
+#: src/pcresearch.c:143
+#, fuzzy
+msgid "the -P option only supports a single pattern"
+msgstr "Die -P opsie word nie ondersteun nie"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr ""
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr ""
+
+#: src/pcresearch.c:306
+#, fuzzy, c-format
+msgid "%s: memory exhausted"
+msgstr "geheue uitgeput"
+
+#: src/pcresearch.c:310
+#, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr ""
+
+#: src/pcresearch.c:315
+#, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr ""
+
+#: src/pcresearch.c:319
+#, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr ""
+
+#: src/pcresearch.c:327
+#, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr ""
+
+#, fuzzy, c-format
+#~ msgid "warning: %s: %s"
+#~ msgstr "waarskuwing: %s: %s\n"
+
+#, fuzzy
+#~ msgid "%s: option '--%s' doesn't allow an argument\n"
+#~ msgstr "%s: opsie `--%s' laat nie 'n parameter toe nie\n"
+
+# --option
+#, fuzzy
+#~ msgid "%s: unrecognized option '--%s'\n"
+#~ msgstr "%s: onbekende opsie `--%s'\n"
+
+#, fuzzy
+#~ msgid "%s: option '-W %s' is ambiguous\n"
+#~ msgstr "%s: opsie `-W %s' is dubbelsinnig\n"
+
+#, fuzzy
+#~ msgid "%s: option '-W %s' doesn't allow an argument\n"
+#~ msgstr "%s: opsie `-W %s' laat nie 'n parameter toe nie\n"
+
+#, fuzzy
+#~ msgid "%s: option '-W %s' requires an argument\n"
+#~ msgstr "%s: opsie `%s' benodig 'n parameter\n"
+
+# Cases:
+# {M} - exact count
+# {M,} - minimum count, maximum is infinity
+# {M,N} - M through N
+#~ msgid "unfinished repeat count"
+#~ msgstr "onbeindigde herhaaltelling"
+
+#~ msgid "malformed repeat count"
+#~ msgstr "wangevormde herhaaltelling"
+
+#~ msgid "out of memory"
+#~ msgstr "te min geheue"
+
+#~ msgid "writing output"
+#~ msgstr "afvoer word geskryf"
+
+#~ msgid "Usage: %s [OPTION]... PATTERN [FILE] ...\n"
+#~ msgstr "Gebruik so: %s [OPSIE]... PATROON [LER] ...\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Output control:\n"
+#~ " -m, --max-count=NUM stop after NUM matches\n"
+#~ " -b, --byte-offset print the byte offset with output lines\n"
+#~ " -n, --line-number print line number with output lines\n"
+#~ " --line-buffered flush output on every line\n"
+#~ " -H, --with-filename print the filename for each match\n"
+#~ " -h, --no-filename suppress the prefixing filename on output\n"
+#~ " --label=LABEL print LABEL as filename for standard input\n"
+#~ " -o, --only-matching show only the part of a line matching "
+#~ "PATTERN\n"
+#~ " -q, --quiet, --silent suppress all normal output\n"
+#~ " --binary-files=TYPE assume that binary files are TYPE\n"
+#~ " TYPE is 'binary', 'text', or 'without-match'\n"
+#~ " -a, --text equivalent to --binary-files=text\n"
+#~ " -I equivalent to --binary-files=without-match\n"
+#~ " -d, --directories=ACTION how to handle directories\n"
+#~ " ACTION is 'read', 'recurse', or 'skip'\n"
+#~ " -D, --devices=ACTION how to handle devices, FIFOs and sockets\n"
+#~ " ACTION is 'read' or 'skip'\n"
+#~ " -R, -r, --recursive equivalent to --directories=recurse\n"
+#~ " --include=PATTERN files that match PATTERN will be examined\n"
+#~ " --exclude=PATTERN files that match PATTERN will be skipped.\n"
+#~ " --exclude-from=FILE files that match PATTERN in FILE will be "
+#~ "skipped.\n"
+#~ " -L, --files-without-match only print FILE names containing no match\n"
+#~ " -l, --files-with-matches only print FILE names containing matches\n"
+#~ " -c, --count only print a count of matching lines per "
+#~ "FILE\n"
+#~ " -Z, --null print 0 byte after FILE name\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Afvoerbeheer:\n"
+#~ " -m, --max-count=AANTAL stop na AANTAL passings\n"
+#~ " -b, --byte-offset wys die greep-uitwyking saam met elke "
+#~ "afvoerrel\n"
+#~ " -n, --line-number wys die relnommer saam met elke afvoerrel\n"
+#~ " --line-buffered maak elke keer die lynbuffer leeg\n"
+#~ " -H, --with-filename wys die lernaam vir elke passing\n"
+#~ " -h, --no-filename onderdruk die vooraf-lernaam in die afvoer\n"
+#~ " --label=ETIKET wys ETIKET as lernaam vir standaardtoevoer\n"
+#~ " -o, --only-matching wys slegs die deel van 'n rel wat pas op die "
+#~ "PATROON\n"
+#~ " -q, --quiet, --silent onderdruk alle normale afvoer\n"
+#~ " --binary-files=TIPE aanvaar dat binre lers van hierdie TIPE "
+#~ "is.\n"
+#~ " TIPE kan wees: 'binary', 'text', of 'without-"
+#~ "match'\n"
+#~ " -a, --text dieselfde as --binary-files=text\n"
+#~ " -I dieselfde as --binary-files=without-match\n"
+#~ " -d, --directories=AKSIE hoe om gidse te hanteer\n"
+#~ " AKSIE kan wees: 'read', 'recurse', of 'skip'\n"
+#~ " -D, --devices=AKSIE hoe om toestelle te hanteer, FIFOs en sokke\n"
+#~ " AKSIE kan wees: 'read' of 'skip'\n"
+#~ " -R, -r, --recursive dieselfde as --directories=recurse\n"
+#~ " --include=PATROON lers waarop PATROON pas sal ondersoek word.\n"
+#~ " --exclude=PATROON lers waarop PATROON pas sal sal oorgeslaan "
+#~ "word.\n"
+#~ " --exclude-from=FILE lers waarop PATROON in LER pas sal "
+#~ "oorgeslaan word.\n"
+#~ " -L, --files-without-match wys slegs lername wat geen passing bevat "
+#~ "nie\n"
+#~ " -l, --files-with-matches wys slegs lername wat wel passing(s) bevat\n"
+#~ " -c, --count wys slegs die aantal rels in elke LER wat "
+#~ "passings bevat\n"
+#~ " -Z, --null wys die 0-greep na die LERnaam\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Report bugs to <bug-gnu-utils@gnu.org>.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Rapporteer foute aan <bug-gnu-utils@gnu.org>.\n"
+
+#~ msgid "unknown directories method"
+#~ msgstr "onbekende metode vir gidse"
+
+#~ msgid "%s (GNU grep) %s\n"
+#~ msgstr "%s (GNU grep) %s\n"
+
+#~ msgid ""
+#~ "Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc.\n"
+#~ msgstr ""
+#~ "Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc.\n"
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "Hierdie is vry programmatuur; kyk in die bronkode vir "
+#~ "kopiervoorwaardes. Daar is GEEN\n"
+#~ "waarborg nie; selfs nie vir VERKOOPBAARHEID of GESKIKTHEID VIR 'N "
+#~ "SPESIFIEKE DOEL nie.\n"
+
+#~ msgid "The -P and -z options cannot be combined"
+#~ msgstr "Die -P en -z opsies kan nie gekombineer word nie"
+
+# 1003.2 specifies the format of this message.
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: ongeldige opsie -- %c\n"
diff --git a/src/grep/po/be.gmo b/src/grep/po/be.gmo
new file mode 100644
index 0000000..b7605ba
--- /dev/null
+++ b/src/grep/po/be.gmo
Binary files differ
diff --git a/src/grep/po/be.po b/src/grep/po/be.po
new file mode 100644
index 0000000..eca874b
--- /dev/null
+++ b/src/grep/po/be.po
@@ -0,0 +1,834 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+# Ales Nyakhaychyk <nab@mail.by>, 2001-2003.
+msgid ""
+msgstr ""
+"Project-Id-Version: grep 2.5g\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2003-07-22 17:18+0300\n"
+"Last-Translator: Ales Nyakhaychyk <nab@mail.by>\n"
+"Language-Team: Belarusian <i18n@mova.org>\n"
+"Language: be\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"X-Generator: KBabel 0.9.6\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr ""
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr ""
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr ""
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr ""
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr ""
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr ""
+
+#: lib/dfa.c:896
+#, fuzzy
+msgid "unbalanced ["
+msgstr "Неўраўнаважаная ["
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr ""
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr ""
+
+#: lib/dfa.c:1210
+#, fuzzy
+msgid "unfinished \\ escape"
+msgstr "Незавершаная \\ кіруючая пасьлядоўнасьць"
+
+#: lib/dfa.c:1371
+#, fuzzy
+msgid "invalid content of \\{\\}"
+msgstr "недапушчальны найбольшы лічыльнік"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr ""
+
+#: lib/dfa.c:1858
+#, fuzzy
+msgid "unbalanced ("
+msgstr "Неўраважаная ("
+
+#: lib/dfa.c:1975
+#, fuzzy
+msgid "no syntax specified"
+msgstr "Сынтаксіс нявызначаны"
+
+#: lib/dfa.c:1986
+#, fuzzy
+msgid "unbalanced )"
+msgstr "Неўраўнаважаная )"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "Невядомая сыстэмная памылка"
+
+#: lib/getopt.c:278
+#, fuzzy, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: выбар \"%s\" неадназначны\n"
+
+#: lib/getopt.c:284
+#, fuzzy, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: выбар \"%s\" неадназначны\n"
+
+#: lib/getopt.c:319
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: нераспазнаны выбар \"%c%s\n"
+
+#: lib/getopt.c:345
+#, fuzzy, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: выбар \"%c%s\" не дазваляе довад\n"
+
+#: lib/getopt.c:360
+#, fuzzy, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: выбар \"%s\" патрабуе довад\n"
+
+#: lib/getopt.c:621
+#, fuzzy, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: нерэчаісны выбар -- %c\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, fuzzy, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: выбар патрабуе довад -- %c\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "памяць вычарпана"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr ""
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr ""
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr ""
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "\""
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "\""
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr ""
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "Памяць вычарпана"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr ""
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr ""
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr ""
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr ""
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr ""
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr ""
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr ""
+
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr ""
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(стандартны ўвод)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "недапушчальны довад даўжыні кантэксту"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "увод занадта вялікі для падліку"
+
+#: src/grep.c:1641
+#, fuzzy, c-format
+msgid "%s: binary file matches"
+msgstr "Супадзеньні двайковага файла %s\n"
+
+#: src/grep.c:1679
+#, fuzzy, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "тэчкі зацыклены"
+
+#: src/grep.c:1899
+#, c-format
+msgid "%s: input file is also the output"
+msgstr ""
+
+#: src/grep.c:1961 src/grep.c:1968
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "Выкарыстаньне: %s [ВЫБАР]... УЗОР [ФАЙЛ]...\n"
+
+#: src/grep.c:1963
+#, fuzzy, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "Паспрабуйце \"%s --help\" для больш падрабязных зьвестак.\n"
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr ""
+
+#: src/grep.c:1970
+#, fuzzy, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+" Шукае ўзор у файле ці ў стандартным уводзе.\n"
+"Напрыклад: %s -i 'hello world' menu.h main.c\n"
+"\n"
+"Выбар і тлумачэньне выразаў:\n"
+
+#: src/grep.c:1975
+#, fuzzy, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp УЗОР - гэта пашыраны сталы выраз.\n"
+" -F, --fixed-strings УЗОР - гэта набор радкоў, падзеленых між сабой\n"
+" пераходамі на новы радок.\n"
+" -G, --basic-regexp УЗОР - гэта асноўны сталы выраз.\n"
+" -P, --perl-regexp УЗОР - гэта сталы выраз на Perl.\n"
+
+#: src/grep.c:1981
+#, fuzzy, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=УЗОР Выкарыстоваць УЗОР як сталы выраз.\n"
+" -f, --file=ФАЙЛ Атрымліваць узор з файла.\n"
+" -i, --ignore-case Не зьвяртаць увагу на розьніцу між вялікімі й\n"
+" маленькімі літарамі.\n"
+" -w, --word-regexp Прымушае каб узор цалкам адпавядаў слову.\n"
+" -x, --line-regexp Прымушае каб узор цалкам адпавядаў радку.\n"
+" -z, --null-data Радок даньняў павінен мець канчатак ў выглядзе\n"
+" нулявога байта, замест знака новага радка.\n"
+
+#: src/grep.c:1989
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"Разнастайныя:\n"
+" -s, --no-messages Падаўляць паведамленьні пра памылкі.\n"
+" -v, --invert-match Выбіраць нясупаўшыя радкі.\n"
+" -V, --version Надрукаваць зьвесткі пра вэрсыю й выйсьці.\n"
+" --help Адлюстраваць гэтую даведку й выйсьці.\n"
+" --mmap Выкарыстоўваць memory-mapped, калі гэта "
+"магчыма.\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+
+#: src/grep.c:2023
+#, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+
+#: src/grep.c:2043
+#, fuzzy, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+"\n"
+"Кіраваньне падтэкстам:\n"
+" -B, --before-context=N Друкаваць N радкоў папярэдняга падтэксту.\n"
+" -A, --after-context=N Друкаваць N радкоў наступнага падтэксту.\n"
+" -C, --context=N Друкаваць N радкоў падтэксту.\n"
+" -N Раўназначна --context=N\n"
+" --color[=КАЛІ],\n"
+" --colour[=КАЛІ] Выкарыстоўваць пазначальнікі, каб адрозьніваць\n"
+" супаўшыя радкі. КАЛІ можа быць: \"always\"\n"
+" (заўсёды), \"never\" (ніколі) ці \"auto\".\n"
+" -U, --binary Не абразаць знакі CR на прыканцы радка (MSDOS).\n"
+" -u, --unix-byte-offsets Паведамляць пра адлегласьці такім чынам, нібыта\n"
+" знакі CR адсутнічаюць наагул (MSDOS).\n"
+"\n"
+"\"egrep\" азначае \"grep -E\". \"fgrep\" азначае \"grep -F\".\n"
+"Бяз ФАЙЛа, ці калі замест назвы ФАЙЛа працяжнік -, чытае стандартны ўвод.\n"
+"Калі заданы менш чым два файла, працуе як у выпадку выбара -h. Стан выхаду\n"
+"роўны 0, калі ё супадзеньні, 1, калі супадзеньняў няма й 2 у выпадку "
+"памылкі.\n"
+
+#: src/grep.c:2052
+#, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "заданы супярэчлівыя супадальнікі"
+
+#: src/grep.c:2101
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr ""
+
+#: src/grep.c:2103
+#, fuzzy, c-format
+msgid "invalid matcher %s"
+msgstr "недапушчальны найбольшы лічыльнік"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "невядомы мэтад пралад"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr ""
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "недапушчальны найбольшы лічыльнік"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "невядомы від дваічнага файла"
+
+#: src/grep.c:2829
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr ""
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr ""
+
+#: src/pcresearch.c:143
+#, fuzzy
+msgid "the -P option only supports a single pattern"
+msgstr "Выбар -P непадтрымліваецца"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr ""
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr ""
+
+#: src/pcresearch.c:306
+#, fuzzy, c-format
+msgid "%s: memory exhausted"
+msgstr "памяць вычарпана"
+
+#: src/pcresearch.c:310
+#, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr ""
+
+#: src/pcresearch.c:315
+#, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr ""
+
+#: src/pcresearch.c:319
+#, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr ""
+
+#: src/pcresearch.c:327
+#, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr ""
+
+#, fuzzy, c-format
+#~ msgid "warning: %s: %s"
+#~ msgstr "Увага! %s: %s\n"
+
+#, fuzzy
+#~ msgid "%s: option '--%s' doesn't allow an argument\n"
+#~ msgstr "%s: выбар \"--%s\" не дазваляе довад\n"
+
+#, fuzzy
+#~ msgid "%s: unrecognized option '--%s'\n"
+#~ msgstr "%s: нераспазнаны выбар \"--%s\"\n"
+
+#, fuzzy
+#~ msgid "%s: option '-W %s' is ambiguous\n"
+#~ msgstr "%s: выбар \"-W %s\" неадназначны\n"
+
+#, fuzzy
+#~ msgid "%s: option '-W %s' doesn't allow an argument\n"
+#~ msgstr "%s: выбар \"-W %s\" не дазваляе довады\n"
+
+#, fuzzy
+#~ msgid "%s: option '-W %s' requires an argument\n"
+#~ msgstr "%s: выбар \"%s\" патрабуе довад\n"
+
+#~ msgid "unfinished repeat count"
+#~ msgstr "незавершаная колькасьць паўтарэньняў"
+
+#~ msgid "malformed repeat count"
+#~ msgstr "дрэнная колькасьць паўтарэньняў"
+
+#~ msgid "out of memory"
+#~ msgstr "нехапае памяці"
+
+#~ msgid "writing output"
+#~ msgstr "запісваецца вывад"
+
+#~ msgid "Usage: %s [OPTION]... PATTERN [FILE] ...\n"
+#~ msgstr "Выкарыстаньне: %s [ВЫБАР]... УЗОР [ФАЙЛ] ...\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Output control:\n"
+#~ " -m, --max-count=NUM stop after NUM matches\n"
+#~ " -b, --byte-offset print the byte offset with output lines\n"
+#~ " -n, --line-number print line number with output lines\n"
+#~ " --line-buffered flush output on every line\n"
+#~ " -H, --with-filename print the filename for each match\n"
+#~ " -h, --no-filename suppress the prefixing filename on output\n"
+#~ " --label=LABEL print LABEL as filename for standard input\n"
+#~ " -o, --only-matching show only the part of a line matching "
+#~ "PATTERN\n"
+#~ " -q, --quiet, --silent suppress all normal output\n"
+#~ " --binary-files=TYPE assume that binary files are TYPE\n"
+#~ " TYPE is 'binary', 'text', or 'without-match'\n"
+#~ " -a, --text equivalent to --binary-files=text\n"
+#~ " -I equivalent to --binary-files=without-match\n"
+#~ " -d, --directories=ACTION how to handle directories\n"
+#~ " ACTION is 'read', 'recurse', or 'skip'\n"
+#~ " -D, --devices=ACTION how to handle devices, FIFOs and sockets\n"
+#~ " ACTION is 'read' or 'skip'\n"
+#~ " -R, -r, --recursive equivalent to --directories=recurse\n"
+#~ " --include=PATTERN files that match PATTERN will be examined\n"
+#~ " --exclude=PATTERN files that match PATTERN will be skipped.\n"
+#~ " --exclude-from=FILE files that match PATTERN in FILE will be "
+#~ "skipped.\n"
+#~ " -L, --files-without-match only print FILE names containing no match\n"
+#~ " -l, --files-with-matches only print FILE names containing matches\n"
+#~ " -c, --count only print a count of matching lines per "
+#~ "FILE\n"
+#~ " -Z, --null print 0 byte after FILE name\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Кіраваньне вывадам:\n"
+#~ " -m, --max-count=N Спыніцца пасьля N супадзеньняў.\n"
+#~ " -b, --byte-offset Друкаваць адлегласьць байта разам з вывадам "
+#~ "радкоў.\n"
+#~ " -n, --line-number Друкаваць нумары радкоў побач з радкамі.\n"
+#~ " --line-buffered Скідаць вывад на кожным радку.\n"
+#~ " -H, --with-filename Друкаваць назву файла на кожнае супадзеньне.\n"
+#~ " -h, --no-filename Падаўляць назвы файлаў у вывадзе.\n"
+#~ " --label=МЕТКА Друкаваць метку ў якасьці назвы файла для\n"
+#~ " стандартнага ўвода.\n"
+#~ " -o, --only-matching Паказываць толькі тую частку радка, якая\n"
+#~ " супадае з узорам.\n"
+#~ " -q, --quiet, --silent Падаўляць увесь звычайны вывад.\n"
+#~ " --binary-files=ВІД Задаць від двайковага файла. Наяўныя віды:\n"
+#~ " \"binary\" (двайковы), \"text\" (тэкставы) "
+#~ "ці\n"
+#~ " \"without-match\" (неістотны).\n"
+#~ " -a, --text Раўназначна --binary-files=text.\n"
+#~ " -I Раўназначна --binary-files=without-match.\n"
+#~ " -d, --directories=ДЗЕЯНЬНЕ\n"
+#~ " Як апрацоўваць тэчкі; ДЗЕЯНЬНЕ можа быць "
+#~ "\"read\"\n"
+#~ " (чытаць), \"recurse\" (рэкурсыўна абходзіць) "
+#~ "ці\n"
+#~ " \"skip\" (абмінаць).\n"
+#~ " -D, --devices=ДЗЕЯНЬНЕ Як апрацоўваць прылады, FIFO й гнёзды;\n"
+#~ " ДЗЕЯНЬНЕ можа быць \"read\" (чытаць) ці\n"
+#~ " \"skip\" (абмінаць).\n"
+#~ " -R, -r, --recursive Раўназначна --directories=recurse.\n"
+#~ " --include=УЗОР Апрацоўваць файлы, які адпавядаюць узору.\n"
+#~ " --exclude=УЗОР Не апрацоўваць файлы, які адпавядаюць узору.\n"
+#~ " --exclude-from=ФАЙЛ Абмінаць файлы, якія адпавядаюць узору з "
+#~ "файла.\n"
+#~ " -L, --files-without-match Друкаваць толькі назвы тых файлаў, што ня\n"
+#~ " ўтрымліваюць супадзеньні.\n"
+#~ " -l, --files-with-matches Друкаваць толькі назвы тых файлаў, што "
+#~ "ўтрымліваюць\n"
+#~ " супадзеньні.\n"
+#~ " -c, --count Друкаваць толькі колькасьць супаўшых радкоў "
+#~ "на файл.\n"
+#~ " -Z, --null Друкаваць 0-ы байт пасьля назвы файла.\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Report bugs to <bug-gnu-utils@gnu.org>.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Паведамляйце пра памылкі на <bug-gnu-utils@gnu.org>.\n"
+
+#~ msgid "unknown directories method"
+#~ msgstr "невядомы мэтад тэчак"
+
+#~ msgid "%s (GNU grep) %s\n"
+#~ msgstr "%s (GNU grep) %s\n"
+
+#~ msgid ""
+#~ "Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc.\n"
+#~ msgstr ""
+#~ " Аўтарскія правы © 1988, 1992-2001 Free Software Foundation, Inc.\n"
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ " Гэта вольнае праграмнае забесьпячэньне. Глядзіце зыходны тэкст для\n"
+#~ "пагадненьня аб распаўсюджваньні. Не йснуе НІЯКАЕ гарантыі, нават аб\n"
+#~ "магчымасьці выкарыстаньня зь якой-небудзь мэтай.\n"
+
+#~ msgid "The -P and -z options cannot be combined"
+#~ msgstr "Выбары -P і -z ня могуць ісьці разам"
+
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: недапушчальны выбар -- %c\n"
diff --git a/src/grep/po/bg.gmo b/src/grep/po/bg.gmo
new file mode 100644
index 0000000..ffc2c53
--- /dev/null
+++ b/src/grep/po/bg.gmo
Binary files differ
diff --git a/src/grep/po/bg.po b/src/grep/po/bg.po
new file mode 100644
index 0000000..7020c58
--- /dev/null
+++ b/src/grep/po/bg.po
@@ -0,0 +1,769 @@
+# Bulgarian translation of GNU grep po-file.
+# Copyright (C) 2002, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Free Software Foundation, Inc.
+# This file is distributed under the same license as the grep package.
+# Pavel Mihaylov <avatarbg@bulgaria.com>, 2002.
+# Alexander Shopov <ash@kambanaria.org>, 2015, 2016, 2017, 2018, 2019, 2020, 2021.
+msgid ""
+msgstr ""
+"Project-Id-Version: grep 3.6.27\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2021-08-09 16:17+0300\n"
+"Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
+"Language-Team: Bulgarian <dict@ludost.net>\n"
+"Language: bg\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "аргументът „%s“ на опцията „%s“ е неправилен"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "аргументът „%s“ на опцията „%s“ не е еднозначен"
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr "Възможните аргументи са:"
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr "програмна грешка"
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr "препълване на стека"
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr "грешка при запис"
+
+#: lib/dfa.c:896
+msgid "unbalanced ["
+msgstr "„[“ без еш"
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr "неправилен клас знаци"
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr "клас знаци се указва чрез „[[:ИМЕ:]]“, а не „[:ИМЕ:]“"
+
+#: lib/dfa.c:1210
+msgid "unfinished \\ escape"
+msgstr "незавършена екранираща последователност чрез „\\“"
+
+#: lib/dfa.c:1371
+msgid "invalid content of \\{\\}"
+msgstr "неправилно съдържание в „\\{\\}“"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr "прекалено голям регулярен израз"
+
+#: lib/dfa.c:1858
+msgid "unbalanced ("
+msgstr "„(“ без еш"
+
+#: lib/dfa.c:1975
+msgid "no syntax specified"
+msgstr "не е зададен синтаксис"
+
+#: lib/dfa.c:1986
+msgid "unbalanced )"
+msgstr "„)“ без еш"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "Неизвестна системна грешка"
+
+#: lib/getopt.c:278
+#, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: опцията „%s%s“ не е еднозначна\n"
+
+#: lib/getopt.c:284
+#, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: опцията „%s%s“ не е еднозначна. Възможности:"
+
+#: lib/getopt.c:319
+#, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: непозната опция „%s%s“\n"
+
+#: lib/getopt.c:345
+#, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: опцията „%s%s“ се използва без аргументи\n"
+
+#: lib/getopt.c:360
+#, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: опцията „%s%s“ изисква аргумент\n"
+
+#: lib/getopt.c:621
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: неправилна опция — „%c“\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: опцията изисква аргумент — „%c“\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "паметта е изчерпана"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr "не може да се запише коя е текущата работна директория"
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "не може да се върне към първоначалната работна директория"
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr "неуспешно задаване на вид на файла като текстов/двоичен"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "„"
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "“"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr "Успех"
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr "Няма съвпадения"
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr "Неправилен регулярен израз"
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr "Неправилен знак за подредба"
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr "Неправилно име на клас знаци"
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr "Самотна „\\“ накрая"
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr "Неправилна препратка към съвпадение"
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr "„[“, „[^“, „[:“, „[.“ или „[=“ без еш"
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr "„(“ или „\\(“ без еш"
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr "„\\{“ без еш"
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr "Неправилно съдържание в „\\{\\}“"
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr "Неправилен край на диапазон"
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "Паметта свърши"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr "Предхождащият регулярен израз е неправилен"
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr "Ранен край на регулярен израз"
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr "Регулярният израз е прекалено голям"
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr "„)“ или „\\)“ без еш"
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr "Няма предхождащ регулярен израз"
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Пакетирано от %s (%s)\n"
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Пакетирано от %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr "©"
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Лиценз — Общ публичен лиценз на GNU (GNU GPL), както е публикуван от "
+"Фондацията\n"
+"за свободен софтуер — версия 3 на лиценза или (по ваше решение) по-късна "
+"версия.\n"
+"<%s>\n"
+"Тази програма е свободен софтуер. Можете да я разпространявате и/или "
+"променяте.\n"
+"Тя се разпространява БЕЗ НИКАКВИ ГАРАНЦИИ доколкото е позволено от закона.\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Създадено от %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Създадено от %s и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Създадено от %s, %s и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Създадено от %s, %s, %s\n"
+"и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Създадено от %s, %s, %s,\n"
+"%s и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Създадено от %s, %s, %s,\n"
+"%s, %s и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Създадено от %s, %s, %s,\n"
+"%s, %s, %s и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Създадено от %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Създадено от %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Създадено от %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s и др.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr ""
+"Докладвайте грешки в програмата на адрес: %s\n"
+"Докладвайте грешки в превода на адрес: <dict@ludost.net>\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "Докладвайте грешки в „%s“ на адрес: %s\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Уеб страница на „%s“: <%s>\n"
+
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr "Обща помощ за програмите на GNU: <%s>\n"
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(стандартен вход)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "неправилен размер на контекста"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "входните данни са прекалено големи, за да бъдат преброени"
+
+#: src/grep.c:1641
+#, c-format
+msgid "%s: binary file matches"
+msgstr "„%s“: двоичният файл напасва"
+
+#: src/grep.c:1679
+#, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "„%s“: зацикляне при рекурсивна обработка на директориите"
+
+#: src/grep.c:1899
+#, c-format
+msgid "%s: input file is also the output"
+msgstr "„%s“: входният файл е и изходен"
+
+#: src/grep.c:1961 src/grep.c:1968
+#, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "Употреба: %s [ОПЦИЯ]… ШАБЛОН… [ФАЙЛ]…\n"
+
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "За повече информация изпълнете „%s --help“.\n"
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr "Търсене на текст, напасващ с ШАБЛОНите във всеки зададен ФАЙЛ.\n"
+
+#: src/grep.c:1970
+#, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"Пример: %s -i 'hello world' menu.h main.c\n"
+"Може да използвате по един ШАБЛОН на ред.\n"
+"\n"
+"Избор на шаблона и интерпретация:\n"
+
+#: src/grep.c:1975
+#, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp ШАБЛОНите са разширени регулярни изрази\n"
+" -F, --fixed-regexp ШАБЛОНите са дословни низове\n"
+" -G, --basic-regexp ШАБЛОНите са основни регулярни изрази "
+"(стандартно)\n"
+" -P, --perl-regexp ШАБЛОНите са регулярни изрази на Perl\n"
+
+#: src/grep.c:1981
+#, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=ШАБЛОН ШАБЛОН за регулярен израз\n"
+" -f, --file=ФАЙЛ изчитане на ШАБЛОНите от ФАЙЛ\n"
+" -i, --ignore-case без разлика между главни и малки букви\n"
+" --no-ignore-case със разлика между главни и малки букви "
+"(стандартно)\n"
+" -w, --word-regexp съвпадане само с цели думи\n"
+" -x, --line-regexp съвпадане само с цели редове\n"
+" -z, --null-data редовете завършват с NULL, а не със знак за нов "
+"ред\n"
+
+#: src/grep.c:1989
+#, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"Разни:\n"
+" -s, --no-messages без съобщения за грешки\n"
+" -v, --revert-match извеждане на несъвпадащите редове\n"
+" -V, --version извеждане на информация за версията и изход\n"
+" --help извеждане на помощна информация и изход\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+"\n"
+"Управление на резултата:\n"
+" -m, --max-count=БРОЙ спиране след този БРОЙ избрани редове\n"
+" -b, --byte-offset извеждане на отместването в байтове за всеки "
+"ред\n"
+" -n, --line-number извеждане на номерата на редовете\n"
+" --line-buffered буфериране по редове\n"
+" -H, --with-filename извеждане на името на файла при всяко "
+"съвпадение\n"
+" -h, --no-filename без извеждане на името на файла за всяко "
+"съвпадение\n"
+" --label=ЕТИКЕТ използване на ЕТИКЕТ като име за стандартния "
+"вход\n"
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+" -o, --only-matching извеждане само на съвпадението, а не целия ред\n"
+" -q, --quiet, --silent нищо не се извежда, само се задава изходен код\n"
+" --binary-files=ВИД двоичните файлове да се третират като такъв ВИД\n"
+" ВИДът може да „binary“ (двоичен), "
+"„text“ (текстов),\n"
+" или „without-match“ (без съвпадение).\n"
+" -a, --text същото като „--binary-files=text“\n"
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+" -I същото като „--binary-files=without-match“\n"
+" -d, --directories=ДЕЙСТВИЕ\n"
+" ДЕЙСТВИЕ при директориите. То може да е:\n"
+" „read“ (изчитане), „recurse“ (рекурсивно "
+"търсене)\n"
+" или „skip“ (пропускане)\n"
+" -D, --devices=ДЕЙСТВИЕ ДЕЙСТВИЕ за специалните файлове, програмните "
+"канали\n"
+" и гнездата. То може да е „read“ (изчитане) или\n"
+" „skip“ (пропускане)\n"
+" -R, -r, --recursive същото като „--directories=recurse“\n"
+
+#: src/grep.c:2023
+#, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+" --include=ШАБЛОН_ЗА_ИМЕ\n"
+" търсене само във файлове с имена, напасващи\n"
+" ШАБЛОНа_ЗА_ИМЕ\n"
+" --exclude=ШАБЛОН_ЗА_ИМЕ\n"
+" пропускане на файлове с имена, напасващи\n"
+" ШАБЛОНа_ЗА_ИМЕ\n"
+" --exclude-from=ФАЙЛ пропускане на файлове с имена, напасващи на\n"
+" шаблоните в този ФАЙЛ\n"
+" --exclude-dir=ШАБЛОН_ЗА_ИМЕ\n"
+" пропускане на директории с имена, напасващи\n"
+" ШАБЛОНа_ЗА_ИМЕ\n"
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+" -L, --files-without-match извеждане само на имената на файлове без "
+"съвпадения\n"
+" -l, --files-with-matches извеждане само на имената на файлове със "
+"съвпадения\n"
+" -c, --count извеждане само на броя съвпадащи редове във "
+"файл\n"
+" -T, --initial-tab подравняване на табулациите при необходимост\n"
+" -Z, --null извеждане на знак NULL след всяко име на файл\n"
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+"\n"
+"Контрол върху контекста:\n"
+" -B, --before-context=БРОЙ извеждане на този БРОЙ предхождащи редове\n"
+" -A, --after-context=БРОЙ извеждане на този БРОЙ следващи редове\n"
+" -C, --context=БРОЙ извеждане на този БРОЙ предхождащи и следващи\n"
+" редове\n"
+
+#: src/grep.c:2043
+#, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+" -БРОЙ същото като --context=БРОЙ\n"
+" --group-separator=РАЗД\n"
+" извеждане на този РАЗДелител на отделен ред "
+"между\n"
+" съвпаденията с контекст\n"
+" --no-group-separator без извеждане на този РАЗДелител между "
+"съвпаденията\n"
+" --color[=КОГА]\n"
+" --colour[=КОГА] оцветяване на съвпадащите низове. КОГА е "
+"„always“\n"
+" (винаги), „never“ (никога) или "
+"„auto“ (автоматично)\n"
+" -U, --binary знаците „CR“ в края на реда да се запазват\n"
+" (DOS/Windows)\n"
+
+#: src/grep.c:2052
+#, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"Когато ФАЙЛът е „-“ се чете стандартният вход. Без ФАЙЛ се чете текущата\n"
+"директория „.“. Ако са зададени по-малко от два ФАЙЛа, се предполага „-h“.\n"
+"Изходният код на grep е 0 при поне един напаснат ред и 1 във всички "
+"останали\n"
+"случаи. Ако не е зададена опцията „-q“ и възникне грешка, изходният код е "
+"2.\n"
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "зададените изрази за съвпадение са в конфликт"
+
+#: src/grep.c:2101
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr ""
+"Липсва поддръжка на шаблони по Perl — текущата команда е компилирана с\n"
+"опцията „--disable-perl-regexp“."
+
+#: src/grep.c:2103
+#, c-format
+msgid "invalid matcher %s"
+msgstr "неправилен израз „%s“"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "неизвестен метод за обработка на специалните файлове"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr "ПРЕДУПРЕЖДЕНИЕ: опцията „--unix-byte-offsets“ („-u“) е остаряла"
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "неправилен максимален брой"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "непознат вид двоичен файл"
+
+#: src/grep.c:2829
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+"Създадено от Mike Haertel и др., вижте\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr ""
+"неуспешно заделяне на памет за стека за изпълнение на шаблоните за „PCRE“"
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr "опцията „-P“ изисква локалът да е с еднобайтово кодиране или UTF-8"
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr "опцията „-P“ поддържа само един шаблон"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr "вътрешна грешка, която не трябва да възниква — молим да я докладвате"
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr "максималният размер на реда за „PCRE“ е превишен"
+
+#: src/pcresearch.c:306
+#, c-format
+msgid "%s: memory exhausted"
+msgstr "%s: паметта е изчерпана"
+
+#: src/pcresearch.c:310
+#, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr "%s: паметта за стека за изпълнение на шаблоните за „PCRE“ свърши"
+
+#: src/pcresearch.c:315
+#, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr "%s: максималният брой връщания при рекурсия на „PCRE“ е превишен"
+
+#: src/pcresearch.c:319
+#, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr "%s: превишен е максимумът за рекурсия на „PCRE“"
+
+#: src/pcresearch.c:327
+#, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr "%s: вътрешна грешка на „PCRE“: %d"
diff --git a/src/grep/po/boldquot.sed b/src/grep/po/boldquot.sed
new file mode 100644
index 0000000..4b937aa
--- /dev/null
+++ b/src/grep/po/boldquot.sed
@@ -0,0 +1,10 @@
+s/"\([^"]*\)"/“\1”/g
+s/`\([^`']*\)'/‘\1’/g
+s/ '\([^`']*\)' / ‘\1’ /g
+s/ '\([^`']*\)'$/ ‘\1’/g
+s/^'\([^`']*\)' /‘\1’ /g
+s/“”/""/g
+s/“/“/g
+s/”/”/g
+s/‘/‘/g
+s/’/’/g
diff --git a/src/grep/po/ca.gmo b/src/grep/po/ca.gmo
new file mode 100644
index 0000000..7f98c99
--- /dev/null
+++ b/src/grep/po/ca.gmo
Binary files differ
diff --git a/src/grep/po/ca.po b/src/grep/po/ca.po
new file mode 100644
index 0000000..f803a72
--- /dev/null
+++ b/src/grep/po/ca.po
@@ -0,0 +1,879 @@
+# Traducció missatges de GNU grep al català.
+# Copyright (C) 2002 Free Software Foundation, Inc.
+# This file is distributed under the same license as the grep package.
+# Enric Alberola Rosell <enricalberola@wanadoo.es>, 2002, 2010.
+# Àngel Mompó <mecatxis@mecatxis.cat>, 2010, 2011, 2012, 2014, 2017, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU grep-3.1.48\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2019-07-18 22:11+0200\n"
+"Last-Translator: Àngel Mompó <mecatxis@mecatxis.cat>\n"
+"Language-Team: Catalan <ca@dodds.net>\n"
+"Language: ca\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Gtranslator 2.91.7\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "l'argument %s no és vàlid per %s"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "l'argument %s és ambigu per %s"
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr "Els arguments vàlids són:"
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr "error del programa"
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr "desbordament de la pila"
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr "error d'escriptura"
+
+#: lib/dfa.c:896
+msgid "unbalanced ["
+msgstr "[ desaparellat"
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr "La classe de caràcter no és vàlida"
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr "La sintaxi de la classe de caràcter és [[:espai:]], no [:espai:]"
+
+#: lib/dfa.c:1210
+msgid "unfinished \\ escape"
+msgstr "Codi d'escapada \\ inacabat"
+
+#: lib/dfa.c:1371
+msgid "invalid content of \\{\\}"
+msgstr "el context de \\{\\} no és vàlid"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr "l'expressió regular és massa gran"
+
+#: lib/dfa.c:1858
+msgid "unbalanced ("
+msgstr "( desaparellat"
+
+#: lib/dfa.c:1975
+msgid "no syntax specified"
+msgstr "no s'ha especificat cap sintaxi"
+
+#: lib/dfa.c:1986
+msgid "unbalanced )"
+msgstr ") desaparellat"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "Error desconegut del sistema"
+
+#: lib/getopt.c:278
+#, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: l'opció «%s%s» és ambigua\n"
+
+#: lib/getopt.c:284
+#, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: l'opció «%s%s» és ambigua; possibilitats:"
+
+#: lib/getopt.c:319
+#, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: no es reconeix l'opció «%s%s»\n"
+
+#: lib/getopt.c:345
+#, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: l'opció «%s%s» no permet un argument\n"
+
+#: lib/getopt.c:360
+#, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: l'opció «%s%s» necessita un argument\n"
+
+#: lib/getopt.c:621
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: l'opció no és vàlida -- «%c»\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: l'opció necessita un argument -- «%c»\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "memòria exhaurida"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr "no es pot enregistrar el directori de treball actual"
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "no s'ha pogut tornar al directori de treball inicial"
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr "No s'ha pogut establir el mode del descriptor de fitxers text/binari"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "«"
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "»"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr "Èxit"
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr "No coincideix"
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr "L'expressió regular no és vàlida"
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr "La compaginació del caràcter no és vàlida"
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr "El nom de la classe del caràcter no és vàlida"
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr "Barra inversa final"
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr "La referència anterior no és vàlida"
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr "Falten o sobren [, [^, [:, [., o [="
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr "falten o sobren ( o \\("
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr "Falten o sobren \\{"
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr "El context de \\{\\} no és vàlid"
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr "L'abast no és vàlid"
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "Memòria exhaurida"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr "L'expressió regular precedent no és vàlida"
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr "Final prematur de l'expressió regular"
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr "L'expressió regular és massa gran"
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr "Falten o sobren ) o \\)"
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr "No hi ha una expressió regular prèvia"
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Empaquetat per %s (%s)\n"
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Empaquetat per %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr "(C)"
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, fuzzy, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"\n"
+"Llicència GPLv3+: GNU GPL versió 3 o posterior <http://gnu.org/licenses/gpl."
+"html>.\n"
+"Aquest programari és lliure: podeu modificar-lo i redistribuir-lo si voleu.\n"
+"No hi ha CAP GARANTIA, en la mesura que ho permeti la llei.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Escrit per %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Escrit per %s i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Escrit per %s, %s i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Escrit per %s, %s, %s.\n"
+"i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Escrit per %s, %s, %s.\n"
+"%s, i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Escrit per %s, %s, %s.\n"
+"%s, %s, i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Escrit per %s, %s, %s.\n"
+"%s, %s, %s, i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Escrit per %s, %s, %s.\n"
+"%s, %s, %s, %s,\n"
+"i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Escrit per %s, %s, %s.\n"
+"%s, %s, %s, %s,\n"
+"%s, i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Escrit per %s, %s, %s.\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, i altres.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, fuzzy, c-format
+msgid "Report bugs to: %s\n"
+msgstr ""
+"\n"
+"Informeu dels errors a: %s\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "Informeu dels errors de %s a: %s\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Pàgina inicial de %s: <%s>\n"
+
+#: lib/version-etc.c:260
+#, fuzzy, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr ""
+"Ajuda general d'utilització del programari de GNU: <https://www.gnu.org/"
+"gethelp/>\n"
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(entrada estàndard)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "la longitud de l'argument no és vàlida"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "l'entrada és massa llarga per a comptar"
+
+#: src/grep.c:1641
+#, fuzzy, c-format
+msgid "%s: binary file matches"
+msgstr "Hi ha coincidències en el fitxer binari %s\n"
+
+#: src/grep.c:1679
+#, fuzzy, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "bucle de directori recursiu"
+
+#: src/grep.c:1899
+#, fuzzy, c-format
+msgid "%s: input file is also the output"
+msgstr "el fitxer d'entrada %s és també la sortida"
+
+#: src/grep.c:1961 src/grep.c:1968
+#, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "Forma d'ús: %s [OPCIÓ]... PATRONS [FITXER] ...\n"
+
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "Feu servir «%s --help» per a obtenir més informació.\n"
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr "Busca els PATRONS a cada FITXER.\n"
+
+#: src/grep.c:1970
+#, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"Exemple: %s -i «hola món» menu.h main.c\n"
+"PATRONS pot contenir diversos patrons separats per salts de línia.\n"
+"\n"
+"Selecció i interpretació del patró:\n"
+
+#: src/grep.c:1975
+#, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp PATRONS són expressions regulars ampliades\n"
+" -F, --fixed-strings PATRONS són conjunts de cadenes separades per "
+"salts de línia\n"
+" -G, --basic-regexp PATRONS són expressions regulars bàsiques (per "
+"defecte)\n"
+" -P, --perl-regexp PATRONS són expressions regulars de Perl\n"
+
+#: src/grep.c:1981
+#, fuzzy, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=PATRONS utilitza els PATRONS per la comparació\n"
+" -f, --file=FITXER obté els PATRONS del FITXER\n"
+" -i, --ignore-case no diferencia entre majúscules i minúscules\n"
+" -w, --word-regexp força la concordança amb paraules completes\n"
+" -x, --line-regexp força la concordança amb línies completes\n"
+" -z, --null-data una línia de dades acaba amb byte 0 i no amb un "
+"salt de línia\n"
+
+#: src/grep.c:1989
+#, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"Miscel·lània:\n"
+" -s, --no-messages suprimeix els missatges d'error\n"
+" -v, --invert-match selecciona les línies que no coincideixen\n"
+" -V, --version mostra la informació sobre la versió i surt\n"
+" --help mostra aquesta ajuda i surt\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+"\n"
+"Control de sortida:\n"
+" -m, --max-count=NUM s'atura després de NUM coincidències\n"
+" -b, --byte-offset mostra el byte de desplaçament amb les línies de "
+"sortida\n"
+" -n, --line-number mostra el número de lí­nia amb les línies de "
+"sortida\n"
+" --line-buffered bolca la sortida a cada línia\n"
+" -H, --with-filename mostra el nom del fitxer amb les línies de "
+"sortida\n"
+" -h, --no-filename elimina els noms dels fitxers de la sortida\n"
+" --label=ETIQUETA fes servir ETIQUETA com a prefix del nom del "
+"fitxer per l'entrada estàndard\n"
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+" -o, --only-matching mostra només la part de la línia que "
+"coincideixi\n"
+" -q, --quiet, --silent elimina la sortida normal\n"
+" --binary-files=TIPUS assumeix que els fitxers binaris són de tipus "
+"TIPUS;\n"
+" TIPUS pot ser «binary», «text» o «without-"
+"match»\n"
+" -a, --text equivalent a --binary-files=text\n"
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+" -I equivalent a --binary-files=without-match\n"
+" -d, --directories=ACCIÓ com cal tractar els directoris;\n"
+" ACCIÓ pot ser: «read», «recurse», o «skip»\n"
+" -D, --devices=ACCIÓ com tractar els dispositius, FIFOs i sòcols;\n"
+" ACCIÓ pot ser: «read» o «skip»\n"
+" -r, --recursive equivalent a --directories=recurse\n"
+" -R, --dereference-recursive igual que l'anterior, però segueix tots els "
+"enllaços simbòlics\n"
+
+#: src/grep.c:2023
+#, fuzzy, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+" --include=GLOB........ busca els fitxers que coincideixin amb GLOB "
+"(un fitxer patró)\n"
+" --exclude=GLOB ........ salta els fitxers i directoris que "
+"coincideixin amb GLOB\n"
+" --exclude-from=FITXER salta els fitxers que coincideixin amb "
+"qualsevol fitxer patró del FITXER\n"
+" --exclude-dir=GLOB ...salta els directoris que coincideixin amb "
+"GLOB.\n"
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+" -L, --files-without-match mostra només els noms dels FITXERs que no "
+"tinguin cap línia seleccionada\n"
+" -l, --files-with-matches mostra només els noms dels FITXERs que "
+"continguin alguna línia seleccionada\n"
+" -c, --count mostra només el nombre de línies selecionades "
+"per FITXER\n"
+" -T, --initial-tab alinea les tabulacions (si cal)\n"
+" -Z, --null mostra byte 0 després del nom de FITXER\n"
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+"\n"
+"Control del context:\n"
+" -B, --before-context=NOMBRE mostra un NOMBRE de línies del context "
+"anterior\n"
+" -A, --after-context=NOMBRE mostra un NOMBRE de línies del context "
+"posterior\n"
+" -C, --context=NOMBRE mostra un NOMBRE de línies del context de "
+"sortida\n"
+
+#: src/grep.c:2043
+#, fuzzy, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+" -NUM el mateix que --context=NUM\n"
+" --color[=QUAN],\n"
+" --colour[=QUAN] ressalta amb marcadors les cadenes "
+"coincidents;\n"
+" QUAN pot ser: «always», «never» o «auto»\n"
+" -U, --binary no elimina els caràcters CR als EOL (MSDOS/"
+"Windows)\n"
+"\n"
+
+#: src/grep.c:2052
+#, fuzzy, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"Quan el FITXER és «-», llegeix l'entrada estàndard. Si no s'indica el "
+"FITXER, llegeix «.» \n"
+"si és recursiu i «-» si no ho és. Si s'indiquen menys de dos FITXERs, "
+"assumeix -h.\n"
+"L'estat de sortida és 0 si s'havia seleccionat alguna línia (o algun fitxer "
+"si -L), si no 1.\n"
+"Si hi ha algun error i no s'ha indicat -q, l'estat de sortida és 2.\n"
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "s'han especificat expressions conflictives"
+
+#: src/grep.c:2101
+#, fuzzy
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr ""
+"el suport per l'opció -P no està  compilat a aquest binari --disable-perl-"
+"regexp"
+
+#: src/grep.c:2103
+#, c-format
+msgid "invalid matcher %s"
+msgstr "l'expressió %s no és vàlida"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "el mètode de dispositius és desconegut"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr ""
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "el comptador de màxims no és vàlid"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "el tipus de fitxer binari és desconegut"
+
+#: src/grep.c:2829
+#, fuzzy
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr "la resta, vegeu <https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>"
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr "no s'ha pogut assignar memòria per la pila JIT del PCRE"
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr "-P només permet la configuració local en unibyte i en UTF-8"
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr "l'opció -P només suporta un sol patró"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr "error intern (no hauria de passar mai)"
+
+# PCRE is 'Perl Compatible Regular Expression'
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr "s'ha superat el límit de longitud de línia del PCRE"
+
+#: src/pcresearch.c:306
+#, fuzzy, c-format
+msgid "%s: memory exhausted"
+msgstr "memòria exhaurida"
+
+#: src/pcresearch.c:310
+#, fuzzy, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr "S'ha acabat la pila del PCRE JIT"
+
+# PCRE is 'Perl Compatible Regular Expression'
+#: src/pcresearch.c:315
+#, fuzzy, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr "s'ha superat el límit de l'estratègia «tornada enrere» del PCRE"
+
+# PCRE is 'Perl Compatible Regular Expression'
+#: src/pcresearch.c:319
+#, fuzzy, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr "s'ha superat el límit de l'estratègia «tornada enrere» del PCRE"
+
+#: src/pcresearch.c:327
+#, fuzzy, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr "error intern del PCRE: %d"
+
+#, c-format
+#~ msgid "warning: GREP_OPTIONS is deprecated; please use an alias or script"
+#~ msgstr "avís: GREP_OPTIONS està desfasat; feu servir un alies o un script"
+
+#, c-format
+#~ msgid "warning: %s: %s"
+#~ msgstr "aví­s: %s: %s"
+
+#~ msgid "invalid %s%s argument '%s'"
+#~ msgstr "l'argument «%s» de %s%s no és vàlid"
+
+#~ msgid "invalid suffix in %s%s argument '%s'"
+#~ msgstr "el sufix «%s» de %s%s no és vàlid"
+
+#~ msgid "%s%s argument '%s' too large"
+#~ msgstr "l'argument «%s» de %s%s és massa gran"
+
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "Pàgina inicial de %s: <https://www.gnu.org/software/%s/>\n"
+
+#~ msgid "Mike Haertel"
+#~ msgstr "Mike Haertel"
+
+#~ msgid "internal error"
+#~ msgstr "error intern"
+
+#~ msgid "%s: option '--%s' doesn't allow an argument\n"
+#~ msgstr "%s: l'opció «--%s» no permet un argument\n"
+
+#~ msgid "%s: unrecognized option '--%s'\n"
+#~ msgstr "%s: l'opció és desconeguda «--%s»\n"
+
+#~ msgid "%s: option '-W %s' is ambiguous\n"
+#~ msgstr "%s: l'opció «-W %s» és ambigua\n"
+
+#~ msgid "%s: option '-W %s' doesn't allow an argument\n"
+#~ msgstr "%s: l'opció «-W %s» no permet un argument\n"
+
+#~ msgid "%s: option '-W %s' requires an argument\n"
+#~ msgstr "%s: l'opció «-W %s» necessita un argument\n"
+
+#~ msgid "lseek failed"
+#~ msgstr "l'lseek ha fallat"
+
+#~ msgid "PATTERN is, by default, a basic regular expression (BRE).\n"
+#~ msgstr "El PATRÓ és, per defecte, una expressió regular bàsica (ERB).\n"
+
+#~ msgid ""
+#~ "'egrep' means 'grep -E'. 'fgrep' means 'grep -F'.\n"
+#~ "Direct invocation as either 'egrep' or 'fgrep' is deprecated.\n"
+#~ msgstr ""
+#~ "«egrep» ara és «grep -E». «fgrep» ara és «grep -F».\n"
+#~ "La crida directa tant de «egrep» com de «fgrep» és obsoleta.\n"
+
+#~ msgid "unescaped ^ or $ not supported with -Pz"
+#~ msgstr "falta el caràcter d'escapada de ^ o no es permet $ amb -Pz"
+
+#~ msgid "GNU Grep home page: <%s>\n"
+#~ msgstr "Pàgina principal del Grep de GNU: <%s>\n"
+
+#~ msgid "invalid UTF-8 byte sequence in input"
+#~ msgstr "la seqüència d'entrada UTF-8 byte no és vàlida"
+
+#~ msgid "PATTERN is an extended regular expression (ERE).\n"
+#~ msgstr "El PATRÓ és una expressió regular ampliada (ERA).\n"
+
+#~ msgid "Invocation as 'egrep' is deprecated; use 'grep -E' instead.\n"
+#~ msgstr "La crida com a «egrep» està desfasada; feu servir «grep -E».\n"
+
+#~ msgid "PATTERN is a set of newline-separated fixed strings.\n"
+#~ msgstr ""
+#~ "El PATRÓ és un conjunt de cadenes fixes separades per salts de línia.\n"
+
+#~ msgid "Invocation as 'fgrep' is deprecated; use 'grep -F' instead.\n"
+#~ msgstr "La crida com a «fgrep» està desfasada; feu servir «grep -F».\n"
+
+#~ msgid "%s can only use the %s pattern syntax"
+#~ msgstr "%s només pot fer servir la sintaxis de patró %s"
+
+#~ msgid "the --mmap option has been a no-op since 2010"
+#~ msgstr "la opció --mmap no fa res des del 2010"
+
+#~ msgid "unfinished repeat count"
+#~ msgstr "comptador de repeticions inacabat"
+
+#~ msgid "malformed repeat count"
+#~ msgstr "comptador de repeticions defectuós"
+
+#~ msgid "writing output"
+#~ msgstr "s'escriu a la sortida"
+
+#~ msgid ""
+#~ "in GREP_COLORS=\"%s\", the \"%s\" capacity needs a value (\"=...\"); "
+#~ "skipped"
+#~ msgstr ""
+#~ "a GREP_COLORS=\"%s\", la capacitat \"%s\" necessita un valor (\"=..\"). "
+#~ "S'ha omés"
+
+#~ msgid ""
+#~ "in GREP_COLORS=\"%s\", the \"%s\" capacity is boolean and cannot take a "
+#~ "value (\"=%s\"); skipped"
+#~ msgstr ""
+#~ "a GREP_COLORS=\"%s\", la capacitat \"%s\" és booleana i no pot tenir el "
+#~ "valor (\"=%s\"). S'ha omés"
+
+#~ msgid "in GREP_COLORS=\"%s\", the \"%s\" capacity %s"
+#~ msgstr "a GREP_COLORS=\"%s\", la capacitat \"%s\" %s"
+
+#~ msgid ""
+#~ "stopped processing of ill-formed GREP_COLORS=\"%s\" at remaining "
+#~ "substring \"%s\""
+#~ msgstr ""
+#~ "s'ha deixat de processar de les subcadenes GREP_COLORS=\"%s\" mal "
+#~ "formades \"%s\""
diff --git a/src/grep/po/cs.gmo b/src/grep/po/cs.gmo
new file mode 100644
index 0000000..d3795dd
--- /dev/null
+++ b/src/grep/po/cs.gmo
Binary files differ
diff --git a/src/grep/po/cs.po b/src/grep/po/cs.po
new file mode 100644
index 0000000..29a24eb
--- /dev/null
+++ b/src/grep/po/cs.po
@@ -0,0 +1,989 @@
+# Czech message catalog for grep.
+# Copyright (C) 1998 Free Software Foundation, Inc.
+# This file is distributed under the same license as the grep package.
+# Vladimir Michl <Vladimir.Michl@seznam.cz>, 1998.
+# Petr Pisar <petr.pisar@atlas.cz>, 2008, 2009, 2010, 2011, 2012, 2013.
+# Petr Pisar <petr.pisar@atlas.cz>, 2014, 2015, 2016, 2018, 2020, 2021.
+#
+# Thanks to Stanislav Brabec <utx@k332.feld.cvut.cz>.
+msgid ""
+msgstr ""
+"Project-Id-Version: grep 3.6.27\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2021-08-09 20:10+02:00\n"
+"Last-Translator: Petr Pisar <petr.pisar@atlas.cz>\n"
+"Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
+"Language: cs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "neplatný argument %s u %s"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "nejednoznačný argument %s u %s"
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr "Platné argumenty jsou:"
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr "chyba programu"
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr "přetečení zásobníku"
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr "chyba při zápisu"
+
+#: lib/dfa.c:896
+msgid "unbalanced ["
+msgstr "nevyvážená ["
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr "neplatný třída znaků"
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr "zápis třídy znaků je [[:space:]], ne [:space:]"
+
+#: lib/dfa.c:1210
+msgid "unfinished \\ escape"
+msgstr "neukončená escape sekvence \\"
+
+#: lib/dfa.c:1371
+msgid "invalid content of \\{\\}"
+msgstr "neplatný obsah \\{\\}"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr "regulární výraz je příliš velký"
+
+#: lib/dfa.c:1858
+msgid "unbalanced ("
+msgstr "nevyvážená ("
+
+# ? Není zadaná syntaxe
+#: lib/dfa.c:1975
+msgid "no syntax specified"
+msgstr "syntaxe není určena"
+
+#: lib/dfa.c:1986
+msgid "unbalanced )"
+msgstr "nevyvážená )"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "Neznámá systémová chyba"
+
+#: lib/getopt.c:278
+#, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: přepínač „%s%s“ není jednoznačný\n"
+
+#: lib/getopt.c:284
+#, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: přepínač „%s%s“ není jednoznačný: možnosti:"
+
+#: lib/getopt.c:319
+#, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: nerozpoznaný přepínač „%s%s“\n"
+
+#: lib/getopt.c:345
+#, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: přepínač „%s%s“ musí být zadán bez argumentu\n"
+
+#: lib/getopt.c:360
+#, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: přepínač „%s%s“ vyžaduje argument\n"
+
+#: lib/getopt.c:621
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: neznámý přepínač – „%c“\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: přepínač vyžaduje argument – „%c“\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "paměť vyčerpána"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr "nelze zaznamenat aktuální pracovní adresář"
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "návrat do prvotního pracovního adresáře se nezdařil"
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr "nastavení textového/binárního režimu deskriptoru souboru selhalo"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "„"
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "“"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr "Úspěch"
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr "Žádná shoda"
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr "Neplatný regulární výraz"
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr "Neplatný řadicí znak"
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr "Neplatný název třídy znaků"
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr "Závěrečné koncové lomítko"
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr "Neplatný zpětný odkaz"
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr "Nepárový [, [^, [:, [. nebo [="
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr "Nepárový ( nebo \\("
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr "Nepárový \\{"
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr "Neplatný obsah \\{\\}"
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr "Neplatný konec rozsahu"
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "Paměť vyčerpána"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr "Neplatný předchozí regulární výraz"
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr "Předčasný konec regulárního výrazu"
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr "Regulární výraz je příliš velký"
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr "Nepárový ) nebo \\)"
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr "Žádný předchozí regulární výraz"
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Zabaleno kým: %s (%s)\n"
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Zabaleno kým: %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr "©"
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Licence GPLv3+: GNU GPL verze 3 nebo novější\n"
+"<%s>.\n"
+"Toto je volné programové vybavení: máte právo jej měnit a dále šířit.\n"
+"Není zde ŽÁDNÁ ZÁRUKA, jak jen zákon dovoluje.\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Napsal(a) %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Napsali(y) %s a %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Napsali(y) %s, %s a %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Napsali(y) %s, %s, %s\n"
+"a %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Napsali(y) %s, %s, %s,\n"
+"%s a %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Napsali(y) %s, %s, %s,\n"
+"%s, %s a %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Napsali(y) %s, %s, %s,\n"
+"%s, %s, %s a %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Napsali(y) %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"a %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Napsali(y) %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s a %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Napsali(y) %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s a další.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr ""
+"Chyby v programu oznamujte (anglicky) na adresu: <%s>\n"
+"Připomínky k překladu na adresu: <translation-team-cs@lists.sourceforge."
+"net>\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "Chyby distributora %s oznamujte (anglicky) na adresu: <%s>\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Domovská stránka programu %s: <%s>\n"
+
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr "Obecná pomoc s používáním GNU softwaru: <%s>\n"
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(standardní vstup)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "neplatný argument délky kontextu"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "počet vstupních řádků nelze spočítat (je jich hodně)"
+
+#: src/grep.c:1641
+#, c-format
+msgid "%s: binary file matches"
+msgstr "%s: binární soubor odpovídá"
+
+#: src/grep.c:1679
+#, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "%s: pozor: smyčka rekurzivních adresářů"
+
+#: src/grep.c:1899
+#, c-format
+msgid "%s: input file is also the output"
+msgstr "%s: vstupní soubor je rovněž výstupem"
+
+#: src/grep.c:1961 src/grep.c:1968
+#, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "Použití: %s [PŘEPÍNAČ]… VZORKY [SOUBOR]…\n"
+
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "Více informací získáte příkazem „%s --help“.\n"
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr "Každý SOUBOR prohledá na VZORKY.\n"
+
+#: src/grep.c:1970
+#, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"Příklad: %s -i 'hello world' menu.h main.c\n"
+"VZORKY smí obsahovat více vzorků oddělených novým řádkem.\n"
+"\n"
+"Výběr a interpretace vzorku:\n"
+
+#: src/grep.c:1975
+#, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp VZORKY jsou rozšířené regulární výrazy\n"
+" -F, --fixed-strings VZORKY jsou řetězce\n"
+" -G, --basic-regexp VZORKY jsou základní regulární výrazy\n"
+" -P, --perl-regexp VZORKY jsou regulární výrazy jazyka Perl\n"
+
+#: src/grep.c:1981
+#, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=VZORKY použije VZORKY jako regulární výraz\n"
+" -f, --file=SOUBOR načte VZORKY ze SOUBORU\n"
+" -i, --ignore-case ignoruje rozdíly ve velikosti písmen ve "
+"vzorcích\n"
+" a datech\n"
+" --no-ignore-case neignoruje rozdíly ve velikosti písmen "
+"(výchozí)\n"
+" -w, --word-regexp hledá pouze na celá slova\n"
+" -x, --line-regexp hledá pouze celé řádky\n"
+" -z, --null-data řádek končí nulovým bajtem místo znaku nového "
+"řádku\n"
+
+#: src/grep.c:1989
+#, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"Různé:\n"
+" -s, --no-messages potlačí chybové zprávy\n"
+" -v, --invert-match vybere neodpovídající řádky\n"
+" -V, --version vypíše označení verze a skončí\n"
+" --help vypíše tuto nápovědu a skončí\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+"\n"
+"Řízení výstupu:\n"
+" -m, --max-count=POČET skončí po vybrání POČTU řádků\n"
+" -b, --byte-offset s každým výstupním řádkem vypíše jeho pozici\n"
+" v souboru\n"
+" -n, --line-number s každým výstupním řádkem vypíše jeho číslo "
+"řádku\n"
+" --line-buffered vyprázdní výstup po každém řádku\n"
+" -H, --with-filename u výstupních řádků vypisuje název souboru\n"
+" -h, --no-filename potlačí předřazování jména souboru na výstupu\n"
+" --label=NÁZEV použije NÁZEV jako označení standardního\n"
+" vstupu na výstupu\n"
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+" -o, --only-matching zobrazí pouze neprázdné části odpovídajících "
+"řádků\n"
+" -q, --quiet, --silent potlačí obvyklý výstup\n"
+" --binary-files=TYP definuje typ binárních souborů\n"
+" TYP může být: „binary“ (binární), "
+"„text“ (textový)\n"
+" nebo „without-match“ (bez vyhovění vzorku)\n"
+" -a, --text jako --binary-files=text\n"
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+" -I jako --binary-files=without-match\n"
+" -d, --directories=AKCE jak zpracovávat adresáře. AKCE může být:\n"
+" „read“ (číst), „recurse“ (rekurze),\n"
+" „skip“ (přeskočit)\n"
+" -D, --devices=AKCE jak zpracovávat zařízení, FIFO (roury) a "
+"sockety,\n"
+" AKCE může být: „read“ (číst) nebo "
+"„skip“ (přeskočit)\n"
+" -r, --recursive jako --directories=recurse\n"
+" -R, --dereference-recursive\n"
+" obdobně, jen následuje všechny symbolické "
+"odkazy\n"
+
+#: src/grep.c:2023
+#, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+" --include=GLOB prohledá pouze soubory, které vyhovují GLOBU\n"
+" --exclude=GLOB přeskočí soubory, které vyhovují GLOBU\n"
+" --exclude-from=SOUBOR přeskočí soubory, které vyhovují jakémukoliv "
+"vzorku\n"
+" ze SOUBORU\n"
+" --exclude-dir=GLOB přeskočí adresáře, které vyhovují GLOBU\n"
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+" -L, --files-without-match vypíše pouze názvy souborů, ze kterých nebyly\n"
+" vybrány žádné řádky\n"
+" -l, --files-with-matches vypíše pouze názvy souborů, ze kterých byly "
+"vybrány\n"
+" řádky\n"
+" -c, --count vypíše pouze počet vyhovujících řádků na SOUBOR\n"
+" -T, --initial-tab zarovná začátky řádků tabulátory (je-li třeba)\n"
+" -Z, --null vypíše nulový bajt za jménem SOUBORU\n"
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+"\n"
+"Řízení kontextu:\n"
+" -B, --before-context=POČET vypíše POČET řádků před shodou\n"
+" -A, --after-context=POČET vypíše POČET řádků za shodou\n"
+" -C, --context=POČET vypíše POČET řádků kontextu (před i za shodou)\n"
+
+#: src/grep.c:2043
+#, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+" -POČET stejné jako --context=POČET\n"
+" --group-separator=ODDĚLOVAČ\n"
+" vypisuje ODDĚLOVAČ na řádku mezi shodami\n"
+" s kontextem\n"
+" --no-group-separator nevypisuje oddělovač shod s kontextem\n"
+" --color[=KDY],\n"
+" --colour[=KDY] použije barev k rozlišení vyhovujících "
+"řetězců,\n"
+" KDY může být „always“ (vždy), „never“ (nikdy)\n"
+" nebo „auto“ (automaticky)\n"
+" -U, --binary neodstraňuje znak CR na konci řádku (MSDOS/"
+"Windows)\n"
+
+#: src/grep.c:2052
+#, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"Je-li SOUBOR -, čte standardní vstup. Ne-li SOUBOR zadán, čte „.“,\n"
+"je-li přítomen přepínač -r, jinak čte standardní vstup. Jestliže jsou\n"
+"zadány méně než dva SOUBORY, pak je výchozí přepínač -h.\n"
+"Návratový kód je 0 při nalezení vyhovujícího řádku, jinak 1.\n"
+"Vyskytne-li se chyba a není-li zadán přepínač -q, bude vrácen kód 2.\n"
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "zadány kolidující vzorky"
+
+#: src/grep.c:2101
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr ""
+"V programu přeloženém s přepínačem --disable-perl-regexp nejsou perlové "
+"výrazy podporovány"
+
+#: src/grep.c:2103
+#, c-format
+msgid "invalid matcher %s"
+msgstr "neplatný syntaxe vzorku %s"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "neznámá metoda obsluhy zařízení"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr "pozor: přepínač --unix-byte-offsets (-u) je zastaralý"
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "neplatný maximální počet"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "neznámý typ binárního souboru"
+
+#: src/grep.c:2829
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+"Napsal Mike Haertel a další, vizte\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr "alokace paměti pro JIT zásobník PCRE selhala"
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr "-P podporuje pouze jednobajtová a UTF-8 národní prostředí"
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr "přepínač -P lze být použít pouze s jedním vzorkem"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr "vnitřní chyba (to by se nikdy nemělo stát)"
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr "překročeno omezení PCRE na délku řádku"
+
+#: src/pcresearch.c:306
+#, c-format
+msgid "%s: memory exhausted"
+msgstr "%s: paměť vyčerpána"
+
+#: src/pcresearch.c:310
+#, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr "%s: JIT zásobník knihovny PCRE vyčerpán"
+
+#: src/pcresearch.c:315
+#, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr "%s: překročeno omezení PCRE na délku návratu"
+
+#: src/pcresearch.c:319
+#, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr "%s: překročeno omezení PCRE na hloubku zanoření"
+
+#: src/pcresearch.c:327
+#, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr "%s: vnitřní chyba PCRE: %d"
+
+#~ msgid "warning: GREP_OPTIONS is deprecated; please use an alias or script"
+#~ msgstr ""
+#~ "pozor: proměnná GREP_OPTIONS je zastaralá, prosím, použijte alias nebo "
+#~ "skript"
+
+#~ msgid "warning: %s: %s"
+#~ msgstr "varování: %s: %s"
+
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "Domovská stránka programu %s: <https://www.gnu.org/software/%s/>\n"
+
+#~ msgid "invalid %s%s argument '%s'"
+#~ msgstr "neplatný argument „%3$s“ u %1$s%2$s"
+
+#~ msgid "invalid suffix in %s%s argument '%s'"
+#~ msgstr "neplatná přípona argumentu „%3$s“ u %1$s%2$s"
+
+#~ msgid "%s%s argument '%s' too large"
+#~ msgstr "argument „%3$s“ u %1$s%2$s je příliš dlouhý"
+
+#~ msgid "Mike Haertel"
+#~ msgstr "Mike Haertel"
+
+#~ msgid "internal error"
+#~ msgstr "vnitřní chyba"
+
+#~ msgid "%s: option '--%s' doesn't allow an argument\n"
+#~ msgstr "%s: přepínač „--%s“ musí být zadán bez argumentu\n"
+
+#~ msgid "%s: unrecognized option '--%s'\n"
+#~ msgstr "%s: neznámý přepínač „--%s“\n"
+
+#~ msgid "%s: option '-W %s' is ambiguous\n"
+#~ msgstr "%s: přepínač „-W %s“ není jednoznačný\n"
+
+#~ msgid "%s: option '-W %s' doesn't allow an argument\n"
+#~ msgstr "%s: přepínač „-W %s“ musí být zadán bez argumentu\n"
+
+#~ msgid "%s: option '-W %s' requires an argument\n"
+#~ msgstr "%s: přepínač „-W %s“ vyžaduje argument\n"
+
+#~ msgid "lseek failed"
+#~ msgstr "posun v souboru (lseek) se nezdařil"
+
+#~ msgid "PATTERN is, by default, a basic regular expression (BRE).\n"
+#~ msgstr ""
+#~ "VZOREK představuje základní regulární výraz (BRE), pokud není řečeno "
+#~ "jinak.\n"
+
+#~ msgid ""
+#~ "'egrep' means 'grep -E'. 'fgrep' means 'grep -F'.\n"
+#~ "Direct invocation as either 'egrep' or 'fgrep' is deprecated.\n"
+#~ msgstr ""
+#~ "„egrep“ znamená „grep -E“. „fgrep“ znamená „grep -F“.\n"
+#~ "Přímé spouštění příkazem „egrep“ nebo „fgrep“ je zastaralé.\n"
+
+#~ msgid "unescaped ^ or $ not supported with -Pz"
+#~ msgstr "s přepínači -Pz nejsou podporovány neescapované znaky ^ a $"
+
+#~ msgid "GNU Grep home page: <%s>\n"
+#~ msgstr "Domovská stránka GNU Grepu: <%s>\n"
+
+#~ msgid "invalid UTF-8 byte sequence in input"
+#~ msgstr "neplatná posloupnost UTF-8 bajtů ve vstupu"
+
+#~ msgid "PATTERN is an extended regular expression (ERE).\n"
+#~ msgstr "VZOREK představuje rozšířený regulární výraz (ERE).\n"
+
+#~ msgid "Invocation as 'egrep' is deprecated; use 'grep -E' instead.\n"
+#~ msgstr "Spouštění programu jako „egrep“ je zastaralé; použijte „grep -E“.\n"
+
+#~ msgid "PATTERN is a set of newline-separated fixed strings.\n"
+#~ msgstr "VZOREK představuje množinu řetězců, každý na novém řádku.\n"
+
+#~ msgid "Invocation as 'fgrep' is deprecated; use 'grep -F' instead.\n"
+#~ msgstr "Spouštění programu jako „fgrep“ je zastaralé; použijte „grep -F“.\n"
+
+#~ msgid "%s can only use the %s pattern syntax"
+#~ msgstr "%s umí pouze syntaxi vzorků %s"
+
+#~ msgid "the --mmap option has been a no-op since 2010"
+#~ msgstr "přepínač --map nic nedělá již od roku 2010"
+
+#~ msgid "unfinished repeat count"
+#~ msgstr "neukončený zápis počtu opakování"
+
+#~ msgid "malformed repeat count"
+#~ msgstr "deformovaný zápis počtu opakování"
+
+#~ msgid "writing output"
+#~ msgstr "zapisuje se výstup"
+
+#~ msgid ""
+#~ "in GREP_COLORS=\"%s\", the \"%s\" capacity needs a value (\"=...\"); "
+#~ "skipped"
+#~ msgstr ""
+#~ "Schopnost „%2$s“ v GREP_COLORS=\"%1$s\" potřebuje hodnotu („=…“); "
+#~ "přeskočena"
+
+#~ msgid ""
+#~ "in GREP_COLORS=\"%s\", the \"%s\" capacity is boolean and cannot take a "
+#~ "value (\"=%s\"); skipped"
+#~ msgstr ""
+#~ "Schopnost „%2$s“ v GREP_COLORS=\"%1$s\" je pravdivostního typu a nemůže "
+#~ "nést hodnotu („=%3$s“); přeskočena"
+
+#~ msgid "in GREP_COLORS=\"%s\", the \"%s\" capacity %s"
+#~ msgstr "V GREP_COLORS=\"%s\" schopnost „%s“ %s"
+
+#~ msgid ""
+#~ "stopped processing of ill-formed GREP_COLORS=\"%s\" at remaining "
+#~ "substring \"%s\""
+#~ msgstr ""
+#~ "Zpracování chybně utvořeného GREP_COLORS=\"%s\" zastaveno na zbývajícím "
+#~ "podřetězci „%s“"
+
+#~ msgid "unknown directories method"
+#~ msgstr "neznámá metoda obsluhy adresářů"
+
+#~ msgid ""
+#~ "\n"
+#~ "Output control:\n"
+#~ " -m, --max-count=NUM stop after NUM matches\n"
+#~ " -b, --byte-offset print the byte offset with output lines\n"
+#~ " -n, --line-number print line number with output lines\n"
+#~ " --line-buffered flush output on every line\n"
+#~ " -H, --with-filename print the filename for each match\n"
+#~ " -h, --no-filename suppress the prefixing filename on output\n"
+#~ " --label=LABEL print LABEL as filename for standard input\n"
+#~ " -o, --only-matching show only the part of a line matching "
+#~ "PATTERN\n"
+#~ " -q, --quiet, --silent suppress all normal output\n"
+#~ " --binary-files=TYPE assume that binary files are TYPE;\n"
+#~ " TYPE is `binary', `text', or `without-match'\n"
+#~ " -a, --text equivalent to --binary-files=text\n"
+#~ " -I equivalent to --binary-files=without-match\n"
+#~ " -d, --directories=ACTION how to handle directories;\n"
+#~ " ACTION is `read', `recurse', or `skip'\n"
+#~ " -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+#~ " ACTION is `read' or `skip'\n"
+#~ " -R, -r, --recursive equivalent to --directories=recurse\n"
+#~ " --include=FILE_PATTERN search only files that match FILE_PATTERN\n"
+#~ " --exclude=FILE_PATTERN skip files and directories matching "
+#~ "FILE_PATTERN\n"
+#~ " --exclude-from=FILE skip files matching any file pattern from "
+#~ "FILE\n"
+#~ " --exclude-dir=PATTERN directories that match PATTERN will be "
+#~ "skipped.\n"
+#~ " -L, --files-without-match print only names of FILEs containing no "
+#~ "match\n"
+#~ " -l, --files-with-matches print only names of FILEs containing matches\n"
+#~ " -c, --count print only a count of matching lines per "
+#~ "FILE\n"
+#~ " -T, --initial-tab make tabs line up (if needed)\n"
+#~ " -Z, --null print 0 byte after FILE name\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Řízení výstupu:\n"
+#~ " -m, --max-count=ČÍSLO skončí, pokud najde ČÍSLO výrazů\n"
+#~ " -b, --byte-offset s každým výstupním řádkem vypíše jeho pozici\n"
+#~ " v souboru\n"
+#~ " -n, --line-number s každým výstupním řádkem vypíše jeho číslo "
+#~ "řádku\n"
+#~ " --line-buffered vyprázdní výstup po každém řádku\n"
+#~ " -H, --with-filename s každým výstupním řádkem vypíše jméno "
+#~ "souboru\n"
+#~ " -h, --no-filename potlačí vypisování jména souboru s výst. "
+#~ "řádkem\n"
+#~ " --label=NÁZEV zobrazí NÁZEV jako název souboru na "
+#~ "standardním\n"
+#~ " vstupu\n"
+#~ " -o, --only-matching zobrazí pouze tu část řádku odpovídající "
+#~ "VZORKU\n"
+#~ " -q, --quiet, --silent potlačí obvyklý výstup\n"
+#~ " --binary-files=TYP definuje typ binárních souborů\n"
+#~ " TYP může být: „binary“ (binární), "
+#~ "„text“ (textový)\n"
+#~ " nebo „without-match“ (bez vyhovění vzorku)\n"
+#~ " -a, --text jako --binary-files=text\n"
+#~ " -I jako --binary-files=without-match\n"
+#~ " -d, --directories=AKCE jak zpracovávat adresáře. AKCE může být:\n"
+#~ " „read“ (číst), „recurse“ (rekurze),\n"
+#~ " „skip“ (přeskočit)\n"
+#~ " -D, --devices=AKCE jak zpracovávat zařízení, FIFO (roury) a "
+#~ "sockety,\n"
+#~ " AKCE může být: „read“ (číst) nebo "
+#~ "„skip“ (přeskočit)\n"
+#~ " -R, -r, --recursive jako --directories=recurse\n"
+#~ " --include=VZOREK soubory, které vyhovují vzorku, budou "
+#~ "zpracovány\n"
+#~ " --exclude=VZOREK soubory, které vyhovují vzorku, budou "
+#~ "přeskočeny\n"
+#~ " --exclude-from=SOUBOR soubory, které vyhovují vzorkům ze SOUBORu, "
+#~ "budou\n"
+#~ " přeskočeny\n"
+#~ " --exclude-dir=VZOREK adresáře, které vyhovují vzorku, budou "
+#~ "přeskočeny\n"
+#~ " -L, --files-without-match vypíše pouze jména souborů, ve kterých nebyl\n"
+#~ " VZOREK nalezen\n"
+#~ " -l, --files-with-matches vypíše pouze jména souborů, ve kterých byl "
+#~ "VZOREK\n"
+#~ " nalezen\n"
+#~ " -c, --count vypíše pouze počet vyhovujících řádků na "
+#~ "SOUBOR\n"
+#~ " -T, --initial-tab zarovnání začátků řádků tabulátory (je-li "
+#~ "třeba)\n"
+#~ " -Z, --null vypíše nulový bajt za jménem SOUBORu\n"
+
+#~ msgid "The -P and -z options cannot be combined"
+#~ msgstr "Přepínače -P a -z nemohou být kombinovány"
+
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: neznámý přepínač -- %c\n"
+
+#~ msgid "Copyright (C) 2008 Free Software Foundation, Inc.\n"
+#~ msgstr "Copyright © 2008 Free Software Foundation, Inc.\n"
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "Toto je volné programové vybavení; podmínky pro kopírování a rozšiřování\n"
+#~ "naleznete ve zdrojových textech. Toto programové vybavení je zcela BEZ "
+#~ "ZÁRUKY,\n"
+#~ "a to i bez záruky PRODEJNOSTI nebo VHODNOSTI PRO NĚJAKÝ KONKRÉTNÍ ÚČEL.\n"
diff --git a/src/grep/po/da.gmo b/src/grep/po/da.gmo
new file mode 100644
index 0000000..4284f0c
--- /dev/null
+++ b/src/grep/po/da.gmo
Binary files differ
diff --git a/src/grep/po/da.po b/src/grep/po/da.po
new file mode 100644
index 0000000..826c9cd
--- /dev/null
+++ b/src/grep/po/da.po
@@ -0,0 +1,830 @@
+# Danish messages for GNU Grep
+# Copyright (C) 1996, 1997, 1998, 2009, 2012, 2015, 2017, 2019 Free Software Foundation, Inc.
+# This file is distributed under the same license as the grep package.
+#
+# Kenneth Christiansen <kenneth@gnome.org>, 1999.
+# Keld Simonsen <keld@dkuug.dk>, 2000
+# Ask Hjorth Larsen <asklarsen@gmail.com>, 2009, 2010, 2012, 2015, 2017, 2019.
+#
+# Konventioner
+# ------------
+#
+# escape -> undvigesekvens
+# standard input -> standard-inddata (etc.)
+# (basic/extended) regular expression -> (elementært/udvidet) regulært udtryk
+# match (n) -> træffer
+# match (v) -> matche (findes i RO)
+#
+# Specielt
+# --------
+#
+# NUM -> ANTAL
+#
+# Strenge i retning af "%s%s argument `%s'" er i stil
+# med "--file argument `hello.txt'" eller "-f argument `hello.txt'".
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: grep-3.3.42\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2019-12-27 00:28+0100\n"
+"Last-Translator: Ask Hjorth Larsen <asklarsen@gmail.com>\n"
+"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
+"Language: da\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8-bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "ugyldigt argument %s til %s"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "flertydigt argument %s til %s"
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr "Gyldige argumenter er:"
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr "programfejl"
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr "stakoverløb"
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr "skrivefejl"
+
+#: lib/dfa.c:896
+msgid "unbalanced ["
+msgstr "ubalanceret ["
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr "ugyldig tegnklasse"
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr "syntaksen for tegnklasser er [[:space:]], ikke [:space:]"
+
+#: lib/dfa.c:1210
+msgid "unfinished \\ escape"
+msgstr "ufærdig \\-undvigesekvens"
+
+#: lib/dfa.c:1371
+msgid "invalid content of \\{\\}"
+msgstr "ugyldigt indhold af \\{\\}"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr "regulært udtryk er for stort"
+
+#: lib/dfa.c:1858
+msgid "unbalanced ("
+msgstr "ubalanceret ("
+
+#: lib/dfa.c:1975
+msgid "no syntax specified"
+msgstr "ingen syntaks angivet"
+
+#: lib/dfa.c:1986
+msgid "unbalanced )"
+msgstr "ubalanceret )"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "Ukendt systemfejl"
+
+#: lib/getopt.c:278
+#, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: flaget \"%s%s\" er flertydigt\n"
+
+#: lib/getopt.c:284
+#, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: flaget \"%s%s\" er flertydigt; muligheder:"
+
+#: lib/getopt.c:319
+#, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: ukendt flag \"%s%s\"\n"
+
+#: lib/getopt.c:345
+#, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: flaget \"%s%s\" tillader ikke et argument\n"
+
+#: lib/getopt.c:360
+#, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: flaget \"%s%s\" kræver et argument\n"
+
+#: lib/getopt.c:621
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: ugyldigt flag -- \"%c\"\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: flaget kræver et argument -- \"%c\"\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "hukommelse opbrugt"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr "kan ikke gemme nuværende arbejdskatalog"
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "kunne ikke vende tilbage til det oprindelige arbejdskatalog"
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr "kunne ikke angive tekst-/binærtilstand for fildeskriptor"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "\""
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "\""
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr "Succes"
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr "Ingen træffere"
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr "Ugyldigt regulært udtryk"
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr "Ugyldigt samletegn (collation character)"
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr "Ugyldigt tegnklassenavn"
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr "Afsluttende omvendt skråstreg"
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr "Ugyldig bagudreference"
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr "Uparret [, [^, [:, [. eller [="
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr "Uparret ( eller \\("
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr "Uparret \\{"
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr "Ugyldigt indhold af \\{\\}"
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr "Ugyldig intervalafslutning"
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "Hukommelse opbrugt"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr "Ugyldigt foranstillet regulært udtryk"
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr "Utidig afslutning af regulært udtryk"
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr "Regulært udtryk er for stort"
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr "Uparret ) eller \\)"
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr "Intet foregående regulært udtryk"
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Pakket af %s (%s)\n"
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Pakket af %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr "©"
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"GPLv3+-licens: GNU GPL version 3 eller senere <%s>.\n"
+"Dette er fri software: du kan frit ændre og videredistribuere det.\n"
+"Der gives INGEN GARANTI, i den grad som loven tillader det.\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Skrevet af %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Skrevet af %s og %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Skrevet af %s, %s og %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Skrevet af %s, %s, %s\n"
+"og %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Skrevet af %s, %s, %s,\n"
+"%s og %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Skrevet af %s, %s, %s,\n"
+"%s, %s og %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Skrevet af %s, %s, %s,\n"
+"%s, %s, %s og %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Skrevet af %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"og %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Skrevet af %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s og %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Skrevet af %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s og andre.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr "Rapportér fejl til: %s\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "Rapportér fejl i %s til: %s\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Hjemmeside for %s: <%s>\n"
+
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr "Generel hjælp til brug af GNU-software: <%s>\n"
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(standard-inddata)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "ugyldigt kontekstlængdeargument"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "inddata er for omfattende at optælle"
+
+#: src/grep.c:1641
+#, fuzzy, c-format
+msgid "%s: binary file matches"
+msgstr "Binær fil %s stemmer\n"
+
+#: src/grep.c:1679
+#, fuzzy, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "rekursiv katalogsløjfe"
+
+#: src/grep.c:1899
+#, fuzzy, c-format
+msgid "%s: input file is also the output"
+msgstr "indfilen %s er også udfilen"
+
+#: src/grep.c:1961 src/grep.c:1968
+#, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "Brug: %s [FLAG]... MØNSTRE [FIL]...\n"
+
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "Prøv \"%s --help\" for mere information.\n"
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr "Søg efter MØNSTRE i hver FIL.\n"
+
+#: src/grep.c:1970
+#, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"Eksempel: %s -i 'hej verden' menu.h main.c\n"
+"MØNSTRE kan indeholde flere mønstre adskilt af linjeskift.\n"
+"\n"
+"Valg af mønster og fortolkning:\n"
+
+#: src/grep.c:1975
+#, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp MØNSTRE er udvidede regulære udtryk\n"
+" -F, --fixed-strings MØNSTRE er strenge\n"
+" -G, --basic-regexp MØNSTRE er elementære regulære udtryk\n"
+" -P, --perl-regexp MØNSTRE er regulære udtryk til Perl\n"
+
+#: src/grep.c:1981
+#, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=MØNSTRE brug MØNSTRE i søgning\n"
+" -f, --file=FIL tag MØNSTRE fra FIL\n"
+" -i, --ignore-case skeln ikke mellem store og små bogstaver\n"
+" i mønstre og data\n"
+" --no-ignore-case skeln mellem store/små bogstaver (standard)\n"
+" -w, --word-regexp match kun hele ord\n"
+" -x, --line-regexp match kun hele linjer\n"
+" -z, --null-data en datalinje slutter med en 0-byte, ikke "
+"linjeskift\n"
+
+#: src/grep.c:1989
+#, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"Diverse:\n"
+" -s, --no-messages undertryk fejlmeddelser\n"
+" -v, --invert-match vælg linjer der ikke passer\n"
+" -V, --version vis versionsinformation og afslut\n"
+" --help vis denne hjælpetekst og afslut\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+"\n"
+"Styring af udskrift:\n"
+" -m, --max-count=ANTAL stands efter ANTAL fundne linjer\n"
+" -b, --byte-offset udskriv startpunkt i byte sammen med fundne "
+"linjer\n"
+" -n, --line-number udskriv linjenummer sammen med linjerne\n"
+" --line-buffered tøm uddatabuffer for hver linje\n"
+" -H, --with-filename udskriv filnavn sammen med udlinjer\n"
+" -h, --no-filename undertryk indledende filnavn i udskrift\n"
+" --label=NAVN udskriv NAVN som filnavn for standard-inddata\n"
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+" -o, --only-matching vis kun ikketomme dele af matchende linjer\n"
+" -q, --quiet, --silent undertryk al normal udskrift\n"
+" --binary-files=TYPE antag at binære filer er TYPE;\n"
+" TYPE er \"binary\", \"text\" eller \"without-"
+"match\"\n"
+" -a, --text svarer til --binary-files=text\n"
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+" -I svarer til --binary-files=without-match\n"
+" -d, --directories=HANDLING hvordan kataloger skal håndteres;\n"
+" HANDLING er \"read\", \"recurse\", eller \"skip"
+"\"\n"
+" -D, --devices=HANDLING hvordan enheder, FIFO'er og sokler skal "
+"håndteres;\n"
+" HANDLING er \"read\" eller \"skip\"\n"
+" -r, --recursive svarer til --directories=recurse\n"
+" -R, --dereference-recursive tilsvarende, men følg alle symlænker\n"
+
+# 'spring over' er måske pænere end 'ignorér', men fylder mere, og det er rart at være på <80 kolonner
+#: src/grep.c:2023
+#, fuzzy, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+" --include=GLOB søg kun i filer, der matcher GLOB (et "
+"filmønster)\n"
+" --exclude=GLOB ignorér filer og kataloger, der matcher GLOB\n"
+" --exclude-from=FIL ignorér filer, der matcher ethvert mønster fra "
+"FIL\n"
+" --exclude-dir=glob ignorér kataloger, der matcher GLOB\n"
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+" -L, --files-without-match udskriv kun navne på FILer uden fundne linjer\n"
+" -l, --files-with-matches udskriv kun navne på FILer med fundne linjer\n"
+" -c, --count udskriv kun antallet af fundne linjer for hver "
+"FIL\n"
+" -T, --initial-tab arrangér tabulatortegn (om nødvendigt)\n"
+" -Z, --null udskriv 0-byte efter FILnavn\n"
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+"\n"
+"Styring af kontekst:\n"
+" -B, --before-context=ANTAL udskriv ANTAL linjer af foregående tekst\n"
+" -A, --after-context=ANTAL udskriv ANTAL linjer af efterfølgende tekst\n"
+" -C, --context=ANTAL udskriv ANTAL linjer af omgivende tekst\n"
+
+#: src/grep.c:2043
+#, fuzzy, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+" -ANTAL det samme som --context=ANTAL\n"
+" --color[=HVORNÅR],\n"
+" --colour[=HVORNÅR] brug farvemarkering til at fremhæve træffere;\n"
+" HVORNÅR er \"always\", \"never\", eller \"auto"
+"\"\n"
+" -U, --binary fjern ikke CR-tegn ved EOL (MSDOS/Windows)\n"
+
+#: src/grep.c:2052
+#, fuzzy, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"Når FIL er \"-\", læses standard-inddata. Uden FIL læses \".\" i\n"
+"rekursiv tilstand, ellers \"-\". Givet mindre end to FILer antages -h.\n"
+"Slutstatus er 0 hvis mindst én linje (eller fil med -L) blev valgt, ellers "
+"1;\n"
+"hvis der opstår en fejl, og -q ikke blev givet, er afslutningsstatus 2.\n"
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "modstridende søgeudtryk angivet"
+
+#: src/grep.c:2101
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr ""
+"Perl-matching understøttes ikke hvis kompileret med --disable-perl-regexp"
+
+# en 'matcher' er tydeligvis et substantiv her... mystisk
+#: src/grep.c:2103
+#, c-format
+msgid "invalid matcher %s"
+msgstr "ugyldig matcher %s"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "ukendt enhedsmetode"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr ""
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "ugyldig angivelse af maksimum"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "ukendt binær filtype"
+
+#: src/grep.c:2829
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+"Skrevet af Mike Haertel med flere; se\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr "kunne ikke allokere hukommelse til PCRE JIT-stakken"
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr "-P understøtter kun unibyte- og UTF-8-sprogindstillinger"
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr "flaget -P understøtter kun et enkelt mønster"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr "intern fejl (burde aldrig ske)"
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr "overskred maksimal linjelængde for PCRE"
+
+#: src/pcresearch.c:306
+#, fuzzy, c-format
+msgid "%s: memory exhausted"
+msgstr "hukommelse opbrugt"
+
+#: src/pcresearch.c:310
+#, fuzzy, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr "PCRE JIT-stak tømt"
+
+#: src/pcresearch.c:315
+#, fuzzy, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr "overskred tilbagerækkevidde for PCRE"
+
+#: src/pcresearch.c:319
+#, fuzzy, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr "overskred tilbagerækkevidde for PCRE"
+
+#: src/pcresearch.c:327
+#, fuzzy, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr "intern PCRE-fejl: %d"
+
+#, c-format
+#~ msgid "warning: GREP_OPTIONS is deprecated; please use an alias or script"
+#~ msgstr ""
+#~ "advarsel: GREP_OPTIONS er forældet; brug venligst et alias eller skript"
+
+#, c-format
+#~ msgid "warning: %s: %s"
+#~ msgstr "advarsel: %s: %s"
+
+#~ msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
+#~ msgstr "Hjemmeside for %s: <http://www.gnu.org/software/%s/>\n"
+
+#~ msgid "invalid %s%s argument '%s'"
+#~ msgstr "ugyldigt %s%s-argument \"%s\""
+
+#~ msgid "invalid suffix in %s%s argument '%s'"
+#~ msgstr "ugyldigt suffiks i %s%s-argumentet \"%s\""
+
+#~ msgid "%s%s argument '%s' too large"
+#~ msgstr "%s%s-argumentet \"%s\" er for stort"
+
+#~ msgid "Mike Haertel"
+#~ msgstr "Mike Haertel"
+
+#~ msgid "internal error"
+#~ msgstr "intern fejl"
+
+#~ msgid "%s: option '--%s' doesn't allow an argument\n"
+#~ msgstr "%s: flaget \"--%s\" tillader ikke et argument\n"
+
+#~ msgid "%s: unrecognized option '--%s'\n"
+#~ msgstr "%s: ukendt flag \"--%s\"\n"
+
+#~ msgid "%s: option '-W %s' is ambiguous\n"
+#~ msgstr "%s: flaget \"-W %s\" er flertydigt\n"
+
+#~ msgid "%s: option '-W %s' doesn't allow an argument\n"
+#~ msgstr "%s: flaget \"-W %s\" tillader ikke et argument\n"
+
+#~ msgid "%s: option '-W %s' requires an argument\n"
+#~ msgstr "%s: flaget \"-W %s\" kræver et argument\n"
+
+#~ msgid "lseek failed"
+#~ msgstr "lseek mislykkedes"
+
+#~ msgid ""
+#~ "'egrep' means 'grep -E'. 'fgrep' means 'grep -F'.\n"
+#~ "Direct invocation as either 'egrep' or 'fgrep' is deprecated.\n"
+#~ msgstr ""
+#~ "\"egrep\" betyder \"grep -E\". \"fgrep\" betyder \"grep -F\".\n"
+#~ "Direkte kørsel som enten \"egrep\" eller \"fgrep\" er forældet.\n"
+
+#~ msgid "PATTERN is an extended regular expression (ERE).\n"
+#~ msgstr "MØNSTER er et udvidet regulært udtryk (ERE).\n"
+
+#~ msgid "Invocation as 'egrep' is deprecated; use 'grep -E' instead.\n"
+#~ msgstr "Kørsel som \"egrep\" er forældet; brug \"grep -E\" i stedet.\n"
+
+#~ msgid "PATTERN is a set of newline-separated fixed strings.\n"
+#~ msgstr "MØNSTER er en mængde faste strenge adskilt af linjeskift.\n"
+
+#~ msgid "Invocation as 'fgrep' is deprecated; use 'grep -F' instead.\n"
+#~ msgstr "Kørsel som \"fgrep\" er forældet; brug \"grep -F\" i stedet.\n"
+
+#~ msgid "GNU Grep home page: <%s>\n"
+#~ msgstr "Hjemmeside for GNU Grep: <%s>\n"
+
+#~ msgid "%s can only use the %s pattern syntax"
+#~ msgstr "%s kan kun bruge %s-mønstersyntaksen"
+
+#~ msgid "the --mmap option has been a no-op since 2010"
+#~ msgstr "tilvalget --mmap har været no-op siden 2010"
diff --git a/src/grep/po/de.gmo b/src/grep/po/de.gmo
new file mode 100644
index 0000000..ec8c10f
--- /dev/null
+++ b/src/grep/po/de.gmo
Binary files differ
diff --git a/src/grep/po/de.po b/src/grep/po/de.po
new file mode 100644
index 0000000..0dc8ea8
--- /dev/null
+++ b/src/grep/po/de.po
@@ -0,0 +1,758 @@
+# Deutsche Übersetzungen für Meldungen von GNU grep.
+# Copyright © 1997-99, 2000, 2001, 2002 Free Software Foundation, Inc.
+# This file is distributed under the same license as the grep package.
+# Martin von Löwis <martin@mira.isdn.cs.tu-berlin.de>, 1997-99, 2000-2002.
+# Philipp Thomas <pth@suse.de>, 2012-2013, 2015-2016.
+# Mario Blättermann <mario.blaettermann@gmail.com>, 2014, 2019-2021.
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU grep 3.5.16\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2021-01-27 18:27+0100\n"
+"Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n"
+"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"X-Generator: Lokalize 20.12.1\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "ungültiges Argument %s für %s"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "mehrdeutiges Argument %s für %s"
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr "Gültige Argumente sind:"
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr "Programmfehler"
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr "Stack-Überlauf"
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr "Schreibfehler"
+
+# Is this message used only for [ without matching ],
+# or for ] without [ as well?
+#: lib/dfa.c:896
+msgid "unbalanced ["
+msgstr "[ ohne schließendes Gegenstück"
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr "Ungültige Zeichenklasse"
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr "die Syntax für Zeichenklassen ist [[:space:]], nicht [:space:]"
+
+#: lib/dfa.c:1210
+msgid "unfinished \\ escape"
+msgstr "unbeendete \\-Escape-Sequenz"
+
+#: lib/dfa.c:1371
+msgid "invalid content of \\{\\}"
+msgstr "Ungültiger Inhalt von \\{\\}"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr "Der reguläre Ausdruck ist zu groß"
+
+#: lib/dfa.c:1858
+msgid "unbalanced ("
+msgstr "( ohne schließendes Gegenstück"
+
+#: lib/dfa.c:1975
+msgid "no syntax specified"
+msgstr "es wurde keine Syntax angegeben"
+
+#: lib/dfa.c:1986
+msgid "unbalanced )"
+msgstr "Schließende ) ohne öffnendes Gegenstück"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "Unbekannter Systemfehler"
+
+#: lib/getopt.c:278
+#, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: Option „%s%s“ ist mehrdeutig\n"
+
+#: lib/getopt.c:284
+#, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: die Option „%s%s“ ist mehrdeutig; Mögliche Bedeutungen:"
+
+#: lib/getopt.c:319
+#, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: unbekannte Option „%s%s“\n"
+
+#: lib/getopt.c:345
+#, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: Option „%s%s“ erlaubt kein Argument\n"
+
+#: lib/getopt.c:360
+#, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: Option „%s%s“ benötigt ein Argument\n"
+
+#: lib/getopt.c:621
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: ungültige Option -- „%c“\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: Option erfordert ein Argument -- „%c“\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "Speicher ausgeschöpft"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr "das aktuelle Verzeichnis kann nicht aufgezeichnet werden"
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "die Rückkehr in das ursprüngliche Arbeitsverzeichnis war nicht möglich"
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr "Text-/Binärmodus des Dateideskriptors konnte nicht gesetzt werden"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "„"
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "“"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr "Erfolg"
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr "Keine Übereinstimmung"
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr "Ungültiger regulärer Ausdruck"
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr "Ungültiges Suchzeichen"
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr "Ungültiger Zeichenklassenname"
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr "Rückschrägstrich am Ende"
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr "Ungültige Rückwärtsreferenz"
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr "Kein Gegenstück für [, [^, [:, [., oder [="
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr "Kein Gegenstück für ( oder \\("
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr "Kein Gegenstück für \\{"
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr "Ungültiger Inhalt von \\{\\}"
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr "Ungültiges Bereichsende"
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "Speicher ausgeschöpft"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr "Ungültiger vorhergehender regulärer Ausdruck"
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr "Vorzeitiges Ende des regulären Ausdrucks"
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr "Der reguläre Ausdruck ist zu groß"
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr "Kein Gegenstück für ) oder \\)"
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr "Kein vorhergehender regulärer Ausdruck"
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Gepackt von %s (%s)\n"
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Gepackt von %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr "©"
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Lizenz GPLv3+: GNU GPL Version 3 oder neuer <%s>.\n"
+"Dies ist freie Software: Sie können sie ändern und weitergeben.\n"
+"Es gibt keinerlei Garantien, soweit gesetzlich zulässig.\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Geschrieben von %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Geschrieben von %s und %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Geschrieben von %s, %s und %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Geschrieben von %s, %s, %s\n"
+"und %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Geschrieben von %s, %s, %s,\n"
+"%s und %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Geschrieben von %s, %s, %s,\n"
+"%s, %s und %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Geschrieben von %s, %s, %s,\n"
+"%s, %s, %s und %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Geschrieben von %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"und %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Geschrieben von %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s und %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Geschrieben von %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s und anderen.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr ""
+"Melden Sie Übersetzungsfehler an <translation-team-de@lists.sourceforge."
+"net>,\n"
+"Programmfehler dagegen (auf Englisch, mit LC_ALL=C) an %s\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "Melden Sie Programmfehler für %s (auf Englisch, mit LC_ALL=C) an %s\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s Homepage: <%s>\n"
+
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr "Allgemeine Hilfe zur Benutzung von GNU-Software: <%s>\n"
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(Standardeingabe)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "ungültiges Argument für die Kontextlänge"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "die Eingabe ist zu groß, um gezählt zu werden"
+
+#: src/grep.c:1641
+#, c-format
+msgid "%s: binary file matches"
+msgstr "%s: Übereinstimmungen in Binärdatei"
+
+#: src/grep.c:1679
+#, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "%s: Warnung: rekursive Verzeichnisschleife"
+
+#: src/grep.c:1899
+#, c-format
+msgid "%s: input file is also the output"
+msgstr "%s: die Eingabedatei ist auch die Ausgabedatei"
+
+#: src/grep.c:1961 src/grep.c:1968
+#, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "Aufruf: %s [OPTION]… MUSTER [DATEI]…\n"
+
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "„%s --help“ liefert weitere Informationen.\n"
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr "Nach MUSTER in jeder DATEI oder der Standardeingabe suchen.\n"
+
+#: src/grep.c:1970
+#, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"Beispiel: %s -i 'Hallo Welt' menu.h main.c\n"
+"MUSTER kann mehrere durch Zeilenumbruch getrennte Muster enthalten.\n"
+"\n"
+"Auswahl und Interpretation von Mustern:\n"
+
+#: src/grep.c:1975
+#, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp MUSTER sind erweiterte reguläre Ausdrücke\n"
+" -F, --fixed-strings MUSTER sind Zeichenketten\n"
+" -G, --basic-regexp MUSTER sind reguläre Standardausdrücke\n"
+" -P, --perl-regexp MUSTER sind reguläre Ausdrücke, wie Perl\n"
+" sie akzeptiert\n"
+
+#: src/grep.c:1981
+#, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=MUSTER MUSTER zur Treffersuche verwenden\n"
+" -f, --file=DATEI MUSTER aus DATEI lesen\n"
+" -i, --ignore-case Unterschied zwischen Groß- und Kleinschreibung\n"
+" ignorieren\n"
+" --no-ignore-case Festlegung zur Groß- oder Kleinschreibung\n"
+" nicht ignorieren\n"
+" -w, --word-regexp MUSTER passt nur auf ganze Wörter\n"
+" -x, --line-regexp MUSTER passt nur auf ganze Zeilen\n"
+" -z, --null-data Eine Zeile endet mit Nullbyte, nicht Newline\n"
+
+#: src/grep.c:1989
+#, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"Verschiedenes:\n"
+" -s, --no-messages Fehlermeldungen unterdrücken\n"
+" -v, --invert-match Nicht-passende Zeilen anzeigen\n"
+" -V, --version Versionsnummer ausgeben und beenden\n"
+" --help Diese Hilfe ausgeben und beenden\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+"\n"
+"Steuerung der Ausgabe:\n"
+" -m, --max-count=ANZAHL stoppt nach ANZAHL ausgewählter Zeilen\n"
+" -b, --byte-offset gibt mit den Zeilen auch den Abstand in Bytes "
+"an\n"
+" -n, --line-number gibt mit den Zeilen auch die Zeilennummer an\n"
+" --line-buffered leert den Puffer nach jeder Zeile\n"
+" -H, --with-filename gibt den Dateinamen für jede Übereinstimmung "
+"aus\n"
+" -h, --no-filename unterdrückt die Ausgabe des vorangehenden\n"
+" Dateinamens\n"
+" --label=BEZEICHNUNG verwendet BEZEICHNUNG als Präfix für Dateinamen\n"
+" der Standardeingabe\n"
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+" -o, --only-matching zeigt nur den nicht-leeren Teil einer Zeile,\n"
+" der zu MUSTER passt\n"
+" -q, --quiet, --silent unterdrückt alle normalen Ausgaben\n"
+" --binary-files=TYP alle binären Dateien sind vom Typ TYP;\n"
+" TYP kann „binary“, „text“ oder „without-match“\n"
+" sein\n"
+" -a, --text gleichbedeutend mit --binary-files=text\n"
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+" -I gleichbedeutend mit --binary-files=without-"
+"match\n"
+" -d, --directories=AKTION beschreibt, wie Verzeichnisse zu behandeln "
+"sind;\n"
+" AKTION kann „read“, „recurse“ oder „skip“ "
+"sein\n"
+" -D, --devices=AKTION Behandlung von Geräten, FIFOs oder Sockets;\n"
+" AKTION kann „read“ oder „skip“ sein\n"
+" -r, --recursive wie --directories=recurse\n"
+" -R, --dereference-recursive\n"
+" ebenso, folgt aber allen symbolischen Links\n"
+
+#: src/grep.c:2023
+#, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+" --include=DATEIMUSTER durchsucht nur Dateien, die DATEIMUSTER\n"
+" entsprechen\n"
+" --exclude=DATEIMUSTER überspringt Dateien, die\n"
+" DATEIMUSTER entsprechen\n"
+" --exclude-from=DATEI überspringt Dateien, die einem Dateimuster\n"
+" in DATEI entsprechen.\n"
+" --exclude-dir=MUSTER überspringt Verzeichnisse, die MUSTER\n"
+" entsprechen\n"
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+" -L, --files-without-match nur die Namen von Dateien ausgeben, die keinen\n"
+" passenden Inhalt haben\n"
+" -l, --files-with-matches nur die Namen von Dateien mit passendem Inhalt\n"
+" ausgeben\n"
+" -c, --count nur die Anzahl der passenden Zeilen pro DATEI\n"
+" ausgeben\n"
+" -T, --initial-tab Tabulatoren (wenn nötig) ausrichten\n"
+" -Z, --null ein 0-Byte nach einem Dateinamen ausgeben\n"
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+"\n"
+"Kontextsteuerung:\n"
+" -B, --before-context=ANZAHL ANZAHL Zeilen vorausgehenden Kontextes\n"
+" ausgeben\n"
+" -A, --after-context=ANZAHL ANZAHL Zeilen nachfolgenden Kontextes\n"
+" ausgeben\n"
+" -C, --context=ANZAHL ANZAHL Zeilen Kontext ausgeben\n"
+
+#: src/grep.c:2043
+#, fuzzy, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+" -ANZAHL Wie --context=ANZAHL\n"
+" --color[=WANN], \n"
+" --colour=[WANN] Passende Textfragmente markieren\n"
+" WANN kann „always“, „never“ oder „auto“ sein\n"
+" -U, --binary CR-Zeichen am Zeilenende belassen\n"
+" (MSDOS/Windows)\n"
+"\n"
+
+#: src/grep.c:2052
+#, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"Wenn DATEI „-“ ist, wird die Standardeingabe gelesen. Ohne DATEI wird „.“\n"
+"gelesen, wenn -r auf der Befehlszeile angegeben wurde, ansonsten „-“.\n"
+"Wenn weniger als zwei DATEIen angegeben wurden, wird -h angenommen.\n"
+"Der Rückgabewert ist 0, wenn eine Zeile passte, ansonsten 1. Wenn ein\n"
+"Fehler auftrat und -q nicht angegeben wurde, ist der Rückgabewert 2.\n"
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "die angegebenen Suchmuster stehen in Konflikt zueinander"
+
+#: src/grep.c:2101
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr ""
+"Perl-basierte Treffersuche wurde in dieses --disable-perl-regexp-Binary "
+"nicht einkompiliert"
+
+#: src/grep.c:2103
+#, c-format
+msgid "invalid matcher %s"
+msgstr "ungültige Entsprechung %s"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "Unbekannte Methode für Gerätedateien"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr ""
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "ungültige Maximalanzahl"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "unbekannter Typ für Binärdateien"
+
+#: src/grep.c:2829
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+"Geschrieben von Mike Haertel und anderen; siehe\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr "es konnte kein Speicher für den PCRE-JIT-Stack reserviert werden"
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr "-P unterstützt nur Unibyte- oder UTF-8-Locales"
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr "Die Option -P unterstützt nur ein einzelnes Suchmuster"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr "Interner Fehler (sollte nie vorkommen)"
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr "Überschreitung der zulässigen Zeilenlänge von PCREs"
+
+#: src/pcresearch.c:306
+#, c-format
+msgid "%s: memory exhausted"
+msgstr "%s: Speicher ausgeschöpft"
+
+#: src/pcresearch.c:310
+#, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr "%s: Kellerspeicher für PCRE JIT ist erschöpft"
+
+#: src/pcresearch.c:315
+#, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr "%s: Überschreitung der Zurückverfolgungsbeschränkung des PCREs"
+
+#: src/pcresearch.c:319
+#, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr "%s: Überschreitung der Rekursionsbeschränkung des PCREs"
+
+#: src/pcresearch.c:327
+#, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr "%s: interner PCRE-Fehler: %d"
diff --git a/src/grep/po/el.gmo b/src/grep/po/el.gmo
new file mode 100644
index 0000000..2e98c80
--- /dev/null
+++ b/src/grep/po/el.gmo
Binary files differ
diff --git a/src/grep/po/el.po b/src/grep/po/el.po
new file mode 100644
index 0000000..17a990f
--- /dev/null
+++ b/src/grep/po/el.po
@@ -0,0 +1,866 @@
+# Greek messages for GNU grep
+# This file is distributed under the same license as the grep package.
+# Copyright (C) 1998, 2002 Free Software Foundation, Inc.
+# Simos Xenitellis <simos@hellug.gr>, 1998, 2002.
+# Savvas Radevic <vicedar@gmail.com>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: grep 2.11.11-pre1\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2012-05-05 23:23+0100\n"
+"Last-Translator: Savvas Radevic <vicedar@gmail.com>\n"
+"Language-Team: Greek <team@lists.gnome.gr>\n"
+"Language: el\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"X-Poedit-Language: Greek\n"
+"X-Poedit-Country: GREECE\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "άκυρη επιλογή %s για %s"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "διφορούμενη επιλογή %s για %s"
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr "Έγκυρες επιλογές είναι οι εξής:"
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr ""
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr ""
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr "σφάλμα εγγραφής"
+
+# src/dfa.c:652 src/dfa.c:655 src/dfa.c:682 src/dfa.c:686 src/dfa.c:687
+# src/dfa.c:690 src/dfa.c:703 src/dfa.c:704
+# src/dfa.c:660 src/dfa.c:663 src/dfa.c:690 src/dfa.c:694 src/dfa.c:695
+# src/dfa.c:698 src/dfa.c:711 src/dfa.c:712
+#: lib/dfa.c:896
+#, fuzzy
+msgid "unbalanced ["
+msgstr "Μη ισορροπημένο ["
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr "άκυρη κατηγορία χαρακτήρων"
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr "η σύνταξη κατηγορίας χαρακτήρων είναι [[:space:]], όχι [:space:]"
+
+# src/dfa.c:444
+# src/dfa.c:452
+#: lib/dfa.c:1210
+#, fuzzy
+msgid "unfinished \\ escape"
+msgstr "Μη τερματισμένος χαρακτήρας διαφυγής \\"
+
+# src/dfa.c:556 src/dfa.c:562 src/dfa.c:573 src/dfa.c:584
+# src/dfa.c:564 src/dfa.c:570 src/dfa.c:581 src/dfa.c:592
+#: lib/dfa.c:1371
+#, fuzzy
+msgid "invalid content of \\{\\}"
+msgstr "μη έγκυρος μέγιστος μετρητής"
+
+#: lib/dfa.c:1374
+#, fuzzy
+msgid "regular expression too big"
+msgstr "Υπερβολικά μεγάλη η κανονική έκφραση"
+
+# src/dfa.c:841
+# src/dfa.c:849
+#: lib/dfa.c:1858
+#, fuzzy
+msgid "unbalanced ("
+msgstr "Μη ισορροπημένο ("
+
+# src/dfa.c:962
+# src/dfa.c:970
+#: lib/dfa.c:1975
+#, fuzzy
+msgid "no syntax specified"
+msgstr "Δεν ορίστηκε συντακτικό"
+
+# src/dfa.c:970
+# src/dfa.c:978
+#: lib/dfa.c:1986
+#, fuzzy
+msgid "unbalanced )"
+msgstr "Μη ισορροπημένο )"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "Άγνωστο λάθος συστήματος"
+
+# src/getopt.c:813
+# src/getopt.c:813
+#: lib/getopt.c:278
+#, fuzzy, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: η επιλογή «-W %s» είναι διφορούμενη\n"
+
+# src/getopt.c:628
+# src/getopt.c:628
+#: lib/getopt.c:284
+#, fuzzy, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: η επιλογή «%s» είναι διφορούμενη\n"
+
+# src/getopt.c:707
+# src/getopt.c:707
+#: lib/getopt.c:319
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: μη αναγνωρίσιμη επιλογή «%c%s»\n"
+
+# src/getopt.c:657
+# src/getopt.c:657
+#: lib/getopt.c:345
+#, fuzzy, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: η επιλογή «%c%s» δεν επιτρέπει ορίσματα\n"
+
+# src/getopt.c:674 src/getopt.c:847
+# src/getopt.c:674 src/getopt.c:847
+#: lib/getopt.c:360
+#, fuzzy, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: η επιλογή «%s» απαιτεί όρισμα\n"
+
+# src/getopt.c:736
+# src/getopt.c:736
+#: lib/getopt.c:621
+#, fuzzy, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: μη έγκυρη επιλογή -- %c\n"
+
+# src/getopt.c:766 src/getopt.c:896
+# src/getopt.c:766 src/getopt.c:896
+#: lib/getopt.c:636 lib/getopt.c:682
+#, fuzzy, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: η επιλογή απαιτεί ένα όρισμα -- %c\n"
+
+# src/grep.c:144 src/grep.c:161 src/grep.c:222 src/grep.c:263 src/kwset.c:184
+# src/kwset.c:190
+# src/grep.c:164 src/grep.c:181 src/grep.c:283 src/grep.c:338 src/kwset.c:184
+# src/kwset.c:190
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "η μνήμη εξαντλήθηκε"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr "δεν είναι δυνατή η καταγραφή του τρέχοντος φακέλου εργασίας"
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "αποτυχία επιστροφής στον αρχικό φάκελο εργασίας"
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr ""
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "«"
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "»"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr "Επιτυχία"
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr "Καμία αντιστοιχία"
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr "Άκυρη κανονική έκφραση"
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr ""
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr "Άκυρο τέλος σειράς"
+
+# src/dfa.c:147 src/dfa.c:159 src/dfa.c:172
+# src/dfa.c:155 src/dfa.c:167 src/dfa.c:180 src/grep.c:827
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "Η μνήμη εξαντλήθηκε"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr "Άκυρη προηγούμενης κανονικής έκφρασης"
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr "Πρόωρο τέλος της κανονικής έκφρασης"
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr "Υπερβολικά μεγάλη η κανονική έκφραση"
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr "Καμία προηγούμενη κανονική έκφραση"
+
+#: lib/version-etc.c:73
+#, fuzzy, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Συσκευάστηκε από %s (%s)\n"
+
+#: lib/version-etc.c:76
+#, fuzzy, c-format
+msgid "Packaged by %s\n"
+msgstr "Συσκευάστηκε από %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr "(C)"
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, fuzzy, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"\n"
+"Άδεια χρήσης GPLv3+: GNU GPL έκδοση 3 ή μεταγενέστερη <http://gnu.org/"
+"licenses/gpl.html>\n"
+"Αυτό είναι ελεύθερο λογισμικό: Είστε ελεύθεροι να το αλλάξετε και να το "
+"αναδιανέμετε.\n"
+"Δεν υπάρχει ΚΑΜΙΑ ΕΓΓΥΗΣΗ στην έκταση που επιτρέπεται από το νόμο.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, fuzzy, c-format
+msgid "Written by %s.\n"
+msgstr "Συντάχθηκε από τον %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, fuzzy, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Συντάχθηκε από τους %s και %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, fuzzy, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Συντάχθηκε από τους %s, %s, και %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, fuzzy, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Συντάχθηκε από τους %s, %s, %s,\n"
+"και %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, fuzzy, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Συντάχθηκε από τους %s, %s, %s,\n"
+"%s, και %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, fuzzy, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Συντάχθηκε από τον %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, fuzzy, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Συντάχθηκε από τους %s, %s, %s,\n"
+"%s, %s, %s, και %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, fuzzy, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Συντάχθηκε από τους %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"και %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, fuzzy, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Συντάχθηκε από τους %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, και %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, fuzzy, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Συντάχθηκε από τους %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, και άλλους.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, fuzzy, c-format
+msgid "Report bugs to: %s\n"
+msgstr ""
+"\n"
+"Αναφορά σφαλμάτων: %s\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "Αναφορά %s σφαλμάτων: %s\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s κεντρική σελίδα: <%s>\n"
+
+#: lib/version-etc.c:260
+#, fuzzy, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr "Γενική βοήθεια χρήσης λογισμικού GNU: <http://www.gnu.org/gethelp/>\n"
+
+# src/grep.c:964 src/grep.c:1015
+# src/grep.c:730
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(κανονική είσοδος)"
+
+# src/grep.c:785 src/grep.c:792
+# src/grep.c:1060 src/grep.c:1067 src/grep.c:1076
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "μη έγκυρο όρισμα μήκους περιεχομένου"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "η είσοδος είναι πολύ μεγάλη για να μετρηθεί"
+
+# src/grep.c:715
+#: src/grep.c:1641
+#, fuzzy, c-format
+msgid "%s: binary file matches"
+msgstr "Το δυαδικό αρχείο %s ταιριάζει\n"
+
+# src/grep.c:844
+#: src/grep.c:1679
+#, fuzzy, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "αναδρομική αλληλοδιαδοχή καταλόγων"
+
+#: src/grep.c:1899
+#, fuzzy, c-format
+msgid "%s: input file is also the output"
+msgstr "το αρχείο εισαγωγής %s είναι επίσης το αρχείο εξόδου"
+
+# src/grep.c:597
+# src/grep.c:862
+#: src/grep.c:1961 src/grep.c:1968
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "Χρήση: %s [ΕΠΙΛΟΓΗ]... ΥΠΟΔΕΙΓΜΑ [ΑΡΧΕΙΟ]...\n"
+
+# src/grep.c:598
+# src/grep.c:863
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "Δοκιμάστε «%s --help» για περισσότερες πληροφορίες.\n"
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr ""
+
+#: src/grep.c:1970
+#, fuzzy, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"Εύρεση του ΥΠΟΔΕΙΓΜΑτος σε κάθε ΑΡΧΕΙΟ ή την κανονική είσοδο.\n"
+"Παράδειγμα: %s -i 'hello world' menu.h main.c\n"
+"\n"
+"Επιλογή κανονικής έκφρασης και ερμηνεία:\n"
+
+#: src/grep.c:1975
+#, fuzzy, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp ΥΠΟΔΕΙΓΜΑ είναι μια εκτεταμένη κανονική έκφραση\n"
+" -F, --fixed-regexp ΥΠΟΔΕΙΓΜΑ είναι στατικό αλφαριθμητικό διαχωρι-\n"
+" ζόμενο με χαρακτήρες αλλαγής γραμμής\n"
+" -G, --basic-regexp ΥΠΟΔΕΙΓΜΑ είναι απλή κανονική έκφραση\n"
+" -P, --perl-regexp ΥΠΟΔΕΙΓΜΑ είναι κανονική έκφραση Perl\n"
+
+# src/grep.c:603
+# src/grep.c:868
+#: src/grep.c:1981
+#, fuzzy, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=ΥΠΟΔΕΙΓΜΑ χρήση ΥΠΟΔΕΙΓΜΑτος για κανονική έκφραση\n"
+" -f, --file=ΑΡΧΕΙΟ λήψη ΥΠΟΔΕΙΓΜΑτος από το αρχείο ΑΡΧΕΙΟ\n"
+" -i, --ignore-case αγνόησε διαφορές πεζών/κεφαλαίων\n"
+" -w, --word-regexp επιβολή του ΥΠΟΔΕΙΓΜΑτος να ταιριάζει μόνο\n"
+" ολόκληρες λέξεις\n"
+" -x, --line-regexp επιβολή του ΥΠΟΔΕΙΓΜΑτος να ταιριάζει μόνο\n"
+" ολόκληρες γραμμές\n"
+" -z, --null-data η γραμμή δεδομένων τερματίζεται με byte 0\n"
+" και όχι με χαρακτήρα αλλαγής γραμμής\n"
+
+# src/grep.c:615
+# src/grep.c:880
+#: src/grep.c:1989
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"Λοιπά:\n"
+" -s, --no-messages αποφυγή εμφάνισης μηνυμάτων σφαλμάτων\n"
+" -v, --revert-match επιλογή γραμμών που δεν ταιριάζουν\n"
+" -V, --version εμφάνισης πληροφοριών έκδοσης και έξοδος\n"
+" --help εμφάνισης αυτής της βοήθειας και έξοδος\n"
+" --mmap χρήση εισόδου απεικονισμένη-στη-μνήμη αν\n"
+" υπάρχει τέτοια δυνατότητα\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+
+#: src/grep.c:2023
+#, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+
+#: src/grep.c:2036
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+"\n"
+"Έλεγχος βάσει του περιεχομένου:\n"
+" -B, --before-context=ΑΡΙΘΜΟΣ εμφάνιση ΑΡΙΘΜΟΣ γραμμών με ακολουθούμενο\n"
+" περιεχόμενο\n"
+" -A, --after-context=ΑΡΙΘΜΟΣ εμφάνιση ΑΡΙΘΜΟΣ γραμμών με προπορευόμενο\n"
+" περιεχόμενο\n"
+" -C, --context=ΑΡΙΘΜΟΣ εμφάνιση ΑΡΙΘΜΟΣ (εξ ορισμού 2) γραμμών με\n"
+" περιεχόμενο εξόδου\n"
+
+# src/grep.c:633
+# src/grep.c:902
+#: src/grep.c:2043
+#, fuzzy, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+" -NUM το ίδιο με --context=ΑΡΙΘΜΟΣ\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to distinguish the matching string\n"
+" WHEN may be `always', `never' or `auto'.\n"
+" -U, --binary να μην απαλείφονται χαρακτήρες CR στο EOL "
+"(MSDOS)\n"
+" -u, --unix-byte-offsets αναφορά σχετικών θέσεων σα να μην υπήρχαν\n"
+" χαρακτήρες CR (MSDOS)\n"
+"\n"
+
+#: src/grep.c:2052
+#, fuzzy, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"Χωρία ΑΡΧΕΙΟ, ή όταν το ΑΡΧΕΙΟ είναι -, διαβάζεται η κανονική είσοδος.\n"
+"Αν στα ορίσματα υπάρχουν λιγότερα από δύο ΑΡΧΕΙΑ, τότε υποτίθεται ότι έχει\n"
+"δοθεί η επιλογή -h. Η κατάσταση εξόδου του προγράμματος είναι 0 αν βρέθηκε\n"
+"το ΥΠΟΔΕΙΓΜΑ, 1 αν δεν βρέθηκε και 2 αν προέκυψε κάποιο πρόβλημα.\n"
+
+# src/grep.c:829
+# src/grep.c:1112
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "ορίστηκαν αντικρουόμενα στοιχεία αναζήτησης"
+
+#: src/grep.c:2101
+#, fuzzy
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr ""
+"η υποστήριξη για την επιλογή -P δεν είναι μεταγλωττισμένη σε αυτό το --"
+"disable-perl-regexp δυαδικό [αρχείο]"
+
+# src/dfa.c:556 src/dfa.c:562 src/dfa.c:573 src/dfa.c:584
+# src/dfa.c:564 src/dfa.c:570 src/dfa.c:581 src/dfa.c:592
+#: src/grep.c:2103
+#, fuzzy, c-format
+msgid "invalid matcher %s"
+msgstr "μη έγκυρος μέγιστος μετρητής"
+
+# src/grep.c:1133
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "άγνωστη μέθοδος συσκευών"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr ""
+
+# src/dfa.c:556 src/dfa.c:562 src/dfa.c:573 src/dfa.c:584
+# src/dfa.c:564 src/dfa.c:570 src/dfa.c:581 src/dfa.c:592
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "μη έγκυρος μέγιστος μετρητής"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "άγνωστο είδος δυαδικών αρχείων"
+
+#: src/grep.c:2829
+#, fuzzy
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+"άλλοι, κοιτάξτε τον σύνδεσμο <http://git.sv.gnu.org/cgit/grep.git/tree/"
+"AUTHORS>"
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr ""
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr ""
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr "Η επιλογή -P υποστηρίζει μόνο ένα υπόδειγμα"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr ""
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr ""
+
+# src/grep.c:144 src/grep.c:161 src/grep.c:222 src/grep.c:263 src/kwset.c:184
+# src/kwset.c:190
+# src/grep.c:164 src/grep.c:181 src/grep.c:283 src/grep.c:338 src/kwset.c:184
+# src/kwset.c:190
+#: src/pcresearch.c:306
+#, fuzzy, c-format
+msgid "%s: memory exhausted"
+msgstr "η μνήμη εξαντλήθηκε"
+
+#: src/pcresearch.c:310
+#, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr ""
+
+#: src/pcresearch.c:315
+#, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr ""
+
+#: src/pcresearch.c:319
+#, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr ""
+
+#: src/pcresearch.c:327
+#, fuzzy, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr "εσωτερικό σφάλμα"
+
+# src/grep.c:293
+# src/grep.c:366
+#, fuzzy, c-format
+#~ msgid "warning: %s: %s"
+#~ msgstr "προειδοποίηση: %s: %s\n"
+
+#~ msgid "invalid %s%s argument '%s'"
+#~ msgstr "άκυρη %s%s επιλογή «%s»"
+
+#~ msgid "invalid suffix in %s%s argument '%s'"
+#~ msgstr "άκυρη κατάληξη στην %s%s επιλογή «%s»"
+
+#~ msgid "%s%s argument '%s' too large"
+#~ msgstr "η %s%s επιλογή «%s» είναι υπερβολικά μεγάλη"
+
+#, fuzzy
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "%s κεντρική σελίδα: <http://www.gnu.org/software/%s/>\n"
+
+#~ msgid "internal error"
+#~ msgstr "εσωτερικό σφάλμα"
+
+#~ msgid "Mike Haertel"
+#~ msgstr "Mike Haertel"
+
+# src/getopt.c:652
+# src/getopt.c:652
+#, fuzzy
+#~ msgid "%s: option '--%s' doesn't allow an argument\n"
+#~ msgstr "%s: η επιλογή «--%s» δεν επιτρέπει ορίσματα\n"
+
+# src/getopt.c:703
+# src/getopt.c:703
+#, fuzzy
+#~ msgid "%s: unrecognized option '--%s'\n"
+#~ msgstr "%s: μη αναγνωρίσιμη επιλογή «--%s»\n"
+
+# src/getopt.c:813
+# src/getopt.c:813
+#, fuzzy
+#~ msgid "%s: option '-W %s' is ambiguous\n"
+#~ msgstr "%s: η επιλογή «-W %s» είναι διφορούμενη\n"
+
+# src/getopt.c:831
+# src/getopt.c:831
+#, fuzzy
+#~ msgid "%s: option '-W %s' doesn't allow an argument\n"
+#~ msgstr "%s: η επιλογή «-W %s» δεν δέχεται ορίσματα\n"
+
+# src/getopt.c:674 src/getopt.c:847
+# src/getopt.c:674 src/getopt.c:847
+#, fuzzy
+#~ msgid "%s: option '-W %s' requires an argument\n"
+#~ msgstr "%s: η επιλογή «%s» απαιτεί όρισμα\n"
+
+#~ msgid ""
+#~ "'egrep' means 'grep -E'. 'fgrep' means 'grep -F'.\n"
+#~ "Direct invocation as either 'egrep' or 'fgrep' is deprecated.\n"
+#~ msgstr ""
+#~ "To «egrep» είναι ισοδύναμο του «grep -E». Το «fgrep» είναι ισοδύναμο του\n"
+#~ "«grep -F».\n"
+#~ "Η άμεση επίκληση ως «egrep» ή «fgrep» έχει καταργηθεί.\n"
+
+#~ msgid "lseek failed"
+#~ msgstr "αποτυχία του lseek"
+
+#~ msgid "PATTERN is an extended regular expression (ERE).\n"
+#~ msgstr "Το ΠΡΟΤΥΠΟ είναι μια εκτεταμένη κανονική έκφραση (ΕΚΕ).\n"
+
+#~ msgid "Invocation as 'egrep' is deprecated; use 'grep -E' instead.\n"
+#~ msgstr ""
+#~ "Η επίκληση ως «egrep» έχει καταργηθεί· χρησιμοποιήστε το «grep -E».\n"
+
+#~ msgid "Invocation as 'fgrep' is deprecated; use 'grep -F' instead.\n"
+#~ msgstr ""
+#~ "Η επίκληση ως «fgrep» έχει καταργηθεί· χρησιμοποιήστε το «grep -F».\n"
+
+#~ msgid "the --mmap option has been a no-op since 2010"
+#~ msgstr "η επιλογή --mmap δεν λειτουργεί από το 2010"
diff --git a/src/grep/po/en@boldquot.header b/src/grep/po/en@boldquot.header
new file mode 100644
index 0000000..fedb6a0
--- /dev/null
+++ b/src/grep/po/en@boldquot.header
@@ -0,0 +1,25 @@
+# All this catalog "translates" are quotation characters.
+# The msgids must be ASCII and therefore cannot contain real quotation
+# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
+# and double quote (0x22). These substitutes look strange; see
+# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
+#
+# This catalog translates grave accent (0x60) and apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019).
+# It also translates pairs of apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019)
+# and pairs of quotation mark (0x22) to
+# left double quotation mark (U+201C) and right double quotation mark (U+201D).
+#
+# When output to an UTF-8 terminal, the quotation characters appear perfectly.
+# When output to an ISO-8859-1 terminal, the single quotation marks are
+# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
+# grave/acute accent (by libiconv), and the double quotation marks are
+# transliterated to 0x22.
+# When output to an ASCII terminal, the single quotation marks are
+# transliterated to apostrophes, and the double quotation marks are
+# transliterated to 0x22.
+#
+# This catalog furthermore displays the text between the quotation marks in
+# bold face, assuming the VT100/XTerm escape sequences.
+#
diff --git a/src/grep/po/en@quot.header b/src/grep/po/en@quot.header
new file mode 100644
index 0000000..a9647fc
--- /dev/null
+++ b/src/grep/po/en@quot.header
@@ -0,0 +1,22 @@
+# All this catalog "translates" are quotation characters.
+# The msgids must be ASCII and therefore cannot contain real quotation
+# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
+# and double quote (0x22). These substitutes look strange; see
+# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
+#
+# This catalog translates grave accent (0x60) and apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019).
+# It also translates pairs of apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019)
+# and pairs of quotation mark (0x22) to
+# left double quotation mark (U+201C) and right double quotation mark (U+201D).
+#
+# When output to an UTF-8 terminal, the quotation characters appear perfectly.
+# When output to an ISO-8859-1 terminal, the single quotation marks are
+# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
+# grave/acute accent (by libiconv), and the double quotation marks are
+# transliterated to 0x22.
+# When output to an ASCII terminal, the single quotation marks are
+# transliterated to apostrophes, and the double quotation marks are
+# transliterated to 0x22.
+#
diff --git a/src/grep/po/eo.gmo b/src/grep/po/eo.gmo
new file mode 100644
index 0000000..eafe051
--- /dev/null
+++ b/src/grep/po/eo.gmo
Binary files differ
diff --git a/src/grep/po/eo.po b/src/grep/po/eo.po
new file mode 100644
index 0000000..c093a15
--- /dev/null
+++ b/src/grep/po/eo.po
@@ -0,0 +1,952 @@
+# Esperanto translations for GNU grep.
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2013, 2014, 2015, 2016, 2018, 2020, 2021 Free Software Foundation, Inc.
+# This file is distributed under the same license as the grep package.
+#
+# “Jeder ist seines Glückes Schmied,
+# aber nicht jeder ist ein guter Schmied.”
+#
+# D. Dale Gulledge <dsplat@rochester.rr.com>, 1999.
+# Edmund GRIMLEY EVANS <edmundo@rano.org>, 2000-2009.
+# Benno Schulenberg <benno@vertaalt.nl>, 2013, 2014, 2015, 2016, 2018, 2020.
+# Felipe CASTRO <fefcas@gmail.com>, 2021.
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU grep 3.6.27\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2021-08-10 21:36-0300\n"
+"Last-Translator: Felipe Castro <fefcas@gmail.com>\n"
+"Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
+"Language: eo\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Poedit 2.4.2\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "nevalida argumento %s por %s"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "ambigua argumento %s por %s"
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr "Validaj argumentoj estas:"
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr "programeraro"
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr "staktroo"
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr "skrib-eraro"
+
+#: lib/dfa.c:896
+msgid "unbalanced ["
+msgstr "senpara ["
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr "nevalida signoklaso"
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr "sintakso de signoklaso estas ekzemple [[:spaco:]], ne [:spaco:]"
+
+#: lib/dfa.c:1210
+msgid "unfinished \\ escape"
+msgstr "nefinita \\-eskapo"
+
+#: lib/dfa.c:1371
+msgid "invalid content of \\{\\}"
+msgstr "nevalida enhavo de \\{\\}"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr "regulesprimo tro grandas"
+
+#: lib/dfa.c:1858
+msgid "unbalanced ("
+msgstr "senpara ("
+
+#: lib/dfa.c:1975
+msgid "no syntax specified"
+msgstr "neniu sintakso indikatas"
+
+#: lib/dfa.c:1986
+msgid "unbalanced )"
+msgstr "senpara )"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "Nekonata sistemeraro"
+
+#: lib/getopt.c:278
+#, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: opcio «%s%s» estas ambigua\n"
+
+#: lib/getopt.c:284
+#, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: opcio «%s%s» estas ambigua; eblaĵoj estas:"
+
+#: lib/getopt.c:319
+#, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: nekonata opcio «%s%s»\n"
+
+#: lib/getopt.c:345
+#, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: opcio «%s%s» ne toleras argumenton\n"
+
+#: lib/getopt.c:360
+#, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: opcio «%s%s» bezonas argumenton\n"
+
+#: lib/getopt.c:621
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: nevalida opcio -- «%c»\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: opcio bezonas argumenton -- «%c»\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "mankas sufiĉa memoro"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr "ne eblas registri aktualan labordosierujon"
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "malsukcesis reveni al komenca labordosierujo"
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr "malsukcesis agordi tekstan/duuman moduson de dosierpriaĵo"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "«"
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "»"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr "Sukceso"
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr "Neniu trafo"
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr "Nevalida regulesprimo"
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr "Nevalida kunmetita signo"
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr "Nevalida nomo de signoklaso"
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr "Malsuprenstreko '\\' ĉe la fino"
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr "Nevalida retroreferenco"
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr "Senpara [, [^, [:, [., aŭ [="
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr "Senpara ( aŭ \\("
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr "Senpara \\{"
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr "Nevalida enhavo de \\{\\}"
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr "Nevalida fino de gamo"
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "Mankas sufiĉa memoro"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr "Nevalida antaŭa regulesprimo"
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr "Neatendita fino de regulesprimo"
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr "Regulesprimo tro grandas"
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr "Senpara ) aŭ \\)"
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr "Mankas antaŭa regulesprimo"
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Pakigita far %s (%s)\n"
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Pakigita far %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr "©"
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Ĉi tiu estas libera programaro: vi rajtas ĝin ŝanĝi kaj redistribui.\n"
+"La ĝusta permesilo estas GPLv3+: GNU GPL versio 3 aŭ sekva;\n"
+"por la kompleta (angla) teksto vidu <%s>.\n"
+"Ĉi tiu programaro ne garantiatas, ene de la limoj de la leĝo.\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Verkita de %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Verkita de %s kaj %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Verkita de %s, %s kaj %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Verkita de %s, %s, %s\n"
+"kaj %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Verkita de %s, %s, %s,\n"
+"%s kaj %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Verkita de %s, %s, %s,\n"
+"%s, %s kaj %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Verkita de %s, %s, %s,\n"
+"%s, %s, %s kaj %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Verkita de %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"kaj %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Verkita de %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s kaj %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Verkita de %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s kaj aliaj.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr ""
+"Raportu programmisojn al <%s>;\n"
+"sciigu tradukerarojn al <translation-team-eo@lists.sourceforge.net>.\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "Raportu programmisojn en %s al: <%s>\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Hejmpaĝo de «%s»: <%s>\n"
+
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr "Ĝenerala helpo por uzi GNU-programojn: <%s>\n"
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(ĉefenigujo)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "nevalida kuntekstlongeca argumento"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "enigo tro longas por nombri"
+
+#: src/grep.c:1641
+#, c-format
+msgid "%s: binary file matches"
+msgstr "%s: duuma dosiero kongruas"
+
+#: src/grep.c:1679
+#, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "%s: averto: rikura ciklo de dosierujoj"
+
+#: src/grep.c:1899
+#, c-format
+msgid "%s: input file is also the output"
+msgstr "%s: eniga dosiero estas ankaŭ la eliga dosiero"
+
+#: src/grep.c:1961 src/grep.c:1968
+#, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "Uzmaniero: %s [OPCIO...] ŜABLONOJ [DOSIERO...]\n"
+
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "Tajpu '%s --help' por pli da informoj.\n"
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr "Serĉas ŜABLONOJn en ĉiu DOSIERO.\n"
+
+#: src/grep.c:1970
+#, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"Ekzemplo: %s -i 'hello world' menu.h main.c\n"
+"ŜABLONOJ povas esti pluraj ŝablonoj disigitaj per linifinoj.\n"
+"\n"
+"Elekto kaj interpreto de ŝablono:\n"
+
+#: src/grep.c:1975
+#, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp ŜABLONOJ estas etenditaj regulesprimoj\n"
+" -F, --fixed-strings ŜABLONOJ estas signoĉenoj\n"
+" -G, --basic-regexp ŜABLONOJ estas bazaj regulesprimoj (defaŭlta)\n"
+" -P, --perl-regexp ŜABLONOJ estas regulesprimoj de Perl\n"
+
+#: src/grep.c:1981
+#, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=ŜABLONOJ uzi ŜABLONOJn kiel regulesprimojn\n"
+" -f, --file=DOSIERO akiri la ŝablonojn el DOSIERO\n"
+" -i, --ignore-case ignori diferencojn de uskleco, ŝablone kaj "
+"datene\n"
+" --no-ignore-case ne ignori diferencojn de uskleco (defaŭlta)\n"
+" -w, --word-regexp kongrui nur kun tutaj vortoj\n"
+" -x, --line-regexp kongrui nur kun tutaj linioj\n"
+" -z, --null-data datenlinio finiĝas per bitoko 0, ne per "
+"linifino\n"
+
+#: src/grep.c:1989
+#, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"Diversaj:\n"
+" -s, --no-messages subpremi erarmesaĝojn\n"
+" -v, --invert-match elekti la nekongruajn liniojn\n"
+" -V, --version montri programversion kaj eliri\n"
+" --help montri ĉi tiun helpon kaj eliri\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+"\n"
+"Regado de la eligo:\n"
+" -m, --max-count==NOMBRO halti post NOMBRO da elektitaj linioj\n"
+" -b, --byte-offset montri la bitoknumeron kun eligataj linioj\n"
+" -n, --line-number montri la lininumeron kun eligataj linioj\n"
+" --line-buffered peli la eligon post ĉiu linio\n"
+" -H, --with-filename montri la dosiernomon antaŭ eligataj linioj\n"
+" -h, --no-filename subpremi la prefiksan dosiernomon ĉe eligo\n"
+" --label=ETIKEDO uzi ETIKEDOn kiel dosiernomon de ĉefenigujo\n"
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+" -o, --only-matching montri nur nevakajn kongruajn linipartojn\n"
+" -q, --quiet, --silent subpremi ĉian normalan eligadon\n"
+" --binary-files=SPECO supozi ke duumaj dosieroj estas de SPECO;\n"
+" SPECO estus 'binary' (duuma), "
+"'text' (teksta),\n"
+" aŭ 'without-match' (sen-trafa)\n"
+" -a, --text egalas al «--binary-files=text»\n"
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+" -I egalas al «--binary-files=without-match»\n"
+" -d, --directories=AGO kiel trakti dosierujojn; AGO estus "
+"'read' (legi),\n"
+" 'recurse' (rikure), aŭ 'skip' (ignori)\n"
+" -D, --devices=AGO kiel trakti specialajn dosierojn;\n"
+" AGO estus 'read' (legi), aŭ 'skip' (ignori)\n"
+" -R, -r, --recursive egalas al «--directories=recurse»\n"
+
+#: src/grep.c:2023
+#, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+" --include=ŜABLONO ekzameni nur dosierojn kiuj kongruas kun "
+"ŜABLONO\n"
+" (dosiernomŝablonoj estas \"globbing\" "
+"ŝablonoj)\n"
+" --exclude=ŜABLONO ignori dosierojn kiuj kongruas kun ŜABLONO\n"
+" --exclude-from=DSRO ignori dosierojn kiuj kongruas kun ŝablono en "
+"DSRO\n"
+" --exclude-dir=ŜABLONO ignori dosierujojn kiuj kongruas kun ŜABLONO\n"
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+" -L, --files-without-match montri nur nomojn de dosieroj sen trafo\n"
+" -l, --files-with-matches montri nur nomojn de dosieroj kun trafoj\n"
+" -c, --count montri nur la nombron de kongruaj linioj\n"
+" en ĉiu dosiero\n"
+" -T, --initial-tab rektigi la TAB-signojn (se necesas)\n"
+" -Z, --null eligi la bitokon «0» post dosiernomo\n"
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+"\n"
+"Regado de la kunteksto:\n"
+" -B, --before-context=NOM montri NOM liniojn da antaŭa kunteksto\n"
+" -A, --after-context=NOM montri NOM liniojn da posta kunteksto\n"
+" -C, --context=NOMBRO egalas al «-A NOMBRO -B NOMBRO»\n"
+
+#: src/grep.c:2043
+#, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+" -NOMBRO egalas al «--context=NOMBRO»\n"
+" --group-separator=APT montri APT en linio inter kongruoj kun "
+"kunteksto\n"
+" --no-group-separator ne montri apartigilon por kongruoj kun "
+"kunteksto\n"
+" --color[=KIAM],\n"
+" --colour[=KIAM] uzi markilojn por distingi la kongruajn ĉenojn;\n"
+" KIAM estu 'always' (ĉiam), 'never' (neniam),\n"
+" aŭ 'auto'\n"
+" -U, --binary ne forigi \\r-signojn ĉe linifino (MSDOS/"
+"Windows)\n"
+"\n"
+
+#: src/grep.c:2052
+#, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"Kiam DOSIERO estas «-», ĉefenigujo legiĝas.\n"
+"Kiam DOSIERO mankas, «.» legiĝas se rikura, alie «-» legiĝas.\n"
+"Kiam malpli ol du DOSIEROj indikatas, «-h» supoziĝas.\n"
+"Elirstato estas 0 se iu linio elektiĝis, alie 1;\n"
+"se iu eraro okazis kaj «-q» ne indikatis, elirstato estas 2.\n"
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "pluraj esprimtipoj indikatas"
+
+#: src/grep.c:2101
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr ""
+"Perla kongruo ne funkcias ĉar ĉi tiu programo kompiliĝis kun «--disable-perl-"
+"regexp»"
+
+#: src/grep.c:2103
+#, c-format
+msgid "invalid matcher %s"
+msgstr "nevalida esprimtipo %s"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "nekonata ago por aparatoj"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr "averto: --unix-byte-offsets (-u) malaktualas"
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "nevalida maksimuma nombro"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "nekonata ago por duumaj dosieroj"
+
+#: src/grep.c:2829
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+"Verkita de Majk HERTEL (Mike Haertel) kaj aliuloj; vidu\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr "mankas sufiĉa memoro por la PCRE-JIT-stako"
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr "opcio «-P» subtenas nur unubajtajn kaj UTF-8-ajn lokaĵojn"
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr "opcio «-P» akceptas nur unuopan ŝablonon"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr "**interna eraro** (devus neniam okazi)"
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr "transpasiĝis linilongecan limon de PCRE"
+
+#: src/pcresearch.c:306
+#, c-format
+msgid "%s: memory exhausted"
+msgstr "%s: mankas sufiĉa memoro"
+
+#: src/pcresearch.c:310
+#, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr "%s: la PCRE-JIT-stako tute pleniĝis"
+
+#: src/pcresearch.c:315
+#, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr "%s: transpasiĝis retroreferencan limon de PCRE"
+
+#: src/pcresearch.c:319
+#, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr "%s: transpasiĝis rikuran limon de PCRE"
+
+#: src/pcresearch.c:327
+#, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr "%s: interna eraro en PCRE: %d"
+
+#~ msgid "warning: GREP_OPTIONS is deprecated; please use an alias or script"
+#~ msgstr "averto: GREP_OPTIONS evitindas; bonvolu uzi 'alias' aŭ skripton"
+
+#~ msgid "warning: %s: %s"
+#~ msgstr "averto: %s: %s"
+
+#~ msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
+#~ msgstr "Hejmpaĝo de «%s»: http://www.gnu.org/software/%s/\n"
+
+#~ msgid "invalid %s%s argument '%s'"
+#~ msgstr "nevalida argumento de %s%s: «%s»"
+
+#~ msgid "invalid suffix in %s%s argument '%s'"
+#~ msgstr "nevalida sufikso en argumento de %s%s: «%s»"
+
+#~ msgid "%s%s argument '%s' too large"
+#~ msgstr "argumento de %s%s tro grandas: «%s»"
+
+#~ msgid "%s: option '--%s' doesn't allow an argument\n"
+#~ msgstr "%s: opcio «--%s» ne toleras argumenton\n"
+
+#~ msgid "%s: unrecognized option '--%s'\n"
+#~ msgstr "%s: nekonata opcio «--%s»\n"
+
+#~ msgid "%s: option '-W %s' is ambiguous\n"
+#~ msgstr "%s: opcio «-W %s» estas plursenca\n"
+
+#~ msgid "%s: option '-W %s' doesn't allow an argument\n"
+#~ msgstr "%s: opcio «-W %s» ne toleras argumenton\n"
+
+#~ msgid "%s: option '-W %s' requires an argument\n"
+#~ msgstr "%s: opcio «-W %s» bezonas argumenton\n"
+
+#~ msgid "lseek failed"
+#~ msgstr "malsukcesis 'lseek'"
+
+#~ msgid "PATTERN is, by default, a basic regular expression (BRE).\n"
+#~ msgstr "ŜABLONO defaŭlte estas baza regulesprimo (BRE).\n"
+
+#~ msgid ""
+#~ "'egrep' means 'grep -E'. 'fgrep' means 'grep -F'.\n"
+#~ "Direct invocation as either 'egrep' or 'fgrep' is deprecated.\n"
+#~ msgstr ""
+#~ "Rekta alvoko kiel aŭ 'egrep' aŭ 'fgrep' malrekomendatas;\n"
+#~ "'egrep' signifas 'grep -E; 'fgrep' signifas 'grep -F'.\n"
+
+#~ msgid "unescaped ^ or $ not supported with -Pz"
+#~ msgstr "seneskapa ^ aŭ $ ne subtenatas kun opcio «-Pz»"
+
+#~ msgid "invalid UTF-8 byte sequence in input"
+#~ msgstr "nevalida UTF-8-a bajtsekvenco en enigo"
+
+#~ msgid "PATTERN is an extended regular expression (ERE).\n"
+#~ msgstr "ŜABLONO estas etendita regulesprimo (ERE).\n"
+
+#~ msgid "Invocation as 'egrep' is deprecated; use 'grep -E' instead.\n"
+#~ msgstr "Alvoko kiel 'egrep' malrekomendatas; uzu 'grep -E' anstataŭe.\n"
+
+#~ msgid "PATTERN is a set of newline-separated fixed strings.\n"
+#~ msgstr "ŜABLONO estas aro da fiksitaj signoĉenoj en apartaj linioj.\n"
+
+#~ msgid "Invocation as 'fgrep' is deprecated; use 'grep -F' instead.\n"
+#~ msgstr "Alvoko kiel 'fgrep' malrekomendatas; uzu 'grep -F' anstataŭe.\n"
+
+#~ msgid "%s can only use the %s pattern syntax"
+#~ msgstr "%s nur povas uzi sintakson de %s-ŝablono"
+
+#~ msgid "the --mmap option has been a no-op since 2010"
+#~ msgstr "la opcio «--mmap» faras nenion, jam ekde 2010"
+
+#~ msgid "unfinished repeat count"
+#~ msgstr "nefinita ripetonombro"
+
+#~ msgid "malformed repeat count"
+#~ msgstr "misformita ripetonombro"
+
+#~ msgid "writing output"
+#~ msgstr "skribiĝas eligo"
+
+#~ msgid ""
+#~ "\n"
+#~ "Output control:\n"
+#~ " -m, --max-count=NUM stop after NUM matches\n"
+#~ " -b, --byte-offset print the byte offset with output lines\n"
+#~ " -n, --line-number print line number with output lines\n"
+#~ " --line-buffered flush output on every line\n"
+#~ " -H, --with-filename print the filename for each match\n"
+#~ " -h, --no-filename suppress the prefixing filename on output\n"
+#~ " --label=LABEL print LABEL as filename for standard input\n"
+#~ " -o, --only-matching show only the part of a line matching "
+#~ "PATTERN\n"
+#~ " -q, --quiet, --silent suppress all normal output\n"
+#~ " --binary-files=TYPE assume that binary files are TYPE;\n"
+#~ " TYPE is `binary', `text', or `without-match'\n"
+#~ " -a, --text equivalent to --binary-files=text\n"
+#~ " -I equivalent to --binary-files=without-match\n"
+#~ " -d, --directories=ACTION how to handle directories;\n"
+#~ " ACTION is `read', `recurse', or `skip'\n"
+#~ " -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+#~ " ACTION is `read' or `skip'\n"
+#~ " -R, -r, --recursive equivalent to --directories=recurse\n"
+#~ " --include=FILE_PATTERN search only files that match FILE_PATTERN\n"
+#~ " --exclude=FILE_PATTERN skip files and directories matching "
+#~ "FILE_PATTERN\n"
+#~ " --exclude-from=FILE skip files matching any file pattern from "
+#~ "FILE\n"
+#~ " --exclude-dir=PATTERN directories that match PATTERN will be "
+#~ "skipped.\n"
+#~ " -L, --files-without-match print only names of FILEs containing no "
+#~ "match\n"
+#~ " -l, --files-with-matches print only names of FILEs containing matches\n"
+#~ " -c, --count print only a count of matching lines per "
+#~ "FILE\n"
+#~ " -T, --initial-tab make tabs line up (if needed)\n"
+#~ " -Z, --null print 0 byte after FILE name\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Regado de la eligo:\n"
+#~ " -m, --max-count==NOMBRO halti post NOMBRO da trafoj\n"
+#~ " -b, --byte-offset presi la bitoknumeron kun eligataj linioj\n"
+#~ " -n, --line-number presi la lininumeron kun eligataj linioj\n"
+#~ " --line-buffered peli la eligon post ĉiu linio\n"
+#~ " -H, --with-filename presi la dosiernomon por ĉiu trafo\n"
+#~ " -h, --no-filename subpremi la prefiksan dosiernomon ĉe eligo\n"
+#~ " --label=ETIKEDO presi ETIKEDOn kiel dosiernomon de normala "
+#~ "enigo\n"
+#~ " -o, --only-matching montri nur la liniparton, kiu kongruas kun "
+#~ "ŜABLONO\n"
+#~ " -q, --quiet, --silent subpremi ĉian normalan eligadon\n"
+#~ " --binary-files=SPECO supozi, ke binaraj dosieroj estas de SPECO\n"
+#~ " SPECO estas 'binary', 'text', aŭ 'without-"
+#~ "match'\n"
+#~ " -a, --text same kiel --binary-files=text\n"
+#~ " -I same kiel --binary-files=without-match\n"
+#~ " -d, --directories=AGO kiel trakti dosierujojn; AGO estas "
+#~ "'read' (legi),\n"
+#~ " 'recurse' (rekurse), aŭ 'skip' (ignori)\n"
+#~ " -D, --devices=AGO kiel trakti specialajn dosierojn;\n"
+#~ " AGO estas 'read' (legi), aŭ 'skip' (ignori)\n"
+#~ " -R, -r, --recursive same kiel --directories=recurse.\n"
+#~ " --include=ŜABLONO ekzameni nur dosierojn, kiuj kongruas kun "
+#~ "ŜABLONO\n"
+#~ " --exclude=ŜABLONO ignori dosier(uj)ojn, kiuj kongruas kun "
+#~ "ŜABLONO\n"
+#~ " --exclude-from=DOS ignori dosierojn, kiuj kongruas kun ŝablono "
+#~ "en DOS\n"
+#~ " --exclude-dir=ŜABLONO ignori dosierujojn, kiuj kongruas kun "
+#~ "ŜABLONO\n"
+#~ " -L, --files-without-match presi nur dosiernomojn sen trafo\n"
+#~ " -l, --files-with-matches presi nur dosiernomojn kun trafoj\n"
+#~ " -c, --count presi nur nombron de kongruaj linioj en ĉiu "
+#~ "dosiero\n"
+#~ " -T, --initial-tab rektigi la TAB-signojn (se necese)\n"
+#~ " -Z, --null presi la bitokon 0 post dosiernomo\n"
+
+#~ msgid ""
+#~ "In GREP_COLORS=\"%s\", the \"%s\" capacity needs a value (\"=...\"); "
+#~ "skipped."
+#~ msgstr "En GREP_COLORS=\"%s\", \"%s\" bezonas valoron (\"=...\"); ignorite."
+
+#~ msgid ""
+#~ "In GREP_COLORS=\"%s\", the \"%s\" capacity is boolean and cannot take a "
+#~ "value (\"=%s\"); skipped."
+#~ msgstr ""
+#~ "En GREP_COLORS=\"%s\", \"%s\" estas bulea kaj ne povas alpreni valoron "
+#~ "(\"=%s\"); ignorite."
+
+#~ msgid "In GREP_COLORS=\"%s\", the \"%s\" capacity %s."
+#~ msgstr "En GREP_COLORS=\"%s\", \"%s\" %s."
+
+#~ msgid ""
+#~ "Stopped processing of ill-formed GREP_COLORS=\"%s\" at remaining "
+#~ "substring \"%s\"."
+#~ msgstr ""
+#~ "Ĉesis pritrakti malbone formitan GREP_COLORS=\"%s\" ĉe restanta subĉeno "
+#~ "\"%s\"."
+
+#~ msgid "unknown directories method"
+#~ msgstr "nekonata dosieruja metodo"
+
+#~ msgid "The -P and -z options cannot be combined"
+#~ msgstr "Ne eblas kombini la opciojn -P kaj -z"
+
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: malpermesata opcio -- %c\n"
+
+#~ msgid "Copyright (C) 2008 Free Software Foundation, Inc.\n"
+#~ msgstr "Kopirajto (C) 2008 Free Software Foundation, Inc.\n"
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "Ĉi tiu estas libera programo; vidu la fonton por kopikondiĉoj. Estas\n"
+#~ "NENIA GARANTIO, eĉ ne pri KOMERCA KVALITO aŭ ADEKVATECO POR DIFINITA "
+#~ "CELO.\n"
diff --git a/src/grep/po/es.gmo b/src/grep/po/es.gmo
new file mode 100644
index 0000000..2aafb9b
--- /dev/null
+++ b/src/grep/po/es.gmo
Binary files differ
diff --git a/src/grep/po/es.po b/src/grep/po/es.po
new file mode 100644
index 0000000..6df416f
--- /dev/null
+++ b/src/grep/po/es.po
@@ -0,0 +1,951 @@
+# Mensajes en español para GNU grep.
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2010, 2011, 2013, 2014 Free Software Foundation, Inc.
+# This file is distributed under the same license as the grep package.
+# Enrique Melero Gómez <melero@eurolands.com>, 1996.
+# Santiago Vila Doncel <sanvila@unex.es>, 1997-2002, 2010, 2011, 2013, 2014.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU grep 2.19.12\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2014-07-11 18:53+0200\n"
+"Last-Translator: Santiago Vila Doncel <sanvila@unex.es>\n"
+"Language-Team: Spanish <es@tp.org.es>\n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8-bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "argumento %s inválido %s"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "argumento %s ambiguo para %s"
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr "Los argumentos válidos son:"
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr ""
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr ""
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr "error de escritura"
+
+#: lib/dfa.c:896
+msgid "unbalanced ["
+msgstr "[ desemparejado"
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr "clase de caracteres inválida"
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr "la sintaxis de la clase de caracteres es [[:space:]], no [:space:]"
+
+#: lib/dfa.c:1210
+msgid "unfinished \\ escape"
+msgstr "secuencia de escape \\ sin terminar"
+
+#: lib/dfa.c:1371
+msgid "invalid content of \\{\\}"
+msgstr "contenido inválido de \\{\\}"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr "la expresión regular es demasiado grande"
+
+#: lib/dfa.c:1858
+msgid "unbalanced ("
+msgstr "( desemparejado"
+
+#: lib/dfa.c:1975
+msgid "no syntax specified"
+msgstr "no se ha especificado ninguna sintaxis"
+
+#: lib/dfa.c:1986
+msgid "unbalanced )"
+msgstr ") desemparejado"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "Error del sistema desconocido"
+
+#: lib/getopt.c:278
+#, fuzzy, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: la opción '-W %s' es ambigua\n"
+
+#: lib/getopt.c:284
+#, fuzzy, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: la opción '%s' es ambigua; posibilidades:"
+
+#: lib/getopt.c:319
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: opción no reconocida '%c%s'\n"
+
+#: lib/getopt.c:345
+#, fuzzy, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: la opción '%c%s' no admite ningún argumento\n"
+
+#: lib/getopt.c:360
+#, fuzzy, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: la opción '--%s' requiere un argumento\n"
+
+#: lib/getopt.c:621
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: opción inválida -- '%c'\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: la opción requiere un argumento -- '%c'\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "memoria agotada"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr "no se puede registrar el directorio de trabajo actual"
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "fallo al volver al directorio de trabajo inicial"
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr ""
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "«"
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "»"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr "Éxito"
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr "No hay ninguna coincidencia"
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr "Expresión regular inválida"
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr "Carácter de unión inválido"
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr "Nombre de clase de caracteres inválido"
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr "Barra invertida al final"
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr "Referencia hacia atrás inválida"
+
+#: lib/regcomp.c:156
+#, fuzzy
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr "[ o [^ desemparejado"
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr "( o \\( desemparejado"
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr "\\{ desemparejado"
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr "Contenido inválido de \\{\\}"
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr "Final de rango inválido"
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "Memoria agotada"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr "La expresión regular precedente es inválida"
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr "Final prematuro de la expresión regular"
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr "La expresión regular es demasiado grande"
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr ") o \\) desemparejado"
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr "No hay ninguna expresión regular anterior"
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Empaquetado por %s (%s)\n"
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Empaquetado por %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr "(C)"
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, fuzzy, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"\n"
+"Licencia GPLv3+: GPL de GNU versión 3 o posterior\n"
+"<http://gnu.org/licenses/gpl.html>\n"
+"Esto es software libre: usted es libre de cambiarlo y redistribuirlo.\n"
+"No hay NINGUNA GARANTÍA, hasta donde permite la ley.\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Escrito por %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Escrito por %s y %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Escrito por %s, %s, y %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Escrito por %s, %s, %s,\n"
+"y %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Escrito por %s, %s, %s,\n"
+"%s, y %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Escrito por %s, %s, %s,\n"
+"%s, %s, y %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Escrito por %s, %s, %s,\n"
+"%s, %s, %s, y %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Escrito por %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"y %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Escrito por %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, y %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Escrito por %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, y otros.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, fuzzy, c-format
+msgid "Report bugs to: %s\n"
+msgstr ""
+"\n"
+"Comunicar errores en el programa a: %s\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "Comunicar errores sobre %s a: %s\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Página inicial de %s: <%s>\n"
+
+#: lib/version-etc.c:260
+#, fuzzy, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr ""
+"Ayuda general sobre el uso de software de GNU: <http://www.gnu.org/gethelp/"
+">\n"
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(entrada estándar)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "longitud de contexto inválida"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "la entrada es demasiado grande para contar"
+
+#: src/grep.c:1641
+#, fuzzy, c-format
+msgid "%s: binary file matches"
+msgstr "Coincidencia en el fichero binario %s\n"
+
+#: src/grep.c:1679
+#, fuzzy, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "bucle de directorio recursivo"
+
+#: src/grep.c:1899
+#, fuzzy, c-format
+msgid "%s: input file is also the output"
+msgstr "el fichero de entrada %s también es el de salida"
+
+#: src/grep.c:1961 src/grep.c:1968
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "Modo de empleo: %s [OPCIÓN]... PATRÓN [FICHERO]...\n"
+
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "Pruebe '%s --help' para más información.\n"
+
+#: src/grep.c:1969
+#, fuzzy, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr "Busca PATRÓN en cada FICHERO o en la entrada estándar.\n"
+
+#: src/grep.c:1970
+#, fuzzy, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"Ejemplo: %s -i 'hello world' menu.h main.c\n"
+"\n"
+"Selección e interpretación de Expreg:\n"
+
+#: src/grep.c:1975
+#, fuzzy, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp PATRÓN es una expresión regular extendida (ERE)\n"
+" -F, --fixed-strings PATRÓN es un conjunto de cadenas separadas por\n"
+" caracteres de nueva línea\n"
+" -G, --basic-regexp PATRÓN es una expresión regular básica (BRE)\n"
+" -P, --perl-regexp PATRÓN es una expresión regular en Perl\n"
+
+#: src/grep.c:1981
+#, fuzzy, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=PATRÓN utiliza PATRÓN como expresión regular\n"
+" -f, --file=FICHERO obtiene PATRÓN de FICHERO\n"
+" -i, --ignore-case considera iguales mayúsculas y minúsculas\n"
+" -w, --word-regexp obliga a que PATRÓN coincida solamente\n"
+" con palabras completas\n"
+" -x, --line-regexp obliga a que PATRÓN coincida solamente\n"
+" con líneas completas\n"
+" -z, --null-data una línea de datos termina en un byte 0, no\n"
+" en un carácter de nueva línea\n"
+
+#: src/grep.c:1989
+#, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"Variadas:\n"
+" -s, --no-messages suprime los mensajes de error\n"
+" -v, --invert-match selecciona las líneas que no coinciden\n"
+" -V, --version muestra la versión y finaliza\n"
+" --help muestra este texto de ayuda y finaliza\n"
+
+#: src/grep.c:1996
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+"\n"
+"Control del resultado:\n"
+" -m, --max-count=NÚM se detiene después de NÚM coincidencias\n"
+" -b, --byte-offset muestra el desplazamiento en bytes junto\n"
+" con las líneas de salida\n"
+" -n, --line-number muestra el número de línea junto con\n"
+" las líneas de salida\n"
+" --line-buffered descarga el resultado para cada línea\n"
+" -H, --with-filename muestra el nombre del fichero para cada\n"
+" coincidencia\n"
+" -h, --no-filename suprime los nombres de los ficheros como "
+"prefijo\n"
+" en el resultado\n"
+" --label=ETIQUETA utiliza ETIQUETA como nombre de fichero prefijo\n"
+" para la entrada estándar\n"
+
+#: src/grep.c:2007
+#, fuzzy, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+" -o, --only-matching muestra solamente la parte de una línea que\n"
+" encaja con PATRÓN\n"
+" -q, --quiet, --silent suprime todo el resultado normal\n"
+" --binary-files=TIPO supone que los ficheros binarios son TIPO\n"
+" TIPO es 'binary', 'text', o 'without-match'\n"
+" -a, --text equivalente a --binary-files=text\n"
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+" -I equivalente a --binary-files=without-match\n"
+" -d, --directories=ACCIÓN especifica cómo manejar los directorios\n"
+" ACCIÓN es 'read', 'recurse', o 'skip'\n"
+" -D, --devices=ACCIÓN especifica cómo manejar dispositivos, FIFOs y\n"
+" `sockets', puede ser 'read' o 'skip'\n"
+" -r, --recursive equivalente a --directories=recurse\n"
+" -R, --dereference-recursive similar, pero sigue todos los enlaces "
+"simbólicos\n"
+
+#: src/grep.c:2023
+#, fuzzy, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+" --include=PATRÓN examina los ficheros que encajan con PATRÓN\n"
+" --exclude=PATRÓN se salta los ficheros que encajan con PATRÓN\n"
+" --exclude-from=FICHERO se salta los ficheros que encajan con los "
+"patrones\n"
+" de FICHERO\n"
+" --exclude-dir=PATRÓN se salta los directorios que encajan con PATRÓN\n"
+
+#: src/grep.c:2030
+#, fuzzy, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+" -L, --files-without-match muestra solamente los nombres de FICHEROs\n"
+" que no contienen ninguna coincidencia\n"
+" -l, --files-with-matches muestra solamente los nombres de FICHEROs\n"
+" que contienen alguna coincidencia\n"
+" -c, --count muestra solamente el total de líneas que "
+"coinciden\n"
+" por cada FICHERO\n"
+" -Z, --null imprime un byte 0 después del nombre del "
+"FICHERO\n"
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+"\n"
+"Control del contexto:\n"
+" -B, --before-context=NÚM muestra NÚM líneas de contexto anterior\n"
+" -A, --after-context=NÚM muestra NÚM líneas de contexto posterior\n"
+" -C, --context=NÚM muestra NÚM líneas de contexto\n"
+
+#: src/grep.c:2043
+#, fuzzy, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+" -NÚM lo mismo que --context=NÚM\n"
+" --color[=CUÁNDO],\n"
+" --colour[=CUÁNDO] distingue con marcadores la cadena que encaja\n"
+" CUÁNDO puede ser 'always', 'never' o 'auto'.\n"
+" -U, --binary no elimina los caracteres de retorno de carro\n"
+" finales de línea (MSDOS/Windows)\n"
+" -u, --unix-byte-offsets cuenta los desplazamientos como si no hubiera\n"
+" retornos de carro (MSDOS/Windows)\n"
+
+#: src/grep.c:2052
+#, fuzzy, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"Cuando FICHERO es -, lee la entrada estándar. Si no se especifica\n"
+"ningún FICHERO, lee . si se especifica -r en la línea de órdenes, o -\n"
+"en caso contrario. Si se dan menos de dos FICHEROs, se supone -h. El\n"
+"estado de salida es 0 si hay coincidencias, 1 si no las hay; si ocurre\n"
+"algún error y no se especificó -q, el estado de salida es 2.\n"
+
+# viendo los fuentes , hay varias opciones
+# que hay sin documentar. O quizá es que getopt() lo he entendido mal
+# Son las opciones X ( requiere argumento ) , switchs -c, -b, -L e -y
+# grep.c:622 ->
+# opt = getopt(argc, argv, "0123456789A:B:CEFGVX:bce:f:hiLlnqsvwxy"
+# grep --help ->
+# usage: grep [-[[AB] ]<num>] [-[CEFGVchilnqsvwx]] [-[ef]] <expr> [<files...>]
+# La opción -X es a la que corresponde esta línea.
+#
+# No me gusta nada lo de opción "a buscar".
+# Se admiten sugerencias. sv
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "se han especificado expresiones conflictivas"
+
+#: src/grep.c:2101
+#, fuzzy
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr ""
+"el soporte para la opción -P no está compilado en este ejecutable --disable-"
+"perl-regexp"
+
+#: src/grep.c:2103
+#, c-format
+msgid "invalid matcher %s"
+msgstr "expresión inválida %s"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "método de dispositivos desconocido"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr ""
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "contador máximo inválido"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "tipo binary-files desconocido"
+
+#: src/grep.c:2829
+#, fuzzy
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr "otros, véase <http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>"
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr "fallo al asignar memoria para la pila JIT de PCRE"
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr ""
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr "la opción -P solamente admite un patrón"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr "error interno (no debería ocurrir nunca)"
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr "se ha excedido el límite de longitud de línea de las PCREs"
+
+#: src/pcresearch.c:306
+#, fuzzy, c-format
+msgid "%s: memory exhausted"
+msgstr "memoria agotada"
+
+#: src/pcresearch.c:310
+#, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr ""
+
+#: src/pcresearch.c:315
+#, fuzzy, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr "se ha excedido el límite de vuelta atrás de las PCREs"
+
+#: src/pcresearch.c:319
+#, fuzzy, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr "se ha excedido el límite de vuelta atrás de las PCREs"
+
+#: src/pcresearch.c:327
+#, fuzzy, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr "error interno de PCRE: %d"
+
+#, c-format
+#~ msgid "warning: %s: %s"
+#~ msgstr "atención: %s: %s"
+
+#~ msgid "invalid %s%s argument '%s'"
+#~ msgstr "argumento %s%s inválido '%s'"
+
+#~ msgid "invalid suffix in %s%s argument '%s'"
+#~ msgstr "sufijo inválido en el argumento %s%s '%s'"
+
+#~ msgid "%s%s argument '%s' too large"
+#~ msgstr "%s%s argumento '%s' demasiado grande"
+
+#, fuzzy
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "página inicial de %s: <http://www.gnu.org/software/%s/>\n"
+
+#~ msgid "internal error"
+#~ msgstr "error interno"
+
+#~ msgid "Mike Haertel"
+#~ msgstr "Mike Haertel"
+
+#~ msgid "%s: option '--%s' doesn't allow an argument\n"
+#~ msgstr "%s: la opción '--%s' no admite ningún argumento\n"
+
+#~ msgid "%s: unrecognized option '--%s'\n"
+#~ msgstr "%s: opción no reconocida '--%s'\n"
+
+#~ msgid "%s: option '-W %s' is ambiguous\n"
+#~ msgstr "%s: la opción '-W %s' es ambigua\n"
+
+#~ msgid "%s: option '-W %s' doesn't allow an argument\n"
+#~ msgstr "%s: la opción '-W %s' no admite ningún argumento\n"
+
+#~ msgid "%s: option '-W %s' requires an argument\n"
+#~ msgstr "%s: la opción '-W %s' requiere un argumento\n"
+
+#~ msgid "PATTERN is, by default, a basic regular expression (BRE).\n"
+#~ msgstr "PATRÓN es, por omisión, una expresión regular básica (BRE).\n"
+
+#~ msgid ""
+#~ "'egrep' means 'grep -E'. 'fgrep' means 'grep -F'.\n"
+#~ "Direct invocation as either 'egrep' or 'fgrep' is deprecated.\n"
+#~ msgstr ""
+#~ "'egrep' significa 'grep -E'. 'fgrep' significa 'grep -F'.\n"
+#~ "La invocación directa como 'egrep' o 'fgrep' está obsoleta.\n"
+
+#~ msgid "lseek failed"
+#~ msgstr "falló la llamada al sistema `lskeek'"
+
+#~ msgid "GNU Grep home page: <%s>\n"
+#~ msgstr "Página inicial de GNU grep: <%s>\n"
+
+#~ msgid "invalid UTF-8 byte sequence in input"
+#~ msgstr "secuencia de bytes UTF-8 inválida en la entrada"
+
+#~ msgid "PATTERN is an extended regular expression (ERE).\n"
+#~ msgstr "PATRÓN es una expresión regular extendida (ERE).\n"
+
+#~ msgid "Invocation as 'egrep' is deprecated; use 'grep -E' instead.\n"
+#~ msgstr ""
+#~ "La invocación como 'egrep' está obsoleta; utilice 'grep -E' en su lugar.\n"
+
+#~ msgid "PATTERN is a set of newline-separated fixed strings.\n"
+#~ msgstr "PATRÓN es un conjunto de cadenas fijas separadas por nueva línea\n"
+
+#~ msgid "Invocation as 'fgrep' is deprecated; use 'grep -F' instead.\n"
+#~ msgstr ""
+#~ "La invocación como 'fgrep' está obsoleta; utilice 'grep -F' en su lugar.\n"
+
+#~ msgid "%s can only use the %s pattern syntax"
+#~ msgstr "%s solamente puede usar la sintaxis de patrón %s"
+
+#~ msgid "the --mmap option has been a no-op since 2010"
+#~ msgstr "la opcion --mmap no hace nada desde 2010"
+
+#~ msgid "unfinished repeat count"
+#~ msgstr "contador de repetición sin terminar"
+
+#~ msgid "malformed repeat count"
+#~ msgstr "contador de repetición erróneo"
+
+#~ msgid "writing output"
+#~ msgstr "escribiendo el resultado"
+
+#~ msgid ""
+#~ "in GREP_COLORS=\"%s\", the \"%s\" capacity needs a value (\"=...\"); "
+#~ "skipped"
+#~ msgstr ""
+#~ "en GREP_COLORS=\"%s\", la capacidad \"%s\" necesita un valor (\"=...\"); "
+#~ "saltado."
+
+#~ msgid ""
+#~ "in GREP_COLORS=\"%s\", the \"%s\" capacity is boolean and cannot take a "
+#~ "value (\"=%s\"); skipped"
+#~ msgstr ""
+#~ "en GREP_COLORS=\"%s\", la capacidad \"%s\" es booleana y no puede tener "
+#~ "un valor (\"=%s\"); saltado."
+
+#~ msgid "in GREP_COLORS=\"%s\", the \"%s\" capacity %s"
+#~ msgstr "en GREP_COLORS=\"%s\", la capacidad \"%s\" %s."
+
+#~ msgid ""
+#~ "stopped processing of ill-formed GREP_COLORS=\"%s\" at remaining "
+#~ "substring \"%s\""
+#~ msgstr ""
+#~ "el proceso del erróneo GREP_COLORS=\"%s\" se detuvo en la subcadena \"%s"
+#~ "\"."
+
+# Nota: Se refiere a la opción --directories=ACCIÓN cuando ACCIÓN
+# no es `read', `recurse' o `skip'.
+#~ msgid "unknown directories method"
+#~ msgstr "método de directorios desconocido"
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "Esto es software libre; vea el código fuente para las condiciones de "
+#~ "copia.\n"
+#~ "No hay NINGUNA garantía; ni siquiera de COMERCIABILIDAD o IDONEIDAD PARA "
+#~ "UN\n"
+#~ "FIN DETERMINADO.\n"
+
+#~ msgid "The -P and -z options cannot be combined"
+#~ msgstr "Las opciones -P y -z no se pueden combinar"
+
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: opción ilegal -- %c\n"
+
+# FIXME. Comunicar al autor que esto es repetición...
+#~ msgid "out of memory"
+#~ msgstr "memoria agotada"
+
+# FIXME: Dice [FILE] ... en vez de [FILE]... ¿Será un error?
+#~ msgid "Usage: %s [OPTION]... PATTERN [FILE] ...\n"
+#~ msgstr "Modo de empleo: %s [OPCIÓN]... PATRÓN [FICHERO] ...\n"
+
+#~ msgid "%s (GNU grep) %s\n"
+#~ msgstr "%s (GNU grep) %s\n"
+
+#~ msgid "option %s"
+#~ msgstr "opción %s"
+
+#~ msgid " with arg %s"
+#~ msgstr " con argumento %s"
+
+#~ msgid "digits occur in two different argv-elements.\n"
+#~ msgstr "aparecen dígitos en dos elementos de argv diferentes.\n"
+
+#~ msgid "option %c\n"
+#~ msgstr "opción %c\n"
+
+#~ msgid "option a\n"
+#~ msgstr "opción a\n"
+
+#~ msgid "option b\n"
+#~ msgstr "opción b\n"
+
+#~ msgid "option c with value `%s'\n"
+#~ msgstr "la opción c tiene el valor `%s'\n"
+
+#~ msgid "option d with value `%s'\n"
+#~ msgstr "la opción d tiene el valor `%s'\n"
+
+#~ msgid "?? getopt returned character code 0%o ??\n"
+#~ msgstr "?? getopt ha devuelto el carácter código 0%o ??\n"
+
+#~ msgid "non-option ARGV-elements: "
+#~ msgstr "elementos de ARGV que no son opciones: "
+
+#~ msgid "you may specify only one of -E, -F, or -G"
+#~ msgstr "sólo se puede especificar una de las opciones -E, -F, o -G"
+
+# Prefiero dejarlo en solamente un patrón
+# Pero entonces no queda claro que *debe haber uno*, y parece que
+# es uno como máximo (siendo el mínimo 0). sv
+#~ msgid ""
+#~ "There should be one and only one PATTERN, `-e PATTERN' or `-f FILE'.\n"
+#~ msgstr "Debe haber un y solamente un PATRÓN, `-e PATRÓN', o `-f FICHERO'.\n"
+
+#~ msgid "If no -[GEF], then -G is assumed.\n"
+#~ msgstr "Si no se especifica ninguna de las opciones -[GEF], se supone -G.\n"
diff --git a/src/grep/po/et.gmo b/src/grep/po/et.gmo
new file mode 100644
index 0000000..14a7c9c
--- /dev/null
+++ b/src/grep/po/et.gmo
Binary files differ
diff --git a/src/grep/po/et.po b/src/grep/po/et.po
new file mode 100644
index 0000000..1aa20b7
--- /dev/null
+++ b/src/grep/po/et.po
@@ -0,0 +1,735 @@
+# This file is distributed under the same license as the grep package.
+# Estonian translations for grep
+# Copyright (C) 2000 Free Software Foundation, Inc.
+# Toomas Soome <tsoome@me.com>, 2021.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: grep 3.6.27\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2021-08-09 11:00+0300\n"
+"Last-Translator: Toomas Soome <tsoome@me.com>\n"
+"Language-Team: Estonian <linux-ee@lists.eenet.ee>\n"
+"Language: et\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8-bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "vigane argument %s võtmele %s"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "segane argument %s võtmele %s"
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr "Lubatud argumendid on:"
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr "programmi viga"
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr "pinu ületäitumine"
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr "viga kirjutamisel"
+
+#: lib/dfa.c:896
+msgid "unbalanced ["
+msgstr "balanseerimata ["
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr "vigane sümboliklass"
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr "sümbolklassi süntaks on [[:space:]], mitte [:space:]"
+
+#: lib/dfa.c:1210
+msgid "unfinished \\ escape"
+msgstr "lõpetamata \\ paojada"
+
+#: lib/dfa.c:1371
+msgid "invalid content of \\{\\}"
+msgstr "vigane \\{\\} sisu"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr "regulaaravaldis on liiga suur"
+
+#: lib/dfa.c:1858
+msgid "unbalanced ("
+msgstr "balanseerimata ("
+
+#: lib/dfa.c:1975
+msgid "no syntax specified"
+msgstr "süntaksit pole määratud"
+
+#: lib/dfa.c:1986
+msgid "unbalanced )"
+msgstr "balanseerimata )"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "Tundmatu süsteemi viga"
+
+#: lib/getopt.c:278
+#, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: võti '%s%s' on segane\n"
+
+#: lib/getopt.c:284
+#, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: võti '%s%s' on segane; võimalused:"
+
+#: lib/getopt.c:319
+#, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: tundmatu võti '%s%s'\n"
+
+#: lib/getopt.c:345
+#, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: võti '%s%s' ei luba argumenti\n"
+
+#: lib/getopt.c:360
+#, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: võti '%s%s' nõuab argumenti\n"
+
+#: lib/getopt.c:621
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: vigane võti -- '%c'\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: võti nõuab argumenti -- '%c'\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "mälu on otsas"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr "ei õnnestu salvestada jooksvat töökataloogi"
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "algsesse töökataloogi ei saa tagasi minna"
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr "failipideme tekst/binaar moodi muutmine ebaõnnestus"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "'"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr "Edukas"
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr "Vastet pole"
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr "Vigane regulaaravaldis"
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr "Vigane sortimise sümbol"
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr "Vigane sümbolklassi nimi"
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr "Lõpetav langkriips"
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr "Vigane tagasi viide"
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr "Puudub [, [^, [:, [. või [= paariline"
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr "Puudub ( või \\("
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr "Puudub \\{"
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr "Vigane \\{\\} sisu"
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr "Vigane vahemiku lõpp"
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "Mälu on otsas"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr "Vigane eelnev regulaaravaldis"
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr "Ootamatu reagulaaravaldise lõpp"
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr "Regulaaravaldis on liiga suur"
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr "Puudub ) või \\)"
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr "Eelnevat regulaaravaldist pole"
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Pakendanud %s (%s)\n"
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Pakendanud %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr "©"
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Litsents GPLv3+: GNU GPL versioon 3 või uuem <%s>\n"
+"See on vaba tarkvara: teil on lubatud seda muuta ja levitada.\n"
+"Garantii PUUDUB; vastavalt seadustega lubatud piiridele.\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Kirjutanud %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Kirjutanud %s ja %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Kirjutanud %s, %s, ja %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Kirjutanud %s, %s, %s,\n"
+"ja %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Kirjutanud %s, %s, %s,\n"
+"%s, ja %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Kirjutanud %s, %s, %s,\n"
+"%s, %s, ja %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Kirjuatanud %s, %s, %s,\n"
+"%s, %s, %s, ja %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Kirjutanud %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"ja %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Kirjutanud %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, ja %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Kirjutanud %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, ja teised.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr "Teatage palun vigadest: %s\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "Teatage palun %s vigadest: %s\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s koduleht: <%s>\n"
+
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr "Üldine abiinfo GNU tarkvara kohta: <%s>\n"
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(standardsisend)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "vigane konteksti pikkuse argument"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "sisend on loendamiseks liiga suur"
+
+#: src/grep.c:1641
+#, c-format
+msgid "%s: binary file matches"
+msgstr "%s: binaarfail sobib"
+
+#: src/grep.c:1679
+#, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "%s: hoiatus: rekursiivne kataloogipuu tsükkel"
+
+#: src/grep.c:1899
+#, c-format
+msgid "%s: input file is also the output"
+msgstr "%s: sisendfail on ühtlasi ka väljund"
+
+#: src/grep.c:1961 src/grep.c:1968
+#, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "Kasutamine: %s [VÕTI]... MUSTRID [FAIL] ...\n"
+
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "Lisainfo saamiseks proovige võtit '%s --help'.\n"
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr "Otsi MUSTREID igast FAIList.\n"
+
+#: src/grep.c:1970
+#, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"Näiteks: %s -i 'tere kõik' menu.h main.c\n"
+"MUSTRID võivad sisaldada mitut reavahetusega eraldatud mustrit.\n"
+"\n"
+"Mustri valik ja interpreteerimine:\n"
+
+#: src/grep.c:1975
+#, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp MUSTRID on laiendatud regulaaravaldised\n"
+" -F, --fixed-strings MUSTRID on hulk reavahetustega eraldatud "
+"sõnesid\n"
+" -G, --basic-regexp MUSTRID on lihtsad regulaaravaldised "
+"(vaikimisi)\n"
+" -P, --perl-regexp MUSTRID on Perl regulaaravaldised\n"
+
+#: src/grep.c:1981
+#, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=MUSTER kasuta regulaaravaldistena\n"
+" -f, --file=FAIL loe MUSTRID failist FAIL\n"
+" -i, --ignore-case tõstutundetu\n"
+" --no-ignore-case tõstutundlik (vaikimisi)\n"
+" -w, --word-regexp kasuta MUSTRIT sõnade leidmiseks\n"
+" -x, --line-regexp kasuta MUSTRIT ridade leidmiseks\n"
+" -z, --null-data andmerida lõppeb baidil 0, mitte reavahetusel\n"
+
+#: src/grep.c:1989
+#, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"Muud:\n"
+" -s, --no-messages blokeeri veateated\n"
+" -v, --invert-match vali mitte-sobivad read\n"
+" -V, --version esita versiooniinfo ja lõpeta töö\n"
+" --help esita see abiinfo ja lõpeta töö\n"
+"\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+"\n"
+"Väljundi kontroll:\n"
+" -m, --max-count=NUM peatu peale NUM rida\n"
+" -b, --byte-offset väljasta koos ridadega ka baidi indeks\n"
+" -n, --line-number väljasta koos ridadega ka reanumber\n"
+" --line-buffered tühjenda väljund igal real\n"
+" -H, --with-filename väljasta iga leiuga failinimi\n"
+" -h, --no-filename blokeeri väljundis failinimi\n"
+" --label=MÄRGEND kasuta väljundis failinime asemel märgendit\n"
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+" -o, --only-matching näita ainult mustriga sobivat mittetühja reaosa\n"
+" -q, --quiet, --silent blokeeri kogu tavaline väljund\n"
+" --binary-files=TÜÜP eelda binaarfailide tüüpi;\n"
+" TÜÜP on 'binary', 'text', või 'without-match'\n"
+" -a, --text sama, kui --binary-files=text\n"
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+" -I sama, kui --binary-files=without-match\n"
+" -d, --directories=TEGEVUS kuidas käsitleda katalooge;\n"
+" TEGEVUS on 'read', 'recurse' või 'skip'\n"
+" -D, --devices=TEGEVUS kuidas käsitleda seadmeid, FIFOsid ja "
+"pistikuid;\n"
+" TEGEVUS on 'read' või 'skip'\n"
+" -r, --recursive sama, kui --directories=recurse\n"
+" -R sama, aga järgib kõiki nimeviiteid\n"
+
+#: src/grep.c:2023
+#, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+" --include=FAILI_MUSTER otsi alinult mustrile vastavaid faile\n"
+" --exclude=FAILI_MUSTER välista mustrile vastavad failid\n"
+" --exclude-from=FAIL välista failid vastavalt failist loetud "
+"mustrile\n"
+" --exclude-dir=MUSTER välista mustrile vastavad kataloogid.\n"
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+" -L, --files-without-match väljasta ainult failide nimed, mis ei sobinud\n"
+" -l, --files-with-matches väljasta ainult leitud failide nimed\n"
+" -c, --count väljasta ainult leitud ridade arv faili kohta\n"
+" -T, --initial-tab kasuta vajadusel ridade joondamisel "
+"tabulaatorit\n"
+" -Z, --null väljasta faili nime järel bait 0\n"
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+"\n"
+"Konteksti kontroll:\n"
+" -B, --before-context=NUM väljasta NUM rida eelnevat konteksti\n"
+" -A, --after-context=NUM väljasta NUM rida järgnevat konteksti\n"
+" -C, --context=NUM väljasta NUM rida väljundi konteksti\n"
+
+#: src/grep.c:2043
+#, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+" -NUM sama, kui --context=NUM\n"
+" --group-separator=ER väljasta ER kontekstiga leidude vahel\n"
+" --no-group-separator leidude eraldajat ei väljastata\n"
+" --color[=MILLAL],\n"
+" --colour[=MILLAL] kasuta otsitava sõne eristamiseks markereid\n"
+" MILLAL võib olla 'always', 'never' või 'auto'.\n"
+" -U, --binary ära eemalda rea lõpust CR sümboleid (MSDOS/"
+"WINDOWS)\n"
+"\n"
+
+#: src/grep.c:2052
+#, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"Kui fail on '-', loe standardsisendit. Kui faili ei antud ja kasutati võtit -"
+"r,\n"
+"loe '.', muidu '-'. Kui anti vähem kui kaks faili, eelda -h. \n"
+"Lõpetamise kood on 0, kui rida leiti, muidu 1;\n"
+"kui tekkis viga ja -q ei kasutatud, on lõpetamise kood 2.\n"
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "määrati konfliktsed otsijad"
+
+#: src/grep.c:2101
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr ""
+"Perl regulaaravaldisi ei toetata --disable-perl-regexp kompileerimise võtmega"
+
+#: src/grep.c:2103
+#, c-format
+msgid "invalid matcher %s"
+msgstr "vigane sobitaja %s"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "tundmatu seadmete meetod"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr "hoiatus: --unix-byte-offsets (-u) on aegunud"
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "vigane maksimum"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "tundmatu kahendfailide tüüp"
+
+#: src/grep.c:2829
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+"Kirjutanud Mike Haertel ja teised; vaadake\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr "PCRE JIT magasini jaoks ei jätku mälu"
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr "-P toetab ainult ühebaidilisi ja UTF-8 lokaate"
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr "võti -P toetab ainult ühte mustrit"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr "sisemine viga (ei peaks kunagi juhtuma)"
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr "PCRE rea pikkuse piirang on ületatud"
+
+#: src/pcresearch.c:306
+#, c-format
+msgid "%s: memory exhausted"
+msgstr "%s: mälu on otsas"
+
+#: src/pcresearch.c:310
+#, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr "%s: PCRE JIT pinu sai täis"
+
+#: src/pcresearch.c:315
+#, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr "%s: PCRE tagasivaate piirang on ületatud"
+
+#: src/pcresearch.c:319
+#, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr "%s: PCRE rekursiooni piirang on ületatud"
+
+#: src/pcresearch.c:327
+#, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr "%s: sisemine PCRE viga: %d"
diff --git a/src/grep/po/eu.gmo b/src/grep/po/eu.gmo
new file mode 100644
index 0000000..47fffd6
--- /dev/null
+++ b/src/grep/po/eu.gmo
Binary files differ
diff --git a/src/grep/po/eu.po b/src/grep/po/eu.po
new file mode 100644
index 0000000..dd15a8a
--- /dev/null
+++ b/src/grep/po/eu.po
@@ -0,0 +1,831 @@
+# Basque translation of grep.
+# Copyright (C) 2004 Free Software Foundation, Inc.
+# Mikel Olasagasti <hey_neken@mundurat.net>, 2004, 2005.
+# , fuzzy
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: grep 2.5.1a\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2005-03-03 21:40+0100\n"
+"Last-Translator: Mikel Olasagasti <hey_neken@mundurat.net>\n"
+"Language-Team: Basque <translation-team-eu@lists.sourceforge.net>\n"
+"Language: eu\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"Plural-Forms: nplurals=2; plural=(n == 1)\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr ""
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr ""
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr ""
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr ""
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr ""
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr ""
+
+#: lib/dfa.c:896
+#, fuzzy
+msgid "unbalanced ["
+msgstr "Parekatu gabeko ["
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr ""
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr ""
+
+#: lib/dfa.c:1210
+#, fuzzy
+msgid "unfinished \\ escape"
+msgstr "Amaitu gabeko \\ eskapea"
+
+#: lib/dfa.c:1371
+#, fuzzy
+msgid "invalid content of \\{\\}"
+msgstr "baliogabeko gehienezko zenbaketa"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr ""
+
+#: lib/dfa.c:1858
+#, fuzzy
+msgid "unbalanced ("
+msgstr "Parekatu gabeko ("
+
+#: lib/dfa.c:1975
+#, fuzzy
+msgid "no syntax specified"
+msgstr "Ez da sintaxirik zehaztu"
+
+#: lib/dfa.c:1986
+#, fuzzy
+msgid "unbalanced )"
+msgstr "Parekatu gabeko )"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "Sistemaren errore ezezaguna"
+
+#: lib/getopt.c:278
+#, fuzzy, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: `%s' aukera anbiguoa da\n"
+
+#: lib/getopt.c:284
+#, fuzzy, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: `%s' aukera anbiguoa da\n"
+
+#: lib/getopt.c:319
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: aukera ezezaguna `%c%s'\n"
+
+#: lib/getopt.c:345
+#, fuzzy, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: `%c%s' aukerak ez du argumenturik onartzen\n"
+
+#: lib/getopt.c:360
+#, fuzzy, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: `%s' aukerak argumentu bat behar du\n"
+
+#: lib/getopt.c:621
+#, fuzzy, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: balio gabeko aukera -- %c\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, fuzzy, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: aukerak argumentu bat behar du -- %c\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "memoria agortuta"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr ""
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr ""
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr ""
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "'"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr ""
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "Memoria agortuta"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr ""
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr ""
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr ""
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr ""
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, fuzzy, c-format
+msgid "Report bugs to: %s\n"
+msgstr ""
+"\n"
+"Programa-erroreen berri emateko idatzi hona <bug-grep@gnu.org>.\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr ""
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr ""
+
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr ""
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(sarrera estandarra)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "balio gabeko testuinguru luzeera argumentua"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "sarrera luzeegia da kontatzeko"
+
+#: src/grep.c:1641
+#, fuzzy, c-format
+msgid "%s: binary file matches"
+msgstr "%s fitxategi binarioa bat dator\n"
+
+#: src/grep.c:1679
+#, fuzzy, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "direktorio bukle errekurtsiboa"
+
+#: src/grep.c:1899
+#, c-format
+msgid "%s: input file is also the output"
+msgstr ""
+
+#: src/grep.c:1961 src/grep.c:1968
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "Erabilera: %s [AUKERA]... EREDUA [FITXATEGIA]...\n"
+
+#: src/grep.c:1963
+#, fuzzy, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "Saiatu `%s --help' informazio gehiagorako.\n"
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr ""
+
+#: src/grep.c:1970
+#, fuzzy, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"EREDUA bilatzen du FITXATEGI bakoitzean edo sarrera estandarrean.\n"
+"Adibidez: %s -i 'kaixo mundu' menu.h main.c\n"
+"\n"
+"Regexp aukera eta interpretazioa:\n"
+
+#: src/grep.c:1975
+#, fuzzy, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp EREDUA espresio erregular zabaldu bat da\n"
+" -F, --fixed-strings EREDUA lerro berri batekin banatutako kate "
+"multzo bat da\n"
+" -G, --basic-regexp EREDUA oinarrizko espresio erregular bat da\n"
+" -P, --perl-regexp EREDUA Perl espresio erregular bat da\n"
+
+#: src/grep.c:1981
+#, fuzzy, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=EREDUA erabili EREDUA espresio erregular bezala\n"
+" -f, --file=FITXATEGIA lortu EREDUA FITXATEGITIK\n"
+" -i, --ignore-case ez ezberdindu letra larri eta xeheak\n"
+" -w, --word-regexp behartu EREDUA hitz osoekin bakarrik bat "
+"etortzea\n"
+" -x, --line-regexp behartu EREDUA lerro osoekin bakarrik bat "
+"etortzea\n"
+" -z, --null-data datu lerroa 0 byte-arekin amaitzen da, eta ez "
+"lerro berriarekin\n"
+
+#: src/grep.c:1989
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"Hainbat:\n"
+" -s, --no-messages errore mezuak kentzen ditu\n"
+" -v, --invert-match bat ez datozen lerroak aukeratzen ditu\n"
+" -V, --version bertsioaren informazioa inprimatu eta irten\n"
+" --help laguntza hau erakutsi eta irten\n"
+" --mmap erabili asignatutako memoria sarrera posible "
+"bada\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+
+#: src/grep.c:2023
+#, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+
+#: src/grep.c:2043
+#, fuzzy, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+"\n"
+"Kontestu kontrola:\n"
+" -B, --before-context=KOPURUA inprimatu kontestuaren aurretiko lerro "
+"KOPURUA\n"
+" -A, --after-context=KOPURUA inprimatu kontestuaren ondorengo lerro "
+"KOPURUA\n"
+" -C, --context=KOPURUA inprimatu kontestuaren lerro KOPURUA\n"
+" -KOPURUA --context=KOPURUA bezala\n"
+" --color[=NOIZ],\n"
+" --colour[=NOIZ] erabili markak bat datozen kateak ezberdintzeko\n"
+" NOIZ `always', `never' edo `auto' izan daiteke.\n"
+" -U, --binary ez kendu CR karaktereak lerro bukaeran (MSDOS)\n"
+" -u, --unix-byte-offsets hartu kontutan offsetak CRak bertan egongo ez "
+"balira bezala (MSDOS)\n"
+"\n"
+"`egrep'-ek`grep -E' esan nahi du. `fgrep'-ek `grep -F' esan nahi du.\n"
+"Fitxategirik gabe, edo FITXATEGIA - denean, sarrera estandarra irakurtzen "
+"da. BI fitxategi\n"
+"baina gutxiago ematen badira, -h ulertzen da. Irteera egoera 0 da bat "
+"badator, 1 ez badator,\n"
+"eta 2 arazorik badago.\n"
+
+#: src/grep.c:2052
+#, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "espresio konfliktiboak espezifikatu dira"
+
+#: src/grep.c:2101
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr ""
+
+#: src/grep.c:2103
+#, fuzzy, c-format
+msgid "invalid matcher %s"
+msgstr "baliogabeko gehienezko zenbaketa"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "gailu metodo ezezaguna"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr ""
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "baliogabeko gehienezko zenbaketa"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "fitxategi-binario moeta ezezaguna"
+
+#: src/grep.c:2829
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr ""
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr ""
+
+#: src/pcresearch.c:143
+#, fuzzy
+msgid "the -P option only supports a single pattern"
+msgstr "-P aukerak ez du euskarririk"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr ""
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr ""
+
+#: src/pcresearch.c:306
+#, fuzzy, c-format
+msgid "%s: memory exhausted"
+msgstr "memoria agortuta"
+
+#: src/pcresearch.c:310
+#, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr ""
+
+#: src/pcresearch.c:315
+#, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr ""
+
+#: src/pcresearch.c:319
+#, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr ""
+
+#: src/pcresearch.c:327
+#, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr ""
+
+#, fuzzy, c-format
+#~ msgid "warning: %s: %s"
+#~ msgstr "abisua: %s: %s\n"
+
+#, fuzzy
+#~ msgid "%s: option '--%s' doesn't allow an argument\n"
+#~ msgstr "%s: `--%s' aukerak ez du argumenturik onartzen\n"
+
+#, fuzzy
+#~ msgid "%s: unrecognized option '--%s'\n"
+#~ msgstr "%s: aukera ezezaguna `--%s'\n"
+
+#, fuzzy
+#~ msgid "%s: option '-W %s' is ambiguous\n"
+#~ msgstr "%s: `-W %s' aukera ambiguoa da\n"
+
+#, fuzzy
+#~ msgid "%s: option '-W %s' doesn't allow an argument\n"
+#~ msgstr "%s: `-W %s' aukerak ez du argumenturik onartzen\n"
+
+#, fuzzy
+#~ msgid "%s: option '-W %s' requires an argument\n"
+#~ msgstr "%s: `%s' aukerak argumentu bat behar du\n"
+
+#~ msgid "unfinished repeat count"
+#~ msgstr "amaitu gabeko errepikapen zenbatzailea"
+
+#~ msgid "malformed repeat count"
+#~ msgstr "gaizki eratutako errepikapen zenbatzailea"
+
+#~ msgid "out of memory"
+#~ msgstr "memoriatik kanpo"
+
+#~ msgid "writing output"
+#~ msgstr "irteera idazten"
+
+#~ msgid "Usage: %s [OPTION]... PATTERN [FILE] ...\n"
+#~ msgstr "Erabilera: %s [AUKERA]... EREDUA [FITXATEGIA] ...\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Output control:\n"
+#~ " -m, --max-count=NUM stop after NUM matches\n"
+#~ " -b, --byte-offset print the byte offset with output lines\n"
+#~ " -n, --line-number print line number with output lines\n"
+#~ " --line-buffered flush output on every line\n"
+#~ " -H, --with-filename print the filename for each match\n"
+#~ " -h, --no-filename suppress the prefixing filename on output\n"
+#~ " --label=LABEL print LABEL as filename for standard input\n"
+#~ " -o, --only-matching show only the part of a line matching "
+#~ "PATTERN\n"
+#~ " -q, --quiet, --silent suppress all normal output\n"
+#~ " --binary-files=TYPE assume that binary files are TYPE\n"
+#~ " TYPE is 'binary', 'text', or 'without-match'\n"
+#~ " -a, --text equivalent to --binary-files=text\n"
+#~ " -I equivalent to --binary-files=without-match\n"
+#~ " -d, --directories=ACTION how to handle directories\n"
+#~ " ACTION is 'read', 'recurse', or 'skip'\n"
+#~ " -D, --devices=ACTION how to handle devices, FIFOs and sockets\n"
+#~ " ACTION is 'read' or 'skip'\n"
+#~ " -R, -r, --recursive equivalent to --directories=recurse\n"
+#~ " --include=PATTERN files that match PATTERN will be examined\n"
+#~ " --exclude=PATTERN files that match PATTERN will be skipped.\n"
+#~ " --exclude-from=FILE files that match PATTERN in FILE will be "
+#~ "skipped.\n"
+#~ " -L, --files-without-match only print FILE names containing no match\n"
+#~ " -l, --files-with-matches only print FILE names containing matches\n"
+#~ " -c, --count only print a count of matching lines per "
+#~ "FILE\n"
+#~ " -Z, --null print 0 byte after FILE name\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Irteera kontrola:\n"
+#~ " -m, --max-count=KOPURUA gelditu KOPURUA bilatzean\n"
+#~ " -b, --byte-offset inprimatu offset byte-a lerro irteerekin\n"
+#~ " -n, --line-number inprimatu lerro zenbakia lerro irteerekin\n"
+#~ " --line-buffered irauli irteera lerro bakoitzean\n"
+#~ " -H, --with-filename inprimatu fitxategi-izena bat datorren "
+#~ "aurkiketa bakoitzean\n"
+#~ " -h, --no-filename fitxategi-izena kendu irteeran\n"
+#~ " --label=ETIKETA inprimatu ETIKETA fitxategi-izen bezala "
+#~ "sarrera estandarrean\n"
+#~ " -o, --only-matching erakutsi EREDUAREKIN bat datorren lerroaren "
+#~ "zatia bakarrik\n"
+#~ " -q, --quiet, --silent kendu irteera normal guztiak\n"
+#~ " --binary-files=MOETA fitxategi binarioak MOETA bezala direlakoan "
+#~ "hartu\n"
+#~ " MOETA 'binary', 'text', edo 'without-match' "
+#~ "izan daiteke\n"
+#~ " -a, --text --binary-files=text bezala\n"
+#~ " -I --binary-files=without-match bezala\n"
+#~ " -d, --directories=EKINTZA nola erabili direktorioak\n"
+#~ " EKINTZA 'read', 'recurse', edo 'skip' izan "
+#~ "daiteke\n"
+#~ " -D, --devices=EKINTZA nola erabili gailuak, FIFO eta socketak\n"
+#~ " EKINTZA 'read' edo 'skip' izan daiteke\n"
+#~ " -R, -r, --recursive --directories=recurse bezala\n"
+#~ " --include=EREDUA EREDUAREKIN bat datozen fitxategiak aztertu\n"
+#~ " --exclude=EREDUA EREDUAREKIN bat datozen fitxategiak utzi.\n"
+#~ " --exclude-from=FITXATEGIA EREDUA betetzen duten fitxategiak "
+#~ "FITXATEGIAN utzi.\n"
+#~ " -L, --files-without-match inprimatu bateraketarik ez duten FITXATEGIAK "
+#~ "bakarrik\n"
+#~ " -l, --files-with-matches inprimatu bateraketaren bat duten FITXATEGIAK "
+#~ "bakarrik\n"
+#~ " -c, --count inprimatu bateraketa kopurua FITXATEGI "
+#~ "bakoitzeko bakarrik\n"
+#~ " -Z, --null inprimatu 0 byte-a FITXATEGIAREN izenaren "
+#~ "ondoren\n"
+
+#~ msgid "unknown directories method"
+#~ msgstr "direktorio metodo ezezaguna"
+
+#~ msgid "%s (GNU grep) %s\n"
+#~ msgstr "%s (GNU grep) %s\n"
+
+#~ msgid ""
+#~ "Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc.\n"
+#~ msgstr ""
+#~ "Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc.\n"
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "Software librea da, ikusi programa-kodea kopiatzeko baldintzentzat. EZ "
+#~ "dago inolako bermerik;\n"
+#~ "ez KOMERTZIO ez ASMO ZEHATZ BATEN EGOKITASUNERAKO.\n"
+
+#~ msgid "The -P and -z options cannot be combined"
+#~ msgstr "-P eta -z aukerak ezin dira konbinatu"
+
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: ezinezko aukera -- %c\n"
diff --git a/src/grep/po/fi.gmo b/src/grep/po/fi.gmo
new file mode 100644
index 0000000..5b8a791
--- /dev/null
+++ b/src/grep/po/fi.gmo
Binary files differ
diff --git a/src/grep/po/fi.po b/src/grep/po/fi.po
new file mode 100644
index 0000000..3dc535d
--- /dev/null
+++ b/src/grep/po/fi.po
@@ -0,0 +1,982 @@
+# Finnish translation for GNU grep.
+# Copyright © 2002, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2018 Free Software Foundation, Inc.
+# This file is distributed under the same license as the grep package.
+# Sami J. Laine <sami.laine@iki.fi>, 2002.
+# Jorma Karvonen <karvonen.jorma@gmail.com>, 2007-2016, 2018.
+# Lauri Nurmi <lanurmi@iki.fi>, 2019-2021.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: grep 3.6.27\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2021-08-09 10:37+0300\n"
+"Last-Translator: Lauri Nurmi <lanurmi@iki.fi>\n"
+"Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
+"Language: fi\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 3.0\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "virheellinen argumentti %s kohteelle %s"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "monimerkityksellinen argumentti %s kohteelle %s"
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr "Kelvolliset argumentit ovat:"
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr "ohjelmavirhe"
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr "pinon ylivuoto"
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr "kirjoitusvirhe"
+
+#: lib/dfa.c:896
+msgid "unbalanced ["
+msgstr "pariton ["
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr "virheellinen merkkiluokka"
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr "merkkiluokkasyntaksi on [[:space:]], ei [:space:]"
+
+#: lib/dfa.c:1210
+msgid "unfinished \\ escape"
+msgstr "keskeneräinen \\-ohjaussarja"
+
+#: lib/dfa.c:1371
+msgid "invalid content of \\{\\}"
+msgstr "virheellinen \\{\\}:n sisältö"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr "säännöllinen lauseke on liian suuri"
+
+#: lib/dfa.c:1858
+msgid "unbalanced ("
+msgstr "pariton ("
+
+#: lib/dfa.c:1975
+msgid "no syntax specified"
+msgstr "syntaksia ei ole määritelty"
+
+#: lib/dfa.c:1986
+msgid "unbalanced )"
+msgstr "pariton )"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "Tuntematon järjestelmävirhe"
+
+#: lib/getopt.c:278
+#, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: valitsin ”%s%s” on moniselitteinen\n"
+
+#: lib/getopt.c:284
+#, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: valitsin ”%s%s” on moniselitteinen; vaihtoehdot:"
+
+#: lib/getopt.c:319
+#, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: tunnistamaton valitsin ”%s%s”\n"
+
+#: lib/getopt.c:345
+#, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: valitsin ”%s%s” ei salli argumenttia\n"
+
+#: lib/getopt.c:360
+#, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: valitsin ”%s%s” vaatii argumentin\n"
+
+#: lib/getopt.c:621
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: virheellinen valitsin -- ”%c”\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: valitsin vaatii argumentin -- ”%c”\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "muisti loppui"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr "nykyisen työhakemiston kirjaaminen ei onnistu"
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "palaaminen alkuperäiseen työhakemistoon epäonnistui"
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr "tiedostokahvan teksti-/binääritilan asettaminen epäonnistui"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "”"
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "”"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr "Onnistui"
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr "Ei täsmäävyyttä"
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr "Virheellinen säännöllinen lauseke"
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr "Virheellinen vertailumerkki"
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr "Virheellinen merkkiluokan nimi"
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr "Kenoviiva lopussa"
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr "Virheellinen takaisinviittaus"
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr "Pariton [, [^, [:, [. tai [="
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr "Pariton ( tai \\("
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr "Pariton \\{"
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr "Virheellinen \\{\\}:n sisältö"
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr "Virheellinen välin loppu"
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "Muisti loppui"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr "Virheellinen edeltävä säännöllinen lauseke"
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr "Ennenaikainen säännöllisen lausekkeen loppu"
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr "Säännöllinen lauseke on liian suuri"
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr "Pariton ) tai \\)"
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr "Ei edeltävää säännöllistä lauseketta"
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Paketoinut %s (%s)\n"
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Paketoinut %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr "©"
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Lisenssi GPLv3+: GNU GPL versio 3 tai myöhäisempi <%s>.\n"
+"Tämä on vapaa ohjelma: voit vapaasti muuttaa ja jakaa sitä edelleen.\n"
+"Ohjelmalla EI OLE TAKUUTA siinä laajuudessa kuin laki sen sallii.\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Kirjoittanut %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Kirjoittaneet %s ja %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Kirjoittaneet %s, %s ja %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Kirjoittaneet %s, %s,\n"
+"%s ja %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Kirjoittaneet %s, %s, %s,\n"
+"%s ja %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Kirjoittaneet %s, %s, %s,\n"
+"%s, %s ja %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Kirjoittaneet %s, %s, %s,\n"
+"%s, %s, %s ja %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Kirjoittaneet %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s ja %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Kirjoittaneet %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s ja %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Kirjoittaneet %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, %s ja muut.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr "Ilmoita ohjelmistovioista (englanniksi) osoitteeseen: %s\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "Ilmoita %s ohjelmistovioista (englanniksi) osoitteeseen %s\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s -kotisivu: <%s>\n"
+
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr "Yleisohjeita GNU-ohjelmistojen käyttöön: <%s>\n"
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(vakiosyöte)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "virheellinen kontekstin pituusargumentti"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "syöte on liian suuri laskettavaksi"
+
+#: src/grep.c:1641
+#, c-format
+msgid "%s: binary file matches"
+msgstr "%s: binääritiedosto täsmää"
+
+#: src/grep.c:1679
+#, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "%s: varoitus: rekursiivinen hakemistosilmukka"
+
+#: src/grep.c:1899
+#, c-format
+msgid "%s: input file is also the output"
+msgstr "%s: syötetiedosto on myös tuotostiedosto"
+
+#: src/grep.c:1961 src/grep.c:1968
+#, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "Käyttö: %s [VALITSIN]... HAHMOT [TIEDOSTO]...\n"
+
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "Komento ”%s --help” antaa lisää tietoa.\n"
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr "Hae HAHMOja kustakin TIEDOSTOsta.\n"
+
+#: src/grep.c:1970
+#, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"Esimerkki: %s -i 'hei maailma' menu.h main.c\n"
+"HAHMOT voivat sisältää useita rivinvaihdoin\n"
+"eroteltuja hahmoja.\n"
+"\n"
+"Hahmojen valinta ja tulkinta:\n"
+
+#: src/grep.c:1975
+#, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp HAHMOT ovat laajennettuja säännöllisiä\n"
+" lausekkeita\n"
+" -F, --fixed-strings HAHMOT ovat merkkijonoja\n"
+" -G, --basic-regexp HAHMOT ovat tavallisia säännöllisiä\n"
+" lausekkeita (oletus)\n"
+" -P, --perl-regexp HAHMOT ovat Perl-tyyppisiä säännöllisiä\n"
+" lausekkeita\n"
+
+#: src/grep.c:1981
+#, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=HAHMOT käytä HAHMOja täsmäämiseen\n"
+" -f, --file=TIEDOSTO ota HAHMOT TIEDOSTOsta\n"
+" -i, --ignore-case älä erottele pieniä ja suuria kirjaimia\n"
+" hahmoissa eikä datassa\n"
+" -w, --word-regexp täsmää vain kokonaisiin sanoihin\n"
+" -x, --line-regexp täsmää vain kokonaisiin riveihin\n"
+" -z, --null-data datarivi päättyy 0-tavuun, ei rivinvaihtoon\n"
+
+#: src/grep.c:1989
+#, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"Sekalaista:\n"
+" -s, --no-messages vaienna virheilmoitukset\n"
+" -v, --invert-match valitse täsmäämättömät rivit\n"
+" -V, --version näytä versiotiedot ja poistu\n"
+" --help näytä tämä ohje ja poistu\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+"\n"
+"Tulostehallinta:\n"
+" -m, --max-count=MÄÄRÄ pysäytä MÄÄRÄn täsmäävän rivin jälkeen\n"
+" -b, --byte-offset tulosta tavusiirros tulosteriveille\n"
+" -n, --line-number tulosta rivinumero tulosteriveille\n"
+" --line-buffered huuhtele tuloste joka rivillä\n"
+" -H, --with-filename tulosta tiedostonimi tulosteriveille\n"
+" -h, --no-filename vaienna tiedostonimet tulosteesta\n"
+" --label=NIMIÖ tulosta NIMIÖ tiedostonimenä vakiosyötteelle\n"
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+" -o, --only-matching näytä vain täsmäävien rivien epätyhjät osat\n"
+" -q, --quiet, --silent vaienna kaikki normaali tuloste\n"
+" --binary-files=TYYPPI otaksu, että binääritiedostot ovat TYYPPIä;\n"
+" TYYPPI on ”binary”, ”text”, tai ”without-match”\n"
+" -a, --text sama kuin --binary-files=text\n"
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+" -I sama kuin --binary-files=without-match\n"
+" -d, --directories=TEKO kuinka käsitellä hakemistoja;\n"
+" TEKO on ”read”, ”recurse”, tai ”skip”\n"
+" -D, --devices=TEKO kuinka käsitellä laitteita, FIFOja ja "
+"pistokkeita;\n"
+" TEKO on ”read” tai ”skip”\n"
+" -r, --recursive sama kuin --directories=recurse\n"
+" -R, --dereference-recursive samoin, mutta seuraa kaikkia symlinkkejä\n"
+
+#: src/grep.c:2023
+#, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+" --include=GLOB etsi vain GLOBiin (tiedostohahmo) täsmäävistä\n"
+" tiedostoista\n"
+" --exclude=GLOB ohita GLOBiin täsmäävät tiedostot ja hakemistot\n"
+" --exclude-from=TIED ohita mihin tahansa TIEDoston tiedostohahmoon\n"
+" täsmäävät tiedostot\n"
+" --exclude-dir=GLOB ohita GLOBiin täsmäävät hakemistot\n"
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+" -L, --files-without-match tulosta vain TIEDOSTOjen nimet, joissa ei yhtään "
+"valittua riviä\n"
+" -l, --files-with-matches tulosta vain TIEDOSTOjen nimet, joissa on "
+"valittuja rivejä\n"
+" -c, --count tulosta vain valittujen rivien lukumäärä "
+"TIEDOSTOa kohden\n"
+" -T, --initial-tab kohdista sarkaimet (jos tarpeellista)\n"
+" -Z, --null tulosta 0-tavu TIEDOSTOnimen jälkeen\n"
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+"\n"
+"Kontekstin hallinta:\n"
+" -B, --before-context=N tulosta N riviä edeltävää konteksia\n"
+" -A, --after-context=N tulosta N riviä seuraavaa kontekstia\n"
+" -C, --context=N tulosta N riviä tulostekonteksia\n"
+
+#: src/grep.c:2043
+#, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+" -MÄÄRÄ sama kuin --context=MÄÄRÄ\n"
+" --group-separator=EROT tulosta EROTin kontekstillisten täsmäävyyksien\n"
+" välisille riveille\n"
+" --no-group-separator älä tulosta erotinta kontekstillisille\n"
+" täsmäävyyksille\n"
+" --color[=KUN],\n"
+" --colour[=KUN] korosta täsmäävyydet väreillä;\n"
+" KUN voi olla ”always” (aina), ”never”\n"
+" (ei koskaan) tai ”auto”.\n"
+" -U, --binary jätä CR-merkit rivien loppuun (MSDOS/Windows)\n"
+"\n"
+
+#: src/grep.c:2052
+#, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"Kun TIEDOSTO on ”-”, lue vakiosyötettä. Ilman TIEDOSTOa lue ”.” jos\n"
+"haetaan rekursiivisesti, muuten ”-” . Jos alle kaksi TIEDOSTOa\n"
+"on annettu, oleta valitsin -h.\n"
+"Paluuarvo on 0, jos mikä tahansa rivi valitaan, muuten 1; jos\n"
+"tapahtuu mikä tahansa virhe ja -q on antamatta, paluuarvo on 2.\n"
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "määritelty ristiriitaiset täsmäimet"
+
+#: src/grep.c:2101
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr ""
+"Perl-täsmäystä ei tueta --disable-perl-regexp -valitsimellisessa käännöksessä"
+
+#: src/grep.c:2103
+#, c-format
+msgid "invalid matcher %s"
+msgstr "virheellinen täsmäin %s"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "tuntematon laitteiden käsittelytapa"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr "varoitus: --unix-byte-offsets (-u) on vanhentunut"
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "virheellinen enimmäismäärä"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "tuntematon binääritiedostojen tyyppi"
+
+#: src/grep.c:2829
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+"Kirjoittaneet Mike Haertel ja muut; ks.\n"
+"<http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr "muistin varaaminen PCRE JIT -pinolle epäonnistui"
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr "-P tukee vain yksitavu- ja UTF-8-maa-asetustoja"
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr "valitsin -P tukee vain yhtä hahmoa"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr "sisäinen virhe (ei pitäisi koskaan tapahtua)"
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr "ylitettiin PCRE:n rivipituusraja"
+
+#: src/pcresearch.c:306
+#, c-format
+msgid "%s: memory exhausted"
+msgstr "%s: muisti loppui"
+
+#: src/pcresearch.c:310
+#, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr "%s: PCRE JIT -pino täyttyi"
+
+#: src/pcresearch.c:315
+#, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr "%s: ylitettiin PCRE:n paluujäljitysraja"
+
+#: src/pcresearch.c:319
+#, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr "%s: ylitettiin PCRE:n rekursioraja"
+
+#: src/pcresearch.c:327
+#, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr "%s: sisäinen PCRE-virhe: %d"
+
+#~ msgid "warning: GREP_OPTIONS is deprecated; please use an alias or script"
+#~ msgstr "varoitus: GREP_OPTIONS on vanhentunut; käytä aliasta tai skriptiä"
+
+#~ msgid "warning: %s: %s"
+#~ msgstr "varoitus: %s: %s"
+
+#~ msgid "Binary file %s matches\n"
+#~ msgstr "Binääritiedosto %s täsmää\n"
+
+#~ msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
+#~ msgstr "%s kotisivu: <http://www.gnu.org/software/%s/>\n"
+
+# Ensimmäinen parametri on valitsimen väliviivat, toinen valitsin, kolmas argumentti
+#~ msgid "invalid %s%s argument '%s'"
+#~ msgstr "virheellinen valitsimen %s%s argumentti ’%s’"
+
+# Ensimmäinen parametri on valitsimen väliviivat, toinen valitsin ja kolmas sen argumentti
+#~ msgid "invalid suffix in %s%s argument '%s'"
+#~ msgstr "virheellinen loppuliite valitsimen %s%s argumentissa ’%s’"
+
+# Ensimmäinen parametri on valitsimen väliviivat, toinen valitsin ja kolmas sen argumentti
+#~ msgid "%s%s argument '%s' too large"
+#~ msgstr "valitsimen %s%s argumentti ’%s’ on liian iso"
+
+#~ msgid "Mike Haertel"
+#~ msgstr "Mike Haertel"
+
+#~ msgid "internal error"
+#~ msgstr "sisäinen virhe"
+
+#~ msgid "%s: option '--%s' doesn't allow an argument\n"
+#~ msgstr "%s: valitsin ’--%s’ ei salli argumenttia\n"
+
+#~ msgid "%s: unrecognized option '--%s'\n"
+#~ msgstr "%s: tuntematon valitsin ’--%s’\n"
+
+#~ msgid "%s: option '-W %s' is ambiguous\n"
+#~ msgstr "%s: valitsin ’-W %s’ ei ole yksiselitteinen\n"
+
+#~ msgid "%s: option '-W %s' doesn't allow an argument\n"
+#~ msgstr "%s: valitsin ’-W %s’ ei salli argumenttia\n"
+
+#~ msgid "%s: option '-W %s' requires an argument\n"
+#~ msgstr "%s: valitsin ’-W %s’ tarvitsee argumentin\n"
+
+#~ msgid "PATTERN is, by default, a basic regular expression (BRE).\n"
+#~ msgstr "HAKULAUSEKE on oletuksena perussäännöllinen lauseke (BRE).\n"
+
+#~ msgid ""
+#~ "'egrep' means 'grep -E'. 'fgrep' means 'grep -F'.\n"
+#~ "Direct invocation as either 'egrep' or 'fgrep' is deprecated.\n"
+#~ msgstr ""
+#~ "Käsky ’egrep’ tarkoittaa ’grep -E’. Käsky ’fgrep’ tarkoittaa ’grep -F’.\n"
+#~ "Suora kutsuminen ’egrep’- ja ’fgrep’-käskyillä ei ole enää "
+#~ "suositeltavaa.\n"
+
+#~ msgid "lseek failed"
+#~ msgstr "lseek epäonnistui"
+
+#~ msgid "GNU Grep home page: <%s>\n"
+#~ msgstr "GNU Grep-kotisivu: <%s>\n"
+
+#~ msgid "invalid UTF-8 byte sequence in input"
+#~ msgstr "virheellinen UTF-8-tavusekvenssi syötteessä"
+
+#~ msgid "PATTERN is an extended regular expression (ERE).\n"
+#~ msgstr "HAKULAUSEKE on laajennettu säännöllinen lauseke (ERE).\n"
+
+#~ msgid "Invocation as 'egrep' is deprecated; use 'grep -E' instead.\n"
+#~ msgstr ""
+#~ "Kutsuminen ’egrep’ käskyllä ei ole enää suositeltavaa, käytä sen sijaan "
+#~ "käskyä ’grep -E’.\n"
+
+#~ msgid "PATTERN is a set of newline-separated fixed strings.\n"
+#~ msgstr "HAKULAUSEKE on rivinvaihdolla eroteltu kiinteä merkkijonojoukko.\n"
+
+#~ msgid "Invocation as 'fgrep' is deprecated; use 'grep -F' instead.\n"
+#~ msgstr ""
+#~ "Kutsuminen ’fgrep’ käskyllä ei ole enää suositeltavaa, käytä sen sijaan "
+#~ "käskyä ’grep -F’.\n"
+
+#~ msgid "%s can only use the %s pattern syntax"
+#~ msgstr "%s voi käyttää vain %s hakulausekesyntaksia"
+
+#~ msgid "the --mmap option has been a no-op since 2010"
+#~ msgstr "valitsin --mmap ei ole toiminut vuoden 2010 jälkeen"
+
+#~ msgid "unfinished repeat count"
+#~ msgstr "päättymätön toistomäärä"
+
+#~ msgid "malformed repeat count"
+#~ msgstr "virheellinen toistomäärä"
+
+# Tämä liittyy virheilmoitukseen, jossa alussa on ilmeisesti virhenumero
+#~ msgid "writing output"
+#~ msgstr "kirjoitettaessa tulostetta"
+
+#~ msgid ""
+#~ "in GREP_COLORS=\"%s\", the \"%s\" capacity needs a value (\"=...\"); "
+#~ "skipped"
+#~ msgstr ""
+#~ "kohteessa GREP_COLORS=”%s”, ”%s”-kapasiteetti tarvitsee arvon (”=...”); "
+#~ "jätettiin väliin"
+
+#~ msgid ""
+#~ "in GREP_COLORS=\"%s\", the \"%s\" capacity is boolean and cannot take a "
+#~ "value (\"=%s\"); skipped"
+#~ msgstr ""
+#~ "kohteessa GREP_COLORS=”%s”, ”%s”-kapasiteetti on boolean-tyyppinen ja se "
+#~ "ei voi saada arvoa (”=%s”); jätettiin väliin"
+
+#~ msgid "in GREP_COLORS=\"%s\", the \"%s\" capacity %s"
+#~ msgstr "kohteessa GREP_COLORS=”%s”, ”%s”-kapasiteetti %s"
+
+#~ msgid ""
+#~ "stopped processing of ill-formed GREP_COLORS=\"%s\" at remaining "
+#~ "substring \"%s\""
+#~ msgstr ""
+#~ "pysäytettiin vääränmuotoisen kohteen GREP_COLORS=”%s” prosessointi "
+#~ "jäljelle jäävässä osamerkkijonossa ”%s”"
+
+#~ msgid "unknown directories method"
+#~ msgstr "tuntematon hakemistometodi"
+
+#~ msgid ""
+#~ "\n"
+#~ "Output control:\n"
+#~ " -m, --max-count=NUM stop after NUM matches\n"
+#~ " -b, --byte-offset print the byte offset with output lines\n"
+#~ " -n, --line-number print line number with output lines\n"
+#~ " --line-buffered flush output on every line\n"
+#~ " -H, --with-filename print the filename for each match\n"
+#~ " -h, --no-filename suppress the prefixing filename on output\n"
+#~ " --label=LABEL print LABEL as filename for standard input\n"
+#~ " -o, --only-matching show only the part of a line matching "
+#~ "PATTERN\n"
+#~ " -q, --quiet, --silent suppress all normal output\n"
+#~ " --binary-files=TYPE assume that binary files are TYPE;\n"
+#~ " TYPE is `binary', `text', or `without-match'\n"
+#~ " -a, --text equivalent to --binary-files=text\n"
+#~ " -I equivalent to --binary-files=without-match\n"
+#~ " -d, --directories=ACTION how to handle directories;\n"
+#~ " ACTION is `read', `recurse', or `skip'\n"
+#~ " -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+#~ " ACTION is `read' or `skip'\n"
+#~ " -R, -r, --recursive equivalent to --directories=recurse\n"
+#~ " --include=FILE_PATTERN search only files that match FILE_PATTERN\n"
+#~ " --exclude=FILE_PATTERN skip files and directories matching "
+#~ "FILE_PATTERN\n"
+#~ " --exclude-from=FILE skip files matching any file pattern from "
+#~ "FILE\n"
+#~ " --exclude-dir=PATTERN directories that match PATTERN will be "
+#~ "skipped.\n"
+#~ " -L, --files-without-match print only names of FILEs containing no "
+#~ "match\n"
+#~ " -l, --files-with-matches print only names of FILEs containing matches\n"
+#~ " -c, --count print only a count of matching lines per "
+#~ "FILE\n"
+#~ " -T, --initial-tab make tabs line up (if needed)\n"
+#~ " -Z, --null print 0 byte after FILE name\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Tulosteen hallinta:\n"
+#~ " -m, --max-count=N lopeta kun N täsmäystä on löytynyt\n"
+#~ " -b, --byte-offset tulosta tavuosoite tulosteriveille\n"
+#~ " -n, --line-number tulosta rivinumero tulosteriveille\n"
+#~ " --line-buffered tyhjennä puskuri jokaisella tulosterivillä\n"
+#~ " -H, --with-filename tulosta tiedostonimi jokaiselle täsmäykselle\n"
+#~ " -h, --no-filename vaienna tiedostonimen tulostaminen\n"
+#~ " --label=OTSIKKO tulosta OTSIKKO tiedostonimenä luettaessa\n"
+#~ " vakiosyöttettä\n"
+#~ " -o, --only-matching näytä vain HAKULAUSEKE-täsmäävä osa rivistä\n"
+#~ " -q, --quiet, --silent vaienna kaikki normaalit tulosteet\n"
+#~ " --binary-files=TYYPPI oleta binääristen tiedostojen olevan TYYPPIä\n"
+#~ " TYYPPI on ”binary” (binääri), "
+#~ "”text” (teksti), tai\n"
+#~ " ”without-match” (täsmäämätön)\n"
+#~ " -a, --text sama kuin --binary-files=”text” (teksti)\n"
+#~ " -I sama kuin --binary-files=”without-"
+#~ "match” (täsmäämätön)\n"
+#~ " -d, --directories=TOIMI hakemistojen käsittelytapa\n"
+#~ " TOIMI on ”read” (lue), ”recurse” (itseensä "
+#~ "palautuva),\n"
+#~ " tai ”skip” (jätä väliin)\n"
+#~ " -D, --devices=TOIMI laitetiedostojen, FIFOjen ja pistokkeiden "
+#~ "käsittely\n"
+#~ " TOIMI on ”read” (lue) tai ”skip” (jätä "
+#~ "väliin)\n"
+#~ " -R, -r, --recursive sama kuin --directories=recurse\n"
+#~ " --include=TIEDOSTOKAAVA TIEDOSTOKAAVA-täsmäävät tiedostot "
+#~ "tutkitaan\n"
+#~ " --exclude=TIEDOSTOKAAVA TIEDOSTOKAAVA-täsmäävät tiedostot jätetään "
+#~ "tutkimatta\n"
+#~ " --exclude-from=TIEDOSTO TIEDOSTOKAAVA-täsmäävät tiedostot, joiden "
+#~ "nimet\n"
+#~ " luetaan TIEDOSTOsta, jätetään tutkimatta\n"
+#~ " -L, --files-without-match tulosta vain TIEDOSTOt, joista ei löydy "
+#~ "täsmäystä\n"
+#~ " -l, --files-with-matches tulosta vain TIEDOSTOt, joista löytyy "
+#~ "täsmäys\n"
+#~ " -c, --count tulosta vain täsmäysten määrä TIEDOSTOlle\n"
+#~ " -T, --initial-tab tee sarkaimet riveittäin (jos tarvitaan)\n"
+#~ " -Z, --null tulosta nollatavu TIEDOSTO-nimen jälkeen\n"
+
+#~ msgid "The -P and -z options cannot be combined"
+#~ msgstr "Valitsimia ”-P” ja ”-z” ei voida käyttää samanaikaisesti"
+
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: epäkelpo valitsin -- %c\n"
+
+#~ msgid "Copyright (C) 2010 Free Software Foundation, Inc.\n"
+#~ msgstr "Copyright © 2010 Free Software Foundation, Inc.\n"
+
+#~ msgid "`egrep' means `grep -E'. `fgrep' means `grep -F'.\n"
+#~ msgstr "”egrep” tarkoittaa ”grep -E”. ”fgrep” tarkoittaa ”grep -F”.\n"
+
+#~ msgid "Direct invocation as either `egrep' or `fgrep' is deprecated.\n"
+#~ msgstr ""
+#~ "Suora kutsuminen joko komennolla ”egrep” tai ”fgrep” on vanhentunut.\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Miscellaneous:\n"
+#~ " -s, --no-messages suppress error messages\n"
+#~ " -v, --invert-match select non-matching lines\n"
+#~ " -V, --version print version information and exit\n"
+#~ " --help display this help and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Sekalaista:\n"
+#~ " -s, --no-messages vaienna virheilmoitukset\n"
+#~ " -v, --invert-match valitse hakuun täsmäämättömät rivit\n"
+#~ " -V, --version tulosta versiotiedot ja poistu\n"
+#~ " --help tulosta tämä ohje ja poistu\n"
+#~ "\n"
diff --git a/src/grep/po/fr.gmo b/src/grep/po/fr.gmo
new file mode 100644
index 0000000..f56b1e3
--- /dev/null
+++ b/src/grep/po/fr.gmo
Binary files differ
diff --git a/src/grep/po/fr.po b/src/grep/po/fr.po
new file mode 100644
index 0000000..4d79e49
--- /dev/null
+++ b/src/grep/po/fr.po
@@ -0,0 +1,781 @@
+# Messages français pour GNU concernant grep.
+# Copyright © 2002, 2005, 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc.
+# This file is distributed under the same license as the grep package.
+#
+# Michel Robitaille <robitail@IRO.UMontreal.CA>, 2002, 2005.
+# Nicolas Provost <nprovost@quadriv.com>, 2009, 2010.
+# Jean-Christophe Helary <jean.christophe.helary@gmail.com>, 2011.
+# David Prévot <david@tilapin.org>, 2012-2014.
+# Stéphane Aulery <lkppo@free.fr>, 2016, 2017, 2019, 2020.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU grep 3.5.16\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2020-12-15 20:56+0100\n"
+"Last-Translator: Stéphane Aulery <lkppo@free.fr>\n"
+"Language-Team: French <traduc@traduc.org>\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Poedit 2.4.2\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "argument %s incorrect pour %s"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "argument %s ambigu pour %s"
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr "Les arguments valables sont :"
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr "erreur du programme"
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr "débordement de pile"
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr "erreur d'écriture"
+
+#: lib/dfa.c:896
+msgid "unbalanced ["
+msgstr "[ non apparié"
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr "classe de caractères incorrecte"
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr "la syntaxe d'une classe de caractères est [[:space:]], pas [:space:]"
+
+#: lib/dfa.c:1210
+msgid "unfinished \\ escape"
+msgstr "séquence d'échappement \\ non terminée"
+
+#: lib/dfa.c:1371
+msgid "invalid content of \\{\\}"
+msgstr "contenu de \\{\\} incorrect"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr "expression rationnelle trop grande"
+
+#: lib/dfa.c:1858
+msgid "unbalanced ("
+msgstr "( non appariée"
+
+#: lib/dfa.c:1975
+msgid "no syntax specified"
+msgstr "aucune syntaxe indiquée"
+
+#: lib/dfa.c:1986
+msgid "unbalanced )"
+msgstr ") non appariée"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "Erreur système inconnue"
+
+#: lib/getopt.c:278
+#, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s : l'option « %s%s » est ambiguë\n"
+
+#: lib/getopt.c:284
+#, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s : l'option « %s%s » est ambiguë ; possibilités :"
+
+#: lib/getopt.c:319
+#, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s : option « %s%s » non reconnue\n"
+
+#: lib/getopt.c:345
+#, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s : l'option « %s%s » n'accepte pas d'argument\n"
+
+#: lib/getopt.c:360
+#, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s : l'option « %s%s » nécessite un argument\n"
+
+#: lib/getopt.c:621
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s : option incorrecte — « %c »\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s : l'option nécessite un argument — « %c »\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "mémoire épuisée"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr "impossible d'enregistrer le répertoire de travail actuel"
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "échec de retour au répertoire initial de travail"
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr ""
+"l’obtention d’un descripteur de fichier en mode text / binaire a échoué"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "« "
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr " »"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr "Réussite"
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr "Pas de correspondance"
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr "Expression rationnelle incorrecte"
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr "Caractère de collation incorrect"
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr "Nom de classe de caractères incorrect"
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr "Barre oblique inverse finale"
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr "Référence arrière incorrecte"
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr "[, [^, [:, [. ou [= sans correspondance"
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr "( ou \\( sans correspondance"
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr "\\{ sans correspondance"
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr "Contenu de \\{\\} incorrect"
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr "Fin d'intervalle incorrecte"
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "Mémoire épuisée"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr "Expression rationnelle précédente incorrecte"
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr "Fin prématurée d'expression rationnelle"
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr "Expression rationnelle trop grande"
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr ") ou \\) sans correspondance"
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr "Pas d'expression rationnelle précédente"
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Empaqueté par %s (%s)\n"
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Empaqueté par %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr "©"
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Licence GPLv3+: GNU GPL version 3 ou ultérieure <%s>.\n"
+"Logiciel libre : vous êtes libre de le modifier ou de le redistribuer.\n"
+"Il n'y a AUCUNE GARANTIE, dans les limites autorisées par la loi.\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Écrit par %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Écrit par %s et %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Écrit par %s, %s et %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Écrit par %s, %s, %s,\n"
+"et %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Écrit par %s, %s, %s,\n"
+"%s, et %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Écrit par %s, %s, %s,\n"
+"%s, %s, et %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Écrit par %s, %s, %s,\n"
+"%s, %s, %s, et %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Écrit par %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"et %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Écrit par %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, et %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Écrit par %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, et d'autres.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr "Signalez toute anomalie à : %s\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "Signalez les anomalies de %s à : %s\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Page d'accueil de %s : <%s>\n"
+
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr "Aide globale sur les logiciels GNU : <%s>\n"
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(entrée standard)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "argument de longueur de contexte incorrect"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "taille des données en entrée trop importante pour compter"
+
+#: src/grep.c:1641
+#, c-format
+msgid "%s: binary file matches"
+msgstr "%s : fichiers binaires correspondent"
+
+#: src/grep.c:1679
+#, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "%s : attention : boucle de répertoire récursive"
+
+#: src/grep.c:1899
+#, c-format
+msgid "%s: input file is also the output"
+msgstr "%s : le fichier d'entrée est aussi le fichier de sortie"
+
+#: src/grep.c:1961 src/grep.c:1968
+#, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "Usage : %s [OPTION]... MOTIFS [FICHIER]...\n"
+
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr ""
+"Exécutez « %s --help » pour obtenir des renseignements complémentaires.\n"
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr "Chercher des MOTIFS dans chaque FICHIER.\n"
+
+#: src/grep.c:1970
+#, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"Exemple : %s -i 'Bonjour, le monde' menu.h main.c\n"
+"\n"
+"MOTIFS peut contenir plusieurs motifs séparés par des sauts de ligne.\n"
+
+#: src/grep.c:1975
+#, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp MOTIFS sont des expressions rationnelles "
+"étendues\n"
+" -F, --fixed-regexp MOTIFS sont des chaînes\n"
+" -G, --basic-regexp MOTIFS sont des expressions rationnelles "
+"ordinaires\n"
+" -P, --perl-regexp MOTIFS sont des expressions rationnelles Perl\n"
+
+#: src/grep.c:1981
+#, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=MOTIFS utiliser MOTIFS pour la recherche\n"
+" -f, --file=FICHIER charger les MOTIFS depuis un FICHIER\n"
+" -i, --ignore-case ignorer la différence de casse des motifs et "
+"données\n"
+" -w, --word-regexp rechercher des mots entiers\n"
+" -x, --line-regexp rechercher des lignes entières\n"
+" -z, --null-data finir les lignes de données par un octet nul, "
+"pas une saut de ligne\n"
+
+#: src/grep.c:1989
+#, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"Divers :\n"
+" -s, --no-messages supprimer les messages d'erreur\n"
+" -v, --invert-match sélectionner les lignes sans correspondance\n"
+" -V, --version afficher le nom et la version du logiciel\n"
+" --help afficher l'aide et quitter\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+"\n"
+"Contrôle de la sortie :\n"
+" -m, --max-count=NOMBRE arrêter après NOMBRE de ligne sélectionnées\n"
+" -b, --byte-offset afficher la position en octet avec la sortie\n"
+" -n, --line-number afficher le numéro de ligne avec la sortie\n"
+" --line-buffered vider le tampon après chaque ligne\n"
+" -H, --with-filename afficher le nom de fichier avec les lignes\n"
+" -h, --no-filename supprimer le préfixe de nom de fichier en "
+"sortie\n"
+" --label=ÉTIQUETTE utiliser ÉTIQUETTE pour le préfixe d'entrée "
+"standard\n"
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+" -o, --only-matching n'afficher que la partie de ligne "
+"correspondante\n"
+" -q, --quiet, --silent supprimer tout affichage vers la sortie "
+"standard\n"
+" --binary-files=TYPE considérer que les fichiers binaires sont de "
+"type\n"
+" TYPE : « binary », « text » ou « without-"
+"match »\n"
+" -a, --text identique à --binary-files=text\n"
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+" -I identique à --binary-files=without-match\n"
+" -d, --directories=ACTION la façon de traiter les répertoires ;\n"
+" ACTION est « read », « recurse » ou « skip »\n"
+" -D, --devices=ACTION la façon de traiter les périphériques, les "
+"FIFOS\n"
+" et les sockets ; ACTION est « read » ou "
+"« skip »\n"
+" -r, --recursive identique à --directories=recurse\n"
+" -R, --dereference-recursive similaire, mais avec suivi des liens "
+"symboliques\n"
+
+#: src/grep.c:2023
+#, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+" --include=GLOB ne chercher que les fichiers correspondants à "
+"GLOB (motif de fichier)\n"
+" --exclude=GLOB ignorer les fichiers correspondants à GLOB\n"
+" --exclude-from=FICHIER ignorer les fichiers correspondants aux "
+"motifs contenus dans un FICHIER\n"
+" --exclude-dir=GLOB ignorer les répertoires correspondants à GLOB\n"
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+" -L, --files-without-match n'afficher que les fichiers sans lignes "
+"sélectionnées\n"
+" -l, --files-with-matches n'afficher que les fichiers avec des lignes "
+"sélectionnées\n"
+" -c, --count n'afficher que le nombre de lignes sélectionnées "
+"par FICHIER\n"
+" -T, --initial-tab insérer des tabulations (si nécessaire)\n"
+" -Z, --null afficher l'octet nul après le nom de fichier\n"
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+"\n"
+"Contrôle de contexte :\n"
+" -B, --before-context=NBRE afficher NBRE lignes de contexte avant\n"
+" -A, --after-context=NBRE afficher NBRE lignes de contexte après\n"
+" -C, --context=NBRE afficher NBRE lignes de contexte en sortie\n"
+
+#: src/grep.c:2043
+#, fuzzy, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+" -NOMBRE identique à --context=NOMBRE\n"
+" --color[=QUAND],\n"
+" --colour[=QUAND] mettre en évidence les correspondances ; QUAND "
+"est\n"
+" « always » (toujours) « never » (jamais) ou "
+"« auto »\n"
+" -U, --binary ne pas enlever les retours chariot en fin de "
+"ligne (MSDOS/Windows)\n"
+"\n"
+
+#: src/grep.c:2052
+#, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"Si FICHIER vaut « - », lire l'entrée standard. Sans FICHIER, lire « . ».\n"
+"Si mode récursif, autrement « - »\n"
+"Si moins de deux fichiers sont indiqués, supposer -h.\n"
+"Le code d'erreur est 0 si une ligne est sélectionnée, 1 autrement ;\n"
+"en cas d'erreur et si l'option -q n'est pas présente, le code est 2.\n"
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "opérateurs de correspondance indiqués en conflit"
+
+#: src/grep.c:2101
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr ""
+"Correspondance Perl non prise en charge pour un binaire construit avec "
+"l'option --disable-perl-regexp"
+
+#: src/grep.c:2103
+#, c-format
+msgid "invalid matcher %s"
+msgstr "motif de correspondance incorrect %s"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "méthode d'examen des périphériques inconnue"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr ""
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "décompte maximal incorrect"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "type de fichier binaire inconnu"
+
+#: src/grep.c:2829
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+"Écrit par Mike Haertel et d'autres ; voir\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr "échec d’allocation mémoire pour la pile JIT PCRE"
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr "-P ne fonctionne qu’avec des paramètres régionaux monooctets ou UTF-8"
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr "l'option -P ne permet d'utiliser qu'un seul motif"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr "erreur interne (ça ne devrait jamais arriver)"
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr "limite de longueur de ligne des PCRE dépassée"
+
+#: src/pcresearch.c:306
+#, c-format
+msgid "%s: memory exhausted"
+msgstr "%s : mémoire épuisée"
+
+#: src/pcresearch.c:310
+#, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr "%s : pile PCRE JIT épuisée"
+
+#: src/pcresearch.c:315
+#, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr "%s : limite de retour arrière des PCRE dépassée"
+
+#: src/pcresearch.c:319
+#, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr "%s : limite de récursion PCRE dépassée"
+
+#: src/pcresearch.c:327
+#, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr "%s : erreur PCRE interne : %d"
+
+#~ msgid "warning: %s: %s"
+#~ msgstr "Avertissement : %s : %s"
+
+#~ msgid "warning: GREP_OPTIONS is deprecated; please use an alias or script"
+#~ msgstr ""
+#~ "Avertissement : GREP_OPTIONS doit être abandonnée ; veuillez utiliser un "
+#~ "alias ou un script"
+
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "Page d'accueil de %s : <https://www.gnu.org/software/%s/>\n"
+
+#~ msgid "invalid %s%s argument '%s'"
+#~ msgstr "argument %s%s incorrect « %s »"
+
+#~ msgid "invalid suffix in %s%s argument '%s'"
+#~ msgstr "suffixe incorrect dans l'argument %s%s « %s »"
+
+#~ msgid "%s%s argument '%s' too large"
+#~ msgstr "argument %s%s « %s » trop grand"
+
+#~ msgid "Mike Haertel"
+#~ msgstr "Mike Haertel"
+
+#~ msgid "internal error"
+#~ msgstr "erreur interne"
diff --git a/src/grep/po/ga.gmo b/src/grep/po/ga.gmo
new file mode 100644
index 0000000..ea4b57a
--- /dev/null
+++ b/src/grep/po/ga.gmo
Binary files differ
diff --git a/src/grep/po/ga.po b/src/grep/po/ga.po
new file mode 100644
index 0000000..e3f1f02
--- /dev/null
+++ b/src/grep/po/ga.po
@@ -0,0 +1,957 @@
+# Irish translations for grep.
+# Copyright (C) 2003 Free Software Foundation, Inc.
+# This file is distributed under the same license as the grep package.
+# Kevin Patrick Scannell <scannell@SLU.EDU>, 2003, 2007, 2009, 2011, 2017.
+msgid ""
+msgstr ""
+"Project-Id-Version: grep 3.0.23-b00\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2017-06-25 05:18-0600\n"
+"Last-Translator: Kevin Scannell <kscanne@gmail.com>\n"
+"Language-Team: Irish <gaeilge-gnulinux@lists.sourceforge.net>\n"
+"Language: ga\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "argóint neamhbhailí %s le haghaidh %s"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "argóint dhébhríoch %s le haghaidh %s"
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr "Na hargóintí bailí:"
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr ""
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr ""
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr "earráid sa scríobh"
+
+#: lib/dfa.c:896
+msgid "unbalanced ["
+msgstr "[ corr"
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr "Aicme charachtar neamhbhailí"
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr ""
+"Is é [[:space:]] an chomhréir cheart in aicme carachtar, in ionad [:space:]"
+
+#: lib/dfa.c:1210
+msgid "unfinished \\ escape"
+msgstr "Seicheamh éalúcháin \\ gan chríochnú"
+
+#: lib/dfa.c:1371
+msgid "invalid content of \\{\\}"
+msgstr "ábhar neamhbhailí laistigh de \\{\\}"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr "slonn ionadaíochta rómhór"
+
+#: lib/dfa.c:1858
+msgid "unbalanced ("
+msgstr "( corr"
+
+#: lib/dfa.c:1975
+msgid "no syntax specified"
+msgstr "níor sonraíodh aon chomhréir"
+
+#: lib/dfa.c:1986
+msgid "unbalanced )"
+msgstr ") corr"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "Earráid anaithnid chórais"
+
+#: lib/getopt.c:278
+#, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: tá rogha '%s%s' débhríoch\n"
+
+#: lib/getopt.c:284
+#, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: tá rogha '%s%s' débhríoch; féidearthachtaí:"
+
+#: lib/getopt.c:319
+#, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: rogha anaithnid '%s%s'\n"
+
+#: lib/getopt.c:345
+#, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: ní cheadaítear argóint i ndiaidh rogha '%s%s'\n"
+
+#: lib/getopt.c:360
+#, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: tá argóint de dhíth i ndiaidh rogha '%s%s'\n"
+
+#: lib/getopt.c:621
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: rogha neamhbhailí -- '%c'\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: tá argóint de dhíth i ndiaidh na rogha -- '%c'\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "cuimhne ídithe"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr "ní féidir an chomhadlann oibre a fháil"
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "níorbh fhéidir filleadh ar an mbunchomhadlann oibre"
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr "níorbh fhéidir mód téacs/dénártha an tuairisceora comhaid a shocrú"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "'"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr "D'éirigh leis"
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr "Níl a leithéid ann"
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr "Slonn ionadaíochta neamhbhailí"
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr "Carachtar neamhbhailí cóimheasa"
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr "Ainm neamhbhailí ar aicme charachtar"
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr "Cúlslais ag an deireadh"
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr "Cúltagairt neamhbhailí"
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr "[, [^, [:, [., nó [= corr"
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr "( nó \\( corr"
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr "\\{ corr"
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr "Ábhar neamhbhailí laistigh de \\{\\}"
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr "Deireadh raoin neamhbhailí"
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "Cuimhne ídithe"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr "Tá an slonn ionadaíochta roimhe seo neamhbhailí"
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr "Deireadh an tsloinn gan choinne"
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr "Slonn ionadaíochta rómhór"
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr ") nó \\) corr"
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr "Níl aon slonn ionadaíochta roimhe seo"
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Arna phacáistiú ag %s (%s)\n"
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Arna phacáistiú ag %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr "©"
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, fuzzy, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"\n"
+"Ceadúnas GPLv3+: GNU GPL leagan 3 nó níos nuaí <http://gnu.org/licenses/gpl."
+"html>.\n"
+"Is saorbhogearra é seo: ceadaítear duit é a athrú agus a athdháileadh.\n"
+"Níl baránta AR BITH ann, an oiread atá ceadaithe de réir dlí.\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Scríofa ag %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Scríofa ag %s agus %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Scríofa ag %s, %s, agus %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Scríofa ag %s, %s, %s,\n"
+"agus %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Scríofa ag %s, %s, %s,\n"
+"%s, agus %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Scríofa ag %s, %s, %s,\n"
+"%s, %s, agus %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Scríofa ag %s, %s, %s,\n"
+"%s, %s, %s, agus %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Scríofa ag %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"agus %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Scríofa ag %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, agus %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Scríofa ag %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, agus daoine eile nach iad.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, fuzzy, c-format
+msgid "Report bugs to: %s\n"
+msgstr ""
+"\n"
+"Seol tuairiscí ar fhabhtanna chuig: %s\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "Seol tuairiscí ar fhabhtanna i %s chuig: %s\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Leathanach baile %s: <%s>\n"
+
+#: lib/version-etc.c:260
+#, fuzzy, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr ""
+"Cabhair ghinearálta maidir le bogearraí GNU: <http://www.gnu.org/gethelp/>\n"
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(gnáth-ionchur)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "tá an argóint a shonraíonn fad an chomhthéacs neamhbhailí"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "tá an t-ionchur rómhór le háireamh"
+
+# using lit. "matching string" throughout for "match" - KPS
+#: src/grep.c:1641
+#, fuzzy, c-format
+msgid "%s: binary file matches"
+msgstr "Teaghrán comhoiriúnach sa chomhad dhénártha %s\n"
+
+#: src/grep.c:1679
+#, fuzzy, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "lúb athchúrsach i gcomhadlann"
+
+#: src/grep.c:1899
+#, fuzzy, c-format
+msgid "%s: input file is also the output"
+msgstr "is ionann an t-inchomhad %s agus an t-aschomhad"
+
+#: src/grep.c:1961 src/grep.c:1968
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "Úsáid: %s [ROGHA]... PATRÚN [COMHAD]...\n"
+
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "Bain triail as '%s --help' chun tuilleadh eolais a fháil.\n"
+
+#: src/grep.c:1969
+#, fuzzy, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr "Déan cuardach ar PATRÚN i ngach COMHAD.\n"
+
+#: src/grep.c:1970
+#, fuzzy, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"Mar shampla: %s -i 'dia duit' rogha.h príomh.c\n"
+"\n"
+"Roghnú agus léirmhíniú patrún:\n"
+
+#: src/grep.c:1975
+#, fuzzy, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp is slonn ionadaíochta breisithe é PATRÚN\n"
+" -F, --fixed-strings is tacar teaghrán é PATRÚN, línte nua eatarthu\n"
+" -G, --basic-regexp is slonn ion. bunúsach é PATRÚN (réamhshocrú)\n"
+" -P, --perl-regexp is slonn ionadaíochta Perl é PATRÚN\n"
+
+#: src/grep.c:1981
+#, fuzzy, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=PATRÚN déan cuardach ar PATRÚN\n"
+" -f, --file=COMHAD faigh PATRÚN as COMHAD\n"
+" -i, --ignore-case déan neamhaird de chás na litreacha\n"
+" -w, --word-regexp meaitseálann PATRÚN focail iomlána amháin\n"
+" -x, --line-regexp meaitseálann PATRÚN línte iomlána amháin\n"
+" -z, --null-data léiríonn beart '0' deireadh na líne (vs. \\n)\n"
+
+#: src/grep.c:1989
+#, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"Roghanna éagsúla:\n"
+" -s, --no-messages ná taispeáin teachtaireachtaí earráide\n"
+" -v, --invert-match taispeáin na línte GAN teaghrán comhoiriúnach\n"
+" -V, --version taispeáin eolas faoin leagan agus scoir\n"
+" --help taispeáin an chabhair seo agus scoir\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+"\n"
+"Rialú aschurtha:\n"
+" -m, --max-count=UIMHIR stop i ndiaidh UIMHIR líne chomhoiriúnach\n"
+" -b, --byte-offset taispeáin an fritháireamh birt san aschur\n"
+" -n, --line-number taispeáin líne-uimhreacha san aschur\n"
+" --line-buffered sruthlú an aschuir i ndiaidh gach líne\n"
+" -H, --with-filename taispeáin ainm comhaid le línte comhoiriúnacha\n"
+" -h, --no-filename ná taispeáin ainmneacha comhad mar réimír\n"
+" --label=LIPÉAD úsáid LIPÉAD mar ainm ar an ngnáth-ionchur\n"
+
+#: src/grep.c:2007
+#, fuzzy, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+" -o, --only-matching ná taispeáin ach an teaghrán comhoiriúnach\n"
+" -q, --quiet, --silent múch an gnáth-aschur\n"
+" --binary-files=CINEÁL glac le comhaid dhénártha mar CINEÁL;\n"
+" CINEÁL = 'binary', 'text', nó 'without-match'\n"
+" -a, --text ar comhbhrí le '--binary-files=text'\n"
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+" -I ar comhbhrí le '--binary-files=without-match'\n"
+" -d, --directories=MODH modh oibre le haghaidh comhadlanna;\n"
+" MODH = 'read', 'recurse', nó 'skip'\n"
+" -D, --devices=MODH modh oibre le haghaidh gléasanna, FIFOnna,\n"
+" agus soicéid; MODH = 'read' nó 'skip'\n"
+" -r, --recursive ar comhbhrí le '--directories=recurse'\n"
+" -R, --dereference-recursive mar an gcéanna, ach lean naisc shiombalacha\n"
+
+#: src/grep.c:2023
+#, fuzzy, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+" --include=PATRÚN déan cuardach i gcomhaid chomhoiriúnacha amháin\n"
+" --exclude=PATRÚN ná déan cuardach i gcomhaid chomhoiriúnacha\n"
+" --exclude-from=COMHAD ná déan cuardach i gcomhaid atá comhoiriúnach "
+"le\n"
+" haon phatrún i gCOMHAD\n"
+" --exclude-dir=PATRÚN ná déan cuardach i gcomhadlanna comhoiriúnacha.\n"
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+" -L, --files-without-match ná taispeáin ach ainmneacha comhaid GAN\n"
+" teaghrán comhoiriúnach\n"
+" -l, --files-with-matches ná taispeáin ach ainmneacha comhaid LE\n"
+" teaghrán comhoiriúnach\n"
+" -c, --count ná taispeáin ach líon na dteaghrán "
+"comhoiriúnach\n"
+" i ngach comhad\n"
+" -T, --initial-tab Ailínigh na táib (más gá)\n"
+" -Z, --null priontáil beart '0' i ndiaidh ainm an chomhaid\n"
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+"\n"
+"Rialú comhthéacs:\n"
+" -B, --before-context=UIMH taispeáin UIMH líne de chomhthéacs tosaigh\n"
+" -A, --after-context=UIMH taispeáin UIMH líne de chomhthéacs deiridh\n"
+" -C, --context=UIMHIR taispeáin UIMHIR líne de chomhthéacs\n"
+
+#: src/grep.c:2043
+#, fuzzy, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+" -UIMHIR ar comhbhrí le --context=UIMHIR\n"
+" --color[=CATHAIN],\n"
+" --colour[=CATHAIN] aibhsigh na teaghráin chomhoiriúnacha;\n"
+" CATHAIN = 'always', 'never' nó 'auto'\n"
+" -U, --binary ná scrios carachtair CR (MSDOS/Windows)\n"
+"\n"
+
+#: src/grep.c:2052
+#, fuzzy, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"Más é '-' an COMHAD, léigh ón ionchur caighdeánach. Gan COMHAD ar bith,\n"
+"léigh . má tá an rogha -r ann, agus - mura bhfuil. Má tá níos lú ná dhá\n"
+"chomhad ann, úsáid '-h'. Stádas scortha: 0 má roghnaíodh líne ar bith,\n"
+"1 murar roghnaíodh, agus 2 má tharlaíonn earráid ar bith gan rogha -q.\n"
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "sonraíodh patrúin chontrártha"
+
+#: src/grep.c:2101
+#, fuzzy
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr ""
+"Tiomsaíodh an clár dénártha seo le --disable-perl-regexp agus gan tacaíocht "
+"do rogha -P"
+
+#: src/grep.c:2103
+#, c-format
+msgid "invalid matcher %s"
+msgstr "meaitseálaí neamhbhailí %s"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "modh anaithnid gléasanna"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr ""
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "uasmhéid neamhbhailí"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "cineál anaithnid de chomhad dénártha"
+
+#: src/grep.c:2829
+#, fuzzy
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+"agus daoine eile, féach ar <http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>"
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr "níorbh fhéidir cuimhne a dháil le haghaidh na cruaiche PCRE JIT"
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr "Tacaíonn an rogha -P logchaighdeáin aonbhearta agus UTF-8 amháin"
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr "Ní thacaíonn rogha -P ach le patrún amháin"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr "earráid inmheánach (ní tharlaíonn seo riamh)"
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr "sáraíodh uasfhad líne PCRE"
+
+#: src/pcresearch.c:306
+#, fuzzy, c-format
+msgid "%s: memory exhausted"
+msgstr "cuimhne ídithe"
+
+#: src/pcresearch.c:310
+#, fuzzy, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr "cruach PCRE JIT líonta"
+
+#: src/pcresearch.c:315
+#, fuzzy, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr "sáraíodh teorainn PCRE ar chúlú"
+
+#: src/pcresearch.c:319
+#, fuzzy, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr "sáraíodh teorainn PCRE ar chúlú"
+
+#: src/pcresearch.c:327
+#, fuzzy, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr "earráid inmheánach PCRE: %d"
+
+#, c-format
+#~ msgid "warning: GREP_OPTIONS is deprecated; please use an alias or script"
+#~ msgstr ""
+#~ "rabhadh: ní mholtar GREP_OPTIONS a úsáid a thuilleadh; bain úsáid as "
+#~ "ailias nó as script"
+
+#, c-format
+#~ msgid "warning: %s: %s"
+#~ msgstr "rabhadh: %s: %s"
+
+#~ msgid "invalid %s%s argument '%s'"
+#~ msgstr "argóint neamhbhailí %s%s '%s'"
+
+#~ msgid "invalid suffix in %s%s argument '%s'"
+#~ msgstr "iarmhír neamhbhailí tar éis argóint %s%s '%s'"
+
+#~ msgid "%s%s argument '%s' too large"
+#~ msgstr "argóint %s%s rómhór: '%s'"
+
+#, fuzzy
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "Leathanach baile %s: <http://www.gnu.org/software/%s/>\n"
+
+#~ msgid "internal error"
+#~ msgstr "earráid inmheánach"
+
+#~ msgid "Mike Haertel"
+#~ msgstr "Mike Haertel"
+
+#~ msgid "%s: option '--%s' doesn't allow an argument\n"
+#~ msgstr "%s: ní cheadaítear argóint i ndiaidh rogha '--%s'\n"
+
+#~ msgid "%s: unrecognized option '--%s'\n"
+#~ msgstr "%s: rogha anaithnid '--%s'\n"
+
+#~ msgid "%s: option '-W %s' is ambiguous\n"
+#~ msgstr "%s: tá an rogha '-W %s' débhríoch\n"
+
+#~ msgid "%s: option '-W %s' doesn't allow an argument\n"
+#~ msgstr "%s: ní cheadaítear argóint i ndiaidh rogha '-W %s'\n"
+
+#~ msgid "%s: option '-W %s' requires an argument\n"
+#~ msgstr "%s: tá argóint de dhíth i ndiaidh rogha '-W %s'\n"
+
+#~ msgid "PATTERN is, by default, a basic regular expression (BRE).\n"
+#~ msgstr ""
+#~ "Is slonn ionadaíochta bunúsach (BRE) é PATRÚN, de réir réamhshocraithe.\n"
+
+#~ msgid ""
+#~ "'egrep' means 'grep -E'. 'fgrep' means 'grep -F'.\n"
+#~ "Direct invocation as either 'egrep' or 'fgrep' is deprecated.\n"
+#~ msgstr ""
+#~ "'egrep' = 'grep -E', agus 'fgrep' = 'grep -F'.\n"
+#~ "Tá na horduithe 'egrep' agus 'fgrep' imithe i léig.\n"
+
+#~ msgid "unfinished repeat count"
+#~ msgstr "Tá líon na hathráite neamhiomlán"
+
+# more precisely, "the string indicating the repeat count" is malformed -- KPS
+#~ msgid "malformed repeat count"
+#~ msgstr "Tá líon na hathráite míchumtha"
+
+#~ msgid "PATTERN is an extended regular expression (ERE).\n"
+#~ msgstr "Is slonn ionadaíochta feabhsaithe (ERE) é PATRÚN.\n"
+
+#~ msgid "Invocation as `egrep' is deprecated; use `grep -E' instead.\n"
+#~ msgstr "Tá an t-ordú `egrep' imithe i léig; úsáid `grep -E' ina ionad.\n"
+
+#~ msgid "PATTERN is a set of newline-separated fixed strings.\n"
+#~ msgstr "Is tacar teaghrán é PATRÚN, scartha le línte nua.\n"
+
+#~ msgid "Invocation as `fgrep' is deprecated; use `grep -F' instead.\n"
+#~ msgstr "Tá an t-ordú `fgrep' imithe i léig; úsáid `grep -F' ina ionad.\n"
+
+#~ msgid "lseek failed"
+#~ msgstr "theip ar lseek"
+
+#~ msgid "writing output"
+#~ msgstr "aschur á scríobh"
+
+#~ msgid "GNU Grep home page: <%s>\n"
+#~ msgstr "Leathanach baile GNU Grep: <%s>\n"
+
+#~ msgid "%s can only use the %s pattern syntax"
+#~ msgstr "Ní féidir le %s ach comhréir phatrúin %s a úsáid"
+
+#~ msgid ""
+#~ "in GREP_COLORS=\"%s\", the \"%s\" capacity needs a value (\"=...\"); "
+#~ "skipped"
+#~ msgstr ""
+#~ "I GREP_COLORS=\"%s\", tá luach (\"=...\") de dhíth i ndiaidh acmhainn \"%s"
+#~ "\"; rinneadh neamhaird de."
+
+#~ msgid ""
+#~ "in GREP_COLORS=\"%s\", the \"%s\" capacity is boolean and cannot take a "
+#~ "value (\"=%s\"); skipped"
+#~ msgstr ""
+#~ "I GREP_COLORS=\"%s\", is den chineál boole é an acmhainn \"%s\" agus ní "
+#~ "cheadaítear luach (\"=%s\") ina dhiaidh; rinneadh neamhaird de."
+
+#~ msgid "in GREP_COLORS=\"%s\", the \"%s\" capacity %s"
+#~ msgstr "I GREP_COLORS=\"%s\", an acmhainn \"%s\": %s"
+
+#~ msgid ""
+#~ "stopped processing of ill-formed GREP_COLORS=\"%s\" at remaining "
+#~ "substring \"%s\""
+#~ msgstr ""
+#~ "Scoireadh ó phróiseáil teaghrán míchumtha GREP_COLORS=\"%s\" ag an "
+#~ "bhfotheaghrán atá fágtha: \"%s\""
+
+#~ msgid ""
+#~ "\n"
+#~ "Output control:\n"
+#~ " -m, --max-count=NUM stop after NUM matches\n"
+#~ " -b, --byte-offset print the byte offset with output lines\n"
+#~ " -n, --line-number print line number with output lines\n"
+#~ " --line-buffered flush output on every line\n"
+#~ " -H, --with-filename print the filename for each match\n"
+#~ " -h, --no-filename suppress the prefixing filename on output\n"
+#~ " --label=LABEL print LABEL as filename for standard input\n"
+#~ " -o, --only-matching show only the part of a line matching "
+#~ "PATTERN\n"
+#~ " -q, --quiet, --silent suppress all normal output\n"
+#~ " --binary-files=TYPE assume that binary files are TYPE;\n"
+#~ " TYPE is `binary', `text', or `without-match'\n"
+#~ " -a, --text equivalent to --binary-files=text\n"
+#~ " -I equivalent to --binary-files=without-match\n"
+#~ " -d, --directories=ACTION how to handle directories;\n"
+#~ " ACTION is `read', `recurse', or `skip'\n"
+#~ " -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+#~ " ACTION is `read' or `skip'\n"
+#~ " -R, -r, --recursive equivalent to --directories=recurse\n"
+#~ " --include=FILE_PATTERN search only files that match FILE_PATTERN\n"
+#~ " --exclude=FILE_PATTERN skip files and directories matching "
+#~ "FILE_PATTERN\n"
+#~ " --exclude-from=FILE skip files matching any file pattern from "
+#~ "FILE\n"
+#~ " --exclude-dir=PATTERN directories that match PATTERN will be "
+#~ "skipped.\n"
+#~ " -L, --files-without-match print only names of FILEs containing no "
+#~ "match\n"
+#~ " -l, --files-with-matches print only names of FILEs containing matches\n"
+#~ " -c, --count print only a count of matching lines per "
+#~ "FILE\n"
+#~ " -T, --initial-tab make tabs line up (if needed)\n"
+#~ " -Z, --null print 0 byte after FILE name\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Rialú aschurtha:\n"
+#~ " -m, --max-count=UIMHIR stop i ndiaidh UIMHIR líne comhoiriúnach\n"
+#~ " -b, --byte-offset taispeáin an fritháireamh birt san aschur\n"
+#~ " -n, --line-number taispeáin líne-uimhreacha san aschur\n"
+#~ " --line-buffered déan sruthlú an aschuir i ndiaidh gach líne\n"
+#~ " -H, --with-filename taispeáin ainm comhaid le línte "
+#~ "comhoiriúnacha\n"
+#~ " -h, --no-filename ná taispeáin ainmneacha comhad\n"
+#~ " --label=LIPÉAD úsáid LIPÉAD mar ainm ar an ngnáth-ionchur\n"
+#~ " -o, --only-matching ná taispeáin ach an teaghrán comhoiriúnach\n"
+#~ " -q, --quiet, --silent múch an gnáth-aschur\n"
+#~ " --binary-files=CINEÁL glac le comhaid dhénártha mar CINEÁL;\n"
+#~ " CINEÁL = 'binary', 'text', nó 'without-"
+#~ "match'\n"
+#~ " -a, --text ar comhbhrí le '--binary-files=text'\n"
+#~ " -I ar comhbhrí le '--binary-files=without-"
+#~ "match'\n"
+#~ " -d, --directories=MODH modh oibre le haghaidh comhadlanna\n"
+#~ " MODH = 'read', 'recurse', nó 'skip'\n"
+#~ " -D, --devices=MODH modh oibre le haghaidh gléasanna, FIFOnna,\n"
+#~ " agus soicéid; MODH = 'read' nó 'skip'\n"
+#~ " -R, -r, --recursive ar comhbhrí le '--directories=recurse'\n"
+#~ " --include=PATRÚN déan cuardach i gcomhaid chomhoiriúnacha "
+#~ "amháin\n"
+#~ " --exclude=PATRÚN ná déan cuardach i gcomhaid chomhoiriúnacha\n"
+#~ " --exclude-from=COMHAD ná déan cuardach i gcomhaid atá comhoiriúnach "
+#~ "le\n"
+#~ " haon phatrún i gCOMHAD\n"
+#~ " --exclude-dir=PATRÚN ná déan cuardach i gcomhadlanna "
+#~ "comhoiriúnacha.\n"
+#~ " -L, --files-without-match ná taispeáin ach ainmneacha comhaid GAN\n"
+#~ " teaghrán comhoiriúnach\n"
+#~ " -l, --files-with-matches ná taispeáin ach ainmneacha comhaid LE\n"
+#~ " teaghrán comhoiriúnach\n"
+#~ " -c, --count ná taispeáin ach líon na teaghráin "
+#~ "chomhoiriúnacha\n"
+#~ " atá i ngach comhad\n"
+#~ " -T, --initial-tab Ailínigh na táib (más gá)\n"
+#~ " -Z, --null priontáil beart '0' i ndiaidh an ainm "
+#~ "comhaid\n"
+
+#~ msgid "unknown directories method"
+#~ msgstr "modh anaithnid comhadlann"
+
+#~ msgid "The -P and -z options cannot be combined"
+#~ msgstr "Tá na roghanna -P agus -z neamh-chomhoiriúnach le chéile"
+
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: rogha neamhcheadaithe -- %c\n"
+
+#~ msgid "Copyright (C) 2008 Free Software Foundation, Inc.\n"
+#~ msgstr "Copyright © 2008 Free Software Foundation, Inc.\n"
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "Is saorbhogearra an ríomhchlár seo; féach ar an mbunchód le haghaidh\n"
+#~ "coinníollacha cóipeála. Níl baránta ar bith ann; go fiú níl baránta ann\n"
+#~ "d'INDÍOLTACHT nó FEILIÚNACHT D'FHEIDHM AR LEITH.\n"
+
+#~ msgid "out of memory"
+#~ msgstr "cuimhne ídithe"
+
+#~ msgid "Usage: %s [OPTION]... PATTERN [FILE] ...\n"
+#~ msgstr "Úsáid: %s [ROGHA]... PATRÚN [COMHAD] ...\n"
+
+#~ msgid "%s (GNU grep) %s\n"
+#~ msgstr "%s (GNU grep) %s\n"
diff --git a/src/grep/po/gl.gmo b/src/grep/po/gl.gmo
new file mode 100644
index 0000000..e3151db
--- /dev/null
+++ b/src/grep/po/gl.gmo
Binary files differ
diff --git a/src/grep/po/gl.po b/src/grep/po/gl.po
new file mode 100644
index 0000000..5fbe805
--- /dev/null
+++ b/src/grep/po/gl.po
@@ -0,0 +1,1000 @@
+# Galician Translation of grep
+# Copyright (C) 2001 Free Software Foundation, Inc.
+# This file is distributed under the same license as the grep package.
+# Jacobo Tarrío Barreiro <jtarrio@iname.com>, 2001.
+# Francisco Diéguez <frandieguez@ubuntu.com>, 2012.
+# Leandro Regueiro <leandro.regueiro@gmail.com>, 2012.
+# Antón Méixome <meixome@certima.net>, 2018.
+# Francisco Javier Tsao Santín <tsao@members.fsf.org>, 2020.
+# Proxecto Trasno - Adaptación do software libre á lingua galega: Se desexas
+# colaborar connosco, podes atopar máis información en <http://trasno.gal>
+msgid ""
+msgstr ""
+"Project-Id-Version: grep 3.5.16\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2020-11-09 12:44+0100\n"
+"Last-Translator: Francisco Javier Tsao Santín <tsao@members.fsf.org>\n"
+"Language-Team: Galician <proxecto@trasno.gal>\n"
+"Language: gl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Virtaal 0.7.1\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "o argumento %s para %s é incorrecto"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "o argumento %s para %s é ambiguo"
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr "Os argumentos correctos son:"
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr "erro de programa"
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr "desbordamento de pila"
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr "erro de escritura"
+
+#: lib/dfa.c:896
+msgid "unbalanced ["
+msgstr "[ desemparellado"
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr "clase de caracteres incorrecta"
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr "a sintaxe da clase de caracteres é [[:space:]], non [:space:]"
+
+#: lib/dfa.c:1210
+msgid "unfinished \\ escape"
+msgstr "secuencia de escape \\ sen rematar"
+
+#: lib/dfa.c:1371
+msgid "invalid content of \\{\\}"
+msgstr "contido incorrecto de \\{\\}"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr "expresión regular demasiado grande"
+
+#: lib/dfa.c:1858
+msgid "unbalanced ("
+msgstr "( desemparellado"
+
+#: lib/dfa.c:1975
+msgid "no syntax specified"
+msgstr "no se especificou ningunha sintaxe"
+
+#: lib/dfa.c:1986
+msgid "unbalanced )"
+msgstr ") desemparellado"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "Erro do sistema descoñecido"
+
+#: lib/getopt.c:278
+#, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: a opción '%s%s' é ambigua\n"
+
+#: lib/getopt.c:284
+#, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: a opción '%s%s' é ambigüa; posibilidades:"
+
+#: lib/getopt.c:319
+#, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: non se recoñece a opción '%s%s'\n"
+
+#: lib/getopt.c:345
+#, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: a opción '%s%s' non admite ningún argumento\n"
+
+#: lib/getopt.c:360
+#, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: a opción '%s%s' require un argumento\n"
+
+#: lib/getopt.c:621
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: a opción -- '%c' non é correcta\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: a opción require un argumento -- '%c'\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "memoria esgotada"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr "non se puido rexistrar o cartafol de traballo activo"
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "produciuse un fallo ao volver ao cartafol de traballo inicial"
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr "produciuse un fallo ao configurar o modo do descritor texto/binario"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "«"
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "»"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr "Correcto"
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr "No hai ningunha coincidencia"
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr "Expresión regular incorrecta"
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr "Carácter de unión incorrecto"
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr "Nome de clase de caracteres incorrecto"
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr "Barra invertida ao final"
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr "Referencia cara atrás incorrecta"
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr "[, [^, [:, [., ou [= desemparellado"
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr "( ou \\( desemparellado"
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr "\\{ desemparellado"
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr "Contido incorrecto \\{\\}"
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr "Final de intervalo incorrecto"
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "Memoria esgotada"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr "A expresión regular precedente é incorrecta"
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr "Final prematuro da expresión regular"
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr "A expresión regular é demasiado grande"
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr ") ou \\) desemparellado"
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr "No hai ningunha expresión regular anterior"
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Empaquetado por %s (%s)\n"
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Empaquetado por %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr "©"
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Licenza GPLv3+: GPL de GNU versión 3 ou posterior <%s>.\n"
+"Isto é software libre: vostede é libre de modificalo e redistribuílo.\n"
+"Non hai NINGUNHA GARANTÍA, ata onde o permite a lei.\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Escrito por %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Escrito por %s e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Escrito por %s, %s, e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Escrito por %s, %s, %s,\n"
+"e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Escrito por %s, %s, %s,\n"
+"%s, e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Escrito por %s, %s, %s,\n"
+"%s, %s, e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Escrito por %s, %s, %s,\n"
+"%s, %s, %s, e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Escrito por %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Escrito por %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Escrito por %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, e outros.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr "Comunicar erros no programa en: %s\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "Comunicar %s erros de programa en: %s\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Páxina de web de %s: <%s>\n"
+
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr "Axuda xeral sobre o uso de software de GNU: <%s>\n"
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(entrada estándar)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "argumento de lonxitude do contexto incorrecto"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "a entrada é longa de máis para facer a conta"
+
+#: src/grep.c:1641
+#, c-format
+msgid "%s: binary file matches"
+msgstr "%s: coincide o ficheiro binario"
+
+#: src/grep.c:1679
+#, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "%s: aviso: ciclo de cartafoles recursivo"
+
+#: src/grep.c:1899
+#, c-format
+msgid "%s: input file is also the output"
+msgstr "%s: o ficheiro de entrada tamén é o de saída"
+
+#: src/grep.c:1961 src/grep.c:1968
+#, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "Uso: %s [OPCIÓN]... PATRÓNS [FICHEIRO]...\n"
+
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "Consulte con '%s --help' para máis información.\n"
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr "Busca PATRÓNS en cada FICHERO.\n"
+
+#: src/grep.c:1970
+#, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"Exemplo: %s -i 'hello world' menu.h main.c\n"
+"\n"
+"Selección de patróns e interpretación:\n"
+
+#: src/grep.c:1975
+#, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp O PATRÓNS son expresións regulares estendidas\n"
+" -F, --fixed-strings O PATRÓNS son conxuntos de cadeas\n"
+" -G, --basic-regexp O PATRÓNS son expresións regulares básicas\n"
+" -P, --perl-regexp O PATRÓNS son expresións regulares en Perl\n"
+
+#: src/grep.c:1981
+#, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=PATRÓN utiliza PATRÓNS para atopar coincidencias\n"
+" -f, --file=FICHEIRO obtén PATRÓNS de FICHEIRO\n"
+" -i, --ignore-case considera iguais as maiúsculas e as minúsculas "
+"en patróns e datos\n"
+" --no-ignore-case non considera iguais as maiúsculas e as "
+"minúsculas (por defecto)\n"
+" -w, --word-regexp obriga a que coincida só con palabras completas\n"
+" -x, --line-regexp obriga a que coincida só con liñas completas\n"
+" -z, --null-data unha liña de datos termina nun byte 0, non nun "
+"carácter de nova liña\n"
+
+#: src/grep.c:1989
+#, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"Variadas:\n"
+" -s, --no-messages suprime as mensaxes de erro\n"
+" -v, --invert-match selecciona as liñas que non coinciden\n"
+" -V, --version amosa a versión e finaliza\n"
+" --help amosa esta axuda e finaliza\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+"\n"
+"Control da saída como resultado:\n"
+" -m, --max-count=NUM detense despois do NUM de liñas seleccionadas\n"
+" -b, --byte-offset amosa o desprazamento en bytes xunto coas liñas "
+"de saí­da\n"
+" -n, --line-number amosa o número de liña xunto coas liñas de saí­"
+"da\n"
+" --line-buffered descarga o resultado para cada liña\n"
+" -H, --with-filename amosa o nome do ficheiro de cada coincidencia\n"
+" -h, --no-filename suprime os nomes dos ficheiros como prefixo no "
+"resultado\n"
+" --label=ETIQUETA utiliza ETIQUETA como prefixo estándar do nome "
+"de ficheiro\n"
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+" -o, --only-matching amosa só partes non baleiras de liñas que "
+"coinciden\n"
+" -q, --quiet, --silent suprime todo o resultado normal\n"
+" --binary-files=TIPO supón que os ficheros binarios son de TIPO;\n"
+" TIPO é 'binary', 'text', ou 'without-match'\n"
+" -a, --text equivalente a --binary-files=text\n"
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+" -I equivalente a --binary-files=sen-coincidencia\n"
+" -d, --directories=ACCIÓN especifica como manexar os cartafoles\n"
+" ACCIÓN pode ser 'read', 'recurse', ou 'skip'\n"
+" -D, --devices=ACCIÓN especifica como manexar dispositivos, FIFO e\n"
+" «sockets», pode ser 'read' ou 'skip'\n"
+" -r, --recursive equivalente a --directories=recurse\n"
+" -R, --dereference-recursive equivalente, pero seguindo tódolas ligazóns "
+"simbólicas\n"
+
+#: src/grep.c:2023
+#, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+" --include=PATRÓN_FICHEIRO busca só os ficheiros que coinciden con "
+"PATRÓN_FICHEIRO\n"
+" --exclude=PATRÓN_FICHEIRO omítense os ficheiros e cartafoles que "
+"coinciden con PATRÓN_FICHEIRO\n"
+" --exclude-from=FICHEIRO omítense os ficheiros que coinciden con "
+"calquera patrón de ficheiro de FICHEIRO\n"
+" --exclude-dir=PATRÓN omítense os cartafoles que coinciden con "
+"PATRÓN\n"
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+" -L, --files-without-match amosa só os nomes dos FICHEIROS que no conteñen "
+"ningunha coincidencia\n"
+" -l, --files-with-matches amosa só os nomes de FICHEIROS que conteñen "
+"algunha coincidencia\n"
+" -c, --count amosa só resultado de liñas que coinciden de "
+"cada FICHEIRO\n"
+" -Z, --null imprime un byte 0 despois do nome do FICHEIRO\n"
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+"\n"
+"Control do contexto:\n"
+" -B, --before-context=NÚM amosa o NÚM de liñas de contexto anterior\n"
+" -A, --after-context=NÚM amosa o NÚM de liñas de contexto posterior\n"
+" -C, --context=NÚM amosa o NÚM liñas de contexto\n"
+
+#: src/grep.c:2043
+#, fuzzy, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+" -NUM o mesmo que --context=NUM\n"
+" --color[=CANDO],\n"
+" --colour[=CANDO] distingue con marcadores a cadea que encaixa;\n"
+" CANDO pode ser 'always', 'never', ou 'auto'.\n"
+" -U, --binary non elimina os caracteres CR de retorno de liña "
+"(MSDOS/Windows)\n"
+
+#: src/grep.c:2052
+#, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"Cando o FICHEIRO é '-', le a entrada estándard. De non especificar FICHEIRO, "
+"le '.'\n"
+"se é recursivo, doutra maneira '-'. De se dar menos de dous FICHEIROS, "
+"suponse -h.\n"
+"O estado de saída é 0 se algunha liña é elixida, 1 se non as hai;\n"
+"de se producir algún erro e asemade non se especificou -q,\n"
+"o estado de saída é 2.\n"
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "especificáronse expresións conflitivas"
+
+#: src/grep.c:2101
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr ""
+"A coincidencia compatible con Perl non está soportada nun compilado --"
+"disable-perl-regexp"
+
+#: src/grep.c:2103
+#, c-format
+msgid "invalid matcher %s"
+msgstr "a expresión %s non é correcta"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "método de dispositivos descoñecido"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr ""
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "contador máximo incorrecto"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "tipo binary-files descoñecido"
+
+#: src/grep.c:2829
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+"Escrito por Mike Haertel e outros, véxase\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>"
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr "ao tentar dispoñer de memoria produciuse un erro para a pila PCRE JIT"
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr "-P admite só locales unibyte e UTF-8"
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr "a opción -P admite só un patrón"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr "erro interno (non debería ocorrer nunca)"
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr "excedeuse o tamaño límite das liñas PCRE"
+
+#: src/pcresearch.c:306
+#, c-format
+msgid "%s: memory exhausted"
+msgstr "%s: memoria esgotada"
+
+#: src/pcresearch.c:310
+#, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr "%s: esgotouse a pila PCRE JIT"
+
+#: src/pcresearch.c:315
+#, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr "%s: excedeuse o límite de volta atrás das PCREs"
+
+#: src/pcresearch.c:319
+#, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr "%s: excedeuse o límite de recursividade das PCREs"
+
+#: src/pcresearch.c:327
+#, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr "%s: erro interno de PCRE: %d"
+
+#~ msgid "warning: GREP_OPTIONS is deprecated; please use an alias or script"
+#~ msgstr "aviso: GREP_OPTIONS está obsoleto; utilice un alias ou un script"
+
+#~ msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
+#~ msgstr "Páxina de web de %s: <http://www.gnu.org/software/%s/>\n"
+
+#~ msgid "invalid %s%s argument '%s'"
+#~ msgstr "argumento %s%s incorrect '%s'"
+
+#~ msgid "invalid suffix in %s%s argument '%s'"
+#~ msgstr "sufixo incorrecto no %s%s argumento «%s»"
+
+#~ msgid "%s%s argument '%s' too large"
+#~ msgstr "%s%s argumento «%s» demasiado grande"
+
+#~ msgid "Mike Haertel"
+#~ msgstr "Mike Haertel"
+
+#~ msgid "warning: %s: %s"
+#~ msgstr "atención: %s: %s"
+
+#~ msgid "internal error"
+#~ msgstr "erro interno"
+
+#~ msgid "%s: option '--%s' doesn't allow an argument\n"
+#~ msgstr "%s: a opción '--%s' non admite ningíºn argumento\n"
+
+#~ msgid "%s: unrecognized option '--%s'\n"
+#~ msgstr "%s: opción non recoñecida '--%s'\n"
+
+#~ msgid "%s: option '-W %s' doesn't allow an argument\n"
+#~ msgstr "%s: a opción '-W %s' non admite ningíºn argumento\n"
+
+#~ msgid "%s: option '-W %s' requires an argument\n"
+#~ msgstr "%s: a opción '-W %s' require un argumento\n"
+
+#~ msgid "unfinished repeat count"
+#~ msgstr "contador de repetición sen rematar"
+
+#~ msgid "malformed repeat count"
+#~ msgstr "contador de repetición erróneo"
+
+#~ msgid "PATTERN is an extended regular expression (ERE).\n"
+#~ msgstr "PATRÓN é una expresión regular estendida (ERE).\n"
+
+#~ msgid "Invocation as `egrep' is deprecated; use `grep -E' instead.\n"
+#~ msgstr ""
+#~ "A invocación como `egrep' está obsoleta; utilice `grep -E' no seu lugar.\n"
+
+#~ msgid "PATTERN is a set of newline-separated fixed strings.\n"
+#~ msgstr "PATRÓN é un conxunto de cadenas fixas separadas por nova liña\n"
+
+#~ msgid "Invocation as `fgrep' is deprecated; use `grep -F' instead.\n"
+#~ msgstr ""
+#~ "A invocación como `fgrep' está obsoleta; utilice `grep -F' no seu lugar.\n"
+
+#~ msgid "PATTERN is, by default, a basic regular expression (BRE).\n"
+#~ msgstr "PATRÓN é, por omisión, unha expresión regular básica (BRE).\n"
+
+#~ msgid ""
+#~ "`egrep' means `grep -E'. `fgrep' means `grep -F'.\n"
+#~ "Direct invocation as either `egrep' or `fgrep' is deprecated.\n"
+#~ msgstr ""
+#~ "`egrep' significa `grep -E'. `fgrep' significa `grep -F'.\n"
+#~ "A invocación directa como `egrep' ou `fgrep' está obsoleta.\n"
+
+#~ msgid "lseek failed"
+#~ msgstr "fallou a chamada ao sistema `lskeek'"
+
+#~ msgid "writing output"
+#~ msgstr "escribiendo o resultado"
+
+#~ msgid "GNU Grep home page: <%s>\n"
+#~ msgstr "Páxina web de GNU grep: <%s>\n"
+
+#~ msgid "%s can only use the %s pattern syntax"
+#~ msgstr "%s só puede usar a sintaxe de patrón %s"
+
+#~ msgid ""
+#~ "in GREP_COLORS=\"%s\", the \"%s\" capacity needs a value (\"=...\"); "
+#~ "skipped"
+#~ msgstr ""
+#~ "en GREP_COLORS=\"%s\", a capacidad \"%s\" necesita un valor (\"=...\"); "
+#~ "omitido."
+
+#~ msgid ""
+#~ "in GREP_COLORS=\"%s\", the \"%s\" capacity is boolean and cannot take a "
+#~ "value (\"=%s\"); skipped"
+#~ msgstr ""
+#~ "en GREP_COLORS=\"%s\", a capacidad \"%s\" é booleana e non pode tener un "
+#~ "valor (\"=%s\"); omitido."
+
+#~ msgid "in GREP_COLORS=\"%s\", the \"%s\" capacity %s"
+#~ msgstr "en GREP_COLORS=\"%s\", a capacidade \"%s\" %s."
+
+#~ msgid ""
+#~ "stopped processing of ill-formed GREP_COLORS=\"%s\" at remaining "
+#~ "substring \"%s\""
+#~ msgstr ""
+#~ "o proceso do erróneo GREP_COLORS=\"%s\" detí­vose na subcadena \"%s\"."
+
+#~ msgid "out of memory"
+#~ msgstr "memoria esgotada"
+
+#~ msgid "Usage: %s [OPTION]... PATTERN [FILE] ...\n"
+#~ msgstr "Emprego: %s [OPCIN]... PATRN [FICHEIRO] ...\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Output control:\n"
+#~ " -m, --max-count=NUM stop after NUM matches\n"
+#~ " -b, --byte-offset print the byte offset with output lines\n"
+#~ " -n, --line-number print line number with output lines\n"
+#~ " --line-buffered flush output on every line\n"
+#~ " -H, --with-filename print the filename for each match\n"
+#~ " -h, --no-filename suppress the prefixing filename on output\n"
+#~ " --label=LABEL print LABEL as filename for standard input\n"
+#~ " -o, --only-matching show only the part of a line matching "
+#~ "PATTERN\n"
+#~ " -q, --quiet, --silent suppress all normal output\n"
+#~ " --binary-files=TYPE assume that binary files are TYPE\n"
+#~ " TYPE is 'binary', 'text', or 'without-match'\n"
+#~ " -a, --text equivalent to --binary-files=text\n"
+#~ " -I equivalent to --binary-files=without-match\n"
+#~ " -d, --directories=ACTION how to handle directories\n"
+#~ " ACTION is 'read', 'recurse', or 'skip'\n"
+#~ " -D, --devices=ACTION how to handle devices, FIFOs and sockets\n"
+#~ " ACTION is 'read' or 'skip'\n"
+#~ " -R, -r, --recursive equivalent to --directories=recurse\n"
+#~ " --include=PATTERN files that match PATTERN will be examined\n"
+#~ " --exclude=PATTERN files that match PATTERN will be skipped.\n"
+#~ " --exclude-from=FILE files that match PATTERN in FILE will be "
+#~ "skipped.\n"
+#~ " -L, --files-without-match only print FILE names containing no match\n"
+#~ " -l, --files-with-matches only print FILE names containing matches\n"
+#~ " -c, --count only print a count of matching lines per "
+#~ "FILE\n"
+#~ " -Z, --null print 0 byte after FILE name\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Control de sada:\n"
+#~ " -m, --max-count=NM parar tras NM aparicins\n"
+#~ " -b, --byte-offset amosa o desprazamento do byte coas lias de "
+#~ "sada\n"
+#~ " -n, --line-number amosa o numero de lia coas lias de sada\n"
+#~ " --line-buffered baleira-lo buffer de sada con cada lia\n"
+#~ " -H, --with-filename amosa o nome do ficheiro de cada aparicin\n"
+#~ " -h, --no-filename suprime o prefixo de nome de ficheiro na "
+#~ "sada\n"
+#~ " --label=ETIQUETA amosa-la ETIQUETA coma o nome da entrada "
+#~ "estndar\n"
+#~ " -o, --only-matching amosar s a parte da lia que encaixa co PATRN\n"
+#~ " -q, --quiet, --silent suprime toda a sada normal\n"
+#~ " --binary-files=TIPO supoer que os ficheiros binarios son TIPO\n"
+#~ " TIPO 'binary', 'text' ou 'without-match'\n"
+#~ " ('binario', 'texto', ou 'sen aparicins')\n"
+#~ " -a, --text equivalente a --binary-files=text\n"
+#~ " -I equivalente a --binary-files=without-match\n"
+#~ " -d, --directories=ACCION como trata-los directorios\n"
+#~ " ACCION 'read', 'recurse', ou 'skip'.\n"
+#~ " ('ler', 'ascender recursivamente', ou "
+#~ "'omitir')\n"
+#~ " -D, --devices=ACCIN como trata-los dispositivos, FIFOs e sockets\n"
+#~ " ACCIN 'read' ou 'skip' ('ler' ou 'omitir')\n"
+#~ " -R, -r, --recursive equivalente a --directories=recurse.\n"
+#~ " --include=PATRN hanse examina-los ficheiros que encaixen no "
+#~ "PATRN\n"
+#~ " --exclude=PATRN hanse omiti-los ficheiros que encaixen no "
+#~ "PATRN\n"
+#~ " --exclude-from=FICH hanse omiti-los ficheiros que encaixen nos "
+#~ "patrns\n"
+#~ " armacenados no FICHeiro\n"
+#~ " -L, --files-without-match s amosa os FICHEIROS sen aparicins\n"
+#~ " -l, --files-with-matches s amosa os FICHEIROS con aparicins\n"
+#~ " -c, --count s amosa o nm. de lias coincidentes por "
+#~ "FICHEIRO\n"
+#~ " -Z, --null producir un byte 0 tralo nome do FICHEIRO\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Report bugs to <bug-gnu-utils@gnu.org>.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Informe dos erros no programa a <bug-gnu-utils@gnu.org>.\n"
+#~ "Informe dos erros na traduccin a <proxecto@trasno.net>.\n"
+
+#~ msgid "unknown directories method"
+#~ msgstr "mtodo de directorios descoecido"
+
+#~ msgid "%s (GNU grep) %s\n"
+#~ msgstr "%s (GNU grep) %s\n"
+
+#~ msgid ""
+#~ "Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc.\n"
+#~ msgstr ""
+#~ "Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc.\n"
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "Isto software libre; vexa o cdigo funte polas condicins de copia. NON "
+#~ "HAI\n"
+#~ "garanta; nin sequera de COMERCIABILIDADE ou APTITUDE PARA UN FIN "
+#~ "PARTICULAR.\n"
+
+#~ msgid "The -P and -z options cannot be combined"
+#~ msgstr "As opcins -P e -z non se poden combinar"
+
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: opcin non permitida -- %c\n"
+
+#~ msgid "option %s"
+#~ msgstr "opcin %s"
+
+#~ msgid " with arg %s"
+#~ msgstr " con arg %s"
+
+#~ msgid "digits occur in two different argv-elements.\n"
+#~ msgstr "dixitos aparecen en dous argv-elementos diferentes.\n"
+
+#~ msgid "option %c\n"
+#~ msgstr "opcin %c\n"
+
+#~ msgid "option a\n"
+#~ msgstr "opcin a\n"
+
+#~ msgid "option b\n"
+#~ msgstr "opcin b\n"
+
+#~ msgid "option c with value `%s'\n"
+#~ msgstr "opcin c con valor `%s'\n"
+
+#~ msgid "option d with value `%s'\n"
+#~ msgstr "opcin d con valor `%s'\n"
+
+#~ msgid "?? getopt returned character code 0%o ??\n"
+#~ msgstr "?? getopt devolveu o cdigo de caracter 0%o ??\n"
+
+#~ msgid "non-option ARGV-elements: "
+#~ msgstr "ARGV-elementos no-opcin: "
+
+#~ msgid "you may specify only one of -E, -F, or -G"
+#~ msgstr "Debes especificar s un de -E, -F, ou -G"
+
+#~ msgid "memory exhausted\n"
+#~ msgstr "memoria esgotada\n"
diff --git a/src/grep/po/grep.pot b/src/grep/po/grep.pot
new file mode 100644
index 0000000..8b04c87
--- /dev/null
+++ b/src/grep/po/grep.pot
@@ -0,0 +1,636 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# This file is distributed under the same license as the GNU grep package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU grep 3.7\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr ""
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr ""
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr ""
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr ""
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr ""
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr ""
+
+#: lib/dfa.c:896
+msgid "unbalanced ["
+msgstr ""
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr ""
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr ""
+
+#: lib/dfa.c:1210
+msgid "unfinished \\ escape"
+msgstr ""
+
+#: lib/dfa.c:1371
+msgid "invalid content of \\{\\}"
+msgstr ""
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr ""
+
+#: lib/dfa.c:1858
+msgid "unbalanced ("
+msgstr ""
+
+#: lib/dfa.c:1975
+msgid "no syntax specified"
+msgstr ""
+
+#: lib/dfa.c:1986
+msgid "unbalanced )"
+msgstr ""
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr ""
+
+#: lib/getopt.c:278
+#, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:284
+#, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr ""
+
+#: lib/getopt.c:319
+#, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr ""
+
+#: lib/getopt.c:345
+#, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:360
+#, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:621
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr ""
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr ""
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr ""
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr ""
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr ""
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr ""
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr ""
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr ""
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr ""
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr ""
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr ""
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr ""
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr ""
+
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr ""
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr ""
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr ""
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr ""
+
+#: src/grep.c:1641
+#, c-format
+msgid "%s: binary file matches"
+msgstr ""
+
+#: src/grep.c:1679
+#, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr ""
+
+#: src/grep.c:1899
+#, c-format
+msgid "%s: input file is also the output"
+msgstr ""
+
+#: src/grep.c:1961 src/grep.c:1968
+#, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr ""
+
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr ""
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr ""
+
+#: src/grep.c:1970
+#, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+
+#: src/grep.c:1975
+#, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+
+#: src/grep.c:1981
+#, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+
+#: src/grep.c:1989
+#, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+
+#: src/grep.c:2023
+#, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+
+#: src/grep.c:2043
+#, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+
+#: src/grep.c:2052
+#, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr ""
+
+#: src/grep.c:2101
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr ""
+
+#: src/grep.c:2103
+#, c-format
+msgid "invalid matcher %s"
+msgstr ""
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr ""
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr ""
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr ""
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr ""
+
+#: src/grep.c:2829
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr ""
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr ""
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr ""
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr ""
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr ""
+
+#: src/pcresearch.c:306
+#, c-format
+msgid "%s: memory exhausted"
+msgstr ""
+
+#: src/pcresearch.c:310
+#, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr ""
+
+#: src/pcresearch.c:315
+#, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr ""
+
+#: src/pcresearch.c:319
+#, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr ""
+
+#: src/pcresearch.c:327
+#, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr ""
diff --git a/src/grep/po/he.gmo b/src/grep/po/he.gmo
new file mode 100644
index 0000000..d39a14d
--- /dev/null
+++ b/src/grep/po/he.gmo
Binary files differ
diff --git a/src/grep/po/he.po b/src/grep/po/he.po
new file mode 100644
index 0000000..5484e88
--- /dev/null
+++ b/src/grep/po/he.po
@@ -0,0 +1,813 @@
+# Hebrew messages for GNU Grep
+# Copyright (C) 2002, 2005 Free Software Foundation, Inc.
+# Eli Zaretskii <eliz@gnu.org>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: grep 2.5.1a\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2005-03-04 14:55+0200\n"
+"Last-Translator: Eli Zaretskii <eliz@gnu.org>\n"
+"Language-Team: Hebrew <eliz@gnu.org>\n"
+"Language: he\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr ""
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr ""
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr ""
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr ""
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr ""
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr ""
+
+#: lib/dfa.c:896
+#, fuzzy
+msgid "unbalanced ["
+msgstr "- ["
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr ""
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr ""
+
+#: lib/dfa.c:1210
+#, fuzzy
+msgid "unfinished \\ escape"
+msgstr "- \\ "
+
+#: lib/dfa.c:1371
+#, fuzzy
+msgid "invalid content of \\{\\}"
+msgstr " "
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr ""
+
+#: lib/dfa.c:1858
+#, fuzzy
+msgid "unbalanced ("
+msgstr "- ("
+
+#: lib/dfa.c:1975
+#, fuzzy
+msgid "no syntax specified"
+msgstr " "
+
+#: lib/dfa.c:1986
+#, fuzzy
+msgid "unbalanced )"
+msgstr "- )"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "- "
+
+#: lib/getopt.c:278
+#, fuzzy, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s - `%s' \n"
+
+#: lib/getopt.c:284
+#, fuzzy, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s - `%s' \n"
+
+#: lib/getopt.c:319
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s `%c%s' - \n"
+
+#: lib/getopt.c:345
+#, fuzzy, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s `%c%s' \n"
+
+#: lib/getopt.c:360
+#, fuzzy, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s `%s' \n"
+
+#: lib/getopt.c:621
+#, fuzzy, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s -- %c\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, fuzzy, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: -- %c\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr " "
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr ""
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr ""
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr ""
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "'"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr ""
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr " "
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr ""
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr ""
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr ""
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr ""
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, fuzzy, c-format
+msgid "Report bugs to: %s\n"
+msgstr ""
+"\n"
+".<bug-grep@gnu.org> \n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr ""
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr ""
+
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr ""
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "( )"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr " "
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr " "
+
+#: src/grep.c:1641
+#, fuzzy, c-format
+msgid "%s: binary file matches"
+msgstr " %s \n"
+
+#: src/grep.c:1679
+#, fuzzy, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr " "
+
+#: src/grep.c:1899
+#, c-format
+msgid "%s: input file is also the output"
+msgstr ""
+
+#: src/grep.c:1961 src/grep.c:1968
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "%s []... PATTERN [] : \n"
+
+#: src/grep.c:1963
+#, fuzzy, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr ". `%s --help' \n"
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr ""
+
+#: src/grep.c:1970
+#, fuzzy, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+" . , \n"
+" %s -i 'hello world' menu.h main.c :\n"
+"\n"
+" : \n"
+
+#: src/grep.c:1975
+#, fuzzy, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" PATTERN -E, --extended-regexp\n"
+" newline \" PATTERN -F, --fixed-strings\n"
+" PATTERN -E, --extended-regexp\n"
+" Perl PATTERN -P, --perl-regexp\n"
+
+#: src/grep.c:1981
+#, fuzzy, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" PATTERN- -e, --regexp=PATTERN\n"
+" FILE PATTERN -f, --file=FILE\n"
+" -i, --ignore-case\n"
+" PATTERN -w, --word-regexp\n"
+" PATTERN -x, --line-regexp\n"
+" newline- ,0- -z, --null-data\n"
+
+#: src/grep.c:1989
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+" : \n"
+" -s, --no-messages\n"
+" PATTERN- -v, --invert-match\n"
+" -V, --version\n"
+" --help\n"
+" , --mmap\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+
+#: src/grep.c:2023
+#, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+
+#: src/grep.c:2043
+#, fuzzy, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+"\n"
+" : \n"
+" NUM -B, --before-context=NUM\n"
+" NUM -A, --after-context=NUM\n"
+" NUM -C, --context=NUM\n"
+" --context=NUM- - -NUM\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN]\n"
+" `auto' ,`never' ,`always' WHEN\n"
+" (MSDOS) CR -U, --binary\n"
+" (MSDOS) CR -u, --unix-byte-offsets\n"
+"\n"
+" .`grep -F' `fgrep' .`grep -E' `egrep'\n"
+" . ,- , \n"
+" .-h , \n"
+" . 2 , 1 , 0 \n"
+
+#: src/grep.c:2052
+#, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr " "
+
+#: src/grep.c:2101
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr ""
+
+#: src/grep.c:2103
+#, fuzzy, c-format
+msgid "invalid matcher %s"
+msgstr " "
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr " - "
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr ""
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr " "
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr " - "
+
+#: src/grep.c:2829
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr ""
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr ""
+
+#: src/pcresearch.c:143
+#, fuzzy
+msgid "the -P option only supports a single pattern"
+msgstr "-P "
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr ""
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr ""
+
+#: src/pcresearch.c:306
+#, fuzzy, c-format
+msgid "%s: memory exhausted"
+msgstr " "
+
+#: src/pcresearch.c:310
+#, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr ""
+
+#: src/pcresearch.c:315
+#, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr ""
+
+#: src/pcresearch.c:319
+#, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr ""
+
+#: src/pcresearch.c:327
+#, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr ""
+
+#, fuzzy, c-format
+#~ msgid "warning: %s: %s"
+#~ msgstr "%s %s :\n"
+
+#, fuzzy
+#~ msgid "%s: option '--%s' doesn't allow an argument\n"
+#~ msgstr "%s `--%s' \n"
+
+#, fuzzy
+#~ msgid "%s: unrecognized option '--%s'\n"
+#~ msgstr "%s `--%s' - \n"
+
+#, fuzzy
+#~ msgid "%s: option '-W %s' is ambiguous\n"
+#~ msgstr "%s - `-W %s' \n"
+
+#, fuzzy
+#~ msgid "%s: option '-W %s' doesn't allow an argument\n"
+#~ msgstr "%s `-W %s' \n"
+
+#, fuzzy
+#~ msgid "%s: option '-W %s' requires an argument\n"
+#~ msgstr "%s `%s' \n"
+
+#~ msgid "unfinished repeat count"
+#~ msgstr "- "
+
+#~ msgid "malformed repeat count"
+#~ msgstr " "
+
+#~ msgid "out of memory"
+#~ msgstr " "
+
+#~ msgid "writing output"
+#~ msgstr "( )"
+
+#~ msgid "Usage: %s [OPTION]... PATTERN [FILE] ...\n"
+#~ msgstr "%s []... PATTERN [] : \n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Output control:\n"
+#~ " -m, --max-count=NUM stop after NUM matches\n"
+#~ " -b, --byte-offset print the byte offset with output lines\n"
+#~ " -n, --line-number print line number with output lines\n"
+#~ " --line-buffered flush output on every line\n"
+#~ " -H, --with-filename print the filename for each match\n"
+#~ " -h, --no-filename suppress the prefixing filename on output\n"
+#~ " --label=LABEL print LABEL as filename for standard input\n"
+#~ " -o, --only-matching show only the part of a line matching "
+#~ "PATTERN\n"
+#~ " -q, --quiet, --silent suppress all normal output\n"
+#~ " --binary-files=TYPE assume that binary files are TYPE\n"
+#~ " TYPE is 'binary', 'text', or 'without-match'\n"
+#~ " -a, --text equivalent to --binary-files=text\n"
+#~ " -I equivalent to --binary-files=without-match\n"
+#~ " -d, --directories=ACTION how to handle directories\n"
+#~ " ACTION is 'read', 'recurse', or 'skip'\n"
+#~ " -D, --devices=ACTION how to handle devices, FIFOs and sockets\n"
+#~ " ACTION is 'read' or 'skip'\n"
+#~ " -R, -r, --recursive equivalent to --directories=recurse\n"
+#~ " --include=PATTERN files that match PATTERN will be examined\n"
+#~ " --exclude=PATTERN files that match PATTERN will be skipped.\n"
+#~ " --exclude-from=FILE files that match PATTERN in FILE will be "
+#~ "skipped.\n"
+#~ " -L, --files-without-match only print FILE names containing no match\n"
+#~ " -l, --files-with-matches only print FILE names containing matches\n"
+#~ " -c, --count only print a count of matching lines per "
+#~ "FILE\n"
+#~ " -Z, --null print 0 byte after FILE name\n"
+#~ msgstr ""
+#~ "\n"
+#~ " : "
+#~ "\n"
+#~ " NUM -m, --max-count=NUM\n"
+#~ " -b, --byte-offset\n"
+#~ " -n, --line-number\n"
+#~ " --line-buffered\n"
+#~ " -H, --with-filename\n"
+#~ " -h, --no-filename\n"
+#~ " LABEL , --label=LABEL\n"
+#~ " -o, --only-matching\n"
+#~ " -q, --quiet, --silent\n"
+#~ " --binary-"
+#~ "files=HOW\n"
+#~ "'without-match' ,'text' ,'binary' HOW\n"
+#~ " --binary-files=text- - -a, --text\n"
+#~ " --binary-files=without-match- - -I\n"
+#~ " -d, --directories=HOW\n"
+#~ " 'skip' ,'recurse' ,'read' HOW\n"
+#~ " -D, --devices=HOW\n"
+#~ " 'skip' 'read' HOW\n"
+#~ " --directories=recurse- - -R, -r, --recursive\n"
+#~ " PATTERN --include=PATTERN\n"
+#~ " PATTERN --exclude=PATTERN\n"
+#~ " PATTERN FILE- --exclude-"
+#~ "from=FILE\n"
+#~ " -L, --files-without-"
+#~ "match\n"
+#~ " -l, --files-with-"
+#~ "matches\n"
+#~ " -c, --count\n"
+#~ " 0 -Z, --null\n"
+
+#~ msgid "unknown directories method"
+#~ msgstr " - "
+
+#~ msgid "%s (GNU grep) %s\n"
+#~ msgstr "%s (GNU grep) %s\n"
+
+#~ msgid ""
+#~ "Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc.\n"
+#~ msgstr ""
+#~ "Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc.\n"
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ " . , ; "
+#~ "\n"
+#~ " . - ;"
+#~ "\n"
+
+#~ msgid "The -P and -z options cannot be combined"
+#~ msgstr " -z- -P "
+
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: - -- %c\n"
diff --git a/src/grep/po/hr.gmo b/src/grep/po/hr.gmo
new file mode 100644
index 0000000..b1106eb
--- /dev/null
+++ b/src/grep/po/hr.gmo
Binary files differ
diff --git a/src/grep/po/hr.po b/src/grep/po/hr.po
new file mode 100644
index 0000000..c133fb0
--- /dev/null
+++ b/src/grep/po/hr.po
@@ -0,0 +1,976 @@
+# The Croatian translation of grep.
+# Copyright © 2016 Free Software Foundation, Inc.
+# This file is distributed under the same license as the grep package.
+#
+# bp, nekoliko noticija
+# ovo je ista verzija grep.po kao 2012. od TK. Samo je nekoliko riječi
+# izmjenjeno. Dodani su novi msgid-ovi i popravljeni su fuzzies.
+# U sljedećoj verziji bit će više izmjena, nakon konzultacije s
+# lingvistima, i hrvatskim TP članovima.
+# Zahvaljujem prijašnjim prevoditeljima, jer je na njihovom trudu,
+# napravljena i ova dopuna.
+# Matej Vela <mvela@public.srce.hr>, 1999.
+# Hrvoje Niksic <hniksic@xemacs.org>, 2002.
+# Tomislav Krznar <tomislav.krznar@gmail.com>, 2012.
+# Božidar Putanec <bozidarp@yahoo.com>, 2016-2019, 2021.
+# bp, 2016-04-03.
+msgid ""
+msgstr ""
+"Project-Id-Version: grep-3.6.27\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2021-08-09 16:49+0200\n"
+"Last-Translator: Božidar Putanec <bozidarp@yahoo.com>\n"
+"Language-Team: Croatian <lokalizacija@linux.hr>\n"
+"Language: hr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Poedit 3.0\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "nevaljani argument %s za %s"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "višeznačni argument %s za %s"
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr "Valjani argumenti su:"
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr "greška u programu"
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr "prelijevanje stȏga"
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr "greška pri pisanju"
+
+#: lib/dfa.c:896
+msgid "unbalanced ["
+msgstr "[ nema odgovarajući par"
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr "nevaljana znakovna klasa"
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr "sintaksa znakovne klase je [[:space]], ne [:space:]"
+
+#: lib/dfa.c:1210
+msgid "unfinished \\ escape"
+msgstr "nedovršena \\ escape sekvencija"
+
+#: lib/dfa.c:1371
+msgid "invalid content of \\{\\}"
+msgstr "nevaljani sadržaj u \\{\\}"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr "preveliki regularni izraz"
+
+#: lib/dfa.c:1858
+msgid "unbalanced ("
+msgstr "( nema odgovarajući par"
+
+# „zadano“ je često „default“, pa radije „navedena“ ili „imenovana“
+#: lib/dfa.c:1975
+msgid "no syntax specified"
+msgstr "sintaksa nije navedena"
+
+#: lib/dfa.c:1986
+msgid "unbalanced )"
+msgstr ") nema odgovarajući par"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "Nepoznata greška sustava"
+
+#: lib/getopt.c:278
+#, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: opcija „%s%s“ nije jednoznačna\n"
+
+#: lib/getopt.c:284
+#, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: opcija „%s%s“ nije jednoznačna; mogućnosti su:"
+
+#: lib/getopt.c:319
+#, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: neprepoznata opcija „%s%s“\n"
+
+#: lib/getopt.c:345
+#, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: opcija „%s%s“ ne dopušta argument\n"
+
+#: lib/getopt.c:360
+#, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: opcija „%s%s“ zahtijeva argument\n"
+
+#: lib/getopt.c:621
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: nevaljana opcija -- „%c“\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: opcija zahtijeva argument -- „%c“\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "nema dovoljno memorije"
+
+# lingvisti: trenutni > trenutačni
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr "nije moguće registrirati trenutni radni direktorij"
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "nije se uspjelo vratiti u početni radni direktorij"
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr "nije uspjelo postaviti deskriptor datoteke u tekst/binarni način"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "„"
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "“"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr "Uspjeh"
+
+# no match: _REG_NOMATCH, /* Didn't find a match (for regexec). */
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr "Nema podudaranja"
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr "Nevaljani regularni izraz"
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr "Nevaljani znak za razvrstavanje"
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr "Nevaljano ime za klasu znakova"
+
+# obrnuta > obratna
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr "Zaostala obratna kosa crta"
+
+# http://ihjj.hr/ referenca > referencija
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr "Nevaljana povratna referencija"
+
+# bp: fuzzy > popravljen
+# razmotri: nema para za [, [^, [:, [., ili [=
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr "[, [^, [:, [., ili [= nema odgovarajući par"
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr "( ili \\( nema odgovarajući par"
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr "\\{ nema odgovarajući par"
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr "Nevaljani sadržaj u \\{\\}"
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr "Nevaljani kraj raspona"
+
+# nedostaje memorije
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "Nema dovoljno memorije"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr "Nevaljani prethodni regularni izraz"
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr "Nedovršeni regularni izraz (preuranjeni završetak)"
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr "Preveliki regularni izraz"
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr ") ili \\) nema odgovarajući par"
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr "Nema prethodnog regularnog izraza"
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Spakirali %s (%s)\n"
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Spakirao %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr "©"
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Licencija GPLv3+: GNU GPL inačica 3 ili novija <%s>.\n"
+"Ovo je slobodan softver: slobodno ga mijenjajte i dijelite.\n"
+"NEMA JAMSTVA do granica dopuštenih zakonom.\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Napisao %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Napisali %s i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Napisali %s, %s i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Napisali %s, %s, %s\n"
+"i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Napisali %s, %s, %s,\n"
+"%s i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Napisali %s, %s, %s,\n"
+"%s, %s i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Napisali %s, %s, %s,\n"
+"%s, %s, %s i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Napisali %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Napisali %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Napisali %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s i ostali.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr ""
+"Greške u programu javite na <%s>.\n"
+"Primjedbe i pogreške u prijevodu javite na <lokalizacija@linux.hr>.\n"
+
+# prvi %s PACKAGE_PACKAGER,
+# drugi %s PACKAGE_PACKAGER_BUG_REPORTS
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "Pogreške %s javite (na engleskom, LC_ALL=C) na <%s>\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Mrežna stranica za %s: <%s>\n"
+
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr "Općenita pomoć za korištenje GNU softvera: <%s>\n"
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(standardni ulaz)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "nevaljani kontekst duljine argumenta"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "ulaz je prevelik da se prebroji"
+
+#: src/grep.c:1641
+#, c-format
+msgid "%s: binary file matches"
+msgstr "%s: binarna datoteka se podudara"
+
+#: src/grep.c:1679
+#, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "%s upozorenje: rekurzivna petlja direktorija"
+
+#: src/grep.c:1899
+#, c-format
+msgid "%s: input file is also the output"
+msgstr "%s: ulazna datoteka je ujedno i izlaz"
+
+#: src/grep.c:1961 src/grep.c:1968
+#, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "Uporaba: %s [OPCIJA]... UZORCI [DATOTEKA]...\n"
+
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "Pokušajte s „%s --help“ za pomoć i više informacija.\n"
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr "Traži UZORKE u svakoj DATOTECI.\n"
+
+#: src/grep.c:1970
+#, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"Primjer: %s -i 'hello world' menu.h main.c\n"
+"UZORCI mogu sadržavati višestruke mustre odijeljene sa znakom za novi redak "
+"(\\n).\n"
+"\n"
+"Izbor uzorka i interpretacija:\n"
+
+# engl. „string“ hrvatske mogućnosti: biseri, zrna i sl. nanizani na nit; niska.
+# Prijedlog je string > niska
+# vidi http://hjp.znanje.hr/index.php?show=search_by_id&id=eF1uXRg%3D
+# ili ostavimo string = string !
+#: src/grep.c:1975
+#, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp UZORAK je prošireni regularni izraz (ERE)\n"
+" -F, --fixed-strings UZORAK je skup stringova odvojenih\n"
+" znakom novog retka (\\n)\n"
+" -G, --basic-regexp UZORAK je osnovni regularni izraz (BRE)\n"
+" -P, --perl-regexp UZORAK je Perl regularni izraz\n"
+
+#: src/grep.c:1981
+#, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=UZORCI koristi UZORKE kao regularni izraz\n"
+" -f, --file=DATOTEKA preuzmi UZORKE iz DATOTEKE\n"
+" -i, --ignore-case zanemari veličinu slova u uzorcima i podacima\n"
+" --no-ignore-case ne zanemaruje veličinu slova (zadano)\n"
+" -w, --word-regexp UZORAK podudara samo cijele riječi\n"
+" -x, --line-regexp UZORAK podudara samo cijele redove\n"
+" -z, --null-data redak završava s 0-bajtom, a ne sa znakom novog "
+"retka\n"
+
+#: src/grep.c:1989
+#, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"Razno:\n"
+" -s, --no-messages izostavi poruke o greškama\n"
+" -v, --invert-match odabere redove koji se ne podudaraju\n"
+" -V, --version informacije o inačici ovog programa\n"
+" --help ova pomoć\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+"\n"
+"Kontrola izlaza:\n"
+" -m, --max-count=BROJ prestane nakon BROJ nađenih redaka\n"
+" -b, --byte-offset uz retke ispiše i poziciju u bajtovima\n"
+" -n, --line-number uz retke ispiše broj retka\n"
+" --line-buffered izravno ispiše svaki izlazni redak\n"
+" -H, --with-filename uz retke ispiše ime datoteke za svako "
+"podudaranje\n"
+" -h, --no-filename bez ispisa imena datoteke za svako podudaranje\n"
+" --label=OZNAKA rabi OZNAKU kao ime datoteke na standardnom "
+"ulazu\n"
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+" -o, --only-matching prikaže samo dio retka koji se podudara\n"
+" -q, --quiet, --silent izostavi svaki normalni izlaz (ništa ne ispiše)\n"
+" --binary-files=VRSTA pretpostavi binarne datoteke tipa VRSTA;\n"
+" VRSTA je „binary“, „text“ ili „without-match“\n"
+" -a, --text isto kao --binary-files=text\n"
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+" -I isto kao --binary-files=without-match\n"
+" -d, --directories=AKCIJA kako rukovati direktorijima;\n"
+" AKCIJA je „read“, „recurse“ ili „skip“\n"
+" -D, --devices=AKCIJA kako rukovati uređajima, FIFO uređajima\n"
+" i utičnicama; AKCIJA je „read“ ili „skip“\n"
+" -r, --recursive isto kao --directories=recurse\n"
+" -R, --dereference-recursive jednako, ali slijedi svaku simboličku vezu\n"
+
+# http://hjp.znanje.hr/index.php?show=kosi_oblici&id=eVxhWxI%3D
+# podudaran > koji je sukladan s čim, koji se poklapa s kim/čim
+#: src/grep.c:2023
+#, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+" --include=GLOB pretraži samo datoteke koje se podudaraju\n"
+" s GLOB-om (datoteka s uzorcima)\n"
+" --exclude=GLOB preskoči sve datoteke i direktorije koji se\n"
+" podudaraju s GLOB-om (datoteka s uzorcima)\n"
+" --exclude-from=DATOTEKA preskoči sve datoteke koje se podudaraju s\n"
+" bilo kojim uzorkom u DATOTEKA\n"
+" --exclude-dir=GLOB preskoči direktorije koji podudaraju GLOB\n"
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+" -L, --files-without-match ispiše samo imena DATOTEKA bez podudaranja\n"
+" -l, --files-with-matches ispiše samo imena DATOTEKA s podudaranjima\n"
+" -c, --count ispiše samo broj podudarnih redaka po DATOTECI\n"
+" -T, --initial-tab poravna tabove (ako je potrebno)\n"
+" -Z, --null ispiše 0-bajt nakon imena DATOTEKE\n"
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+"\n"
+"Kontrola konteksta:\n"
+" -B, --before-context=BROJ ispiše BROJ redaka konteksta koji prethode\n"
+" -A, --after-context=BROJ ispiše BROJ redaka konteksta koji slijede\n"
+" -C, --context=BROJ ispiše BROJ redaka konteksta koji prethode/"
+"slijede\n"
+
+#: src/grep.c:2043
+#, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+" -BROJ isto kao --context=BROJ\n"
+" --group-separator=SEP ispiše SEP(arator) u retku između\n"
+" podudaranja s kontekstom\n"
+" --no-group-separator ne ispiše separator za podudaranja s kontektsom\n"
+" --color[=KADA],\n"
+" --colour[=KADA] bojama istakne nađene stringove i markere;\n"
+" KADA može biti „always“ ili „never“ ili „auto“\n"
+" -U, --binary ne uklanja CqR znakove na EOL (MSDOS/Windows)\n"
+"\n"
+
+#: src/grep.c:2052
+#, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"Ako je DATOTEKA „-“ (spojnica), čita standardni ulaz. Bez DATOTEKE,\n"
+"rekurzivno čita „.“, inače čita „-“ (stdin).\n"
+"S manje od dvije navedene DATOTEKE implicira opciju -h.\n"
+"Završi sa statusom 0 ako je nađen barem jedan redak, inače s 1;\n"
+"ako ima grešaka, a nije navedena opcija -q, završi sa statusom 2.\n"
+
+# matchers su tragači (java, perl, itd.)
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "navedeni uzorci su međusobno konfliktni"
+
+#: src/grep.c:2101
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr ""
+"Kompiliranje s --disable-perl-regexp ne podržava podudaranje na Perl način"
+
+#: src/grep.c:2103
+#, c-format
+msgid "invalid matcher %s"
+msgstr "nevaljana sintaksa uzorka %s"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "nepoznata metoda uređaja"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr "upozorenje: opcija--unix-byte-offsets (-u) je zastarjela"
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "nevaljani maksimalni broj"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "nepoznata vrsta binarnih datoteka"
+
+#: src/grep.c:2829
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+"Napisali Mike Haertel i ostali; vidi\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+
+# bp: novi msgid
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr "dodjela memorije za PCRE JIT stȏg nije uspjela"
+
+# bp: novi msgid
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr "-P podržava samo unibyte i UTF-8 locale"
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr "opcija -P podržava samo jedan uzorak"
+
+# bp: novi msgid
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr "**interna greška** (nije se smjela dogoditi)"
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr "prekoračeno je ograničenje duljine retka PCRE-a"
+
+#: src/pcresearch.c:306
+#, c-format
+msgid "%s: memory exhausted"
+msgstr "%s: nema dovoljno memorije"
+
+#: src/pcresearch.c:310
+#, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr "%s: PCRE JIT stȏg je iscrpljen"
+
+#: src/pcresearch.c:315
+#, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr "%s: prekoračeno je ograničenje broja vraćanja PCRE-a"
+
+#: src/pcresearch.c:319
+#, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr "%s: prekoračeno je ograničenje broja rekurzija PCRE-a"
+
+# bp:fuzzy popravljen
+#: src/pcresearch.c:327
+#, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr "%s: interna PCRE greška: %d"
+
+#~ msgid "warning: %s: %s"
+#~ msgstr "upozorenje: %s: %s"
+
+# bp: alias > pseudonim ? > nadimak ?
+# script > skripta
+#~ msgid "warning: GREP_OPTIONS is deprecated; please use an alias or script"
+#~ msgstr ""
+#~ "Upozorenje: upotreba GREP_OPTIONS je zastarjela ; rabite alias ili script"
+
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "%s internetska stranica: <https://www.gnu.org/software/%s/>\n"
+
+#~ msgid "invalid %s%s argument '%s'"
+#~ msgstr "nevaljani %s%s argument „%s“"
+
+#~ msgid "invalid suffix in %s%s argument '%s'"
+#~ msgstr "nevaljani sufiks u %s%s argumentu „%s“"
+
+#~ msgid "%s%s argument '%s' too large"
+#~ msgstr "%s%s argument „%s“ je preveliki"
+
+#~ msgid "Mike Haertel"
+#~ msgstr "Mike Haertel"
+
+#~ msgid "internal error"
+#~ msgstr "interna greška"
+
+# http://ihjj.hr/ : dozvoljava > dopušta
+#~ msgid "%s: option '--%s' doesn't allow an argument\n"
+#~ msgstr "%s: opcija „--%s“ ne dopušta argument\n"
+
+# http://ihjj.hr/ : nepropoznat > nije prepoznat > nepoznat
+# neprepoznat: možda bi trebao biti prepoznat, ali nije
+#~ msgid "%s: unrecognized option '--%s'\n"
+#~ msgstr "%s: nepoznata opcija „--%s“\n"
+
+#~ msgid "%s: option '-W %s' is ambiguous\n"
+#~ msgstr "%s: opcija „-W %s“ nije jednoznačna\n"
+
+#~ msgid "%s: option '-W %s' doesn't allow an argument\n"
+#~ msgstr "%s: opcija „-W %s“ ne dopušta argument\n"
+
+#~ msgid "%s: option '-W %s' requires an argument\n"
+#~ msgstr "%s: opcija „-W %s“ zahtijeva argument\n"
+
+#~ msgid "PATTERN is, by default, a basic regular expression (BRE).\n"
+#~ msgstr "UZORAK je (podrazumijeva se) osnovni regularni izraz (BRE).\n"
+
+#~ msgid ""
+#~ "'egrep' means 'grep -E'. 'fgrep' means 'grep -F'.\n"
+#~ "Direct invocation as either 'egrep' or 'fgrep' is deprecated.\n"
+#~ msgstr ""
+#~ "„egrep“ znači „grep -E“. „fgrep“ znači „grep -F“.\n"
+#~ "Izravno pozivanje „egrep“ i „fgrep“ je zastarjelo.\n"
+
+#~ msgid "lseek failed"
+#~ msgstr "lseek nije uspio"
+
+# bp: novi msgid
+# escape > cause (a subsequent character or characters) to be interpreted differently.
+#~ msgid "unescaped ^ or $ not supported with -Pz"
+#~ msgstr "znakovi ^ ili $ bez prethodne ‘\\’ (unescaped) nisu podržani s -Pz"
+
+#~ msgid "PATTERN is an extended regular expression (ERE).\n"
+#~ msgstr "UZORAK je prošireni regularni izraz (ERE).\n"
+
+#~ msgid "Invocation as 'egrep' is deprecated; use 'grep -E' instead.\n"
+#~ msgstr "Pozivanje naredbom „egrep” je zastarjelo; koristite „grep -E”.\n"
+
+#~ msgid "PATTERN is a set of newline-separated fixed strings.\n"
+#~ msgstr ""
+#~ "UZORAK je skup fiksnih znakovnih nizova odvojenih znakom novog retka.\n"
+
+#~ msgid "Invocation as 'fgrep' is deprecated; use 'grep -F' instead.\n"
+#~ msgstr "Pozivanje naredbom „fgrep” je zastarjelo; koristite „grep -F”.\n"
+
+#~ msgid "GNU Grep home page: <%s>\n"
+#~ msgstr "GNU Grep početna stranica: <%s>\n"
+
+#~ msgid "%s can only use the %s pattern syntax"
+#~ msgstr "%s može koristiti samo %s sintaksu uzoraka"
+
+#~ msgid "the --mmap option has been a no-op since 2010"
+#~ msgstr "opcija --map je prazna operacija (no-op) od 2010."
+
+#~ msgid "unfinished repeat count"
+#~ msgstr "nedovren broj ponavljanja"
+
+#~ msgid "malformed repeat count"
+#~ msgstr "izoblien broj ponavljanja"
+
+#~ msgid "out of memory"
+#~ msgstr "ponestalo memorije"
+
+#~ msgid "writing output"
+#~ msgstr "piem izlaz"
+
+#~ msgid "Usage: %s [OPTION]... PATTERN [FILE] ...\n"
+#~ msgstr "Koritenje: %s [OPCIJA]... UZORAK [SPIS] ...\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Output control:\n"
+#~ " -m, --max-count=NUM stop after NUM matches\n"
+#~ " -b, --byte-offset print the byte offset with output lines\n"
+#~ " -n, --line-number print line number with output lines\n"
+#~ " --line-buffered flush output on every line\n"
+#~ " -H, --with-filename print the filename for each match\n"
+#~ " -h, --no-filename suppress the prefixing filename on output\n"
+#~ " --label=LABEL print LABEL as filename for standard input\n"
+#~ " -o, --only-matching show only the part of a line matching "
+#~ "PATTERN\n"
+#~ " -q, --quiet, --silent suppress all normal output\n"
+#~ " --binary-files=TYPE assume that binary files are TYPE\n"
+#~ " TYPE is 'binary', 'text', or 'without-match'\n"
+#~ " -a, --text equivalent to --binary-files=text\n"
+#~ " -I equivalent to --binary-files=without-match\n"
+#~ " -d, --directories=ACTION how to handle directories\n"
+#~ " ACTION is 'read', 'recurse', or 'skip'\n"
+#~ " -D, --devices=ACTION how to handle devices, FIFOs and sockets\n"
+#~ " ACTION is 'read' or 'skip'\n"
+#~ " -R, -r, --recursive equivalent to --directories=recurse\n"
+#~ " --include=PATTERN files that match PATTERN will be examined\n"
+#~ " --exclude=PATTERN files that match PATTERN will be skipped.\n"
+#~ " --exclude-from=FILE files that match PATTERN in FILE will be "
+#~ "skipped.\n"
+#~ " -L, --files-without-match only print FILE names containing no match\n"
+#~ " -l, --files-with-matches only print FILE names containing matches\n"
+#~ " -c, --count only print a count of matching lines per "
+#~ "FILE\n"
+#~ " -Z, --null print 0 byte after FILE name\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Kontrola izlaza:\n"
+#~ " -m, --max-count=BROJ zaustavi se nakon BROJA preklapanja\n"
+#~ " -b, --byte-offset ispii bajtovni offset uz brojeve linija\n"
+#~ " -n, --line-number ispii brojeve linija uz izlazne linije\n"
+#~ " --line-buffered poalji izlaz nakon svakog reda\n"
+#~ " -H, --with-filename ispii naziv spisa pri svakom poklapanju\n"
+#~ " -h, --no-filename ne ispisuj naziv spisa na izlazu\n"
+#~ " --label=LABELA ispii LABELU kao naziv spisa za standardni "
+#~ "izlaz\n"
+#~ " -o, --only-matching prikai samo dio retka koji se preklapa s "
+#~ "UZORKOM\n"
+#~ " -q, --quiet, --silent zatomi sav normalan izlaz\n"
+#~ " --binary-files=TIP pretpostavi da su binarni spisi TIPA\n"
+#~ " TIP je 'binary', 'text' ili 'without-match'\n"
+#~ " -a, --text ekvivalentno --binary-files=text\n"
+#~ " -I ekvivalentno --binary-files=without-match\n"
+#~ " -d, --directories=RADNJA to initi s direktorijima\n"
+#~ " RADNJA je 'read' (itaj), "
+#~ "'recurse' (rekurzivno\n"
+#~ " ui) ili 'skip' (preskoi)\n"
+#~ " -D, --devices=RADNJA to initi s deviceovima, FIFO-ima i socketima\n"
+#~ " RADNJA je 'read' (itaj) ili 'skip' (preskoi)\n"
+#~ " -R, -r, --recursive ekvivalentno --directories=recurse\n"
+#~ " --include=UZORAK obradi spise koji se poklapaju s UZORKOM\n"
+#~ " --exclude=UZORAK preskoi spise koji se poklapaju s UZORKOM\n"
+#~ " --exclude-from=SPIS preskoi spise koji se poklapaju s UZORKOM u "
+#~ "SPISU\n"
+#~ " -L, --files-without-match ispii samo nazive SPISA koji se nisu "
+#~ "poklopili\n"
+#~ " -l, --files-with-matches ispii samo nazive SPISA koji sadre "
+#~ "podudarnosti\n"
+#~ " -c, --count ispii samo broj podudarnih linija po SPISU\n"
+#~ " -Z, --null ispii 0-bajt nakon naziva SPISA\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Report bugs to <bug-gnu-utils@gnu.org>.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Bugove prijavljujte na <bug-gnu-utils@gnu.org>.\n"
+
+#~ msgid "unknown directories method"
+#~ msgstr "nepoznata metoda za direktorije"
+
+#~ msgid "%s (GNU grep) %s\n"
+#~ msgstr "%s (GNU grep) %s\n"
+
+#~ msgid ""
+#~ "Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc.\n"
+#~ msgstr ""
+#~ "Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc.\n"
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "Ovo je slobodan program; za uvjete kopiranja pogledajte izvorni kod. "
+#~ "NEMA\n"
+#~ "jamstva; ak ni za TRGOVINSKU PRIKLADNOST ili ODGOVARANJE ODREENOJ SVRSI.\n"
+
+#~ msgid "The -P and -z options cannot be combined"
+#~ msgstr "Opcije -P i -z ne idu zajedno"
+
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: nedoputena opcija -- %c\n"
diff --git a/src/grep/po/hu.gmo b/src/grep/po/hu.gmo
new file mode 100644
index 0000000..0244224
--- /dev/null
+++ b/src/grep/po/hu.gmo
Binary files differ
diff --git a/src/grep/po/hu.po b/src/grep/po/hu.po
new file mode 100644
index 0000000..9e633d2
--- /dev/null
+++ b/src/grep/po/hu.po
@@ -0,0 +1,838 @@
+# Hungarian translation for grep.
+# Copyright (C) 2002, 2009, 2010, 2014, 2015, 2016, 2017, 2019 Free Software Foundation, Inc.
+# This file is distributed under the same license as the grep package.
+#
+# Emese Kovács <emese@instantweb.hu>, 2002, 2010.
+# Gabor Kelemen <kelemeng@gnome.hu>, 2009, 2010, 2014, 2016, 2017.
+# Balázs Úr <ur.balazs@fsf.hu>, 2014, 2015, 2019.
+msgid ""
+msgstr ""
+"Project-Id-Version: grep 3.1.48\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2019-11-23 22:33+0100\n"
+"Last-Translator: Balázs Úr <ur.balazs@fsf.hu>\n"
+"Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
+"Language: hu\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"X-Generator: Lokalize 19.04.3\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "a(z) %s argumentum érvénytelen a következőhöz: %s"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "a(z) „%s” argumentum nem egyértelmű a következőhöz: „%s”"
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr "Az érvényes argumentumok a következők:"
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr "programhiba"
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr "verem túlcsordulás"
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr "íráshiba"
+
+#: lib/dfa.c:896
+msgid "unbalanced ["
+msgstr "kiegyensúlyozatlan ["
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr "érvénytelen karakterosztály"
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr "a karakterosztály szintaxisa [[:space:]], nem [:space:]"
+
+#: lib/dfa.c:1210
+msgid "unfinished \\ escape"
+msgstr "befejezetlen \\ escape"
+
+#: lib/dfa.c:1371
+msgid "invalid content of \\{\\}"
+msgstr "a \\{\\} tartalma érvénytelen"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr "a reguláris kifejezés túl nagy"
+
+#: lib/dfa.c:1858
+msgid "unbalanced ("
+msgstr "kiegyensúlyozatlan ("
+
+#: lib/dfa.c:1975
+msgid "no syntax specified"
+msgstr "nincs szintaxis megadva"
+
+#: lib/dfa.c:1986
+msgid "unbalanced )"
+msgstr "kiegyensúlyozatlan )"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "Ismeretlen rendszerhiba"
+
+#: lib/getopt.c:278
+#, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: a(z) „%s%s” kapcsoló nem egyértelmű\n"
+
+#: lib/getopt.c:284
+#, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: a(z) „%s%s” kapcsoló nem egyértelmű, lehetőségek:"
+
+#: lib/getopt.c:319
+#, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: a(z) „%s%s” kapcsoló ismeretlen\n"
+
+#: lib/getopt.c:345
+#, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: a(z) „%s%s” kapcsoló nem enged meg argumentumot\n"
+
+#: lib/getopt.c:360
+#, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: a(z) „%s%s” kapcsolóhoz argumentum szükséges\n"
+
+#: lib/getopt.c:621
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: érvénytelen kapcsoló -- „%c”\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: a kapcsoló egy argumentumot igényel -- „%c”\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "elfogyott a memória"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr "az aktuális munkakönyvtár feljegyzése meghiúsult"
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "a visszatérés meghiúsult a kiinduló munkakönyvtárba"
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr "nem sikerült beállítani a fájlleíró szöveges/bináris módját"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "„"
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "”"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr "Sikerült"
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr "Nincs találat"
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr "Érvénytelen reguláris kifejezés"
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr "Érvénytelen leválogatási karakter"
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr "Érvénytelen karakterosztálynév"
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr "Záró visszaper"
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr "Érvénytelen visszahivatkozás"
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr "Pár nélküli [, [^, [:, [., vagy [="
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr "Pár nélküli ( vagy \\("
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr "Pár nélküli \\{"
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr "A \\{\\} tartalma érvénytelen"
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr "Érvénytelen tartományvég"
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "Elfogyott a memória"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr "Érvénytelen megelőző reguláris kifejezés"
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr "A reguláris kifejezés túl korán véget ért"
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr "A reguláris kifejezés túl nagy"
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr "Pár nélküli ) vagy \\)"
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr "Nincs megelőző reguláris kifejezés"
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Csomagolta: %s (%s)\n"
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Csomagolta: %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr "©"
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, fuzzy, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"\n"
+"A licenc GPLv3+: a GNU GPL 3. vagy újabb változata <https://gnu.org/licenses/"
+"gpl.html>\n"
+"Ez egy szabad szoftver, terjesztheti és/vagy módosíthatja.\n"
+"NINCS GARANCIA, a törvény által engedélyezett mértékig.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Írta %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Írta %s és %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Írta %s, %s, és %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Írta %s, %s, %s,\n"
+"és %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Írta %s, %s, %s,\n"
+"%s, és %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Írta %s, %s, %s,\n"
+"%s, %s, és %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Írta %s, %s, %s,\n"
+"%s, %s, %s, és %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Írta %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"és %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Írta %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, és %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Írta %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, és mások.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, fuzzy, c-format
+msgid "Report bugs to: %s\n"
+msgstr ""
+"\n"
+"A hibák a(z) %s címen jelenthetők.\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "A(z) %s hibái a(z) %s címen jelenthetők.\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "A(z) %s honlapja: <%s>\n"
+
+#: lib/version-etc.c:260
+#, fuzzy, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr ""
+"Általános segítség a GNU szoftverek használatához: <https://www.gnu.org/"
+"gethelp/>\n"
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(szabványos bemenet)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "érvénytelen szövegkörnyezethossz argumentum"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "a bemenet túl nagy a megszámláláshoz"
+
+#: src/grep.c:1641
+#, fuzzy, c-format
+msgid "%s: binary file matches"
+msgstr "%s bináris fájl illeszkedik\n"
+
+#: src/grep.c:1679
+#, fuzzy, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "rekurzív könyvtárhurok"
+
+#: src/grep.c:1899
+#, fuzzy, c-format
+msgid "%s: input file is also the output"
+msgstr "%s bemeneti fájl a kimenet is"
+
+#: src/grep.c:1961 src/grep.c:1968
+#, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "Használat: %s [KAPCSOLÓ]… MINTÁK [FÁJL]…\n"
+
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "További információkért adja ki a(z) „%s --help” parancsot.\n"
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr "A MINTÁK keresése minden FÁJLBAN.\n"
+
+#: src/grep.c:1970
+#, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"Példa: %s -i 'szia világ' menu.h main.c\n"
+"A MINTÁK tartalmazhat több mintát új sorokkal elválasztva.\n"
+"\n"
+"Minta kiválasztása és értelmezése:\n"
+
+#: src/grep.c:1975
+#, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp a MINTÁK kiterjesztett reguláris kifejezések\n"
+" -F, --fixed-strings a MINTÁK karakterláncok\n"
+" -G, --basic-regexp a MINTÁK alapvető reguláris kifejezések\n"
+" -P, --perl-regexp a MINTÁK Perl reguláris kifejezések\n"
+
+#: src/grep.c:1981
+#, fuzzy, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=MINTÁK a MINTÁK használata illesztésre\n"
+" -f, --file=FÁJL a MINTÁK beolvasása a FÁJLBÓL\n"
+" -i, --ignore-case a kis- és nagybetűk megegyeznek\n"
+" -w, --word-regexp csak egész szavakra illesztés\n"
+" -x, --line-regexp csak egész sorokra illesztés\n"
+" -z, --null-data az adat sorai 0 bájtra végződnek, nem újsorra\n"
+
+#: src/grep.c:1989
+#, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"Egyéb:\n"
+" -s, --no-messages hibaüzenetek elnémítása\n"
+" -v, --invert-match a nem illeszkedő sorok kiválogatása\n"
+" -V, --version verzióinformációk kiírása és kilépés\n"
+" --help ezen súgó kiírása és kilépés\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+"\n"
+"Kimenet beállításai:\n"
+" -m, --max-count=SZÁM megáll SZÁM kiválasztott sor után\n"
+" -b, --byte-offset a kimenetben szerepel a sor helye is "
+"(bájteltolás)\n"
+" -n, --line-number a kimenetben szerepel a sor száma is\n"
+" --line-buffered kimenet kiürítése minden sor után\n"
+" -H, --with-filename fájlnév kiírása a kimeneti sorokkal\n"
+" -h, --no-filename a kimenetbe nem írja ki a fájlnév előtagot\n"
+" --label=CÍMKE a CÍMKE kiírása fájlnévként a szabványos "
+"bemenet\n"
+" használatakor\n"
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+" -o, --only-matching az illeszkedő soroknak csak a nem üres részeit\n"
+" jelenítse meg\n"
+" -q, --quiet, --silent minden szokványos kimenet elhagyása\n"
+" --binary-files=TÍPUS a bináris fájlokat adott TÍPUSÚNAK veszi, a "
+"TÍPUS\n"
+" a „binary”, „text” vagy „without-match” "
+"egyike\n"
+" -a, --text ugyanaz, mint a --binary-files=text\n"
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+" -I ugyanaz, mint a --binary-files=without-match\n"
+" -d, --directories=MŰVELET mi történjen a könyvtárakkal; a MŰVELET\n"
+" a „read”, „recurse” vagy „skip” egyike\n"
+" -D, --devices=MŰVELET mi történjen az eszközökkel, FIFO-kkal és\n"
+" foglalatokkal, a MŰVELET a „read” vagy „skip”\n"
+" egyike\n"
+" -r, --recursive ugyanaz, mint a --directories=recurse\n"
+" -R, --dereference-recursive hasonló, de követi az összes szimlinket\n"
+
+#: src/grep.c:2023
+#, fuzzy, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+" --include=GLOB csak a GLOBRA (fájlmintára) illeszkedő fájlok\n"
+" keresése\n"
+" --exclude=GLOB a GLOBRA (fájlmintára) illeszkedő fájlok és\n"
+" könyvtárak kihagyása\n"
+" --exclude-from=FÁJL a FÁJLBAN található fájlmintákra illeszkedő\n"
+" fájlok kihagyása\n"
+" --exclude-dir=GLOB a GLOBRA (fájlmintára) illeszkedő könyvtárak\n"
+" kihagyása\n"
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+" -L, --files-without-match csak a kiválasztott sorok nélküli fájlnevek "
+"kiírása\n"
+" -l, --files-with-matches csak a kiválasztott sorokat tartalmazó "
+"fájlnevek\n"
+" kiírása\n"
+" -c, --count csak a kiválasztott sorok számának kiírása, "
+"FÁJLONKÉNT\n"
+" -T, --initial-tab sorok feltöltése tabokkal (ha szükséges)\n"
+" -Z, --null 0 bájt írása a FÁJLNÉV után\n"
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+"\n"
+"Szövegkörnyezet beállításai:\n"
+" -B, --before-context=SZÁM SZÁM db. sor kiírása a találat előtti "
+"környezetből\n"
+" -A, --after-context=SZÁM SZÁM db. sor kiírása a találat utáni "
+"környezetből\n"
+" -C, -- context=SZÁM SZÁM darab sor kiírása a környezetből\n"
+
+#: src/grep.c:2043
+#, fuzzy, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+" -SZÁM ugyanaz, mint a --context=SZÁM\n"
+" --color[=EKKOR],\n"
+" --colour[=EKKOR] az illeszkedő karakterláncot beszínezi\n"
+" az EKKOR lehet „always”, „never” vagy „auto”\n"
+" -U, --binary nem vágja le a CR karaktereket sor végén\n"
+" (MSDOS/Windows)\n"
+"\n"
+
+#: src/grep.c:2052
+#, fuzzy, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"Ha a FÁJL a „-”, akkor a szabványos bemenetről olvas. Ha nincs megadva "
+"FÁJL,\n"
+"rekurzív működéskor a „.” egyébként a „-” olvasása. Kettőnél kevesebb FÁJL\n"
+"megadásakor a -h kapcsolót feltételezi. A kilépési állapot 0, ha bármely "
+"sor\n"
+"(vagy fájl a -L kapcsolónál) kiválasztásra kerül, egyébként 1. Ha hiba\n"
+"történt és a -q nincs megadva, akkor a kilépési állapot 2.\n"
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "ütköző illesztők lettek megadva"
+
+#: src/grep.c:2101
+#, fuzzy
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr ""
+"a -P kapcsoló támogatása nincs belefordítva ebbe a --disable-perl-regexp "
+"binárisba"
+
+#: src/grep.c:2103
+#, c-format
+msgid "invalid matcher %s"
+msgstr "érvénytelen illesztő: %s"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "ismeretlen eszközmódszer"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr ""
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "érvénytelen maximális szám"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "ismeretlen bináris fájl típus"
+
+#: src/grep.c:2829
+#, fuzzy
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr "mások, lásd: <https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>"
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr "nem sikerült memóriát foglalni a PCRE JIT veremnek"
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr "a -P csak unibyte és UTF-8 területi beállításokat támogat"
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr "a -P kapcsoló csak egy mintát támogat"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr "belső hiba (soha nem szabadna előfordulnia)"
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr "a PCRE sorhossza túllépve"
+
+#: src/pcresearch.c:306
+#, fuzzy, c-format
+msgid "%s: memory exhausted"
+msgstr "elfogyott a memória"
+
+#: src/pcresearch.c:310
+#, fuzzy, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr "kifogyott a PCRE JIT verem"
+
+#: src/pcresearch.c:315
+#, fuzzy, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr "a PCRE visszakövetési korlátja túllépve"
+
+#: src/pcresearch.c:319
+#, fuzzy, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr "a PCRE visszakövetési korlátja túllépve"
+
+#: src/pcresearch.c:327
+#, fuzzy, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr "belső PCRE hiba: %d"
+
+#, c-format
+#~ msgid "warning: GREP_OPTIONS is deprecated; please use an alias or script"
+#~ msgstr ""
+#~ "figyelem: a GREP_OPTIONS elavult; használjon álnevet vagy parancsfájlt"
+
+#, c-format
+#~ msgid "warning: %s: %s"
+#~ msgstr "figyelmeztetés: %s: %s"
+
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "A %s honlapja: <https://www.gnu.org/software/%s/>\n"
+
+#~ msgid "invalid %s%s argument '%s'"
+#~ msgstr "érvénytelen %s%s argumentum: „%s”"
+
+#~ msgid "invalid suffix in %s%s argument '%s'"
+#~ msgstr "érvénytelen utótag a(z) %s%s argumentumban: „%s”"
+
+#~ msgid "%s%s argument '%s' too large"
+#~ msgstr "%s%s: a(z) „%s” argumentum túl nagy"
+
+#~ msgid "Mike Haertel"
+#~ msgstr "Mike Haertel"
+
+#~ msgid "internal error"
+#~ msgstr "belső hiba"
+
+#~ msgid "%s: option '--%s' doesn't allow an argument\n"
+#~ msgstr "%s: a(z) „--%s” kapcsoló nem enged meg argumentumot\n"
+
+#~ msgid "%s: unrecognized option '--%s'\n"
+#~ msgstr "%s: a(z) „--%s” kapcsoló ismeretlen\n"
+
+#~ msgid "%s: option '-W %s' is ambiguous\n"
+#~ msgstr "%s: a „-W %s” kapcsoló nem egyértelmű\n"
+
+#~ msgid "%s: option '-W %s' doesn't allow an argument\n"
+#~ msgstr "%s: a „-W %s” kapcsoló nem enged meg argumentumot\n"
+
+#~ msgid "%s: option '-W %s' requires an argument\n"
+#~ msgstr "%s: a(z) „-W%s” kapcsolóhoz argumentum szükséges\n"
+
+#~ msgid "lseek failed"
+#~ msgstr "az lseek meghiúsult"
+
+#~ msgid "PATTERN is, by default, a basic regular expression (BRE).\n"
+#~ msgstr "A MINTA egy alapszintű reguláris kifejezés (BRE).\n"
+
+#~ msgid ""
+#~ "'egrep' means 'grep -E'. 'fgrep' means 'grep -F'.\n"
+#~ "Direct invocation as either 'egrep' or 'fgrep' is deprecated.\n"
+#~ msgstr ""
+#~ "Az „egrep” jelentése „grep -E”. Az „fgrep” jelentése „grep -F”.\n"
+#~ "A közvetlen hívás „egrep” vagy „fgrep” formában elavult.\n"
+
+#~ msgid "unescaped ^ or $ not supported with -Pz"
+#~ msgstr "a nem escapelt ^ vagy $ nem támogatott a -Pz kapcsolóval"
+
+#~ msgid "GNU Grep home page: <%s>\n"
+#~ msgstr "A GNU Grep honlapja: <%s>\n"
+
+#~ msgid "invalid UTF-8 byte sequence in input"
+#~ msgstr "érvénytelen UTF-8 bájtsorozat a bemenetben"
+
+#~ msgid "PATTERN is an extended regular expression (ERE).\n"
+#~ msgstr "A MINTA egy bővített reguláris kifejezés (ERE).\n"
+
+#~ msgid "Invocation as 'egrep' is deprecated; use 'grep -E' instead.\n"
+#~ msgstr ""
+#~ "A hívás „egrep” formában elavult, használja helyette a „grep -E” alakot.\n"
+
+#~ msgid "PATTERN is a set of newline-separated fixed strings.\n"
+#~ msgstr "A MINTA egy újsorokkal elválasztott rögzített karakterlánc.\n"
+
+#~ msgid "Invocation as 'fgrep' is deprecated; use 'grep -F' instead.\n"
+#~ msgstr ""
+#~ "A hívás „fgrep” formában elavult, használja helyette a „grep -F” alakot.\n"
+
+#~ msgid "%s can only use the %s pattern syntax"
+#~ msgstr "a(z) %s csak a(z) %s mintaszintaxist tudja használni"
diff --git a/src/grep/po/id.gmo b/src/grep/po/id.gmo
new file mode 100644
index 0000000..3ff2def
--- /dev/null
+++ b/src/grep/po/id.gmo
Binary files differ
diff --git a/src/grep/po/id.po b/src/grep/po/id.po
new file mode 100644
index 0000000..291b05e
--- /dev/null
+++ b/src/grep/po/id.po
@@ -0,0 +1,749 @@
+# Pesan bahasa indonesia untuk grep
+# Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+# This file is distributed under the same license as the grep package.
+# Tedi Heriyanto <tedi_h@gmx.net>, 1999, 2000, 2001, 2002.
+# Arif E. Nugroho <arif_endro@yahoo.com>, 2008, 2009, 2010, 2011, 2012, 2013, 2014.
+# Andika Triwidada <andika@gmail.com>, 2018, 2020, 2021.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: grep 3.6.27\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2021-08-10 10:35+0700\n"
+"Last-Translator: Andika Triwidada <andika@gmail.com>\n"
+"Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
+"Language: id\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"X-Generator: Poedit 2.4.3\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "argumen %s yang tidak valid untuk %s"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "argumen %s ambigu untuk %s"
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr "Argumen yang valid adalah:"
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr "kesalahan program"
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr "stack overflow"
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr "kesalahan tulis"
+
+#: lib/dfa.c:896
+msgid "unbalanced ["
+msgstr "[ tidak seimbang"
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr "kelas karakter tidak valid"
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr "sintaks kelas karakter adalah [[:space:]], bukan [:space:]"
+
+#: lib/dfa.c:1210
+msgid "unfinished \\ escape"
+msgstr "escape \\ tidak selesai"
+
+#: lib/dfa.c:1371
+msgid "invalid content of \\{\\}"
+msgstr "isi dari \\{\\} tidak valid"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr "ekspresi reguler terlalu besar"
+
+#: lib/dfa.c:1858
+msgid "unbalanced ("
+msgstr "( tidak seimbang"
+
+#: lib/dfa.c:1975
+msgid "no syntax specified"
+msgstr "tidak ada sintaks yang dinyatakan"
+
+#: lib/dfa.c:1986
+msgid "unbalanced )"
+msgstr ") tidak seimbang"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "Kesalahan sistem tidak dikenal"
+
+#: lib/getopt.c:278
+#, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: opsi '%s%s' ambigu\n"
+
+#: lib/getopt.c:284
+#, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: opsi '%s%s' ambigu; kemungkinan:"
+
+#: lib/getopt.c:319
+#, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: opsi tidak dikenal '%s%s'\n"
+
+#: lib/getopt.c:345
+#, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: opsi '%s%s' tidak mengizinkan sebuah argumen\n"
+
+#: lib/getopt.c:360
+#, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: opsi '%s%s' membutuhkan sebuah argumen\n"
+
+#: lib/getopt.c:621
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: opsi tidak valid -- %c\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: opsi membutuhkan sebuah argumen -- %c\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "kehabisan memori"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr "tidak bisa merekam direktori kerja sekarang"
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "gagal kembali ke direktori kerja sekarang"
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr "gagal menata mode teks/biner descriptor berkas"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "'"
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "'"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr "Sukses"
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr "Tak ada yang cocok"
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr "Ekspresi reguler tidak valid"
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr "Karakter kolasi tidak valid"
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr "Nama kelas karakter tidak valid"
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr "Kelebihan backslash"
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr "Referensi balik tidak valid"
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr "[, [^, [:, [., atau [= tanpa pasangan"
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr "( atau \\( tanpa pasangan"
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr "\\{ tanpa pasangan"
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr "Isi dari \\{\\} tidak valid"
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr "Akhir rentang tidak valid"
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "Kehabisan memori"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr "Ekspresi reguler yang mendahului tidak valid"
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr "Akhir dini dari ekspresi reguler"
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr "Ekspresi reguler terlalu besar"
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr ") atau \\) tanpa pasangan"
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr "Tidak ada ekspresi reguler sebelumnya"
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Dipaketkan oleh %s (%s)\n"
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Dipaketkan oleh %s \n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr "(C)"
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Lisensi GPLv3+; GNU GPL versi 3 atau lebih lanjut <%s>.\n"
+"Ini adalah aplikasi bebas; Anda bebas untuk mengubah dan "
+"meredistribusikannya.\n"
+"TIDAK ADA GARANSI disini, sampai batas yang diijinkan oleh hukum yang "
+"berlaku.\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Ditulis oleh %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Ditulis oleh %s dan %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Ditulis oleh %s, %s, and %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Ditulis oleh %s, %s, %s,\n"
+"dan %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Ditulis oleh %s, %s, %s,\n"
+"%s, dan %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Ditulis oleh %s, %s, %s,\n"
+"%s, %s, dan %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Ditulis oleh %s, %s, %s,\n"
+"%s, %s, %s, dan %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Ditulis oleh %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"dan %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Ditulis oleh %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, dan %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Ditulis oleh %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, dan yang lain.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr "Laporkan kutu ke: %s\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "Laporkan kutu %s ke: %s\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Laman web %s: <%s>\n"
+
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr "Bantuan umum menggunakan aplikasi GNU: <%s>\n"
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(masukan standar)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "argumen panjang konteks tidak valid"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "masukan terlalu besar untuk dihitung"
+
+#: src/grep.c:1641
+#, c-format
+msgid "%s: binary file matches"
+msgstr "%s: berkas biner cocok"
+
+#: src/grep.c:1679
+#, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "%s: peringatan: perulangan direktori rekursif"
+
+#: src/grep.c:1899
+#, c-format
+msgid "%s: input file is also the output"
+msgstr "%s: berkas masukan juga sebagai keluaran"
+
+#: src/grep.c:1961 src/grep.c:1968
+#, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "Penggunaan: %s [OPSI]... POLA [BERKAS]...\n"
+
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "Coba '%s --help' untuk informasi lebih lanjut.\n"
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr "Cari POLA dalam setiap BERKAS.\n"
+
+#: src/grep.c:1970
+#, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"Contoh: %s -i 'hello world' menu.h main.c\n"
+"POLA bisa memuat beberapa pola yang dipisah oleh baris baru.\n"
+"\n"
+"Seleksi dan interpretasi pola:\n"
+
+#: src/grep.c:1975
+#, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp POLA adalah ekspresi reguler diperluas\n"
+" -F, --fixed-string POLA adalah string\n"
+" -G, --basic-regexp POLA adalah ekspresi reguler dasar\n"
+" -P, --perl-regexp POLA adalah sebuah ekspresi reguler Perl\n"
+
+#: src/grep.c:1981
+#, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=POLA gunakan POLA untuk pencocokan\n"
+" -f, --file=BERKAS dapatkan POLA dari BERKAS\n"
+" -i, --ignore-case abaikan perbedaan besar kecil huruf dalam pola "
+"dan data\n"
+" --no-ignore-case jangan abaikan perbedaan besar kecil huruf "
+"(baku)\n"
+" -w, --word-regexp paksa POLA hanya untuk pencocokan dengan "
+"keseluruhan kata\n"
+" -x, --line-regexp paksa POLA hanya untuk pencocokan dengan "
+"keseluruhan baris\n"
+" -z, --null-data baris data berakhir dengan byte 0, bukan baris-"
+"baru\n"
+"\n"
+
+#: src/grep.c:1989
+#, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"Lain-lain:\n"
+" -s, --no-messages sembunyikan pesan kesalahan\n"
+" -v, --invert-match pilih baris-baris yang tidak sesuai\n"
+" -V, --version tampilkan informasi versi dan keluar\n"
+" --help tampilkan bantuan ini dan keluar\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+"\n"
+"Kendali keluaran:\n"
+" -m, --max-count=NUM berhenti setelah NUM kecocokan\n"
+" -b, --byte-offset cetak ofset byte dengan baris-baris keluaran\n"
+" -n, --line-number cetak nomor baris dengan baris-baris keluaran\n"
+" --line-buffered gelontor keluaran pada setiap baris\n"
+" -H, --with-filename cetak nama berkas dengan baris-baris keluaran\n"
+" -h, --no-filename sembunyikan prefiks nama berkas pada keluaran\n"
+" --label=LABEL pakai LABEL sebagai prefiks nama berkas masukan "
+"standar\n"
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+" -o, --only-matching hanya tampilkan bagian dari baris yang cocok\n"
+" -q, --quiet, --silent sembunyikan semua keluaran normal\n"
+" --binary-files=TIPE asumsikan bahwa berkas biner adalah TIPE;\n"
+" TIPE adalah 'binary', 'text', atau 'without-"
+"match'\n"
+" -a, --text ekuivalen dengan --binary-files=text\n"
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+" -I ekuivalen dengan --binary-files=without-match\n"
+" -d, --directories=AKSI bagaimana menangani direktori;\n"
+" AKSI adalah 'read', 'recurse', atau 'skip'\n"
+" -D, --devices=AKSI bagaimana menangani peranti, FIFO, dan soket;\n"
+" AKSI adalah 'read' atau 'skip'\n"
+" -r, --recursive seperti --directories=recurse\n"
+" -R, --dereference-recursive serupa, tapi ikut semua symlink\n"
+
+#: src/grep.c:2023
+#, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+" --include=GLOB hanya cari berkas yang cocok dengan GLOB (suatu "
+"pola berkas)\n"
+" --exclude=GLOB lewati berkas yang cocok dengan GLOB\n"
+" --exclude-from=BERKAS lewati berkas yang cocok dengan sebarang pola "
+"dari BERKAS\n"
+" --exclude-dir=GLOB lewati direktori yang cocok dengan GLOB\n"
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+" -L, --files-without-match hanya cetak nama BERKAS yang tidak memuat baris "
+"yang cocok\n"
+" -l, --files-with-matches hanya cetak nama BERKAS dengan baris yang "
+"cocok\n"
+" -c, --count hanya cetak cacah baris yang cocok per BERKAS\n"
+" -T, --initial-tab jadikan tab sejajar (bila diperlukan)\n"
+" -Z, --null cetak byte 0 setelah nama BERKAS\n"
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+"\n"
+"Kendali konteks:\n"
+" -B, --before-context=NUM cetak NUM baris yang mendahului konteks\n"
+" -A, --after-context=NUM cetak NUM baris yang mengikuti konteks\n"
+" -C, --context=NUM cetak NUM baris konteks keluaran\n"
+
+#: src/grep.c:2043
+#, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+" -NUM sama seperti --context=NUM\n"
+" --group-separator=SEP cetak SEP pada baris antara kecocokan dengan "
+"konteks\n"
+" --no-group-separator jangan cetak pemisah untuk kecocokan dengan "
+"konteks\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] gunakan penanda untuk membedakan string yang "
+"cocok\n"
+" WHEN dapat berupa 'always', 'never', atau "
+"'auto'\n"
+" -U, --binary jangan hapus karakter CR di EOL (MSDOS)\n"
+"\n"
+
+#: src/grep.c:2052
+#, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"Jika BERKAS adalah '-', baca masukan standar. Tanpa BERKAS, baca '.'\n"
+"bila rekursif, '-' jika tidak. Dengan kurang dari dua BERKAS, asumsikan -"
+"h.\n"
+"Status keluar adalah 0 jika baris apa pun dipilih, 1 jika tidak;\n"
+"jika ada kesalahan apapun dan opsi -q tidak diberikan, status keluar adalah "
+"2.\n"
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "pencocok yang bertentangan dispesifikasikan"
+
+#: src/grep.c:2101
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr "Pencocokan Perl tidak didukung dalam suatu build --disable-perl-regexp"
+
+#: src/grep.c:2103
+#, c-format
+msgid "invalid matcher %s"
+msgstr "pencocok tidak valid %s"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "metode peranti tidak dikenal"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr "peringatan: --unix-byte-offsets (-u) usang"
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "cacah maks tidak valid"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "tipe berkas biner tidak dikenal"
+
+#: src/grep.c:2829
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+"Ditulis oleh Mike Haertel dan lainnya, lihat\n"
+"<http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr "gagal mengalokasikan memori untuk stack JIT PCRE"
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr "-P hanya mendukung unibyte dan locale UTF-8"
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr "opsi -P hanya mendukung sebuah pola tunggal"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr "kesalahan internal (mestinya tidak pernah terjadi)"
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr "melampaui batas panjang baris PCRE"
+
+#: src/pcresearch.c:306
+#, c-format
+msgid "%s: memory exhausted"
+msgstr "%s: kehabisan memori"
+
+#: src/pcresearch.c:310
+#, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr "%s: stack JIT PCRE habis"
+
+#: src/pcresearch.c:315
+#, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr "%s: melampaui batas backtrack PCRE"
+
+#: src/pcresearch.c:319
+#, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr "%s: melampaui batas rekursi PCRE"
+
+#: src/pcresearch.c:327
+#, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr "%s: kesalahan PCRE internal: %d"
diff --git a/src/grep/po/insert-header.sin b/src/grep/po/insert-header.sin
new file mode 100644
index 0000000..b26de01
--- /dev/null
+++ b/src/grep/po/insert-header.sin
@@ -0,0 +1,23 @@
+# Sed script that inserts the file called HEADER before the header entry.
+#
+# At each occurrence of a line starting with "msgid ", we execute the following
+# commands. At the first occurrence, insert the file. At the following
+# occurrences, do nothing. The distinction between the first and the following
+# occurrences is achieved by looking at the hold space.
+/^msgid /{
+x
+# Test if the hold space is empty.
+s/m/m/
+ta
+# Yes it was empty. First occurrence. Read the file.
+r HEADER
+# Output the file's contents by reading the next line. But don't lose the
+# current line while doing this.
+g
+N
+bb
+:a
+# The hold space was nonempty. Following occurrences. Do nothing.
+x
+:b
+}
diff --git a/src/grep/po/it.gmo b/src/grep/po/it.gmo
new file mode 100644
index 0000000..206d42a
--- /dev/null
+++ b/src/grep/po/it.gmo
Binary files differ
diff --git a/src/grep/po/it.po b/src/grep/po/it.po
new file mode 100644
index 0000000..8cb743e
--- /dev/null
+++ b/src/grep/po/it.po
@@ -0,0 +1,755 @@
+# Italian translation of grep
+# Copyright (C) 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2016, 2018 Free Software Foundation, Inc.
+# Copyright (C) 2020 Free Software Foundation, Inc.
+# This file is distributed under the same license as the grep package.
+#
+# Marco d'Itri <md@linux.it>, 1999, 2001.
+# Milo Casagrande <milo@milo.name>, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2016, 2018, 2020.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: grep-3.5.16\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2020-11-14 15:55+0100\n"
+"Last-Translator: Milo Casagrande <milo@milo.name>\n"
+"Language-Team: Italian <tp@lists.linux.it>\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+"X-Generator: Poedit 2.4.1\n"
+"X-Poedit-SourceCharset: UTF-8\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "argomento %s per %s non valido"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "argomento %s ambiguo per %s"
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr "Gli argomenti validi sono:"
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr "errore del programma"
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr "overflow dello stack"
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr "errore di scrittura"
+
+#: lib/dfa.c:896
+msgid "unbalanced ["
+msgstr "[ non bilanciata"
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr "Classe del carattere non valido"
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr "La sintassi per la classe di caratteri è [[:space:]], non [:space:]"
+
+#: lib/dfa.c:1210
+msgid "unfinished \\ escape"
+msgstr "Escape \\ incompleto"
+
+#: lib/dfa.c:1371
+msgid "invalid content of \\{\\}"
+msgstr "Contenuto di \\{\\} non valido"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr "Espressione regolare troppo grande"
+
+#: lib/dfa.c:1858
+msgid "unbalanced ("
+msgstr "( non bilanciata"
+
+#: lib/dfa.c:1975
+msgid "no syntax specified"
+msgstr "Nessuna sintassi specificata"
+
+#: lib/dfa.c:1986
+msgid "unbalanced )"
+msgstr ") non bilanciata"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "Errore di sistema sconosciuto"
+
+#: lib/getopt.c:278
+#, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: l'opzione \"%s%s\" è ambigua\n"
+
+#: lib/getopt.c:284
+#, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: l'opzione \"%s%s\" è ambigua. Possibilità:"
+
+#: lib/getopt.c:319
+#, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: opzione \"%s%s\" non riconosciuta\n"
+
+#: lib/getopt.c:345
+#, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: l'opzione \"%s%s\" non accetta argomenti\n"
+
+#: lib/getopt.c:360
+#, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: l'opzione \"%s%s\" richiede un argomento\n"
+
+#: lib/getopt.c:621
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: opzione non valida -- \"%c\"\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: l'opzione richiede un argomento -- \"%c\"\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "memoria esaurita"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr "impossibile registrare la directory di lavoro attuale"
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "errore nel restituire la directory di lavoro iniziale"
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr ""
+"impostazione del descrittore file in modalità testo/binario non riuscita"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "\""
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "\""
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr "Successo"
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr "Nessuna corrispondenza"
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr "Espressione regolare non valida"
+
+# (ndt) http://en.wikipedia.org/wiki/Collation
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr "Carattere di collazione non valido"
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr "Nome classe del carattere non valido"
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr "Backslash finale"
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr "Riferimento all'indietro non valido"
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr "[, [^, [:, [., o [= senza corrispondenza"
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr "( o \\( senza corrispondenza"
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr "\\{ senza corrispondenza"
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr "Contenuto di \\{\\} non valido"
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr "Limite massimo non valido"
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "Memoria esaurita"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr "Espressione regolare precedente non valida"
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr "Fine prematura dell'espressione regolare"
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr "Espressione regolare troppo grande"
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr ") o \\) senza corrispondenza"
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr "Nessuna espressione regolare precedente"
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Pacchetto creato da %s (%s)\n"
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Pacchetto creato da %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr "©"
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Licenza GPLv3+: GNU GPL versione 3 o successiva <%s>.\n"
+"Questo programma è software libero: siete liberi di modificarlo e "
+"ridistribuirlo.\n"
+"Non c'è ALCUNA GARANZIA, per quanto consentito dalle vigenti normative.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Scritto da %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Scritto da %s e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Scritto da %s, %s e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Scritto da %s, %s, %s\n"
+"e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Scritto da %s, %s, %s,\n"
+"%s e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Scritto da %s, %s, %s,\n"
+"%s, %s e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Scritto da %s, %s, %s,\n"
+"%s, %s, %s e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Scritto da %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Scritto da %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Scritto da %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s e altri.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr "Segnalare i bug a: %s\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "Segnalare i bug di %s a: %s\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Sito web di %s: <%s>\n"
+
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr "Pagina di aiuto per l'utilizzo di software GNU: <%s>\n"
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(standard input)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "argomento della lunghezza del contesto non valido"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "l'input è troppo grande per essere contato"
+
+#: src/grep.c:1641
+#, c-format
+msgid "%s: binary file matches"
+msgstr "%s: il file binario corrisponde"
+
+#: src/grep.c:1679
+#, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "%s: attenzione: ciclo ricorsivo di directory"
+
+#: src/grep.c:1899
+#, c-format
+msgid "%s: input file is also the output"
+msgstr "%s: il file di input è anche l'output"
+
+#: src/grep.c:1961 src/grep.c:1968
+#, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "Uso: %s [OPZIONE]... MODELLI [FILE]...\n"
+
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "Usare \"%s --help\" per ulteriori informazioni.\n"
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr "Cerca MODELLI in ogni FILE\n"
+
+#: src/grep.c:1970
+#, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"Esempio: %s -i \"ciao mondo\" menu.h main.c\n"
+"MODELLI può contenere diversi modelli separati da newline.\n"
+"\n"
+"Selezione e interpretazione del modello:\n"
+
+#: src/grep.c:1975
+#, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp MODELLI sono espressioni regolari estese\n"
+" -F, --fixed-strings MODELLI sono stringhe\n"
+" -G, --basic-regexp MODELLI sono espressioni regolari semplici\n"
+" -P, --perl-regexp MODELLI sono espressioni regolari Perl\n"
+
+#: src/grep.c:1981
+#, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=MODELLI Usa MODELLI per la corrispondenza\n"
+" -f, --file=FILE Ottiene i MODELLI dal FILE\n"
+" -i, --ignore-case Ignora la distinzione maiuscole/minuscole\n"
+" --no-ignore-case Non ignora la distinzione maiuscole/minuscole\n"
+" (predefinito)\n"
+" -w, --word-regexp Corrispondere solo a parole intere\n"
+" -x, --line-regexp Corrispondere solo a righe intere\n"
+" -z, --null-data Una riga di dati termina con il byte 0 invece "
+"che\n"
+" newline\n"
+
+#: src/grep.c:1989
+#, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"Varie:\n"
+" -s, --no-messages Elimina i messaggi di errore\n"
+" -v, --invert-match Seleziona le righe che non corrispondono\n"
+" -V, --version Stampa la versione ed esce\n"
+" --help Visualizza questo aiuto ed esce\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+"\n"
+"Controllo dell'output:\n"
+" -m, --max-count=NUM Si ferma dopo NUM righe selezionate\n"
+" -b, --byte-offset Stampa l'offset del byte con le righe di output\n"
+" -n, --line-number Stampa il numero della riga con le righe di "
+"output\n"
+" --line-buffered Esegue il flush dell'output con ogni riga\n"
+" -H, --with-filename Stampa il nome del file con le righe di output\n"
+" -h, --no-filename Elimina il nome del file dall'output\n"
+" --label=ETICH Usa ETICH come nome del file per lo standard "
+"input\n"
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+" -o, --only-matching Mostra solo la parte della riga che corrisponde\n"
+" -q, --quiet, --silent Elimina tutto l'output normale\n"
+" --binary-files=TIPO Suppone che i file binari siano del TIPO \"binary"
+"\",\n"
+" \"text\" oppure \"without-match\"\n"
+" -a, --text Equivale a --binary-files=text\n"
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+" -I Equivale a --binary-files=without-match\n"
+" -d, --directories=AZIONE Come gestire le directory: AZIONE è \"read\",\n"
+" \"recurse\" o \"skip\"\n"
+" -D, --devices=AZIONE Come gestire device, FIFO e socket: AZIONE è\n"
+" \"read\" o \"skip\"\n"
+" -r, --recursive Equivale a --directories=recurse\n"
+" -R, --dereference-recursive\n"
+" Simile al precedente, ma segue i collegamenti\n"
+" simbolici\n"
+
+#: src/grep.c:2023
+#, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+" --include=GLOB Esamina solo i file corrispondenti a GLOB "
+"(modello di file)\n"
+" --exclude=GLOB Salta file corrispondenti a GLOB\n"
+" --exclude-from=FILE Salta i file corrispondenti ai modelli nel FILE\n"
+" --exclude-dir=GLOB Salta le directory corrispondenti a GLOB\n"
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+" -L, --files-without-match Stampa solo i nomi dei FILE senza righe "
+"selezionate\n"
+" -l, --files-with-matches Stampa solo i nomi dei FILE con righe "
+"selezionate\n"
+" -c, --count Stampa solo il conteggio delle righe selezionate "
+"in\n"
+" ogni FILE\n"
+" -T, --initial-tab Allinea le tabulazioni (se necessario)\n"
+" -Z, --null Stampa il byte 0 dopo ogni nome di FILE\n"
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+"\n"
+"Controllo del contesto:\n"
+" -B, --before-context=NUM Stampa NUM righe di contesto precedente\n"
+" -A, --after-context=NUM Stampa NUM righe di contesto seguente\n"
+" -C, --context=NUM Stampa NUM righe di contesto dell'output\n"
+
+#: src/grep.c:2043
+#, fuzzy, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+" -NUM Come --context=NUM\n"
+" --color[=QUANDO],\n"
+" --colour[=QUANDO] Usa i colori per distinguere le stringhe\n"
+" corrispondenti; QUANDO può essere \"always\", "
+"\"never\"\n"
+" o \"auto\"\n"
+" -U, --binary Non rimuove i caratteri CR all'EOL (MSDOS/"
+"Windows)\n"
+"\n"
+
+#: src/grep.c:2052
+#, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"Se FILE è \"-\", legge lo standard input; se non c'è alcun FILE, legge \".\" "
+"se in\n"
+"modalità ricorsiva, altrimenti \"-\". Se sono stati specificati meno di due "
+"FILE\n"
+"presume -h. Esce con lo stato 0 se è stata selezionata almeno una riga,\n"
+"1 altrimenti. Se si verifica un errore e l'opzione -q non è\n"
+"stata usata, lo stato di uscita è 2.\n"
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "specificate corrispondenze in conflitto"
+
+#: src/grep.c:2101
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr ""
+"Corrispondenze Perl non supportate: questo binario è compilato con --disable-"
+"perl-regexp"
+
+#: src/grep.c:2103
+#, c-format
+msgid "invalid matcher %s"
+msgstr "corrispondenza %s non valida"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "metodo per i device sconosciuto"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr ""
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "numero massimo non valido"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "tipo di file binario sconosciuto"
+
+#: src/grep.c:2829
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+"Creato da Mike Haertel e altri; consultare\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr "impossibile allocare memoria per lo stack PCRE JIT"
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr "-P supporta solamente lingue unibyte e UTF-8"
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr "l'opzione -P supporta un solo modello"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr "errore interno (non si dovrebbe mai verificare)"
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr "limite di lunghezza riga PCRE raggiunto"
+
+#: src/pcresearch.c:306
+#, c-format
+msgid "%s: memory exhausted"
+msgstr "%s: memoria esaurita"
+
+#: src/pcresearch.c:310
+#, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr "%s: stack JIT PCRE esaurito"
+
+#: src/pcresearch.c:315
+#, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr "%s: limite di backtrack PCRE raggiunto"
+
+#: src/pcresearch.c:319
+#, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr "%s: limite di ricorsione PCRE superato"
+
+#: src/pcresearch.c:327
+#, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr "%s: errore interno PCRE: %d"
diff --git a/src/grep/po/ja.gmo b/src/grep/po/ja.gmo
new file mode 100644
index 0000000..fa3f6fb
--- /dev/null
+++ b/src/grep/po/ja.gmo
Binary files differ
diff --git a/src/grep/po/ja.po b/src/grep/po/ja.po
new file mode 100644
index 0000000..3952c36
--- /dev/null
+++ b/src/grep/po/ja.po
@@ -0,0 +1,1445 @@
+# Japanese messages for GNU grep
+# Copyright (C) 1996, 2014 Free Software Foundation, Inc.
+# This file is distributed under the same license as the grep package.
+# IIDA Yosiaki <iida@gnu.org>, 1999, 2000, 2001, 2002.
+# Yasuyuki Furukawa <yasu@on.cs.keio.ac.jp>, 1997
+# and taken over on 1999-09-24 by IIDA.
+# Special thanks to
+# Daisuke Yamashita <yamad@mb.infoweb.ne.jp>, 1999.
+# Masahito Yamaga <yamaga@ipc.chiba-u.ac.jp>, 2002.
+# GOTO Masanori <gotom@debian.or.jp>, 2006.
+# derived from the version by Yasuyuki Furukawa <yasu@on.cs.keio.ac.jp> 1998.
+# Jun Nishii <jun@flatout.org> 1999.
+# Daisuke Yamashita <yamad@mb.infoweb.ne.jp> 1999.
+# Yasuaki Taniguchi <yasuakit@gmail.com>, 2010, 2011, 2014, 2017.
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU grep 3.0.23-b00\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2017-06-25 20:16+0900\n"
+"Last-Translator: Yasuaki Taniguchi <yasuakit@gmail.com>\n"
+"Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Poedit 2.0.2\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "%2$s に対する引数 %1$s が間違っています"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "%2$s に対する引数 %1$s が曖昧です"
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr "有効な引数:"
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr "プログラムエラー"
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr "スタックオーバーフロー"
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr "書き込みエラー"
+
+#: lib/dfa.c:896
+msgid "unbalanced ["
+msgstr "対応がとれていない [ です"
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr "無効な文字クラス名です"
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr "文字クラスの構文は [[:space:]] です。 [:space:] ではありません"
+
+#: lib/dfa.c:1210
+msgid "unfinished \\ escape"
+msgstr "\\ エスケープが終了していません"
+
+#: lib/dfa.c:1371
+msgid "invalid content of \\{\\}"
+msgstr "\\{\\} の中身が無効です"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr "正規表現が大きすぎます"
+
+#: lib/dfa.c:1858
+msgid "unbalanced ("
+msgstr "対応がとれていない ( です"
+
+#: lib/dfa.c:1975
+msgid "no syntax specified"
+msgstr "構文が指定されていません"
+
+#: lib/dfa.c:1986
+msgid "unbalanced )"
+msgstr "対応がとれていない ) です"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "不明なシステムエラー"
+
+#: lib/getopt.c:278
+#, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: オプション '%s%s' は曖昧です\n"
+
+#: lib/getopt.c:284
+#, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: オプション '%s%s' は曖昧です。次のものが可能です:"
+
+#: lib/getopt.c:319
+#, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: オプション '%s%s' を認識できません\n"
+
+#: lib/getopt.c:345
+#, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: オプション '%s%s' は引数を取ることができません\n"
+
+#: lib/getopt.c:360
+#, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: オプション '%s%s' は引数が必要です\n"
+
+#: lib/getopt.c:621
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: 無効なオプション -- '%c'\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: オプションには引数が必要です -- '%c'\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "メモリを使い果たしました"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr "現在の作業ディレクトリーを記録することができません"
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "初期作業ディレクトリーに戻るのに失敗しました"
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr "ファイル記述子をテキスト/バイナリモードに設定できませんでした"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "'"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr "成功です"
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr "一致しません"
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr "無効な正規表現です"
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr "無効な照合文字です"
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr "無効な文字クラス名です"
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr "終端のバックスラッシュ"
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr "無効な前方参照です"
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr "[、[^、[:、[.、または [= が不一致です"
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr "( または \\( が不一致です"
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr "\\{ が不一致です"
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr "\\{\\} の中身が無効です"
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr "無効な範囲終了です"
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "メモリを使い果たしました"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr "無効な前方正規表現です"
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr "正規表現が途中で終了しました"
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr "正規表現が大きすぎます"
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr ") または \\) が不一致です"
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr "以前に正規表現がありません"
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "パッケージ作成者: %s (%s)\n"
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "パッケージ作成者: %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr "(C)"
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, fuzzy, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"\n"
+"ライセンス GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr "作者 %s。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "作者 %s および %s。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "作者 %s、 %s、および %s。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"作者 %s、 %s、 %s、\n"
+"および %s。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"作者 %s、 %s、 %s、\n"
+"%s、および %s。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"作者 %s、 %s、 %s、\n"
+"%s、 %s、および %s。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"作者 %s、 %s、 %s、\n"
+"%s、 %s、 %s、および %s。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"作者 %s、 %s、 %s、\n"
+"%s、 %s、 %s、 %s、\n"
+"および %s。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"作者 %s、 %s、 %s、\n"
+"%s、 %s、 %s、 %s、\n"
+"%s、および %s。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"作者 %s、 %s、 %s、\n"
+"%s、 %s、 %s、 %s、\n"
+"%s、 %s、 および他の方々。\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, fuzzy, c-format
+msgid "Report bugs to: %s\n"
+msgstr ""
+"\n"
+"バグを発見したら <%s> に報告して下さい。\n"
+"翻訳に関するバグは<translation-team-ja@lists.sourceforge.net>に報告してくださ"
+"い。\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr ""
+"%s のバグを発見したら <%s> に報告して下さい。\n"
+"翻訳に関するバグは<translation-team-ja@lists.sourceforge.net>に報告してくださ"
+"い。\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s のホームページ: <%s>\n"
+
+#: lib/version-etc.c:260
+#, fuzzy, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr ""
+"GNU ソフトウェアを使用する際の一般的なヘルプ: <http://www.gnu.org/gethelp/>\n"
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(標準入力)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "一致した前後の行の表示に関する引数が無効です"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "入力が大きすぎて数えられません"
+
+#: src/grep.c:1641
+#, fuzzy, c-format
+msgid "%s: binary file matches"
+msgstr "バイナリファイル %s に一致しました\n"
+
+#: src/grep.c:1679
+#, fuzzy, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "ディレクトリーが再帰的ループをしています"
+
+#: src/grep.c:1899
+#, fuzzy, c-format
+msgid "%s: input file is also the output"
+msgstr "入力ファイル %s が出力にもなっています"
+
+#: src/grep.c:1961 src/grep.c:1968
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "使用法: %s [OPTION]... PATTERN [FILE]...\n"
+
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "詳しくは'%s --help'を実行してください。\n"
+
+#: src/grep.c:1969
+#, fuzzy, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr "各 FILE 内で PATTERN を検索します。\n"
+
+#: src/grep.c:1970
+#, fuzzy, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"例: %s -i 'hello world' menu.h main.c\n"
+"\n"
+"パターンの選択および解釈:\n"
+
+#: src/grep.c:1975
+#, fuzzy, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp PATTERN を拡張正規表現とする\n"
+" -F, --fixed-strings PATTERN を改行で区切られた文字列の組とする\n"
+" -G, --basic-regexp PATTERN を基本正規表現とする(デフォルト)\n"
+" -P, --perl-regexp PATTERN を Perl 正規表現とする\n"
+
+#: src/grep.c:1981
+#, fuzzy, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=PATTERN 一致処理に PATTERN を使用する\n"
+" -f, --file=FILE FILE から PATTERN を取得する\n"
+" -i, --ignore-case 大文字と小文字を区別しない\n"
+" -w, --word-regexp 強制的に単語全体で PATTERN の一致処理を行う\n"
+" -x, --line-regexp 強制的に行全体で PATTERN の一致処理を行う\n"
+" -z, --null-data データの行末を改行ではなく NULL とする\n"
+
+#: src/grep.c:1989
+#, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"その他:\n"
+" -s, --no-messages エラーメッセージを抑止する\n"
+" -v, --invert-match 一致しない行を選択する\n"
+" -V, --version バージョン情報を表示して終了する\n"
+" --help このヘルプを表示して終了する\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+"\n"
+"出力の制御:\n"
+" -m, --max-count=NUM NUM 行一致後に中断する\n"
+" -b, --byte-offset 出力行と併せてバイトオフセットを表示する\n"
+" -n, --line-number 出力行と併せて行番号を表示する\n"
+" --line-buffered 行ごとに出力を flush する\n"
+" -H, --with-filename 出力行と併せてファイル名を表示する\n"
+" -h, --no-filename 出力の先頭にファイル名を付けない\n"
+" --label=LABEL 標準入力のファイル名の接頭辞として LABEL を使用す"
+"る\n"
+
+#: src/grep.c:2007
+#, fuzzy, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+" -o, --only-matching 行の中で PATTERN に一致した部分のみ表示する\n"
+" -q, --quiet, --silent 通常出力を全て抑止する\n"
+" --binary-files=TYPE バイナリファイルの形式を TYPE と仮定する\n"
+" TYPE は 'binary'、'text' または 'without-match'\n"
+" -a, --text --binary-files=text と等価\n"
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+" -I --binary-files=without-match と等価\n"
+" -d, --directories=ACTION ディレクトリーの扱い方を指定する\n"
+" ACTION は 'read'、'recurse' または 'skip'\n"
+" -D, --devices=ACTION デバイス、FIFO およびソケットの扱い方を指定する\n"
+" ACTION は `read' または `skip'\n"
+" -r, --recursive --directories=recurse と等価\n"
+" -R, --dereference-recursive 上と同様だがシンボリックリンクを辿る\n"
+
+#: src/grep.c:2023
+#, fuzzy, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+" --include=FILE_PATTERN FILE_PATTERN に一致したファイルのみ検索する\n"
+" --exclude=FILE_PATTERN FILE_PATTERN 一致したファイル・ディレクトリーを"
+"スキップする\n"
+" --exclude-from=FILE FILE から読み込んだファイル名のパターンに一致する"
+"ファイルをスキップする\n"
+" --exclude-dir=PATTERN PATTERN に一致したディレクトリーをスキップする\n"
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+" -L, --files-without-match PATTERN に一致しない FILE の名前のみ表示する\n"
+" -l, --files-with-matches PATTERN に一致する FILE の名前のみ表示する\n"
+" -c, --count FILE ごとに一致した行数のみ表示する\n"
+" -T, --initial-tab タブを使用して整列する (必要な場合)\n"
+" -Z, --null FILE の名前を表示した後に値が 0 のバイトを出力す"
+"る\n"
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+"\n"
+"前後の表示に関する制御:\n"
+" -B, --before-context=NUM 一致した前の NUM 行を表示する\n"
+" -A, --after-context=NUM 一致した後の NUM 行を表示する\n"
+" -C, --context=NUM 一致した前後 NUM 行を表示する\n"
+
+#: src/grep.c:2043
+#, fuzzy, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+" -NUM --context=NUM と等価\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] 一致した文字列をハイライトするための印を使用す"
+"る。\n"
+" WHEN は 'always'、'never' または 'auto'\n"
+" -U, --binary 行末にある CR を削除しない (MSDOS/Windows)\n"
+"\n"
+
+#: src/grep.c:2052
+#, fuzzy, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"FILE が '-' の場合、標準入力から読み込みます。FILE を指定しない場合、ディレク"
+"トリーを再帰的に\n"
+"処理する場合は '.'、それ以外は '-' となります。FILE を1個だけ指定した場合は -"
+"h も有効になります。\n"
+"終了コードは、行が選択された場合は 0、それ以外は 1 です。エラーが発生して -q "
+"を指定していない\n"
+"場合の終了コードは 2 になります。\n"
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "指定した一致処理系が競合しています"
+
+#: src/grep.c:2101
+#, fuzzy
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr ""
+"このバイナリは --disable-perl-regexp 付きでコンパイルされているため -P オプ"
+"ションはサポートしません"
+
+#: src/grep.c:2103
+#, c-format
+msgid "invalid matcher %s"
+msgstr "%s は無効な一致処理系です"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "デバイスに対する不明な操作です"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr ""
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "無効な一致回数です"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "不明なバイナリファイルの形式です"
+
+#: src/grep.c:2829
+#, fuzzy
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+"その他の方々は <http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS> を参照して"
+"ください"
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr "PCRE JIT スタックへのメモリ割り当てに失敗しました"
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr "-P は1バイトの UTF-8 ロケールのみサポートします"
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr "-P オプションは単一のパターンしかサポートしません"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr "内部エラー (決して発生しないはず)"
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr "PCRE の行長制限を超過しました"
+
+#: src/pcresearch.c:306
+#, fuzzy, c-format
+msgid "%s: memory exhausted"
+msgstr "メモリを使い果たしました"
+
+#: src/pcresearch.c:310
+#, fuzzy, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr "PCRE JIT スタックを使い果たしました"
+
+#: src/pcresearch.c:315
+#, fuzzy, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr "PCRE のバックスラッシュ制限を超過しました"
+
+#: src/pcresearch.c:319
+#, fuzzy, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr "PCRE のバックスラッシュ制限を超過しました"
+
+#: src/pcresearch.c:327
+#, fuzzy, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr "PCRE 内部エラー: %d"
+
+#, c-format
+#~ msgid "warning: GREP_OPTIONS is deprecated; please use an alias or script"
+#~ msgstr ""
+#~ "警告: GREP_OPTIONS は廃止されました。alias またはスクリプトを使用してくだ"
+#~ "さい"
+
+#, c-format
+#~ msgid "warning: %s: %s"
+#~ msgstr "警告: %s: %s"
+
+#~ msgid "invalid %s%s argument '%s'"
+#~ msgstr "引数 '%3$s' に対して %1$s%2$s が無効です"
+
+#~ msgid "invalid suffix in %s%s argument '%s'"
+#~ msgstr "引数 '%3$s' に対して無効な接尾辞 %1$s%2$s です"
+
+#~ msgid "%s%s argument '%s' too large"
+#~ msgstr "引数 '%3$s' に対する %1$s%2$s が大きすぎます"
+
+#, fuzzy
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "%s のホームページ: <http://www.gnu.org/software/%s/>\n"
+
+#~ msgid "internal error"
+#~ msgstr "内部エラー"
+
+#~ msgid "Mike Haertel"
+#~ msgstr "Mike Haertel"
+
+#~ msgid "%s: option '--%s' doesn't allow an argument\n"
+#~ msgstr "%s: オプション '--%s' は引数を取ることができません\n"
+
+#~ msgid "%s: unrecognized option '--%s'\n"
+#~ msgstr "%s: オプション '--%s' を認識できません\n"
+
+#~ msgid "%s: option '-W %s' is ambiguous\n"
+#~ msgstr "%s: オプション '-W %s' は曖昧です\n"
+
+#~ msgid "%s: option '-W %s' doesn't allow an argument\n"
+#~ msgstr "%s: オプション '-W %s' は引数を取ることができません\n"
+
+#~ msgid "%s: option '-W %s' requires an argument\n"
+#~ msgstr "%s: オプション '-W %s' には引数が必要です\n"
+
+#~ msgid "PATTERN is, by default, a basic regular expression (BRE).\n"
+#~ msgstr "PATTERN はデフォルトでは基本正規表現 (BRE) です。\n"
+
+#~ msgid ""
+#~ "'egrep' means 'grep -E'. 'fgrep' means 'grep -F'.\n"
+#~ "Direct invocation as either 'egrep' or 'fgrep' is deprecated.\n"
+#~ msgstr ""
+#~ "'egrep' は 'grep -E' を意味します。 'fgrep' は 'grep -F' を意味します。\n"
+#~ "'egrep' または 'fgrep' による直接起動は廃止予定です。\n"
+
+#~ msgid "lseek failed"
+#~ msgstr "lseek に失敗しました"
+
+#~ msgid "unfinished repeat count"
+#~ msgstr "繰返し回数が終了していません"
+
+#~ msgid "malformed repeat count"
+#~ msgstr "不正な形式の繰り返し回数です"
+
+#~ msgid "PATTERN is an extended regular expression (ERE).\n"
+#~ msgstr "PATTERN は拡張正規表現 (ERE) です。\n"
+
+#~ msgid "Invocation as `egrep' is deprecated; use `grep -E' instead.\n"
+#~ msgstr ""
+#~ "`egrep' という名前での起動は廃止予定です。代わりに `grep -E' を使用してく"
+#~ "ださい。\n"
+
+#~ msgid "PATTERN is a set of newline-separated fixed strings.\n"
+#~ msgstr "PATTERN は改行で区切られた固定文字列の組です。\n"
+
+#~ msgid "Invocation as `fgrep' is deprecated; use `grep -F' instead.\n"
+#~ msgstr ""
+#~ "`fgrep' という名前での起動は廃止予定です。代わりに `grep -F' を使用してく"
+#~ "ださい。\n"
+
+#~ msgid "writing output"
+#~ msgstr "出力の書込み"
+
+#~ msgid "GNU Grep home page: <%s>\n"
+#~ msgstr "GNU Grep のホームページ: <%s>\n"
+
+#~ msgid "%s can only use the %s pattern syntax"
+#~ msgstr "%s は %s パターン構文の時のみ使用できます"
+
+#~ msgid ""
+#~ "in GREP_COLORS=\"%s\", the \"%s\" capacity needs a value (\"=...\"); "
+#~ "skipped"
+#~ msgstr ""
+#~ "GREP_COLORS=\"%s\" において、\"%s\" には値の代入 (\"=...\") が必要です。ス"
+#~ "キップしました"
+
+#~ msgid ""
+#~ "in GREP_COLORS=\"%s\", the \"%s\" capacity is boolean and cannot take a "
+#~ "value (\"=%s\"); skipped"
+#~ msgstr ""
+#~ "GREP_COLORS=\"%s\" において、\"%s\" は真偽値であり値を代入 (\"=%s\") する"
+#~ "ことはできません。スキップしました"
+
+#~ msgid "in GREP_COLORS=\"%s\", the \"%s\" capacity %s"
+#~ msgstr "GREP_COLORS=\"%s\" において \"%s\" は %s です"
+
+#~ msgid ""
+#~ "stopped processing of ill-formed GREP_COLORS=\"%s\" at remaining "
+#~ "substring \"%s\""
+#~ msgstr ""
+#~ "GREP_COLORS=\"%s\" の形式に誤りがあるため処理を中止しました。残りの部分文"
+#~ "字列は \"%s\" です"
+
+#~ msgid "ARGP_HELP_FMT: %s value is less than or equal to %s"
+#~ msgstr "ARGP_HELP_FMT: %s の値は %s の値以下です"
+
+#~ msgid "%.*s: ARGP_HELP_FMT parameter requires a value"
+#~ msgstr "%.*s: ARGP_HELP_FMT パラメータには値が必要です"
+
+#~ msgid "%.*s: ARGP_HELP_FMT parameter must be positive"
+#~ msgstr "%.*s: ARGP_HELP_FMT パラメータは正の値でなければいけません"
+
+#~ msgid "%.*s: Unknown ARGP_HELP_FMT parameter"
+#~ msgstr "%.*s: 不明な ARGP_HELP_FMT パラメータ"
+
+#~ msgid "Garbage in ARGP_HELP_FMT: %s"
+#~ msgstr "ARGP_HELP_FMT 中にごみがあります: %s"
+
+#~ msgid ""
+#~ "Mandatory or optional arguments to long options are also mandatory or "
+#~ "optional for any corresponding short options."
+#~ msgstr ""
+#~ "長い形式のオプションで必須または任意の引数は、それに対応する短い形式のオプ"
+#~ "ションでも同様に必須または任意です。"
+
+#~ msgid "Usage:"
+#~ msgstr "使用法:"
+
+#~ msgid " or: "
+#~ msgstr "または: "
+
+#~ msgid " [OPTION...]"
+#~ msgstr " [OPTION...]"
+
+#~ msgid "Report bugs to %s.\n"
+#~ msgstr "バグを発見したら %s 宛に報告して下さい。\n"
+
+#~ msgid "give this help list"
+#~ msgstr "このヘルプを表示する"
+
+#~ msgid "give a short usage message"
+#~ msgstr "短い使用方法を表示する"
+
+#~ msgid "NAME"
+#~ msgstr "名前"
+
+#~ msgid "set the program name"
+#~ msgstr "プログラム名を設定する"
+
+#~ msgid "SECS"
+#~ msgstr "SECS"
+
+#~ msgid "hang for SECS seconds (default 3600)"
+#~ msgstr "SECS 秒でハング (デフォルト 3600)"
+
+#~ msgid "print program version"
+#~ msgstr "プログラムのバージョンを表示する"
+
+#~ msgid "(PROGRAM ERROR) No version known!?"
+#~ msgstr "(プログラムエラー) 不明なバージョン!?"
+
+#~ msgid "%s: Too many arguments\n"
+#~ msgstr "%s: 引数が多すぎます\n"
+
+#~ msgid "(PROGRAM ERROR) Option should have been recognized!?"
+#~ msgstr "(プログラムエラー) オプションは認識されているべきです!?"
+
+#~ msgid "cannot find a temporary directory, try setting $TMPDIR"
+#~ msgstr "一時ディレクトリを作成できません。 $TMPDIR を設定してみてください"
+
+#~ msgid "cannot create a temporary directory using template \"%s\""
+#~ msgstr "テンプレート \"%s\" を使用した一時ディレクトリを作成できません"
+
+#~ msgid "cannot remove temporary file %s"
+#~ msgstr "一時ファイル %s を削除できません"
+
+#~ msgid "cannot remove temporary directory %s"
+#~ msgstr "一時ディレクトリ %s を削除できません"
+
+#~ msgid "error closing file"
+#~ msgstr "ファイルクローズエラー"
+
+#~ msgid "preserving permissions for %s"
+#~ msgstr "%s のパーミッションを保存しています"
+
+#~ msgid "error while opening \"%s\" for reading"
+#~ msgstr "\"%s\"を読込むため開いている際にエラーが発生しました"
+
+#~ msgid "cannot open backup file \"%s\" for writing"
+#~ msgstr "書込み用バックアップファイル\"%s\"を開くことができません"
+
+#~ msgid "error reading \"%s\""
+#~ msgstr "\"%s\"の読込み中にエラーが発生しました"
+
+#~ msgid "error writing \"%s\""
+#~ msgstr "\"%s\"の書込み中にエラーが発生しました"
+
+#~ msgid "error after reading \"%s\""
+#~ msgstr "\"%s\"の読込み後にエラーが発生しました"
+
+#~ msgid "fdopen() failed"
+#~ msgstr "fdopen()に失敗しました"
+
+#~ msgid "C# compiler not found, try installing pnet"
+#~ msgstr "C# コンパイラが見つりません。pnet をインストールしてみてください"
+
+#~ msgid "C# virtual machine not found, try installing pnet"
+#~ msgstr "C# 仮想マシンが見つかりません。pnet をインストールしてみてください"
+
+#~ msgid "%s subprocess failed"
+#~ msgstr "%s サブプロセスが失敗しました"
+
+#~ msgid "regular empty file"
+#~ msgstr "通常の空ファイル"
+
+#~ msgid "regular file"
+#~ msgstr "通常ファイル"
+
+#~ msgid "directory"
+#~ msgstr "ディレクトリ"
+
+#~ msgid "block special file"
+#~ msgstr "ブロックスペシャルファイル"
+
+#~ msgid "character special file"
+#~ msgstr "キャラクタスペシャルファイル"
+
+#~ msgid "fifo"
+#~ msgstr "fifo"
+
+#~ msgid "symbolic link"
+#~ msgstr "シンボリックリンク"
+
+#~ msgid "socket"
+#~ msgstr "ソケット"
+
+#~ msgid "message queue"
+#~ msgstr "メッセージキュー"
+
+#~ msgid "semaphore"
+#~ msgstr "セマフォ"
+
+#~ msgid "shared memory object"
+#~ msgstr "共有メモリオブジェクト"
+
+#~ msgid "typed memory object"
+#~ msgstr "型付メモリオブジェクト"
+
+#~ msgid "weird file"
+#~ msgstr "不明なファイル"
+
+#~ msgid "Address family for hostname not supported"
+#~ msgstr "ホスト名に対する Address family がサポートされていません"
+
+#~ msgid "Temporary failure in name resolution"
+#~ msgstr "名前解決に一時的に失敗しました"
+
+#~ msgid "Bad value for ai_flags"
+#~ msgstr "ai_flags に対する誤った値です"
+
+#~ msgid "Non-recoverable failure in name resolution"
+#~ msgstr "名前解決でリカバリできない失敗が発生しました"
+
+#~ msgid "ai_family not supported"
+#~ msgstr "ai_family はサポートされていません"
+
+#~ msgid "Memory allocation failure"
+#~ msgstr "メモリ配置に失敗しました"
+
+#~ msgid "No address associated with hostname"
+#~ msgstr "ホスト名にアドレスが割り当てられていません"
+
+#~ msgid "Name or service not known"
+#~ msgstr "名前またはサービスが不明です"
+
+#~ msgid "Servname not supported for ai_socktype"
+#~ msgstr "ai_socktype に対して Servname がサポートされていません"
+
+#~ msgid "ai_socktype not supported"
+#~ msgstr "ai_socktype はサポートされていません"
+
+#~ msgid "System error"
+#~ msgstr "システムエラー"
+
+#~ msgid "Argument buffer too small"
+#~ msgstr "引数バッファが小さすぎます"
+
+#~ msgid "Processing request in progress"
+#~ msgstr "要求された処理は実行中です"
+
+#~ msgid "Request canceled"
+#~ msgstr "要求がキャンセルされました"
+
+#~ msgid "Request not canceled"
+#~ msgstr "要求がキャンセルされませんでした"
+
+#~ msgid "All requests done"
+#~ msgstr "すべての要求が完了しました"
+
+#~ msgid "Interrupted by a signal"
+#~ msgstr "シグナル割り込みが発生しました"
+
+#~ msgid "Parameter string not correctly encoded"
+#~ msgstr "パラメーター文字列が正しくエンコードされていません"
+
+#~ msgid "Unknown error"
+#~ msgstr "不明なエラー"
+
+#~ msgid "invalid source_version argument to compile_java_class"
+#~ msgstr "compile_java_class への source_version 引数が無効です"
+
+#~ msgid "invalid target_version argument to compile_java_class"
+#~ msgstr "compile_java_class への target_version 引数が無効です"
+
+#~ msgid "failed to create \"%s\""
+#~ msgstr "\"%s\" の作成に失敗しました"
+
+#~ msgid "error while writing \"%s\" file"
+#~ msgstr "\"%s\" ファイルの書き込み中にエラーが発生しました"
+
+#~ msgid "Java compiler not found, try installing gcj or set $JAVAC"
+#~ msgstr ""
+#~ "Java コンパイラが見つかりません。 gcj をインストールするか、またはt "
+#~ "$JAVAC を設定してみてください"
+
+#~ msgid "Java virtual machine not found, try installing gij or set $JAVA"
+#~ msgstr ""
+#~ "Java 仮想マシンが見つかりません。 gij をインストールするか、または $JAVA "
+#~ "を設定してみてください"
+
+#~ msgid "%s subprocess I/O error"
+#~ msgstr "%s サブプロセス I/O エラー"
+
+#~ msgid "cannot change permissions of %s"
+#~ msgstr "%s のパーミッションを変更できません"
+
+#~ msgid "cannot create directory %s"
+#~ msgstr "ディレクトリ %s を作成できません"
+
+#~ msgid "Failed to open /dev/zero for read"
+#~ msgstr "/dev/zeroを読込み用に開けません"
+
+#~ msgid "creation of reading thread failed"
+#~ msgstr "読み込みスレッドの作成に失敗しました"
+
+#~ msgid "cannot set up nonblocking I/O to %s subprocess"
+#~ msgstr "%s 子プロセスへ非ブロック I/O を設定できません"
+
+#~ msgid "communication with %s subprocess failed"
+#~ msgstr "%s 子プロセスとの通信に失敗しました"
+
+#~ msgid "write to %s subprocess failed"
+#~ msgstr "%s 子プロセスへの書き込みに失敗しました"
+
+#~ msgid "read from %s subprocess failed"
+#~ msgstr "%s 子プロセスからの読み込みに失敗しました"
+
+#~ msgid "subprocess %s terminated with exit code %d"
+#~ msgstr "子プロセス %s が終了コード %d で終了しました"
+
+#~ msgid "creation of threads failed"
+#~ msgstr "スレッドの作成に失敗しました"
+
+#~ msgid "%s subprocess terminated with exit code %d"
+#~ msgstr "%s 子プロセスが終了コード %d で終了しました"
+
+#~ msgid "cannot create pipe"
+#~ msgstr "パイプを作成できません"
+
+#~ msgid "^[yY]"
+#~ msgstr "^[yY]"
+
+#~ msgid "^[nN]"
+#~ msgstr "^[nN]"
+
+#~ msgid "setting permissions for %s"
+#~ msgstr "%s のパーミッションを設定します"
+
+#~ msgid "Hangup"
+#~ msgstr "Hangup"
+
+#~ msgid "Interrupt"
+#~ msgstr "割り込み"
+
+#~ msgid "Quit"
+#~ msgstr "終了"
+
+#~ msgid "Illegal instruction"
+#~ msgstr "Illegal instruction"
+
+#~ msgid "Trace/breakpoint trap"
+#~ msgstr "Trace/breakpoint trap"
+
+#~ msgid "Aborted"
+#~ msgstr "中止"
+
+#~ msgid "Floating point exception"
+#~ msgstr "浮動小数点例外"
+
+#~ msgid "Killed"
+#~ msgstr "強制終了"
+
+#~ msgid "Bus error"
+#~ msgstr "バスエラー"
+
+#~ msgid "Segmentation fault"
+#~ msgstr "Segmentation fault"
+
+#~ msgid "Broken pipe"
+#~ msgstr "Broken pipe"
+
+#~ msgid "Alarm clock"
+#~ msgstr "Alarm clock"
+
+#~ msgid "Terminated"
+#~ msgstr "Terminated"
+
+#~ msgid "Urgent I/O condition"
+#~ msgstr "緊急 I/O 状態"
+
+#~ msgid "Stopped (signal)"
+#~ msgstr "停止 (シグナル)"
+
+#~ msgid "Stopped"
+#~ msgstr "停止"
+
+#~ msgid "Continued"
+#~ msgstr "継続"
+
+#~ msgid "Child exited"
+#~ msgstr "子プロセス終了"
+
+#~ msgid "Stopped (tty input)"
+#~ msgstr "停止 (tty 入力)"
+
+#~ msgid "Stopped (tty output)"
+#~ msgstr "停止 (tty 出力)"
+
+#~ msgid "I/O possible"
+#~ msgstr "I/O 可能"
+
+#~ msgid "CPU time limit exceeded"
+#~ msgstr "CPU時間制限を超過しました"
+
+#~ msgid "File size limit exceeded"
+#~ msgstr "ファイルサイズ制限を超過しました"
+
+#~ msgid "Virtual timer expired"
+#~ msgstr "仮想タイマーが終了しました"
+
+#~ msgid "Profiling timer expired"
+#~ msgstr "プロファイリングタイマーが終了しました"
+
+#~ msgid "Window changed"
+#~ msgstr "Window が変更されました"
+
+#~ msgid "User defined signal 1"
+#~ msgstr "ユーザー定義シグナル1"
+
+#~ msgid "User defined signal 2"
+#~ msgstr "ユーザー定義シグナル2"
+
+#~ msgid "EMT trap"
+#~ msgstr "EMT トラップ"
+
+#~ msgid "Bad system call"
+#~ msgstr "間違ったシステムコール"
+
+#~ msgid "Stack fault"
+#~ msgstr "スタックエラー"
+
+#~ msgid "Information request"
+#~ msgstr "情報要求"
+
+#~ msgid "Power failure"
+#~ msgstr "電源エラー"
+
+#~ msgid "Resource lost"
+#~ msgstr "リソースが無くなりました"
+
+#~ msgid "error writing to a closed pipe or socket"
+#~ msgstr "閉じたパイプまたはソケットへの書き込みでエラーが発生しました"
+
+#~ msgid "Real-time signal %d"
+#~ msgstr "リアルタイムシグナル %d"
+
+#~ msgid "Unknown signal %d"
+#~ msgstr "不明なシグナル %d"
+
+#~ msgid "iconv function not usable"
+#~ msgstr "iconv 関数が使えません"
+
+#~ msgid "iconv function not available"
+#~ msgstr "iconv 関数が有効ではありません"
+
+#~ msgid "character out of range"
+#~ msgstr "範囲外の文字"
+
+#~ msgid "cannot convert U+%04X to local character set"
+#~ msgstr "U+%04X をローカル文字セットに変換できません"
+
+#~ msgid "cannot convert U+%04X to local character set: %s"
+#~ msgstr "U+%04X をローカル文字セット %s に変換できません"
+
+#~ msgid "invalid spec"
+#~ msgstr "無効な指定"
+
+#~ msgid "unable to display error message"
+#~ msgstr "エラーメッセージを表示できません"
+
+#~ msgid "_open_osfhandle failed"
+#~ msgstr "_open_osfhandle に失敗しました"
+
+#~ msgid "cannot restore fd %d: dup2 failed"
+#~ msgstr "ファイル記述子 (fd) %d をリストアできません: dup2 に失敗しました"
+
+#~ msgid "%s subprocess"
+#~ msgstr "%s 子プロセス"
+
+#~ msgid "%s subprocess got fatal signal %d"
+#~ msgstr "%s 子プロセスが致命的なシグナル %d を受信しました"
+
+#~ msgid "stdin"
+#~ msgstr "標準入力"
+
+#~ msgid "stdout"
+#~ msgstr "標準出力"
+
+#~ msgid "stderr"
+#~ msgstr "標準エラー出力"
+
+#~ msgid "unknown stream"
+#~ msgstr "不明なストリーム"
+
+#~ msgid "failed to reopen %s with mode %s"
+#~ msgstr "%s をモード %s で再度開くことに失敗しました"
+
+#~ msgid "string comparison failed"
+#~ msgstr "文字列の比較に失敗しました"
+
+#~ msgid "Set LC_ALL='C' to work around the problem."
+#~ msgstr "問題を回避するために LC_ALL='C' を指定してください."
+
+#~ msgid "The strings compared were %s and %s."
+#~ msgstr "比較した文字列は %s と %s です."
+
+#~ msgid "cannot perform formatted output"
+#~ msgstr "書式設定を行った出力を実行することができません"
+
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: 不正なオプション -- %c\n"
+
+#~ msgid "block size"
+#~ msgstr "ブロックサイズ"
+
+#~ msgid "%s exists but is not a directory"
+#~ msgstr "%s は存在しますがディレクトリではありません"
+
+#~ msgid "cannot change owner and/or group of %s"
+#~ msgstr "%s のオーナーとグループを変更できません"
+
+#~ msgid "cannot chdir to directory %s"
+#~ msgstr "ディレクトリ %s に移動できません"
+
+#~ msgid "cannot get the login group of a numeric UID"
+#~ msgstr "数字のUIDのログイングループを取得できません"
+
+#~ msgid ""
+#~ "\n"
+#~ "This is free software. You may redistribute copies of it under the terms "
+#~ "of\n"
+#~ "the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+#~ "There is NO WARRANTY, to the extent permitted by law.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "本プログラムはフリーソフトウェアです. GNU一般公有使用許諾\n"
+#~ "<http://www.gnu.org/licenses/gpl.html> で定められた条項の下で本プログラ\n"
+#~ "ムのコピーを再配布できます. 適切な法が認る限りにおいて全くの無保証です.\n"
+#~ "\n"
+
+#~ msgid "out of memory"
+#~ msgstr "メモリーがなくなりました"
+
+#~ msgid "Usage: %s [OPTION]... PATTERN [FILE] ...\n"
+#~ msgstr "使用法: %s [オプション]‥‥ パターン [ファイル] ‥‥\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Output control:\n"
+#~ " -m, --max-count=NUM stop after NUM matches\n"
+#~ " -b, --byte-offset print the byte offset with output lines\n"
+#~ " -n, --line-number print line number with output lines\n"
+#~ " --line-buffered flush output on every line\n"
+#~ " -H, --with-filename print the filename for each match\n"
+#~ " -h, --no-filename suppress the prefixing filename on output\n"
+#~ " --label=LABEL print LABEL as filename for standard input\n"
+#~ " -o, --only-matching show only the part of a line matching "
+#~ "PATTERN\n"
+#~ " -q, --quiet, --silent suppress all normal output\n"
+#~ " --binary-files=TYPE assume that binary files are TYPE\n"
+#~ " TYPE is 'binary', 'text', or 'without-match'\n"
+#~ " -a, --text equivalent to --binary-files=text\n"
+#~ " -I equivalent to --binary-files=without-match\n"
+#~ " -d, --directories=ACTION how to handle directories\n"
+#~ " ACTION is 'read', 'recurse', or 'skip'\n"
+#~ " -D, --devices=ACTION how to handle devices, FIFOs and sockets\n"
+#~ " ACTION is 'read' or 'skip'\n"
+#~ " -R, -r, --recursive equivalent to --directories=recurse\n"
+#~ " --include=PATTERN files that match PATTERN will be examined\n"
+#~ " --exclude=PATTERN files that match PATTERN will be skipped.\n"
+#~ " --exclude-from=FILE files that match PATTERN in FILE will be "
+#~ "skipped.\n"
+#~ " -L, --files-without-match only print FILE names containing no match\n"
+#~ " -l, --files-with-matches only print FILE names containing matches\n"
+#~ " -c, --count only print a count of matching lines per "
+#~ "FILE\n"
+#~ " -Z, --null print 0 byte after FILE name\n"
+#~ msgstr ""
+#~ "\n"
+#~ "出力制御:\n"
+#~ " -m, --max-count=回数 指定した一致回数の後、終了する\n"
+#~ " -b, --byte-offset 出力行にバイト・オフセットも表示する\n"
+#~ " -n, --line-number 出力行に行数も表示する\n"
+#~ " --line-buffered 行ごとに出力を掃き出す\n"
+#~ " -H, --with-filename 各一致にたいしてそのファイル名も表示する\n"
+#~ " -h, --no-filename 前のファイル名を出力から抑止する\n"
+#~ " --label=ラベル ラベルをファイル名として標準出力に表示する\n"
+#~ " -o, --only-matching パターンと一致する行の部分だけを示す\n"
+#~ " -q, --quiet, --silent 通常の出力をすべて抑止する\n"
+#~ " --binary-files=型 バイナリー・ファイルの型。「binary」\n"
+#~ " 「text」「without-match」を指定\n"
+#~ " -a, --text --binary-files=textと同じ\n"
+#~ " -I --binary-files=without-matchと同じ\n"
+#~ " -d, --directories=操作 ディレクトリーへの操作\n"
+#~ " 「read」(読込み)、「recurse」(再帰)、\n"
+#~ " 「skip」(省略) のいずれかを指定\n"
+#~ " -D, --devices=操作 デバイス、FIFO、ソケットへの操作\n"
+#~ " 「read」か「skip」を指定\n"
+#~ " -R, -r, --recursive --directories=recurseと同じ\n"
+#~ " --include=パターン パターンと一致するファイルを検査する\n"
+#~ " --exclude=パターン パターンと一致するファイルを省略する。\n"
+#~ " --exclude-from=ファイル 指定したファイル内のパターンと\n"
+#~ " 一致するファイルを省略する。\n"
+#~ " -L, --files-without-match 一致のなかったファイル名のみを表示する\n"
+#~ " -l, --files-with-matches 一致したファイル名のみを表示する\n"
+#~ " -c, --count ファイルごとに一致した行数のみを表示する\n"
+#~ " -Z, --null ファイル名の後に、ヌル値のバイトを表示\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Report bugs to <bug-gnu-utils@gnu.org>.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "バグは <bug-gnu-utils@gnu.org> へ報告してください。\n"
+
+#~ msgid "unknown directories method"
+#~ msgstr "未知のディレクトリー操作です"
+
+#~ msgid "%s (GNU grep) %s\n"
+#~ msgstr "%s (GNU grep) %s\n"
+
+#~ msgid ""
+#~ "Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc.\n"
+#~ msgstr ""
+#~ "Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc.\n"
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "これはフリー・ソフトウェアです。複製に関する条件はソースをご覧ください。\n"
+#~ "これは無保証です。営利目的やある特定の目的にむけた適正のものでもありませ"
+#~ "ん。\n"
+
+#~ msgid "The -P and -z options cannot be combined"
+#~ msgstr "-Pと-zのオプションの組合せはできません"
diff --git a/src/grep/po/ko.gmo b/src/grep/po/ko.gmo
new file mode 100644
index 0000000..276dc49
--- /dev/null
+++ b/src/grep/po/ko.gmo
Binary files differ
diff --git a/src/grep/po/ko.po b/src/grep/po/ko.po
new file mode 100644
index 0000000..124fa63
--- /dev/null
+++ b/src/grep/po/ko.po
@@ -0,0 +1,749 @@
+# Korean messages for GNU grep.
+# This file is distributed under the same license as the grep package.
+# Copyright (C) 1996, 1997, 2019 Free Software Foundation, Inc.
+# Bang Jun-Young <bangjy@geocities.com>, 1996-1997.
+# Seong-ho Cho <darkcircle.0426@gmail.com>, 2019-2021.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU grep 3.6.27\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2021-08-10 10:17+0900\n"
+"Last-Translator: Seong-ho Cho <darkcircle.0426@gmail.com>\n"
+"Language-Team: Korean <translation-team-ko@googlegroups.com>\n"
+"Language: ko\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"X-Generator: Poedit 2.3.1\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "%2$s 대상 잘못된 인자 %1$s"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "%2$s 대상 모호한 인자 %1$s"
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr "유효한 인자는 다음과 같습니다:"
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr "프로그램 오류"
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr "스택 오버플로우"
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr "기록 오류"
+
+#: lib/dfa.c:896
+msgid "unbalanced ["
+msgstr "짝이 맞지 않는 [ 괄호"
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr "잘못된 문자 클래스"
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr "문자 클래스 표기 방식은 [:space:]가 아닌 [[:space:]]입니다"
+
+#: lib/dfa.c:1210
+msgid "unfinished \\ escape"
+msgstr "끝나지 않은 \\ 이스케이프 문자"
+
+#: lib/dfa.c:1371
+msgid "invalid content of \\{\\}"
+msgstr "잘못된 \\{\\} 내용"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr "정규 표현식이 너무 깁니다"
+
+#: lib/dfa.c:1858
+msgid "unbalanced ("
+msgstr "짝이 맞지 않는 ( 괄호"
+
+#: lib/dfa.c:1975
+msgid "no syntax specified"
+msgstr "문법을 지정하지 않았습니다"
+
+#: lib/dfa.c:1986
+msgid "unbalanced )"
+msgstr "짝이 맞지 않는 ) 괄호"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "알 수 없는 시스템 오류"
+
+#: lib/getopt.c:278
+#, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: '%s%s' 옵션이 모호합니다\n"
+
+#: lib/getopt.c:284
+#, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: '%s%s' 옵션이 모호합니다 가능한 값:"
+
+#: lib/getopt.c:319
+#, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: 인식할 수 없는 옵션 '%s%s'\n"
+
+#: lib/getopt.c:345
+#, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: '%s%s' 옵션은 인자를 허용하지 않습니다\n"
+
+#: lib/getopt.c:360
+#, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: '%s%s' 옵션은 인자가 필요합니다\n"
+
+#: lib/getopt.c:621
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: 잘못된 옵션 -- '%c'\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: 이 옵션은 인자가 필요합니다 -- '%c'\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "메모리가 바닥남"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr "현재 작업 디렉터리를 기록할 수 없습니다"
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "초기 작업 디렉터리 반환에 실패했습니다"
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr "텍스트/바이너리 모드 파일 서술자 설정에 실패했습니다"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "'"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr "성공"
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr "일치 항목 없음"
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr "잘못된 정규 표현식"
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr "잘못된 조합 문자"
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr "잘못된 문자 클래스 이름"
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr "백 슬래시 문자가 따라옴"
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr "잘못된 후위 참조"
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr "일치하지 않는 [, [^, [:, [., [="
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr "일치하지 않는 ( 또는 \\( 괄호"
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr "일치하지 않는 \\{ 괄호"
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr "잘못된 \\{\\} 내용"
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr "잘못된 범위 끝"
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "메모리가 바닥남"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr "잘못된 선행 정규 표현식"
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr "정규 표현식 마감 표현이 앞서있습니다"
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr "정규 표현식이 너무 깁니다"
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr "일치하지 않는 ) 또는 \\) 괄호"
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr "이전 정규 표현식 없음"
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "%s이(가) 패키징 함 (%s)\n"
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "%s이(가) 패키징 함\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr "(C)"
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"GPLv3+ 라이선스: GNU GPL 버전 3 이상 <%s>.\n"
+"이 프로그램은 자유 소프트웨어입니다: 자유롭게 바꾸고 재배포할 수 있습니다.\n"
+"법률이 허용하는 모든 범위내의 보증은 없습니다.\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr "%s이(가) 작성함.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "%s와(과) %s이(가) 작성함.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "%s와(과) %s, %s이(가) 작성함.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"%s와(과) %s, %s,\n"
+"%s이(가) 작성함.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"%s와(과) %s, %s,\n"
+"%s, %s이(가) 작성함.\n"
+"\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"%s와(과) %s, %s,\n"
+"%s, %s, %s이(가) 작성함.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"%s와(과) %s, %s,\n"
+"%s, %s, %s,\n"
+"%s이(가) 작성함.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"%s와(과) %s, %s,\n"
+"%s, %s, %s,\n"
+"%s, %s이(가) 작성함.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"%s와(과) %s, %s,\n"
+"%s, %s, %s,\n"
+"%s, %s, %s이(가) 작성함.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"%s, %s, %s,\n"
+"%s, %s, %s,\n"
+"%s, %s, %s\n"
+"외 다수가 작성함.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr "버그 보고 주소: %s\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "%s 버그 보고 주소: %s\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s 홈 페이지: <%s>\n"
+
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr "GNU 소프트웨어 활용 일반 도움말: <%s>\n"
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(표준 입력)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "잘못된 내용 길이 인자"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "입력 행 수를 세기에 너무 많습니다"
+
+#: src/grep.c:1641
+#, c-format
+msgid "%s: binary file matches"
+msgstr "%s: 바이너리 파일 일치함"
+
+#: src/grep.c:1679
+#, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "%s: 경고: 재귀 디렉터리 순환"
+
+#: src/grep.c:1899
+#, c-format
+msgid "%s: input file is also the output"
+msgstr "%s: 입력 파일은 출력 대상이기도 합니다"
+
+#: src/grep.c:1961 src/grep.c:1968
+#, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "사용법: %s [<옵션>]... <패턴> [<파일>]...\n"
+
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "자세한 정보는 '%s --help'를 입력하십시오.\n"
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr "각 <파일>에서 <패턴>에 일치하는 행을 검색합니다.\n"
+
+#: src/grep.c:1970
+#, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"예제: %s -i 'hello world' menu.h main.c\n"
+"<패턴>에는 개행 문자로 구분한 여러 패턴을 넣을 수 있습니다.\n"
+"\n"
+"패턴 선택 및 해석:\n"
+"\n"
+
+#: src/grep.c:1975
+#, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp <패턴>은 확장 정규 표현식입니다\n"
+" -F, --fixed-strings <패턴>은 단순 문자열입니다\n"
+" -G, --basic-regexp <패턴>은 기본 정규 표현식입니다\n"
+" -P, --perl-regexp <패턴>은 펄 정규 표현식입니다\n"
+
+#: src/grep.c:1981
+#, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=<패턴> 일치하는 부분을 찾을 <패턴> 기준을 활용합니다\n"
+" -f, --file=<파일> <파일>에서 <패턴>에 일치하는 부분을 취합니다\n"
+" -i, --ignore-case 대소문자 구분을 무시합니다\n"
+" --no-ignore-case 대소문자 구분을 유지합니다(기본값)\n"
+" -w, --word-regexp 주어진 단어와 완벽하게 일치하는 부분만\n"
+" -x, --line-regexp 주어진 행 내용과 완벽하게 일치하는 부분만\n"
+" -z, --null-data 데이터 행의 끝은 개행 문자가 아닌 0바이트 값으로 "
+"끝납니다\n"
+
+#: src/grep.c:1989
+#, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"기타:\n"
+" -s, --no-messages 오류 메시지 출력을 생략합니다\n"
+" -v, --invert-match 조건에 일치하지 않는 행을 선택합니다\n"
+" -V, --version 버전 정보를 나타내고 빠져 나갑니다\n"
+" --help 이 도움말 텍스트를 나타내고 빠져 나갑니다\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+"\n"
+"출력 제어:\n"
+" -m, --max-count=<횟수> <횟수> 만큼 행을 찾아내고 나면 멈춤\n"
+" -b, --byte-offset 출력 행의 바이트 오프셋을 출력합니다\n"
+" -n, --line-number 출력 행의 행 번호를 출력합니다\n"
+" --line-buffered 모든 행의 출력을 플러싱합니다\n"
+" -H, --with-filename 출력 행에 파일 이름을 출력합니다\n"
+" -h, --no-filename 출력 행 앞부분의 파일 이름 표시를 생략합니다 \n"
+" --label=<레이블> <레이블>을 표준 입력 앞부분의 파일 이름으로 사용"
+"합니다\n"
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+" -o, --only-matching 조건에 일치하는 행이 비어있지 않은 결과만 나타냅"
+"니다\n"
+" -q, --quiet, --silent 모든 일반 출력 동작을 생략합니다\n"
+" --binary-files=<형식> 바이너리 파일을 지정한 <형식>으로 간주합니다\n"
+" <형식> 값은 'binary', 'text', 'without-match' 중 "
+"하나입니다\n"
+" -a, --text --binary-files=text 옵션과 동일\n"
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+" -I --binary-files=without-match 옵션과 동일\n"
+" -d, --directories=<동작> 디렉터리 처리 방식\n"
+" <동작> 값은 'read', 'recurse', 'skip' 중 하나입니"
+"다\n"
+" -D, --devices=<동작> 장치, FIFO, 소켓 처리 방식\n"
+" <동작> 값은 'read', 'skip' 중 하나입니다\n"
+" -r, --recursive --directories=recurse와 유사\n"
+" -R, --dereference-recursive 위 옵션과 비슷하지만 모든 심볼릭 링크를 따라갑"
+"니다\n"
+
+#: src/grep.c:2023
+#, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+" --include=<글롭> <글롭>(파일 패턴)에 일치하는 파일만 검색합니"
+"다\n"
+" --exclude=<글롭> <글롭>에 일치하는 파일을 건너뜁니다\n"
+" --exclude-from=<파일> <파일>과 파일 패턴이 일치하는 파일을 건너뜁니"
+"다\n"
+" --exclude-dir=<글롭> <글롭>과 일치하는 디렉터리를 건너뜁니다\n"
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+" -L, --files-without-match 일치하는 행이 없으면 <파일>의 이름만 출력합니다\n"
+" -l, --files-with-matches 일치하는 행이 있는 <파일>의 이름만 출력합니다\n"
+" -c, --count <파일>에 일치하는 행 갯수만 출력합니다\n"
+" -T, --initial-tab (필요한 경우) 행 별로 탭을 표시합니다\n"
+" -Z, --null <파일> 이름 뒤에 0 바이트 값을 출력합니다\n"
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+"\n"
+"문맥 제어:\n"
+" -B, --before-context=<갯수> <갯수> 줄 수만큼 출력 내용의 앞부분을 출력합니"
+"다\n"
+" -A, --after-context=<갯수> <갯수> 줄 수만큼 출력 내용의 뒷부분을 출력합니"
+"다\n"
+" -C, --context=<갯수> <갯수> 줄 수 만큼 출력 내용 앞 뒤 부분을 모두 "
+"출력합니다 \n"
+
+#: src/grep.c:2043
+#, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+" -NUM --context=<갯수>와 동일\n"
+" --group-separator=<구분자> 문맥상 일치하는 행을 <구분자> 출력으로 구"
+"분\n"
+" --no-group-separator 일치 문맥에 대한 구분자를 출력하지 않습니다\n"
+" --color[=<시기>],\n"
+" --colour[=<시기>] 일치하는 문자열 강조시 마커를 활용합니다\n"
+" <시기>의 값은 'always', 'never', 'auto' 중 하나입"
+"니다\n"
+" -U, --binary 개행 문자에서 CR 문자를 빼내지 않음(MSDOS/윈도"
+"우)\n"
+"\n"
+
+#: src/grep.c:2052
+#, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"<파일> 값이 '-' 이면, 표준 입력을 읽습니다. <파일>에 아무런 값이 없다면,\n"
+"재귀 탐색 옵션을 주었을 경우 현재 디렉터리를, 그렇지 않으면 '-' 값을 설정"
+"함\n"
+"으로 가정합니다. <파일> 갯수가 한개일 경우 -h 옵션을 준 것으로 가정합니다.\n"
+"조건 일치 행이 나오면, 끝내기 상태 값은 0을, 그렇지 않으면 1을 반환합니다.\n"
+"오류가 나타났거나 -q 옵션을 주지 않았다면, 2를 반환합니다.\n"
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "비교 기준을 중복 지정했습니다"
+
+#: src/grep.c:2101
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr ""
+"--disable-perl-regexp 빌드에서는 Perl 문자열 일치 기능을 지원하지 않습니다"
+
+#: src/grep.c:2103
+#, c-format
+msgid "invalid matcher %s"
+msgstr "잘못된 비교 기준 %s"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "알 수 없는 장치 방식"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr "경고: --unix-byte-offsets (-u) 옵션은 오래되었습니다"
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "잘못된 최대 갯수"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "알 수 없는 바이너리 파일 형식"
+
+#: src/grep.c:2829
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+"Mike Haertel 등이 작성함. 기타 작성자 정보는\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS> 링크를 참고하십시오."
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr "PCRE JIT 스택의 메모리 할당에 실패했습니다"
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr "-P 유니바이트, UTF-8 로캘만 지원합니다"
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr "-P 옵션은 단일 패턴만 지원합니다"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr "내부 오류 (나타나면 안됨)"
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr "PCRE 행 길이 한계 초과"
+
+#: src/pcresearch.c:306
+#, c-format
+msgid "%s: memory exhausted"
+msgstr "%s: 메모리가 바닥남"
+
+#: src/pcresearch.c:310
+#, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr "%s: PCRE JIT 스택 가득 참"
+
+#: src/pcresearch.c:315
+#, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr "%s: PCRE 후위 추적 한계 초과"
+
+#: src/pcresearch.c:319
+#, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr "%s: PCRE 후위 추적 한계 초과"
+
+#: src/pcresearch.c:327
+#, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr "%s: 내부 PCRE 오류: %d"
diff --git a/src/grep/po/ky.gmo b/src/grep/po/ky.gmo
new file mode 100644
index 0000000..1cb818e
--- /dev/null
+++ b/src/grep/po/ky.gmo
Binary files differ
diff --git a/src/grep/po/ky.po b/src/grep/po/ky.po
new file mode 100644
index 0000000..9d10b2c
--- /dev/null
+++ b/src/grep/po/ky.po
@@ -0,0 +1,891 @@
+# Translation of grep-2.5.3 messages to Kirghiz/Kyrgyz
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# This file is distributed under the same license as the GREP package.
+# Azilet Beishenaliev <aziletb@gmail.com>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: grep 2.5.3\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2007-09-01 17:27+0100\n"
+"Last-Translator: Azilet Beishenaliev <aziletb@gmail.com>\n"
+"Language-Team: Kirghiz <i18n-team-ky-kyrgyz@lists.sourceforge.net>\n"
+"Language: ky\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Poedit-Language: Kyrgyz\n"
+"X-Poedit-Country: KYRGYZSTAN\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr ""
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr ""
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr ""
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr ""
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr ""
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr ""
+
+#: lib/dfa.c:896
+#, fuzzy
+msgid "unbalanced ["
+msgstr "[ - мунун уйкашы жок"
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr ""
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr ""
+
+# escape - кыргызча???
+#: lib/dfa.c:1210
+#, fuzzy
+msgid "unfinished \\ escape"
+msgstr "Бүтпөй калган эскейп \\"
+
+#: lib/dfa.c:1371
+#, fuzzy
+msgid "invalid content of \\{\\}"
+msgstr "максимум сан жарабайт"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr ""
+
+#: lib/dfa.c:1858
+#, fuzzy
+msgid "unbalanced ("
+msgstr "( - мунун уйкашы жок"
+
+# кайсы синтаксис? грептин шаблонубу?
+#: lib/dfa.c:1975
+#, fuzzy
+msgid "no syntax specified"
+msgstr "Синтаксис аталган жок"
+
+#: lib/dfa.c:1986
+#, fuzzy
+msgid "unbalanced )"
+msgstr ") - мунун уйкашы жок"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "Белгисиз система катасы"
+
+#: lib/getopt.c:278
+#, fuzzy, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: `%s' опциясы так эмес\n"
+
+#: lib/getopt.c:284
+#, fuzzy, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: `%s' опциясы так эмес\n"
+
+#: lib/getopt.c:319
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: бул опция түшүнүксүз `%c%s'\n"
+
+#: lib/getopt.c:345
+#, fuzzy, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: `%c%s' опциясы менен аргумент колдонулбайт\n"
+
+#: lib/getopt.c:360
+#, fuzzy, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: `%s' опциясы менен аргумент болуш керек\n"
+
+#: lib/getopt.c:621
+#, fuzzy, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: жараксыз опция -- %c\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, fuzzy, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: бул опциянын аргументи болуш керек -- %c\n"
+
+# Памятты эмне дейбиз яя? ;)
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "память жетпей калды"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr ""
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr ""
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr ""
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "\""
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "\""
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr ""
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr ""
+
+# Памятты эмне дейбиз яя? ;)
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "Память жетпей калды"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr ""
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr ""
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr ""
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr ""
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, fuzzy, c-format
+msgid "Report bugs to: %s\n"
+msgstr ""
+"\n"
+"Каталарды бул жерге жибергиле <%s>.\n"
+
+#: lib/version-etc.c:251
+#, fuzzy, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr ""
+"\n"
+"Каталарды бул жерге жибергиле <%s>.\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr ""
+
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr ""
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(стандарт кирүү)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "контекст узундугу жарабайт"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "берилген данныйлардын саны саналбай турганча көп"
+
+#: src/grep.c:1641
+#, fuzzy, c-format
+msgid "%s: binary file matches"
+msgstr "Экилик форматтагы %s файлы уйкашат\n"
+
+#: src/grep.c:1679
+#, fuzzy, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "бирибирине кирген папка айлампасы бар"
+
+#: src/grep.c:1899
+#, c-format
+msgid "%s: input file is also the output"
+msgstr ""
+
+#: src/grep.c:1961 src/grep.c:1968
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "Колдонулушу: %s [ОПЦИЯ]... ШАБЛОН [ФАЙЛ]...\n"
+
+#: src/grep.c:1963
+#, fuzzy, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "Толук маалымат үчүн `%s --help' деп жазгыла.\n"
+
+#: src/grep.c:1969
+#, fuzzy, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr "Ар ФАЙЛда же стандарт кирүүдө ШАБЛОНду изде.\n"
+
+# выражение дегендин кыргызчасын жазыш керек
+#: src/grep.c:1970
+#, fuzzy, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"Мисалы: %s -i 'салам дүйнө' menu.h main.c\n"
+"\n"
+"Регулярдуу выражение тандоо жана мааниси:\n"
+
+# выражение - кыргызчасын жаз!!!!
+#: src/grep.c:1975
+#, fuzzy, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp ШАБЛОН кеңейтилген түрдөгү регулярдуу выражение\n"
+" -F, --fixed-strings ШАБЛОН ар сапта бир сөз болгон жыйын\n"
+" -G, --basic-regexp ШАБЛОН негизги түрдөгү регулярдуу выражение\n"
+" -P, --perl-regexp ШАБЛОН Perl түрүндөгү регулярдуу выражение\n"
+
+# выражение!!!!
+#: src/grep.c:1981
+#, fuzzy, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=ШАБЛОН ШАБЛОНду регулярдуу выражение катары колдон\n"
+" -f, --file=ФАЙЛ ШАБЛОН ФАЙЛдан алынат\n"
+" -i, --ignore-case тамгалардын чоң-кичинеси айырмаланбайт\n"
+" -w, --word-regexp ШАБЛОН толук сөздөр менен гана уйкаштырылат\n"
+" -x, --line-regexp ШАБЛОН толук сап менен гана уйкаштырылат\n"
+" -z, --null-data дата(данный) саптары 0 байты(EOL эмес) менен "
+"бүтөт\n"
+
+#: src/grep.c:1989
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"Түрдүү:\n"
+" -s, --no-messages каталарды көрсөтпөйт\n"
+" -v, --invert-match уйкашы болбогон саптар тандалат\n"
+" -V, --version версия маалыматын көрсөтүп бүтүрөт\n"
+" --help бул жардам маалыматын көрсөтүп бүтүрөт\n"
+" --mmap мүмкүнчүлүк болсо mmap кирүүсү колдонулат\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+
+#: src/grep.c:2023
+#, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+
+#: src/grep.c:2043
+#, fuzzy, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+"\n"
+"Контексти менен жыйынтык чыгаруу:\n"
+" -B, --before-context=N уйкаш болгон саптан мурунку N сап да көрсөтүлөт\n"
+" -A, --after-context=N уйкаш болгон саптан кийинки N сап да көрсөтүлөт\n"
+" -C, --context=N уйкаш болгон саптан мурунку жана кийинки N сап "
+"да көрсөтүлөт\n"
+" -N --context=NUM менен бирдей\n"
+" --color[=УЧУР],\n"
+" --colour[=УЧУР] уйкаш сөз кайсы учурда айырмаландырылат\n"
+" УЧУР - `always'(ардайым), `never'(эч качан) же "
+"`auto'(авто) боло алат.\n"
+" -U, --binary катар соңунда (EOL) CR тамгасы алынбайт (MSDOS)\n"
+" -u, --unix-byte-offsets орундарды CR жок болгондой кылып көрсөтөт "
+"(MSDOS)\n"
+"\n"
+
+#: src/grep.c:2052
+#, fuzzy, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"ФАЙЛ жазылбаса же ФАЙЛ - (тире) болсо, стандарт кирүү колдонулат. Экиден аз "
+"ФАЙЛ берилген болсо -h опциясы бар болот. Эгер сап тандалган болсо бүтүрүү "
+"статусу 0 болот, башка учурда 1; эгерде ката чыкса жана -q опциясы "
+"берилбеген болсо бүтүрүү статусу 2 болот.\n"
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "уйкаштыруучуларда конфликттер табылды"
+
+#: src/grep.c:2101
+#, fuzzy
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr ""
+"Бул --disable-perl-regexp опциясы менен жасалган, -P опциясы кошулуу эмес"
+
+#: src/grep.c:2103
+#, fuzzy, c-format
+msgid "invalid matcher %s"
+msgstr "максимум сан жарабайт"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "аспап методу белгисиз"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr ""
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "максимум сан жарабайт"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "белгисиз файл түрү"
+
+#: src/grep.c:2829
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr ""
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr ""
+
+#: src/pcresearch.c:143
+#, fuzzy
+msgid "the -P option only supports a single pattern"
+msgstr "-P опциясы бир гана шаблон ала алат"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr ""
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr ""
+
+# Памятты эмне дейбиз яя? ;)
+#: src/pcresearch.c:306
+#, fuzzy, c-format
+msgid "%s: memory exhausted"
+msgstr "память жетпей калды"
+
+#: src/pcresearch.c:310
+#, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr ""
+
+#: src/pcresearch.c:315
+#, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr ""
+
+#: src/pcresearch.c:319
+#, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr ""
+
+#: src/pcresearch.c:327
+#, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr ""
+
+#, fuzzy, c-format
+#~ msgid "warning: %s: %s"
+#~ msgstr "эскертүү: %s: %s\n"
+
+#, fuzzy
+#~ msgid "%s: option '--%s' doesn't allow an argument\n"
+#~ msgstr "%s: `--%s' опциясы менен аргумент колдонулбайт\n"
+
+#, fuzzy
+#~ msgid "%s: unrecognized option '--%s'\n"
+#~ msgstr "%s: бул опция түшүнүксүз `--%s'\n"
+
+#, fuzzy
+#~ msgid "%s: option '-W %s' is ambiguous\n"
+#~ msgstr "%s: `-W %s' опциясы так эмес\n"
+
+#, fuzzy
+#~ msgid "%s: option '-W %s' doesn't allow an argument\n"
+#~ msgstr "%s: `-W %s' опциясы менен аргумент колдонулбайт\n"
+
+#, fuzzy
+#~ msgid "%s: option '-W %s' requires an argument\n"
+#~ msgstr "%s: `%s' опциясы менен аргумент болуш керек\n"
+
+#~ msgid "PATTERN is, by default, a basic regular expression (BRE).\n"
+#~ msgstr ""
+#~ "ШАБЛОН, алдынала тандалгандай, негизги түрдөгү регулярдуу выражение "
+#~ "(BRE)\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "'egrep' means 'grep -E'. 'fgrep' means 'grep -F'.\n"
+#~ "Direct invocation as either 'egrep' or 'fgrep' is deprecated.\n"
+#~ msgstr ""
+#~ "`egrep' деген `grep -E'. `fgrep' деген `grep -F'.\n"
+#~ "`egrep' же `fgrep' деп туз иштетуу колдонулбай калды.\n"
+
+#~ msgid "unfinished repeat count"
+#~ msgstr "кайталоо саны толук эмес жазылды"
+
+#~ msgid "malformed repeat count"
+#~ msgstr "кайталоо саны туура эмес жазылды"
+
+#~ msgid "writing output"
+#~ msgstr "жооп жазыбатат"
+
+#~ msgid "PATTERN is an extended regular expression (ERE).\n"
+#~ msgstr "ШАБЛОН кеңейтилген түрдөгү регулярдуу выражение (ERE).\n"
+
+#~ msgid "PATTERN is a set of newline-separated fixed strings.\n"
+#~ msgstr "ШАБЛОН ар сапта бир сөз болгон жыйын.\n"
+
+# line - сап деп колдоном
+#~ msgid ""
+#~ "\n"
+#~ "Output control:\n"
+#~ " -m, --max-count=NUM stop after NUM matches\n"
+#~ " -b, --byte-offset print the byte offset with output lines\n"
+#~ " -n, --line-number print line number with output lines\n"
+#~ " --line-buffered flush output on every line\n"
+#~ " -H, --with-filename print the filename for each match\n"
+#~ " -h, --no-filename suppress the prefixing filename on output\n"
+#~ " --label=LABEL print LABEL as filename for standard input\n"
+#~ " -o, --only-matching show only the part of a line matching "
+#~ "PATTERN\n"
+#~ " -q, --quiet, --silent suppress all normal output\n"
+#~ " --binary-files=TYPE assume that binary files are TYPE;\n"
+#~ " TYPE is `binary', `text', or `without-match'\n"
+#~ " -a, --text equivalent to --binary-files=text\n"
+#~ " -I equivalent to --binary-files=without-match\n"
+#~ " -d, --directories=ACTION how to handle directories;\n"
+#~ " ACTION is `read', `recurse', or `skip'\n"
+#~ " -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+#~ " ACTION is `read' or `skip'\n"
+#~ " -R, -r, --recursive equivalent to --directories=recurse\n"
+#~ " --include=FILE_PATTERN search only files that match FILE_PATTERN\n"
+#~ " --exclude=FILE_PATTERN skip files and directories matching "
+#~ "FILE_PATTERN\n"
+#~ " --exclude-from=FILE skip files matching any file pattern from "
+#~ "FILE\n"
+#~ " --exclude-dir=PATTERN directories that match PATTERN will be "
+#~ "skipped.\n"
+#~ " -L, --files-without-match print only names of FILEs containing no "
+#~ "match\n"
+#~ " -l, --files-with-matches print only names of FILEs containing matches\n"
+#~ " -c, --count print only a count of matching lines per "
+#~ "FILE\n"
+#~ " -T, --initial-tab make tabs line up (if needed)\n"
+#~ " -Z, --null print 0 byte after FILE name\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Жыйынтык берүү опциялары:\n"
+#~ " -m, --max-count=N N жолу уйкаш табылгандан кийин токтойт\n"
+#~ " -b, --byte-offset жыйынтыкта байт жайгашуусу көрсөтүлөт\n"
+#~ " -n, --line-number жыйынтыкта саптын катар номери көрсөтүлөт\n"
+#~ " --line-buffered табылган ар саптан улам жыйынтык көрсөтүлөт\n"
+#~ " -H, --with-filename ар уйкаш үчүн файлдын аты көрсөтүлөт\n"
+#~ " -h, --no-filename жыйынтыкта файлдын аты көрсөтүлбөйт\n"
+#~ " --label=ТАМГА стандарт кирүүдөн келгендерди ТАМГА файлынан "
+#~ "деп көрсөтөт\n"
+#~ " -o, --only-matching сапта ШАБЛОН менен уйкаш болгон жер эле "
+#~ "көрсөтүлөт\n"
+#~ " -q, --quiet, --silent жазылатурган баардык жыйынтык көрсөтүлбөйт\n"
+#~ " --binary-files=ТҮР бинариктердин түрүн ТҮР катары алат\n"
+#~ " ТҮР - 'binary', 'text', же 'without-match' "
+#~ "боло алат\n"
+#~ " -a, --text --binary-files=text менен бирдей\n"
+#~ " -I --binary-files=without-match менен бирдей\n"
+#~ " -d, --directories=ACTION папкаларды кандай иштетерин билдирет\n"
+#~ " ACTION - 'read', 'recurse', же 'skip' боло "
+#~ "алат\n"
+#~ " -D, --devices=ACTION аспаптарды, FIFO жана сокеттерди кандай "
+#~ "иштетерин билдирет\n"
+#~ " ACTION - 'read' же 'skip' боло алат\n"
+#~ " -R, -r, --recursive --directories=recurse менен бирдей\n"
+#~ " --include=ФАЙЛ_ШАБЛОНУ ФАЙЛ_ШАБЛОНУ менен уйкашкан файлдар "
+#~ "гана каралат\n"
+#~ " --exclude=ФАЙЛ_ШАБЛОНУ ФАЙЛ_ШАБЛОНУ менен уйкашкан файл жана "
+#~ "папкалар каралбайт\n"
+#~ " --exclude-from=ФАЙЛ ФАЙЛдын ичиндеги шаблондор менен уйкашкан "
+#~ "файлдар каралбайт\n"
+#~ " --exclude-dir=ШАБЛОН ШАБЛОН менен уйкашкан папкалар каралбайт\n"
+#~ " -L, --files-without-match эч уйкаш табылбаган файлдардын аты гана "
+#~ "көрсөтүлөт\n"
+#~ " -l, --files-with-matches уйкаш табылган файлдардын аты гана жазылат\n"
+#~ " -c, --count ар файлда табылган уйкаш саны гана жазылат\n"
+#~ " -T, --initial-tab табтарды түздөйт (керек болсо)\n"
+#~ " -Z, --null файлдын атынан кийин 0 байты жазылат\n"
+
+#~ msgid "Invocation as `egrep' is deprecated; use `grep -E' instead.\n"
+#~ msgstr ""
+#~ "`egrep' деген колдонулбай калды; анын ордуна `grep -E' деп колдонунуз.\n"
+
+#~ msgid "Invocation as `fgrep' is deprecated; use `grep -F' instead.\n"
+#~ msgstr ""
+#~ "`fgrep' деген колдонулбай калды; анын ордуна `grep -F' деп колдонунуз.\n"
+
+# kandai koldpnulat bilbeim.
+#~ msgid ""
+#~ "In GREP_COLORS=\"%s\", the \"%s\" capacity needs a value (\"=...\"); "
+#~ "skipped."
+#~ msgstr ""
+#~ "GREP_COLORS=\"%s\" дегенде, \"%s\" көлөмүнө маани жазылыш керек (\"=..."
+#~ "\"); колдонулбайт."
+
+# kandai koldpnulat bilbeim.
+#~ msgid ""
+#~ "In GREP_COLORS=\"%s\", the \"%s\" capacity is boolean and cannot take a "
+#~ "value (\"=%s\"); skipped."
+#~ msgstr ""
+#~ "GREP_COLORS=\"%s\" дегенде, \"%s\" көлөмү булев түрүндө жана маани "
+#~ "алалбайт (\"=%s\"); колдонулбайт."
+
+# kandai koldpnulat bilbeim.
+#~ msgid "In GREP_COLORS=\"%s\", the \"%s\" capacity %s."
+#~ msgstr "GREP_COLORS=\"%s\" дегенде, \"%s\" көлөмү %s."
+
+#~ msgid ""
+#~ "Stopped processing of ill-formed GREP_COLORS=\"%s\" at remaining "
+#~ "substring \"%s\"."
+#~ msgstr ""
+#~ "Туура эмес жазылган GREP_COLORS=\"%s\", \"%s\" катарында ишке алынуусу "
+#~ "токтоду."
+
+#~ msgid "unknown directories method"
+#~ msgstr "папка методу белгисиз"
+
+# FSF котормосу ;)
+#~ msgid ""
+#~ "Copyright (C) 1988, 1992-2002, 2004, 2005 Free Software Foundation, "
+#~ "Inc.\n"
+#~ msgstr ""
+#~ "Укуктары сакталган (C) 1988, 1992-2002, 2004, 2005 Эркин Программа Фонду "
+#~ "(FSF)\n"
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "Бул эркин колдонулуучу программа; копиясын алуу үчүн коддордо жазылган\n"
+#~ "шарттарды караңыз. Бул программанын эч убадасы ЖОК; керек болсо СООДА же\n"
+#~ "БИР МАКСАТКА ЫҢГАЙЛУУ болуусуна да убада жок.\n"
+
+#~ msgid "The -P and -z options cannot be combined"
+#~ msgstr "-P жана -z опциялары чогуу колдонулбайт"
+
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: мындай опция колдонулбайт -- %c\n"
diff --git a/src/grep/po/lt.gmo b/src/grep/po/lt.gmo
new file mode 100644
index 0000000..8e1d215
--- /dev/null
+++ b/src/grep/po/lt.gmo
Binary files differ
diff --git a/src/grep/po/lt.po b/src/grep/po/lt.po
new file mode 100644
index 0000000..deb35ef
--- /dev/null
+++ b/src/grep/po/lt.po
@@ -0,0 +1,867 @@
+# translation of grep-2.5.4-pre3 to Lithuanian
+# Copyright (C) 2008 Free Software Foundation, Inc.
+# This file is distributed under the same license as the grep package.
+#
+# Gintautas Miliauskas <gintas@akl.lt>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: grep-2.5.4-pre3\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2008-07-09 13:28+0300\n"
+"Last-Translator: Gintautas Miliauskas <gintas@akl.lt>\n"
+"Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n"
+"Language: lt\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
+"%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr ""
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr ""
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr ""
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr ""
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr ""
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr ""
+
+#: lib/dfa.c:896
+#, fuzzy
+msgid "unbalanced ["
+msgstr "Nesubalansuotas ["
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr ""
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr ""
+
+#: lib/dfa.c:1210
+#, fuzzy
+msgid "unfinished \\ escape"
+msgstr "Nebaigta \\ kaitos seka"
+
+#: lib/dfa.c:1371
+#, fuzzy
+msgid "invalid content of \\{\\}"
+msgstr "netaisyklingas maksimalus skaičius"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr ""
+
+#: lib/dfa.c:1858
+#, fuzzy
+msgid "unbalanced ("
+msgstr "Nesubalansuotas ("
+
+#: lib/dfa.c:1975
+#, fuzzy
+msgid "no syntax specified"
+msgstr "Nenurodyta sintaksė"
+
+#: lib/dfa.c:1986
+#, fuzzy
+msgid "unbalanced )"
+msgstr "Nesubalansuotas )"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "Nežinoma sistemos klaida"
+
+#: lib/getopt.c:278
+#, fuzzy, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: parametras `%s' dviprasmis\n"
+
+#: lib/getopt.c:284
+#, fuzzy, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: parametras `%s' dviprasmis\n"
+
+#: lib/getopt.c:319
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: neatpažintas argumentas „%c%s“\n"
+
+#: lib/getopt.c:345
+#, fuzzy, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: argumentas „%c%s“ neleidžia parametro\n"
+
+#: lib/getopt.c:360
+#, fuzzy, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: parametrui „%s“ reikia argumento\n"
+
+#: lib/getopt.c:621
+#, fuzzy, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: netaisyklingas argumentas -- %c\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, fuzzy, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: parametrui reikia argumento -- %c\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "baigėsi atmintis"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr ""
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr ""
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr ""
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "„"
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "“"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr ""
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "Baigėsi atmintis"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr ""
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr ""
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr ""
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr ""
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, fuzzy, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Licencija GPLv3+: GNU GPL versija 3 arba vėlesnė <http://gnu.org/licenses/"
+"gpl.html>\n"
+"Ši programa laisva: galite ją keisti ir platinti.\n"
+"Nėra JOKIOS GARANTIJOS, kiek leidžia įstatymai.\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, fuzzy, c-format
+msgid "Report bugs to: %s\n"
+msgstr ""
+"\n"
+"Apie klaidas praneškite adresu <%s>.\n"
+
+#: lib/version-etc.c:251
+#, fuzzy, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr ""
+"\n"
+"Apie klaidas praneškite adresu <%s>.\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr ""
+
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr ""
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(standartinis įvedimas)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "netaisyklingas konteksto ilgio argumentas"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "įvedimas per didelis skaičiavimui"
+
+#: src/grep.c:1641
+#, fuzzy, c-format
+msgid "%s: binary file matches"
+msgstr "Dvejetainis failas %s atitinka\n"
+
+#: src/grep.c:1679
+#, fuzzy, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "rekursyvus aplankų ciklas"
+
+#: src/grep.c:1899
+#, c-format
+msgid "%s: input file is also the output"
+msgstr ""
+
+#: src/grep.c:1961 src/grep.c:1968
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "Naudojimas: %s [ARGUMENTAS]... ŠABLONAS [FAILAS]...\n"
+
+#: src/grep.c:1963
+#, fuzzy, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "Pabandykite „%s --help“, jei norite gauti daugiau informacijos.\n"
+
+#: src/grep.c:1969
+#, fuzzy, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr "Ieškoti ŠABLONO kiekviename faile arba standartiniame įėjime.\n"
+
+#: src/grep.c:1970
+#, fuzzy, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"Pavyzdys: %s -i 'labas pasauli' menu.h main.c\n"
+"\n"
+"Reguliariųjų išraiškų parinkimas ir interpretacija:\n"
+
+#: src/grep.c:1975
+#, fuzzy, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp ŠABLONAS yra išplėstinė reguliarioji išr. (ERE)\n"
+" -F, --fixed-strings ŠABLONAS yra aibė fiksuotų sekų atskirose "
+"eilutėse\n"
+" -G, --basic-regexp ŠABLONAS yra įprasta reguliarioji išraiška "
+"(BRE)\n"
+" -P, --perl-regexp ŠABLONAS yra Perl reguliarioji išraiška\n"
+
+#: src/grep.c:1981
+#, fuzzy, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=ŠABLONAS naudoti ŠABLONĄ paieškai\n"
+" -f, --file=FAILAS gauti ŠABLONĄ iš FAILO\n"
+" -i, --ignore-case ignoruoti raidžių registrą\n"
+" -w, --word-regexp ŠABLONAS turi atitikti tik pilnus žodžius\n"
+" -x, --line-regexp ŠABLONAS turi atitikti tik pilnas eilutes\n"
+" -z, --null-data duomenų eilutė baigiasi 0 baitu, o ne nauja "
+"eil.\n"
+
+#: src/grep.c:1989
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"Kita:\n"
+" -s, --no-messages nerodyti klaidų\n"
+" -v, --invert-match išrinkti neatitinkančias eilutes\n"
+" -V, --version spausdinti versijos informaciją ir išeiti\n"
+" --help parodyti šią informaciją ir išeiti\n"
+" --mmap naudoti mmap įvedimą, jei tai įmanoma\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+
+#: src/grep.c:2023
+#, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+
+#: src/grep.c:2043
+#, fuzzy, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+"\n"
+"Konteksto valdymas:\n"
+" -B, --before-context=NUM spausdinti NUM eilučių prieš atitikimą\n"
+" -A, --after-context=NUM spausdinti NUM eilučių po atitikimo\n"
+" -C, --context=NUM spausdinti NUM eilučių konteksto\n"
+" -NUM tas pats, kaip --context=NUM\n"
+" --color[=KADA],\n"
+" --colour[=KADA] naudoti markerius atitikimams pažymėti;\n"
+" KADA yra „always“, „never“ arba „auto“\n"
+" -U, --binary nešalinti CR simbolių eilutės pabaigoje (MSDOS)\n"
+" -u, --unix-byte-offsets pranešti baitų pozicijas, tarsi nebūtų CRų "
+"(MSDOS)\n"
+"\n"
+
+#: src/grep.c:2052
+#, fuzzy, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"Jei FAILAS nenurodytas arba yra -, skaityti standartinį įvedimą. Jei\n"
+"pateikti mažiau negu du failai, naudoti -h. Grąžinamas klaidos kodas\n"
+"0, jei rasta bent viena eilutė, 1 kitais atvejais;\n"
+"jei įvyksta klaida ir nenurodytas -q, klaidos kodas yra 2.\n"
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "nurodyti nesuderinami atitikimo mechanizmai"
+
+#: src/grep.c:2101
+#, fuzzy
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr ""
+"Parametro -P palaikymas neįkompiliuotas į šią --disable-perl-regexp programą"
+
+#: src/grep.c:2103
+#, fuzzy, c-format
+msgid "invalid matcher %s"
+msgstr "netaisyklingas maksimalus skaičius"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "nežinomas įrenginių metodas"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr ""
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "netaisyklingas maksimalus skaičius"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "nežinomas dvejetainių failų tipas"
+
+#: src/grep.c:2829
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr ""
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr ""
+
+#: src/pcresearch.c:143
+#, fuzzy
+msgid "the -P option only supports a single pattern"
+msgstr "Parametras -P leidžia tik vieną šabloną"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr ""
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr ""
+
+#: src/pcresearch.c:306
+#, fuzzy, c-format
+msgid "%s: memory exhausted"
+msgstr "baigėsi atmintis"
+
+#: src/pcresearch.c:310
+#, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr ""
+
+#: src/pcresearch.c:315
+#, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr ""
+
+#: src/pcresearch.c:319
+#, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr ""
+
+#: src/pcresearch.c:327
+#, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr ""
+
+#, fuzzy, c-format
+#~ msgid "warning: %s: %s"
+#~ msgstr "įspėjimas: %s: %s\n"
+
+#, fuzzy
+#~ msgid "%s: option '--%s' doesn't allow an argument\n"
+#~ msgstr "%s: argumentas „--%s“ neleidžia parametro\n"
+
+#, fuzzy
+#~ msgid "%s: unrecognized option '--%s'\n"
+#~ msgstr "%s: neatpažintas argumentas „--%s“\n"
+
+#, fuzzy
+#~ msgid "%s: option '-W %s' is ambiguous\n"
+#~ msgstr "%s: parametras „-W %s“ dviprasmis\n"
+
+#, fuzzy
+#~ msgid "%s: option '-W %s' doesn't allow an argument\n"
+#~ msgstr "%s: parametras „-W %s“ nepriima argumento\n"
+
+#, fuzzy
+#~ msgid "%s: option '-W %s' requires an argument\n"
+#~ msgstr "%s: parametrui „%s“ reikia argumento\n"
+
+#~ msgid "PATTERN is, by default, a basic regular expression (BRE).\n"
+#~ msgstr ""
+#~ "ŠABLONAS numatytuoju atveju yra paprasta reguliarioji išraiška (BRE).\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "'egrep' means 'grep -E'. 'fgrep' means 'grep -F'.\n"
+#~ "Direct invocation as either 'egrep' or 'fgrep' is deprecated.\n"
+#~ msgstr ""
+#~ "„egrep“ reiškia „grep -E“. „fgrep“ reiškia „grep -F“.\n"
+#~ "Tiesioginiai kvietimai vardais „egrep“ arba „fgrep“ nebenaudotini.\n"
+
+#~ msgid "unfinished repeat count"
+#~ msgstr "nebaigtas pakartojimų skaičius"
+
+#~ msgid "malformed repeat count"
+#~ msgstr "netaisyklingas pakartojimų skaičius"
+
+#~ msgid "writing output"
+#~ msgstr "rašomas išvedimas"
+
+#~ msgid "PATTERN is an extended regular expression (ERE).\n"
+#~ msgstr "ŠABLONAS yra išplėstinė reguliarioji išraiška (ERE).\n"
+
+#~ msgid "PATTERN is a set of newline-separated fixed strings.\n"
+#~ msgstr "ŠABLONAS yra aibė simbolių sekų atskirose eilutėse.\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Output control:\n"
+#~ " -m, --max-count=NUM stop after NUM matches\n"
+#~ " -b, --byte-offset print the byte offset with output lines\n"
+#~ " -n, --line-number print line number with output lines\n"
+#~ " --line-buffered flush output on every line\n"
+#~ " -H, --with-filename print the filename for each match\n"
+#~ " -h, --no-filename suppress the prefixing filename on output\n"
+#~ " --label=LABEL print LABEL as filename for standard input\n"
+#~ " -o, --only-matching show only the part of a line matching "
+#~ "PATTERN\n"
+#~ " -q, --quiet, --silent suppress all normal output\n"
+#~ " --binary-files=TYPE assume that binary files are TYPE;\n"
+#~ " TYPE is `binary', `text', or `without-match'\n"
+#~ " -a, --text equivalent to --binary-files=text\n"
+#~ " -I equivalent to --binary-files=without-match\n"
+#~ " -d, --directories=ACTION how to handle directories;\n"
+#~ " ACTION is `read', `recurse', or `skip'\n"
+#~ " -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+#~ " ACTION is `read' or `skip'\n"
+#~ " -R, -r, --recursive equivalent to --directories=recurse\n"
+#~ " --include=FILE_PATTERN search only files that match FILE_PATTERN\n"
+#~ " --exclude=FILE_PATTERN skip files and directories matching "
+#~ "FILE_PATTERN\n"
+#~ " --exclude-from=FILE skip files matching any file pattern from "
+#~ "FILE\n"
+#~ " --exclude-dir=PATTERN directories that match PATTERN will be "
+#~ "skipped.\n"
+#~ " -L, --files-without-match print only names of FILEs containing no "
+#~ "match\n"
+#~ " -l, --files-with-matches print only names of FILEs containing matches\n"
+#~ " -c, --count print only a count of matching lines per "
+#~ "FILE\n"
+#~ " -T, --initial-tab make tabs line up (if needed)\n"
+#~ " -Z, --null print 0 byte after FILE name\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Išvedimo valdymas:\n"
+#~ " -m, --max-count=NUM sustoti po NUM atitikimų\n"
+#~ " -b, --byte-offset išvesti baito numerį išvedant eilutes\n"
+#~ " -n, --line-number išvesti eilutės numerį išvedant eilutes\n"
+#~ " --line-buffered išleisti (flush) išvedimą po kiekvienos "
+#~ "eilutės\n"
+#~ " -H, --with-filename išspausdinti failo vardą kiekvienam "
+#~ "atitikimui\n"
+#~ " -h, --no-filename nespausdinti failo vardo\n"
+#~ " --label=ŽYMĖ spausdinti ŽYMĘ kaip failo vardą stand. "
+#~ "įvedimui\n"
+#~ " -o, --only-matching rodyti tik tą eilutės dalį, kuri atitinka "
+#~ "ŠABLONĄ\n"
+#~ " -q, --quiet, --silent išjunti normalų išvedimą\n"
+#~ " --binary-files=TIPAS tarti, kad dvejetainiai failai yra šio "
+#~ "TIPO;\n"
+#~ " TIPAS yra „binary“, „text“ arba „without-"
+#~ "match“\n"
+#~ " -a, --text tapatu --binary-files=text\n"
+#~ " -I tapatu --binary-files=without-match\n"
+#~ " -d, --directories=VEIKSMAS kaip ieškoti aplankuose;\n"
+#~ " VEIKSMAS yra „read“, „recurse“ arba „skip“\n"
+#~ " -D, --devices=VEIKSMAS kaip ieškoti įrenginiuose, FIFO ir lizduose;\n"
+#~ " VEIKSMAS yra „read“ arba „skip“\n"
+#~ " -R, -r, --recursive tapatu --directories=recurse\n"
+#~ " --include=FAILŲ_ŠABLONAS ieškoti failuose, kurių vardai atitinka "
+#~ "šabl.\n"
+#~ " --exclude=FAILŲ_ŠABLONAS praleisti failus, kurių vardai atitinka "
+#~ "šabl.\n"
+#~ " --exclude-from=FAILAS praleisti failus, kurių v. atitinka šabl. iš "
+#~ "FAILO\n"
+#~ " --exclude-dir=ŠABLONAS aplankai, atitinkantys ŠABLONĄ, bus "
+#~ "praleisti.\n"
+#~ " -L, --files-without-match spausdinti tik neatitinkančių failų vardus\n"
+#~ " -l, --files-with-matches spausdinti tik atitinkančių šabloną failų "
+#~ "vardus\n"
+#~ " -c, --count spausdinti tik atitinkančių eilučių faile "
+#~ "skaičių\n"
+#~ " -T, --initial-tab lygiuoti tabuliatorius (jei reikia)\n"
+#~ " -Z, --null spausdinti 0 baitą po FAILO vardo\n"
+
+#~ msgid "Invocation as `egrep' is deprecated; use `grep -E' instead.\n"
+#~ msgstr "Kvietimas pavadinimu „egrep“ nebenaudotinas, naudokite „grep -E“.\n"
+
+#~ msgid "Invocation as `fgrep' is deprecated; use `grep -F' instead.\n"
+#~ msgstr "Kvietimas pavadinimu „fgrep“ nebenaudotinas, naudokite „grep -F“.\n"
+
+#~ msgid ""
+#~ "In GREP_COLORS=\"%s\", the \"%s\" capacity needs a value (\"=...\"); "
+#~ "skipped."
+#~ msgstr ""
+#~ "Kintamajame GREP_COLORS=„%s“, „%s“ reikia reikšmės („=...“); praleista."
+
+#~ msgid ""
+#~ "In GREP_COLORS=\"%s\", the \"%s\" capacity is boolean and cannot take a "
+#~ "value (\"=%s\"); skipped."
+#~ msgstr ""
+#~ "Kintamajame GREP_COLORS=„%s“, „%s“ dvejetainis, todėl reikšmė („=%s“) "
+#~ "netinkama; praleista."
+
+#~ msgid "In GREP_COLORS=\"%s\", the \"%s\" capacity %s."
+#~ msgstr "Kintamajame GREP_COLORS=„%s“, „%s“ talpumas %s."
+
+#~ msgid ""
+#~ "Stopped processing of ill-formed GREP_COLORS=\"%s\" at remaining "
+#~ "substring \"%s\"."
+#~ msgstr ""
+#~ "Sustabdytas netaisyklingo GREP_COLORS=„%s“ apdorojimas ties likusiu "
+#~ "posekiu „%s“."
+
+#~ msgid "unknown directories method"
+#~ msgstr "nežinomas aplankų metodas"
+
+#~ msgid "Copyright (C) 2008 Free Software Foundation, Inc.\n"
+#~ msgstr "Autorinės teisės (C) 2008 Free Software Foundation, Inc.\n"
+
+#~ msgid "The -P and -z options cannot be combined"
+#~ msgstr "Parametrai -P ir -z negali būti sujungti"
+
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: neleistinas argumentas -- %c\n"
diff --git a/src/grep/po/nb.gmo b/src/grep/po/nb.gmo
new file mode 100644
index 0000000..2981ce0
--- /dev/null
+++ b/src/grep/po/nb.gmo
Binary files differ
diff --git a/src/grep/po/nb.po b/src/grep/po/nb.po
new file mode 100644
index 0000000..d8ebd0f
--- /dev/null
+++ b/src/grep/po/nb.po
@@ -0,0 +1,925 @@
+# Norwegian bokmål translation of GNU Grep
+# Copyright (C) 1996 Free Software Foundation, Inc.
+# This file is distributed under the same license as the grep package.
+# Johnny A. Solbu <johnny@solbu.net>, 2020-2021
+# Åka Sikrom <a4@hush.com>, 2014-2020
+# Eivind Tagseth <eivindt@multinet.no>, 1997, 2004
+# Karl Anders Øygard <karl.oygard@fou.telenor.no>, 1996.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: grep-3.6.27\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2021-08-09 14:11+0200\n"
+"Last-Translator: Johnny A. Solbu <johnny@solbu.net>\n"
+"Language-Team: Norwegian Bokmaal <l10n-no@lister.huftis.org>\n"
+"Language: nb\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"X-Generator: Poedit 2.2.3\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "«%s» er et ugyldig argument for %s"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "«%s» er et tvetydig argument for %s"
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr "Følgende argumenter er gyldige:"
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr "programfeil"
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr "stabel er full"
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr "skrivefeil"
+
+#: lib/dfa.c:896
+msgid "unbalanced ["
+msgstr "ubalansert ["
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr "ugyldig tegnklasse"
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr "gjeldende tegnklasse-syntaks er [[:space:]], ikke [:space:]"
+
+#: lib/dfa.c:1210
+msgid "unfinished \\ escape"
+msgstr "ufullstendig \\-skiftetegn"
+
+#: lib/dfa.c:1371
+msgid "invalid content of \\{\\}"
+msgstr "ugyldig innhold i \\{\\}"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr "regulært uttrykk er for stort"
+
+#: lib/dfa.c:1858
+msgid "unbalanced ("
+msgstr "ubalansert ("
+
+#: lib/dfa.c:1975
+msgid "no syntax specified"
+msgstr "ingen syntaks er valgt"
+
+#: lib/dfa.c:1986
+msgid "unbalanced )"
+msgstr "ubalansert «)»"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "Ukjent systemfeil"
+
+#: lib/getopt.c:278
+#, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: valget «%s%s» er flertydig\n"
+
+#: lib/getopt.c:284
+#, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: valget «%s%s» er flertydig, og kan bety følgende:"
+
+#: lib/getopt.c:319
+#, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: valget «%s%s» er ukjent\n"
+
+#: lib/getopt.c:345
+#, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: valget «%s%s» tillater ikke argumenter\n"
+
+#: lib/getopt.c:360
+#, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: valget «%s%s» krever et argument\n"
+
+#: lib/getopt.c:621
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: valget -- «%c» er ugyldig\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: valget -- «%c» krever et argument\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "minnet er oppbrukt"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr "klarte ikke å hente gjeldende arbeidsmappe"
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "klarte ikke å gå tilbake til opprinnelig arbeidsmappe"
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr "klarte ikke å endre fildeskriptor for tekst-/binærmodus"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "«"
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "»"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr "Fullført"
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr "Ingen treff"
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr "Ugyldig regulært uttrykk"
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr "Ugyldig sorteringstegn"
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr "Ugyldig tegnklassenavn"
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr "Avsluttende omvendt skråstrek"
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr "Ugyldig tilbakereferanse"
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr "Ingen treff på «[», «[^», «[:», «[.» eller «[=»"
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr "Ingen treff på ( eller \\("
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr "Ingen treff på \\{"
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr "Ugyldig innhold i «\\{\\}»"
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr "Ugyldig slutt på rekkevidde"
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "Minnet er oppbrukt"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr "Ugyldig foregående regulært uttrykk"
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr "For tidlig slutt på regulært uttrykk"
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr "Regulært uttrykk er for stort"
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr "Ingen treff på «)» eller «\\)»"
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr "Intet tidligere regulært uttrykk"
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Pakket av %s (%s)\n"
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Pakket av %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr "(C)"
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Lisens GPLv3+: GNU GPL versjon 3 eller nyere <%s>.\n"
+"Dette er fri programvare. Du kan endre og dele den videre så mye du vil.\n"
+"Utgiveren stiller INGEN GARANTI, i den grad gjeldende lovverk tillater det.\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Skrevet av %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Skrevet av %s og %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Skrevet av %s, %s og %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Skrevet av %s, %s, %s\n"
+"og %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Skrevet av %s, %s, %s,\n"
+"%s og %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Skrevet av %s, %s, %s,\n"
+"%s, %s og %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Skrevet av %s, %s, %s,\n"
+"%s, %s, %s og %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Skrevet av %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"og %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Skrevet av %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s og %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Skrevet av %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s og andre.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr "Rapporter feil til: %s\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "Rapporter feil som oppstår med %s til: %s\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Nettside for %s: <%s>\n"
+
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr "Generell hjelp til bruk av GNU-programvare: <%s>\n"
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(standard inndata)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "ugyldig kontekstlengde"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "for mye inndata å telle"
+
+#: src/grep.c:1641
+#, c-format
+msgid "%s: binary file matches"
+msgstr "%s: Binærfil samsvarer"
+
+#: src/grep.c:1679
+#, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "%s: advarsel: rekursiv mappeløkke"
+
+#: src/grep.c:1899
+#, c-format
+msgid "%s: input file is also the output"
+msgstr "%s: inndatafil er også brukt som utdata"
+
+#: src/grep.c:1961 src/grep.c:1968
+#, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "Bruk: %s [VALG] … MØNSTER [FIL] …\n"
+
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "Prøv å skrive «%s --help» for mer informasjon.\n"
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr "Søk etter MØNSTER i valgt(e) FIL(er).\n"
+
+#: src/grep.c:1970
+#, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"Eksempel: %s -i 'hei verden' menu.h main.c\n"
+"MØNSTER kan inneholde flere mønstre adskilt med linjeskift.\n"
+"\n"
+"Reg.uttrykksutvalg og tolkning:\n"
+
+#: src/grep.c:1975
+#, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp MØNSTER er et utvidet regulært uttrykk\n"
+" -F, --fixed-strings MØNSTER er flere linje-adskilte strenger\n"
+" -G, --basic-regexp MØNSTER er et enkelt regulært uttrykk\n"
+" -P, --perl-regexp MØNSTER er et Perl-uttrykk\n"
+
+#: src/grep.c:1981
+#, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=MØNSTER søk etter MØNSTER\n"
+" -f, --file=FIL hent MØNSTER fra valgt FIL\n"
+" -i, --ignore-case ikke skill mellom store og små bokstaver\n"
+" --no-ignore-case skill mellom store og små bokstaver (forvalgt)\n"
+" -w, --word-regexp søk etter hele ord\n"
+" -x, --line-regexp søk etter hele linjer\n"
+" -z, --null-data linjer slutter på 0-byte i stedet for "
+"linjeskift\n"
+
+#: src/grep.c:1989
+#, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"Diverse:\n"
+" -s, --no-messages ikke skriv ut feilmeldinger\n"
+" -v, --revert-match velg linjer som ikke passer\n"
+" -V, --version vis versjon og avslutt\n"
+" --help vis denne helpeteksten og avslutt\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+"\n"
+"Utdata-kontroll:\n"
+" -m, --max-count=ANT stopp ved valgt ANTall treff\n"
+" -b, --byte-offset skriv ut hvor søkeuttrykket ga treff per "
+"utdatalinje\n"
+" -n, --line-number skriv ut linjenummmer per utdatalinje\n"
+" --line-buffered tøm utdata på hver linje\n"
+" -H, --with-filename ta med filnavn på søketreff-linjer\n"
+" -h, --no-filename ikke ta med filnavn-prefiks i utdata\n"
+" --label=ETIKETT bruk valgt ETIKETT som prefiks på standard "
+"inndata-filnavn\n"
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+" -o, --only-matching bare vis den delen av linja som ga treff\n"
+" -q, --quiet, --silent ikke skriv ut noe vanlig utdata\n"
+" --binary-files=TYPE forvent at binærfiler er av valgt TYPE.\n"
+" TYPE er «binary» (binær), «text» (tekst) eller "
+"«without-match» (uten treff)\n"
+" -a, --text tilsvarer «--binary-files=text»\n"
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+" -I tilsvarer «--binary-files=without-match»\n"
+" -d, --directories=HANDLING hvordan mapper skal håndteres.\n"
+" HANDLING er «read» (les), «recurse» (søk i "
+"undermapper og -filer) eller «skip» (hopp over)\n"
+" -D, --devices=HANDLING hvordan enheter, FIFO-er og sokler skal "
+"behandles.\n"
+" HANDLING er «read» (les) eller «skip» (hopp "
+"over)\n"
+" -r, --recursive tilsvarer «--directories=recurse»\n"
+" -R, --dereference-recursive likner «-r», men følger symbolske lenker\n"
+
+#: src/grep.c:2023
+#, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+" --include=MØNSTER bare søk gjennom filer som samsvarer med MØNSTER\n"
+" --exclude=MØNSTER hopp over filer som samsvarer med MØNSTER\n"
+" --exclude-from=FIL hopp over filer som samsvarer med mønstre nevnt i "
+"FIL\n"
+" --exclude-dir=MØNSTER hopp over mapper som samsvarer med MØNSTER.\n"
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+" -L, --files-without-match bare skriv ut FILnavn som ikke inneholder "
+"søketreff\n"
+" -l, --files-with-matches bare skriv ut FILnavn som inneholder søketreff\n"
+" -c, --count bare skriv ut antall samsvarende linjer per FIL\n"
+" -T, --initial-tab still opp tabulatorer (hvis nødvendig)\n"
+" -Z, --null skriv ut 0-byte etter FILnavn\n"
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+"\n"
+"Kontekstkontroll:\n"
+" -B, --before-context=ANT skriv ut valgt ANTall linjer med ledende "
+"kontekst\n"
+" -A, --after-context=ANT skriv ut valgt ANTall linjer med avsluttende "
+"kontekst\n"
+" -C, --context=ANT skriv ut valgt ANTall linjer med utdata-"
+"kontekst\n"
+
+#: src/grep.c:2043
+#, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+" -NUM tilsvarer «--context=NUM»\n"
+" --group-separator=SEP Skriv ut SEP på linje mellom treff med kontekst\n"
+" --no-group-separator ikke skriv ut skilletegn for treff med kontekst\n"
+" --color[=NÅR],\n"
+" --colour[=NÅR] bruk markører for å fremheve strenger som "
+"samsvarer\n"
+" NÅR er enten «always» (alltid) , "
+"«never» (aldri), eller «auto»\n"
+" -U, --binary ikke fjern CR-tegn ved EOL (MSDOS/Windows)\n"
+"\n"
+
+#: src/grep.c:2052
+#, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"Programmet leser standard inndata når FIL er «-». Når FIL ikke er valgt, "
+"leses «.» i\n"
+"rekursiv modus, og ellers «-». Valget «-h» gjelder implisitt hvis færre enn "
+"to FILer er valgt.\n"
+"Avsluttende statuskode er 0 når søket gir treff, og ellers 1.\n"
+"Hvis det oppstår feil og «-q» ikke er valgt, avslutter programmet med "
+"statuskode 2.\n"
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "søkeuttrykkene er i konflikt med hverandre"
+
+#: src/grep.c:2101
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr "Søk støttes ikke i Perl når det er bygd med «--disable-perl-regexp»"
+
+#: src/grep.c:2103
+#, c-format
+msgid "invalid matcher %s"
+msgstr "«%s» er et ugyldig søkeuttrykk"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "ukjent enhetsmetode"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr "advarsel: --unix-byte-offsets (-u) er avleggs"
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "ugyldig maksantall"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "ukjent binærfiltype"
+
+#: src/grep.c:2829
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+"Skrevet av Mike Haertel og andre. Se\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr "klarte ikke å tildele minne til PCRE JIT-stabelen"
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr "-P støtter bare regioner i unibyte- og UTF-8"
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr "valget «-P» støtter bare ett mønster"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr "intern feil (dette skal aldri skje)"
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr "grensa for PCRE-linjelengde er overskredet"
+
+#: src/pcresearch.c:306
+#, c-format
+msgid "%s: memory exhausted"
+msgstr "%s: minnet er oppbrukt"
+
+#: src/pcresearch.c:310
+#, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr "%s: PCRE JIT-stabel er oppbrukt"
+
+#: src/pcresearch.c:315
+#, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr "%s: grensa for PCRE-tilbakegang er overskredet"
+
+#: src/pcresearch.c:319
+#, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr "%s: PCREs rekursjonsgrense er overskredet"
+
+#: src/pcresearch.c:327
+#, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr "%s: intern PCRE-feil: %d"
+
+#~ msgid "warning: GREP_OPTIONS is deprecated; please use an alias or script"
+#~ msgstr "advarsel: GREP_OPTIONS er utdatert. Bruk et alias eller skript"
+
+#~ msgid "warning: %s: %s"
+#~ msgstr "advarsel: %s. %s"
+
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "Nettside for %s: <http://www.gnu.org/software/%s/>\n"
+
+#~ msgid "invalid %s%s argument '%s'"
+#~ msgstr "%s%s-argumentet «%s» er ugyldig"
+
+#~ msgid "invalid suffix in %s%s argument '%s'"
+#~ msgstr "ugyldig suffiks i %s%s-argument «%s»"
+
+#~ msgid "%s%s argument '%s' too large"
+#~ msgstr "%s%s-argumentet «%s» er for stort/langt"
+
+#~ msgid "Mike Haertel"
+#~ msgstr "Mike Haertel"
+
+#~ msgid "internal error"
+#~ msgstr "intern feil"
+
+#~ msgid "%s: option '--%s' doesn't allow an argument\n"
+#~ msgstr "%s: valget «--%s» tillater ikke argumenter\n"
+
+#~ msgid "%s: unrecognized option '--%s'\n"
+#~ msgstr "%s: valget «--%s» er ukjent\n"
+
+#~ msgid "%s: option '-W %s' is ambiguous\n"
+#~ msgstr "%s: valget «-W %s» er flertydig\n"
+
+#~ msgid "%s: option '-W %s' doesn't allow an argument\n"
+#~ msgstr "%s: valget «-W %s» tillater ikke argumenter\n"
+
+#~ msgid "%s: option '-W %s' requires an argument\n"
+#~ msgstr "%s: valget «-W %s» krever et argument\n"
+
+#~ msgid "lseek failed"
+#~ msgstr "lseek mislyktes"
+
+#~ msgid "PATTERN is, by default, a basic regular expression (BRE).\n"
+#~ msgstr "MØNSTER er et enkelt regulært uttrykk (BRE) som standard. \n"
+
+#~ msgid ""
+#~ "'egrep' means 'grep -E'. 'fgrep' means 'grep -F'.\n"
+#~ "Direct invocation as either 'egrep' or 'fgrep' is deprecated.\n"
+#~ msgstr ""
+#~ "«egrep» betyr «grep -E». «fgrep» betyr «grep -F».\n"
+#~ "Direkte kjøring som «egrep» eller «fgrep» er foreldet.\n"
+
+#~ msgid "unescaped ^ or $ not supported with -Pz"
+#~ msgstr "ingen treff på «^», eller «$» støttes ikke med «-Pz»"
+
+#~ msgid "GNU Grep home page: <%s>\n"
+#~ msgstr "Nettside for GNU Grep: <%s>\n"
+
+#~ msgid "invalid UTF-8 byte sequence in input"
+#~ msgstr "inndata inneholder en ugyldig UTF-8-bytesekvens"
+
+#~ msgid "unfinished repeat count"
+#~ msgstr "uferdig gjentagelsesantall"
+
+#~ msgid "malformed repeat count"
+#~ msgstr "feilaktig gjentagelsesantall"
+
+#~ msgid "out of memory"
+#~ msgstr "tomt for minne"
+
+#~ msgid "writing output"
+#~ msgstr "skriver utdata"
+
+#~ msgid "Usage: %s [OPTION]... PATTERN [FILE] ...\n"
+#~ msgstr "Bruk: %s [FLAGG]... MØNSTER [FIL] ...\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Output control:\n"
+#~ " -m, --max-count=NUM stop after NUM matches\n"
+#~ " -b, --byte-offset print the byte offset with output lines\n"
+#~ " -n, --line-number print line number with output lines\n"
+#~ " --line-buffered flush output on every line\n"
+#~ " -H, --with-filename print the filename for each match\n"
+#~ " -h, --no-filename suppress the prefixing filename on output\n"
+#~ " --label=LABEL print LABEL as filename for standard input\n"
+#~ " -o, --only-matching show only the part of a line matching "
+#~ "PATTERN\n"
+#~ " -q, --quiet, --silent suppress all normal output\n"
+#~ " --binary-files=TYPE assume that binary files are TYPE\n"
+#~ " TYPE is 'binary', 'text', or 'without-match'\n"
+#~ " -a, --text equivalent to --binary-files=text\n"
+#~ " -I equivalent to --binary-files=without-match\n"
+#~ " -d, --directories=ACTION how to handle directories\n"
+#~ " ACTION is 'read', 'recurse', or 'skip'\n"
+#~ " -D, --devices=ACTION how to handle devices, FIFOs and sockets\n"
+#~ " ACTION is 'read' or 'skip'\n"
+#~ " -R, -r, --recursive equivalent to --directories=recurse\n"
+#~ " --include=PATTERN files that match PATTERN will be examined\n"
+#~ " --exclude=PATTERN files that match PATTERN will be skipped.\n"
+#~ " --exclude-from=FILE files that match PATTERN in FILE will be "
+#~ "skipped.\n"
+#~ " -L, --files-without-match only print FILE names containing no match\n"
+#~ " -l, --files-with-matches only print FILE names containing matches\n"
+#~ " -c, --count only print a count of matching lines per "
+#~ "FILE\n"
+#~ " -Z, --null print 0 byte after FILE name\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Utskriftskontroll:\n"
+#~ " -m, --max-count=ANT stopp etter ANT samsvar\n"
+#~ " -b, --byte-offset skriv byte-forskyvning sammen med "
+#~ "utskriftslinjer\n"
+#~ " -n, --line-number skriv linjenummer sammen med utskriftslinjer\n"
+#~ " --line-buffered tøm utskriftsbuffer for hver linje\n"
+#~ " -H, --with-filename skriv filnavnet for hvert samsvar\n"
+#~ " -h, --no-filename ikke skriv filnavnet for hvert samsvar\n"
+#~ " --label=NAVN skriv NAVN som filnavn for standard innkanal\n"
+#~ " -o, --only-matching vis bare den delen av en linje som samsvarer "
+#~ "med\n"
+#~ " MØNSTER.\n"
+#~ " -q, --quiet, --silent undertrykk all vanlig utskrift\n"
+#~ " --binary-files=TYPE anta at binære filer er TYPE\n"
+#~ " TYPE er «binary», «text» eller «without-"
+#~ "match»\n"
+#~ " -a, --text samme som binary-files=text\n"
+#~ " -I samme som --binary-files=without-match\n"
+#~ " -d, --directories=HANDLING hvordan håndtere kataloger\n"
+#~ " HANDLING er «read» eller «skip»\n"
+#~ " -D, --devices=HANDLING hvordan enheter, FIFOer og sockets skal "
+#~ "håndteres\n"
+#~ " HANDLING er «read» eller «skip»\n"
+#~ " -R, -r, --recursive samme som --directories=recurse\n"
+#~ " --include=MØNSTER undersøk filer som samsvarer med MØNSTER.\n"
+#~ " --exclude=MØNSTER hopp over filer som samsvarer med MØNSTER.\n"
+#~ " --exclude-from=FIL hopp over filer som samsvarer med MØNSTER i "
+#~ "FIL.\n"
+#~ " -L, --files-without-match bare skriv FIL-navn uten samsvar\n"
+#~ " -l, --files-with-matches bare skriv FIL-navnene som inneholder "
+#~ "samsvar\n"
+#~ " -c, --count bare skriv ut antall samsvarende linjer per "
+#~ "FIL\n"
+#~ " -Z, --null skriv 0-byte etter FIL-navn\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Report bugs to <bug-gnu-utils@gnu.org>.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Rapportér feil til <bug-gnu-utils@prep.ai.mit.edu>.\n"
+
+#~ msgid "unknown directories method"
+#~ msgstr "ukjent katalogmetode"
+
+#~ msgid "%s (GNU grep) %s\n"
+#~ msgstr "%s (GNU grep) %s\n"
+
+#~ msgid ""
+#~ "Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc.\n"
+#~ msgstr ""
+#~ "Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc.\n"
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "Dette er fri programvare, se kildekoden for kopieringsbetingelser. Det\n"
+#~ "er INGEN garanti, ikke en gang for SALGBARHET eller EGNETHET FOR NOEN \n"
+#~ "SPESIELL OPPGAVE.\n"
+
+#~ msgid "The -P and -z options cannot be combined"
+#~ msgstr "-P-flagget og -z-flagget kan ikke bli brukt sammen"
+
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: ulovlig flagg -- %c\n"
diff --git a/src/grep/po/nl.gmo b/src/grep/po/nl.gmo
new file mode 100644
index 0000000..6116ec0
--- /dev/null
+++ b/src/grep/po/nl.gmo
Binary files differ
diff --git a/src/grep/po/nl.po b/src/grep/po/nl.po
new file mode 100644
index 0000000..9f83a7a
--- /dev/null
+++ b/src/grep/po/nl.po
@@ -0,0 +1,900 @@
+# Dutch translations for GNU grep.
+# Copyright (C) 2021 Free Software Foundation, Inc.
+# This file is distributed under the same license as the grep package.
+#
+# "Keep your religious feelings to yourself."
+#
+# Benno Schulenberg <benno@vertaalt.nl>, 2005, 2007, 2008, 2010, 2011, 2012, 2013.
+# Benno Schulenberg <benno@vertaalt.nl>, 2014, 2015, 2016, 2018, 2019, 2020, 2021.
+# Erwin Poeze <erwin.poeze@gmail.com>, 2009.
+# Taco Witte <tcwitte@cs.uu.nl>, 2004.
+# Ivo Timmermans <itimmermans@bigfoot.com>, 2000.
+# Erick Branderhorst <branderh@debian.org>, 1996.
+msgid ""
+msgstr ""
+"Project-Id-Version: grep-3.6.27\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2021-08-11 11:40+0200\n"
+"Last-Translator: Benno Schulenberg <vertaling@coevern.nl>\n"
+"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
+"Language: nl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "ongeldig argument %s van %s"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "argument %s van %s is niet eenduidig"
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr "Geldige argumenten zijn:"
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr "programmafout"
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr "stack-overloop"
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr "schrijffout"
+
+#: lib/dfa.c:896
+msgid "unbalanced ["
+msgstr "ongepaarde ["
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr "ongeldige tekenklasse"
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr "syntax van tekenklasse is [[:space:]], niet [:space:]"
+
+#: lib/dfa.c:1210
+msgid "unfinished \\ escape"
+msgstr "onafgemaakte \\-stuurcode"
+
+#: lib/dfa.c:1371
+msgid "invalid content of \\{\\}"
+msgstr "ongeldige inhoud van \\{\\}"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr "reguliere expressie is te groot"
+
+#: lib/dfa.c:1858
+msgid "unbalanced ("
+msgstr "ongepaarde ("
+
+#: lib/dfa.c:1975
+msgid "no syntax specified"
+msgstr "geen syntax opgegeven"
+
+#: lib/dfa.c:1986
+msgid "unbalanced )"
+msgstr "ongepaarde )"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "Onbekende systeemfout"
+
+#: lib/getopt.c:278
+#, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: optie '%s%s' is niet eenduidig\n"
+
+#: lib/getopt.c:284
+#, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: optie '%s%s' is niet eenduidig; mogelijkheden zijn:"
+
+#: lib/getopt.c:319
+#, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: onbekende optie '%s%s'\n"
+
+#: lib/getopt.c:345
+#, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: optie '%s%s' staat geen argument toe\n"
+
+#: lib/getopt.c:360
+#, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: optie '%s%s' vereist een argument\n"
+
+#: lib/getopt.c:621
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: ongeldige optie -- '%c'\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: optie vereist een argument -- '%c'\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "onvoldoende geheugen beschikbaar"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr "kan de huidige werkmap niet vastleggen"
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "kan niet terugkeren naar de oorspronkelijke werkmap"
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr "kan modus van bestandsdescriptor niet instellen op tekst of binair"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "‘"
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "’"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr "Gelukt"
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr "Geen overeenkomsten"
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr "Ongeldige reguliere expressie"
+
+# Zie http://mailman.vrijschrift.org/pipermail/vertaling/2005-August/004670.html
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr "Ongeldig samengesteld teken"
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr "Ongeldige tekenklassenaam"
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr "Backslash aan het eind"
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr "Ongeldige terugverwijzing"
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr "Ongepaarde [, [^, [:, [., of [="
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr "Ongepaarde ( of \\("
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr "Ongepaarde \\{"
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr "Ongeldige inhoud van \\{\\}"
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr "Ongeldig bereikeinde"
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "Onvoldoende geheugen beschikbaar"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr "Ongeldige voorafgaande reguliere expressie"
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr "Voortijdig einde van reguliere expressie"
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr "Reguliere expressie is te groot"
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr "Ongepaarde ) of \\)"
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr "Geen eerdere reguliere expressie"
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "In pakketvorm gebracht door %s (%s)\n"
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "In pakketvorm gebracht door %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr "©"
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Dit is vrije software: u mag het vrijelijk wijzigen en verder verspreiden.\n"
+"De precieze licentie is GPL-3+: GNU General Public License versie 3 of "
+"later.\n"
+"Zie <%s> voor de volledige (Engelse) tekst.\n"
+"Deze software kent GEEN GARANTIE, voor zover de wet dit toestaat.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Geschreven door %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Geschreven door %s en %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Geschreven door %s, %s en %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Geschreven door %s, %s, %s\n"
+"en %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Geschreven door %s, %s, %s,\n"
+"%s en %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Geschreven door %s, %s, %s,\n"
+"%s, %s en %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Geschreven door %s, %s, %s,\n"
+"%s, %s, %s en %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Geschreven door %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"en %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Geschreven door %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s en %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Geschreven door %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s en anderen.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr ""
+"Rapporteer gebreken in het programma aan %s;\n"
+"meld fouten in de vertaling aan <vertaling@vrijschrift.org>.\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr ""
+"Rapporteer gebreken in het programma '%s' aan <%s>;\n"
+"meld fouten in de vertaling aan <vertaling@vrijschrift.org>.\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Webpagina van %s: <%s>\n"
+
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr "Algemene hulp bij gebruik van GNU-software: <%s>\n"
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(standaardinvoer)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "ongeldig argument voor contextlengte"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "invoer is te groot om te kunnen tellen"
+
+#: src/grep.c:1641
+#, c-format
+msgid "%s: binary file matches"
+msgstr "%s: binair bestand bevat de gezochte tekst"
+
+#: src/grep.c:1679
+#, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "%s: waarschuwing: recursieve lus in de mappen"
+
+#: src/grep.c:1899
+#, c-format
+msgid "%s: input file is also the output"
+msgstr "%s: invoerbestand is gelijk aan het uitvoerbestand"
+
+#: src/grep.c:1961 src/grep.c:1968
+#, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "Gebruik: %s [OPTIE...] PATRONEN [BESTAND...]\n"
+
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "Typ '%s --help' voor meer informatie.\n"
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr ""
+" \n"
+"Zoekt naar PATRONEN in ieder gegeven BESTAND.\n"
+
+#: src/grep.c:1970
+#, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+" \n"
+" Voorbeeld: %s -i 'hallo wereld' menu.h main.c\n"
+"\n"
+"PATRONEN kan uit meerdere patronen op aparte regels bestaan.\n"
+"\n"
+"Keuze en interpretatie van PATRONEN:\n"
+
+#: src/grep.c:1975
+#, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp PATRONEN zijn uitgebreide reguliere expressies\n"
+" -F, --fixed-strings PATRONEN zijn tekenreeksen\n"
+" -G, --basic-regexp PATRONEN zijn gewone reguliere expressies\n"
+" -P, --perl-regexp PATRONEN zijn reguliere Perl-expressies\n"
+
+#: src/grep.c:1981
+#, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=PATRONEN deze PATRONEN gebruiken bij het zoeken\n"
+" -f, --file=BESTAND patronen uit dit BESTAND halen\n"
+" -i, --ignore-case verschil tussen hoofd- en kleine letters "
+"negeren\n"
+" in de patronen en in de gegevens\n"
+" --no-ignore-case hoofd- van kleine letters onderscheiden "
+"(standaard)\n"
+" -w, --word-regexp patronen komen alleen overeen met een heel "
+"woord\n"
+" -x, --line-regexp patronen komen alleen overeen met een hele "
+"regel\n"
+" -z, --null-data regels eindigen op 0-byte, niet op LF-teken\n"
+
+#: src/grep.c:1989
+#, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"Diversen:\n"
+" -s, --no-messages foutmeldingen onderdrukken\n"
+" -v, --invert-match de niet-overeenkomende regels selecteren\n"
+" -V, --version programmaversie tonen en stoppen\n"
+" --help deze hulptekst tonen en stoppen\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+"\n"
+"Uitvoeropties:\n"
+" -m, --max-count=AANTAL na dit AANTAL overeenkomsten stoppen\n"
+" -b, --byte-offset bij de uitvoerregels het byte-adres tonen\n"
+" -n, --line-number bij de uitvoerregels het regelnummer tonen\n"
+" --line-buffered elke uitvoerregel direct tonen\n"
+" -H, --with-filename bij de uitvoerregels de bestandsnaam tonen\n"
+" -h, --no-filename nooit de bestandsnaam tonen\n"
+" --label=LABEL dit LABEL als naam voor standaardinvoer "
+"gebruiken\n"
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+" -o, --only-matching alleen overeenkomende niet-lege fragmenten "
+"tonen\n"
+" -q, --quiet, --silent alle normale uitvoer onderdrukken\n"
+" --binary-files=TYPE aannemen dat binaire bestanden van dit TYPE "
+"zijn;\n"
+" TYPE is 'binary' (binair), 'text' (als "
+"tekst),\n"
+" of 'without-match' (alsof geen "
+"overeenkomsten)\n"
+" -a, --text hetzelfde als '--binary-files=text'\n"
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+" -I hetzelfde als '--binary-files=without-match'\n"
+" -d, --directories=ACTIE mappen behandelen met deze ACTIE;\n"
+" ACTIE is 'read', 'recurse' of 'skip'\n"
+" (ofwel lezen, in-afdalen, of overslaan)\n"
+" -D, --devices=ACTIE apparaten, FIFO's en sockets behandelen met "
+"ACTIE;\n"
+" ACTIE is 'read' of 'skip' (lezen of "
+"overslaan)\n"
+" -r, --recursive afdalen in submappen (ofwel '--"
+"directories=recurse')\n"
+" -R, --dereference-recursive idem, maar alle symbolische koppelingen "
+"volgen\n"
+
+#: src/grep.c:2023
+#, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+" --include=BESTANDSPATROON alleen bestanden doorzoeken die aan\n"
+" BESTANDSPATROON voldoen\n"
+" --exclude=BESTANDSPATROON bestanden overslaan die aan "
+"BESTANDSPATROON\n"
+" voldoen\n"
+" --exclude-from=BESTAND bestanden overslaan die aan een\n"
+" bestandspatroon in BESTAND voldoen\n"
+" --exclude-dir=BSTNDSPTRN mappen overslaan die aan BSTNDSPTRN "
+"voldoen\n"
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+" -L, --files-without-match alleen namen van bestanden zonder overeenkomst "
+"tonen\n"
+" -l, --files-with-matches alleen namen van bestanden met overeenkomsten "
+"tonen\n"
+" -c, --count alleen het aantal overeenkomsten per bestand "
+"tonen\n"
+" -T, --initial-tab tabs uitlijnen (eventueel een tab-teken "
+"invoegen)\n"
+" -Z, --null een 0-byte invoegen na iedere bestandsnaam\n"
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+"\n"
+"Contextbesturing:\n"
+" -B, --before-context=AANTAL dit AANTAL regels voorafgaande context "
+"tonen\n"
+" -A, --after-context=AANTAL dit AANTAL regels nakomende context tonen\n"
+" -C, --context=AANTAL dit AANTAL regels context tonen\n"
+
+#: src/grep.c:2043
+#, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+" -AANTAL hetzelfde als '--context=AANTAL'\n"
+" --group-separator=TEKENS contexten scheiden met regel met deze "
+"tekens\n"
+" --no-group-separator geen scheiding weergeven tussen contexten\n"
+" --color[=WANNEER],\n"
+" --colour[=WANNEER] overeenkomende tekst gekleurd weergeven;\n"
+" WANNEER is 'always' (altijd), "
+"'never' (nooit),\n"
+" of 'auto' (gepast voor uitvoerdoel; "
+"standaard)\n"
+" -U, --binary geen CR-tekens weghalen bij regeleinde (MSDOS/"
+"Windows)\n"
+"\n"
+
+#: src/grep.c:2052
+#, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"Indien BESTAND '-' is, wordt standaardinvoer gelezen. Zonder een BESTAND\n"
+"wordt '.' gelezen indien in recursieve modus, anders wordt '-' gelezen.\n"
+"Bij minder dan twee BESTANDen wordt '-h' aangenomen.\n"
+"\n"
+"De afsluitwaarde is 0 in geval van overeenkomsten, anders 1; als er\n"
+"een fout optreedt en '-q' is niet gegeven, dan is de afsluitwaarde 2.\n"
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "conflicterende expressiesoorten"
+
+#: src/grep.c:2101
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr "Perl-expressies worden door deze programmaversie niet ondersteund"
+
+#: src/grep.c:2103
+#, c-format
+msgid "invalid matcher %s"
+msgstr "ongeldige expressiesoort '%s'"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "onbekende apparaten-actie"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr "waarschuwing: --unix-byte-offsets (-u) is verouderd"
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "ongeldig maximum aantal"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "onbekend binair bestandstype"
+
+#: src/grep.c:2829
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+"Geschreven door Mike Haertel en anderen; zie\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr "onvoldoende geheugen beschikbaar voor de PCRE-JIT-stack"
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr "optie '-P' ondersteunt alleen enkelbytes- en UTF-8-taalregio's"
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr "optie '-P' accepteert slechts één patroon"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr "**interne programmafout** (zou nooit mogen gebeuren)"
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr "de regellengtegrens van PCRE is overschreden"
+
+#: src/pcresearch.c:306
+#, c-format
+msgid "%s: memory exhausted"
+msgstr "%s: onvoldoende geheugen beschikbaar"
+
+#: src/pcresearch.c:310
+#, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr "%s: de PCRE-JIT-stack is volledig gebruikt"
+
+#: src/pcresearch.c:315
+#, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr "%s: de terugverwijzingengrens van PCRE is overschreden"
+
+#: src/pcresearch.c:319
+#, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr "%s: de recursiegrens van PCRE is overschreden"
+
+#: src/pcresearch.c:327
+#, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr "%s: **interne programmafout** in PCRE: %d"
+
+#~ msgid "warning: GREP_OPTIONS is deprecated; please use an alias or script"
+#~ msgstr ""
+#~ "waarschuwing: GREP_OPTIONS is verouderd; gebruik een alias of een script"
+
+#~ msgid "warning: %s: %s"
+#~ msgstr "waarschuwing: %s: %s"
+
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "Webpagina van '%s': <https://www.gnu.org/software/%s/>\n"
+
+#~ msgid "invalid %s%s argument '%s'"
+#~ msgstr "ongeldig argument '%3$s' van %1$s%2$s"
+
+#~ msgid "invalid suffix in %s%s argument '%s'"
+#~ msgstr "ongeldig achtervoegsel in argument '%3$s' van %1$s%2$s"
+
+#~ msgid "%s%s argument '%s' too large"
+#~ msgstr "argument '%3$s' van %1$s%2$s is te groot"
+
+#~ msgid "Mike Haertel"
+#~ msgstr "Mike Haertel"
+
+#~ msgid "internal error"
+#~ msgstr "**interne programmafout**"
+
+#~ msgid "%s: option '--%s' doesn't allow an argument\n"
+#~ msgstr "%s: optie '--%s' staat geen argument toe\n"
+
+#~ msgid "%s: unrecognized option '--%s'\n"
+#~ msgstr "%s: onbekende optie '--%s'\n"
+
+#~ msgid "%s: option '-W %s' is ambiguous\n"
+#~ msgstr "%s: optie '-W %s' is niet eenduidig\n"
+
+#~ msgid "%s: option '-W %s' doesn't allow an argument\n"
+#~ msgstr "%s: optie '-W %s' staat geen argument toe\n"
+
+#~ msgid "%s: option '-W %s' requires an argument\n"
+#~ msgstr "%s: optie '-W %s' vereist een argument\n"
+
+#~ msgid "lseek failed"
+#~ msgstr "'lseek' is mislukt"
+
+#~ msgid "PATTERN is, by default, a basic regular expression (BRE).\n"
+#~ msgstr "PATROON is standaard een gewone reguliere expressie (BRE).\n"
+
+#~ msgid ""
+#~ "'egrep' means 'grep -E'. 'fgrep' means 'grep -F'.\n"
+#~ "Direct invocation as either 'egrep' or 'fgrep' is deprecated.\n"
+#~ msgstr ""
+#~ "Het gebruik van 'egrep' en 'fgrep' wordt ontraden;\n"
+#~ "'egrep' betekent 'grep -E'; 'fgrep' betekent 'grep -F'.\n"
+#~ "\n"
+
+#~ msgid "unescaped ^ or $ not supported with -Pz"
+#~ msgstr "een naakte ^ of $ wordt niet ondersteund met optie '-Pz'"
+
+#~ msgid "GNU Grep home page: <%s>\n"
+#~ msgstr "Webpagina van GNU grep: <%s>\n"
+
+#~ msgid "invalid UTF-8 byte sequence in input"
+#~ msgstr "ongeldige UTF-8-bytereeks in invoer"
+
+#~ msgid "PATTERN is an extended regular expression (ERE).\n"
+#~ msgstr "PATROON is een uitgebreide reguliere expressie (ERE).\n"
+
+#~ msgid "Invocation as 'egrep' is deprecated; use 'grep -E' instead.\n"
+#~ msgstr ""
+#~ "Gebruik van 'egrep' wordt ontraden; het is beter 'grep -E' te gebruiken.\n"
+
+#~ msgid "PATTERN is a set of newline-separated fixed strings.\n"
+#~ msgstr "PATROON is een serie tekenreeksen, elk op een aparte regel.\n"
+
+#~ msgid "Invocation as 'fgrep' is deprecated; use 'grep -F' instead.\n"
+#~ msgstr ""
+#~ "Gebruik van 'fgrep' wordt ontraden; het is beter 'grep -F' te gebruiken.\n"
+
+#~ msgid "%s can only use the %s pattern syntax"
+#~ msgstr "%s kan alleen de patroonsyntax %s gebruiken"
+
+#~ msgid "the --mmap option has been a no-op since 2010"
+#~ msgstr "de optie '--mmap' doet niets meer sinds 2010"
+
+#~ msgid "unfinished repeat count"
+#~ msgstr "onafgemaakt herhalingsaantal"
+
+#~ msgid "malformed repeat count"
+#~ msgstr "onjuist herhalingsaantal"
+
+#~ msgid "writing output"
+#~ msgstr "schrijven van uitvoer..."
+
+#~ msgid ""
+#~ "in GREP_COLORS=\"%s\", the \"%s\" capacity needs a value (\"=...\"); "
+#~ "skipped"
+#~ msgstr ""
+#~ "GREP_COLORS='%s' --\n"
+#~ " Kenmerk '%s' vereist een waarde ('=...'); genegeerd."
+
+#~ msgid ""
+#~ "in GREP_COLORS=\"%s\", the \"%s\" capacity is boolean and cannot take a "
+#~ "value (\"=%s\"); skipped"
+#~ msgstr ""
+#~ "GREP_COLORS='%s' --\n"
+#~ " Kenmerk '%s' is booleaans en verwacht geen waarde ('=%s'); genegeerd."
+
+#~ msgid "in GREP_COLORS=\"%s\", the \"%s\" capacity %s"
+#~ msgstr ""
+#~ "GREP_COLORS='%s' --\n"
+#~ " Kenmerk '%s': %s."
+
+#~ msgid ""
+#~ "stopped processing of ill-formed GREP_COLORS=\"%s\" at remaining "
+#~ "substring \"%s\""
+#~ msgstr ""
+#~ "GREP_COLORS='%s' --\n"
+#~ " Tekenreeks is onjuist; verwerking is gestopt voor subreeks '%s'."
+
+#~ msgid "unknown directories method"
+#~ msgstr "onbekende mappen-actie"
diff --git a/src/grep/po/pa.gmo b/src/grep/po/pa.gmo
new file mode 100644
index 0000000..e89550b
--- /dev/null
+++ b/src/grep/po/pa.gmo
Binary files differ
diff --git a/src/grep/po/pa.po b/src/grep/po/pa.po
new file mode 100644
index 0000000..646f11f
--- /dev/null
+++ b/src/grep/po/pa.po
@@ -0,0 +1,708 @@
+# Punjabi Translation for grep
+# Copyright (C) 2012 Free Software Foundation, Inc.
+# This file is distributed under the same license as the grep package.
+#
+# A S Alam <aalam@users.sf.net>, 2012.
+msgid ""
+msgstr ""
+"Project-Id-Version: grep 2.11.11-pre1\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2012-05-19 17:52+0530\n"
+"Last-Translator: A S Alam <aalam@users.sf.net>\n"
+"Language-Team: Punjabi <punjabi-l10n@lists.sourceforge.net>\n"
+"Language: pa\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Lokalize 1.4\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "%2$s ਲਈ ਗਲਤ ਆਰਗੂਮੈਂਟ %1$s"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr ""
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr "ਠੀਕ ਆਰਗੂਮੈਂਟ ਹਨ:"
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr ""
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr ""
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr "ਲਿਖਣ ਗਲਤੀ"
+
+#: lib/dfa.c:896
+msgid "unbalanced ["
+msgstr "ਅਧੂਰੀ ["
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr "ਗਲਤ ਕਰੈਕਟਰ ਕਲਾਸ"
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr ""
+
+#: lib/dfa.c:1210
+msgid "unfinished \\ escape"
+msgstr ""
+
+#: lib/dfa.c:1371
+#, fuzzy
+msgid "invalid content of \\{\\}"
+msgstr "ਗਲਤ ਵੱਧ ਤੋਂ ਵੱਧ ਗਿਣਤੀ"
+
+#: lib/dfa.c:1374
+#, fuzzy
+msgid "regular expression too big"
+msgstr "ਨਿਯਮਤ ਸਮੀਕਰਨ ਬਹੁਤ ਵੱਡੀ ਹੈ"
+
+#: lib/dfa.c:1858
+msgid "unbalanced ("
+msgstr "ਅਧੂਰੀ ("
+
+#: lib/dfa.c:1975
+msgid "no syntax specified"
+msgstr "ਕੋਈ ਸੰਟੈਕਸ ਨਹੀਂ ਦਿੱਤਾ"
+
+#: lib/dfa.c:1986
+msgid "unbalanced )"
+msgstr "ਅਧੂਰੀ )"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "ਅਣਜਾਣ ਸਿਸਟਮ ਗਲਤੀ"
+
+#: lib/getopt.c:278
+#, fuzzy, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: ਚੋਣ '-W %s' ਸਧਾਰਨ ਹੈ।\n"
+
+#: lib/getopt.c:284
+#, fuzzy, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: ਚੋਣ '-W %s' ਸਧਾਰਨ ਹੈ।\n"
+
+#: lib/getopt.c:319
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: ਬੇ-ਪਛਾਣ ਚੋਣ '%c%s'\n"
+
+#: lib/getopt.c:345
+#, fuzzy, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: ਚੋਣ '%c%s' ਇੱਕ ਆਰਗੂਮੈਂਟ ਨਹੀਂ ਲੈਂਦੀ\n"
+
+#: lib/getopt.c:360
+#, fuzzy, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: ਚੋਣ '--%s' ਲਈ ਇੱਕ ਆਰਗੂਮੈਂਟ ਚਾਹੀਦਾ\n"
+
+#: lib/getopt.c:621
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: ਗਲਤ ਚੋਣ -- '%c'\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: ਚੋਣ ਲਈ ਆਰਗੂਮੈਂਟ ਚਾਹੀਦਾ ਹੈ --'%c'\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "ਮੈਮੋਰੀ ਖਤਮ ਹੋਈ"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr "ਮੌਜੂਦਾ ਕਾਰਜਕਾਰੀ ਡਾਇਰੈਕਟਰੀ ਰਿਕਾਰਡ ਕਰਨ ਲਈ ਅਸਮਰੱਥ"
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "ਸ਼ੁਰੂਆਤੀ ਕਾਰਜਕਾਰੀ ਡਾਇਰੈਕਟਰੀ ਦੇਣ ਲਈ ਫੇਲ੍ਹ"
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr ""
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "'"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr "ਸਫ਼ਲ"
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr "ਕੋਈ ਮੇਲ ਨਹੀਂ"
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr "ਗਲਤ ਰੈਗੂਲਰ ਸਮੀਕਰਨ"
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr "ਗਲਤ ਕਰੈਕਟਰ ਕਲਾਸ ਨਾਂ"
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:156
+#, fuzzy
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr "ਨਾ ਮਿਲਦੇ [ ਜਾਂ [^"
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr "ਨਾ ਮਿਲਦੇ ( ਜਾਂ \\("
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr "ਨਾ-ਮਿਲਦੇ \\{"
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr "ਗਲਤ ਅੰਤ ਰੇਜ਼"
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "ਮੈਮੋਰੀ ਖਤਮ ਹੋਈ"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr "ਨਿਯਮਤ ਸਮੀਕਰਨ ਬਹੁਤ ਵੱਡੀ ਹੈ"
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr "ਨਾ ਮਿਲਦੇ ) ਜਾਂ \\)"
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr "ਕੋਈ ਪਿਛਲਾ ਨਿਯਮਤ ਸਮੀਕਰਨ ਨਹੀਂ"
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "%s (%s) ਵਲੋਂ ਪੈਕ ਕੀਤਾ\n"
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "%s ਵਲੋਂ ਪੈਕੇਜ ਬਣਾਇਆ\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr "(C)"
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr "%s ਨੇ ਲਿਖਿਆ।\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "%s ਅਤੇ %s ਨੇ ਲਿਖਿਆ\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "%s, %s, ਅਤੇ %s ਨੇ ਲਿਖਿਆ।\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"%s, %s, %s,\n"
+"ਅਤੇ %s ਨੇ ਲਿਖਿਆ\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"%s, %s, %s, %s,\n"
+"ਅਤੇ %s ਨੇ ਲਿਖਿਆ।\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"%s, %s, %s, %s, %s\n"
+"ਅਤੇ %s ਨੇ ਲਿਖਿਆ।\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"%s, %s, %s, %s, %s,\n"
+"%s ਅਤੇ %s ਨੇ ਲਿਖਿਆ।\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"%s. %s, %s, %s,\n"
+"%s, %s, %s ਅਤੇ %s\n"
+"ਨੇ ਲਿਖਿਆ।\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"%s. %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"ਅਤੇ %s ਨੇ ਲਿਖਿਆ।\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"%s, %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, ਅਤੇ ਹੋਰਾਂ ਨੇ ਲਿਖਿਆ।\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, fuzzy, c-format
+msgid "Report bugs to: %s\n"
+msgstr ""
+"\n"
+"ਬੱਗ ਰਿਪੋਰਟ ਦਿਉ: %s\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "%s ਬੱਗ ਬਾਰੇ ਰਿਪੋਰਟ ਦਿਓ: %s\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s ਮੁੱਖ ਪੇਜ਼: <%s>\n"
+
+#: lib/version-etc.c:260
+#, fuzzy, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr "ਗਨੂ ਸਾਫਟਵੇਅਰ ਦੀ ਵਰਤੋਂ ਲਈ ਆਮ ਮੱਦਦ ਵਾਸਤੇ: <http://www.gnu.org/gethelp/>\n"
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(ਸਟੈਂਡਰਡ ਆਉਟਪੁੱਟ)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr ""
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "ਇੰਪੁੱਟ ਗਿਣਤੀ ਕਰਨ ਲਈ ਬਹੁਤ ਵੱਡੀ ਹੈ"
+
+#: src/grep.c:1641
+#, fuzzy, c-format
+msgid "%s: binary file matches"
+msgstr "ਬਾਈਨਰੀ ਫਾਇਲ %s ਮਿਲਦੀ ਹੈ\n"
+
+#: src/grep.c:1679
+#, fuzzy, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "ਲਗਾਤਾਰ ਡਾਇਰੈਕਟਰੀ ਲੂਪ"
+
+#: src/grep.c:1899
+#, fuzzy, c-format
+msgid "%s: input file is also the output"
+msgstr "ਇੰਪੁੱਟ ਫਾਇਲ %s ਆਉਟਪੁੱਟ ਫਾਇਲ ਵੀ ਹੈ"
+
+#: src/grep.c:1961 src/grep.c:1968
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "ਵਰਤੋਂ: %s [ਚੋਣਾਂ]... ਪੈਟਰਨ [ਫਾਇਲ]...\n"
+
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "ਹੋਰ ਜਾਣਕਾਰੀ ਲਈ '%s --help' ਨਾਲ ਕੋਸ਼ਿਸ਼ ਕਰੋ।\n"
+
+#: src/grep.c:1969
+#, fuzzy, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr "ਹਰੇਕ ਫਾਇਲ (FILE) ਜਾਂ ਸਟੈਂਡਰਡ ਆਉਟਪੁੱਟ ਲਈ ਪੈਟਰਨ ਦੀ ਖੋਜ।\n"
+
+#: src/grep.c:1970
+#, fuzzy, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"ਉਦਾਹਰਨ: %s -i 'hello world' menu.h main.c\n"
+"\n"
+"ਨਿਯਮਤ-ਸਮੀਕਰਨ (Regexp) ਚੋਣ ਅਤੇ ਚਲਾਉਣਾ:\n"
+
+#: src/grep.c:1975
+#, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+
+#: src/grep.c:1981
+#, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+
+#: src/grep.c:1989
+#, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+
+#: src/grep.c:2023
+#, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+
+#: src/grep.c:2043
+#, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+
+#: src/grep.c:2052
+#, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr ""
+
+#: src/grep.c:2101
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr ""
+
+#: src/grep.c:2103
+#, c-format
+msgid "invalid matcher %s"
+msgstr "ਗਲਤ ਮੈਚਰ %s"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "ਅਣਜਾਣ ਜੰਤਰ ਢੰਗ"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr ""
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "ਗਲਤ ਵੱਧ ਤੋਂ ਵੱਧ ਗਿਣਤੀ"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "ਅਣਜਾਣ ਬਾਈਨਰੀ-ਫਾਇਲ ਕਿਸਮ"
+
+#: src/grep.c:2829
+#, fuzzy
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr "ਹੋਰਾਂ ਲਈ <http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS> ਵੇਖੋ"
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr ""
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr ""
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr ""
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr ""
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr ""
+
+#: src/pcresearch.c:306
+#, fuzzy, c-format
+msgid "%s: memory exhausted"
+msgstr "ਮੈਮੋਰੀ ਖਤਮ ਹੋਈ"
+
+#: src/pcresearch.c:310
+#, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr ""
+
+#: src/pcresearch.c:315
+#, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr ""
+
+#: src/pcresearch.c:319
+#, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr ""
+
+#: src/pcresearch.c:327
+#, fuzzy, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr "ਅੰਦਰੂਨੀ ਗਲਤੀ"
+
+#, c-format
+#~ msgid "warning: %s: %s"
+#~ msgstr "ਸਾਵਧਾਨ: %s: %s"
+
+#~ msgid "invalid %s%s argument '%s'"
+#~ msgstr "ਗਲਤ %s%s ਆਰਗੂਮੈਂਟ '%s'"
+
+#~ msgid "%s%s argument '%s' too large"
+#~ msgstr "%s%s ਆਰਗੂਮੈਂਟ '%s' ਬਹੁਤ ਵੱਡਾ ਹੈ"
+
+#, fuzzy
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "%s ਮੁੱਖ ਪੇਜ਼: <http://www.gnu.org/software/%s/>\n"
+
+#~ msgid "internal error"
+#~ msgstr "ਅੰਦਰੂਨੀ ਗਲਤੀ"
+
+#~ msgid "Mike Haertel"
+#~ msgstr "ਮਾਈਕ ਹਾਇਰਟੇਲ"
+
+#~ msgid "%s: option '--%s' doesn't allow an argument\n"
+#~ msgstr "%s: ਚੋਣ '--%s' ਇੱਕ ਆਰਗੂਮੈਂਟ ਨਹੀਂ ਲੈਂਦੀ\n"
+
+#~ msgid "%s: unrecognized option '--%s'\n"
+#~ msgstr "%s: ਬੇ-ਪਛਾਣ ਚੋਣ '--%s'\n"
+
+#~ msgid "%s: option '-W %s' is ambiguous\n"
+#~ msgstr "%s: ਚੋਣ '-W %s' ਸਧਾਰਨ ਹੈ।\n"
+
+#~ msgid "%s: option '-W %s' doesn't allow an argument\n"
+#~ msgstr "%s: ਚੋਣ '-W %s' ਲਈ ਕੋਈ ਆਰਗੂਮੈਂਟ ਨਹੀਂ ਚਾਹੀਦਾ\n"
+
+#~ msgid "PATTERN is, by default, a basic regular expression (BRE).\n"
+#~ msgstr "ਪੈਟਰਨ (PATTERN) ਮੂਲ ਰੂਪ ਵਿੱਚ ਇੱਕ ਨਿਯਮਤ ਸਕਰੀਨ (BRE) ਹੁੰਦਾ ਹੈ।\n"
+
+#~ msgid "lseek failed"
+#~ msgstr "lseek ਫੇਲ੍ਹ ਹੈ"
+
+#~ msgid "PATTERN is an extended regular expression (ERE).\n"
+#~ msgstr "ਪੈਟਰਨ ਇੱਕ ਵਾਧੂ ਨਿਯਮਤ ਸਮੀਕਰਨ ਹੈ (ERE) ਹੈ।\n"
+
+#~ msgid "GNU Grep home page: <%s>\n"
+#~ msgstr "ਗਨੂ Grep ਮੁੱਖ ਪੇਜ਼: <%s>\n"
diff --git a/src/grep/po/pl.gmo b/src/grep/po/pl.gmo
new file mode 100644
index 0000000..514a0c7
--- /dev/null
+++ b/src/grep/po/pl.gmo
Binary files differ
diff --git a/src/grep/po/pl.po b/src/grep/po/pl.po
new file mode 100644
index 0000000..3f509c3
--- /dev/null
+++ b/src/grep/po/pl.po
@@ -0,0 +1,756 @@
+# Polish translation of the GNU grep messages
+# Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2005, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Free Software Foundation, Inc.
+# This file is distributed under the same license as the grep package.
+# Rafał Maszkowski <rzm@icm.edu.pl>, 1996-2002, 2005, 2007-2017, 2019-2021.
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU grep 3.6.27\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2021-08-09 11:35+0200\n"
+"Last-Translator: Rafał Maszkowski <rzm@icm.edu.pl>\n"
+"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
+"Language: pl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8-bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "błędny argument %s dla %s"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "dwuznaczny argument %s dla %s"
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr "Prawidłowe agrumenty to:"
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr "błąd programu"
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr "przepełnienie stosu"
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr "błąd zapisu"
+
+#: lib/dfa.c:896
+msgid "unbalanced ["
+msgstr "[ nie do pary"
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr "błędna nazwa klasy znaków"
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr "składnia klasy znaków to [[:space:]], nie [:space:]"
+
+#: lib/dfa.c:1210
+msgid "unfinished \\ escape"
+msgstr "niedokończona sekwencja \\"
+
+#: lib/dfa.c:1371
+msgid "invalid content of \\{\\}"
+msgstr "błędna zawartość \\{\\}"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr "za duże wyrażenie regularne"
+
+#: lib/dfa.c:1858
+msgid "unbalanced ("
+msgstr "( nie do pary"
+
+#: lib/dfa.c:1975
+msgid "no syntax specified"
+msgstr "brak specyfikacji składni"
+
+#: lib/dfa.c:1986
+msgid "unbalanced )"
+msgstr ") nie do pary"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "Nieznany błąd systemowy"
+
+#: lib/getopt.c:278
+#, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: opcja „%s%s” jest niejednoznaczna\n"
+
+#: lib/getopt.c:284
+#, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: opcja „%s%s” jest niejednoznaczna; możliwości:"
+
+#: lib/getopt.c:319
+#, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: nierozpoznana opcja „%s%s”\n"
+
+#: lib/getopt.c:345
+#, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: opcja „%s%s” nie może mieć argumentu\n"
+
+#: lib/getopt.c:360
+#, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: opcja „%s%s” wymaga argumentu\n"
+
+#: lib/getopt.c:621
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: błędna opcja -- „%c”\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: opcja wymaga argumentu -- „%c”\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "pamięć wyczerpana"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr "nie udało się zapisać bieżącego katalogu"
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "nie udało się powrócić do początkowego katalogu"
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr "nie udało się ustawić trybu tekstowego/binarnego deskryptora pliku"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "„"
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "”"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr "Udane"
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr "Nie pasuje"
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr "Błędne wyrażenie regularne"
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr "Znak błędny dla bieżącego uporządkowania"
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr "Błędna nazwa klasy znaków"
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr "Końcowy ukośnik odwrotny"
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr "Błędne odwołanie"
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr "Nie pasujący [, [^, [:, [., albo [="
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr "Nie pasujący ( albo \\("
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr "Nie pasujący \\{"
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr "Błędna zawartość \\{\\}"
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr "Błędny koniec zakresu"
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "Pamięć wyczerpana"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr "Błędne poprzedzające wyrażenie regularne"
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr "Przedwczesny koniec wyrażenia regularnego"
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr "Za duże wyrażenie regularne"
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr "Nie pasujący ) albo \\)"
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr "Brak poprzedniego wyrażenia regularnego"
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Spakowane przez %s (%s)\n"
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Spakowane przez %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr "©"
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Licencja GPLv3+: GNU GPL wersja 3 albo późniejsza %s\n"
+"To jest wolne oprogramowanie: możesz je modyfikować i rozpowszechniać.\n"
+"Autorzy NIE DAJĄ GWARANCJI w granicach dozwolonych prawem.\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Napisany przez %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Napisany przez %s i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Napisany przez %s, %s i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Napisany przez %s, %s, %s\n"
+"i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Napisany przez %s, %s, %s,\n"
+"%s i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Napisany przez %s, %s, %s,\n"
+"%s, %s i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Napisany przez %s, %s, %s,\n"
+"%s, %s, %s i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Napisany przez %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Napisany przez %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Napisany przez %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s i innych.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr "Raporty o błędach należy wysyłać do %s\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "Raporty o błędach %s należy wysyłać do %s\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Strona domowa %s: %s\n"
+
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr "Pomoc w używaniu oprogramowania GNU: %s\n"
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(standardowe wejście)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "błędny argument długości kontekstowej"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "danych wejściowych jest zbyt dużo do policzenia"
+
+#: src/grep.c:1641
+#, c-format
+msgid "%s: binary file matches"
+msgstr "%s: plik binarny pasuje do wzorca"
+
+#: src/grep.c:1679
+#, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "%s: nieskończona pętla przeglądania katalogów"
+
+#: src/grep.c:1899
+#, c-format
+msgid "%s: input file is also the output"
+msgstr "%s: plik wejściowy jest również plikiem wyjściowym"
+
+#: src/grep.c:1961 src/grep.c:1968
+#, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "Składnia: %s [OPCJA]... WZORCE [PLIK] ...\n"
+
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "Napisz „%s --help” żeby dowiedzieć się więcej.\n"
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr "Szukanie WZORCÓW w PLIKACH.\n"
+
+#: src/grep.c:1970
+#, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"Przykład: %s -i 'hello world' menu.h main.c\n"
+"WZORCE mogą zawierać wiele wzorców w kolejnych liniach.\n"
+"\n"
+"Wybór i interpretacja wzorców:\n"
+
+#: src/grep.c:1975
+#, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp WZORCE są rozszerzonymi wyrażeniami regularnymi\n"
+" -F, --fixed-strings WZORCE są napisami\n"
+" -G, --basic-regexp WZORCE są podstawowymi wyrażeniami regularnymi\n"
+" -P, --perl-regexp WZORCE są wyrażeniami regularnymi perla\n"
+
+# synonimy: wielkie/małe litery, majuskuła/minuskuła, górna/dolna kaszta, górny/dolny rejestr liter; ogólnie: kaszta, rejestr
+#: src/grep.c:1981
+#, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=WZORCE dopasowanie do WZORCOW\n"
+" -f, --file=PLIK użycie wzorców z PLIKU\n"
+" -i, --ignore-case ignorowanie rejestru liter\n"
+" --no-ignore-case bez ignorowania rejestru liter (domyślnie)\n"
+" -w, --word-regexp dopasowanie WZORCOW tylko do pełnych słów\n"
+" -x, --line-regexp dopasowanie WZORCOW tylko do całych linii\n"
+" -z, --null-data linie są zakończone bajtem 0, nie znakiem\n"
+" nowej linii\n"
+
+#: src/grep.c:1989
+#, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"Różne:\n"
+" -s, --no-messages bez komunikatów o błędach\n"
+" -v, --invert-match wybranie nie pasujących linii\n"
+" -V, --version wypisanie informacji o wersji i zakończenie\n"
+" --help wypisanie tych informacji i zakończenie\n"
+"\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+"\n"
+"Sterowanie danymi wyjściowymi:\n"
+" -m, --max-count=ILE zatrzymanie po ILU wybranych liniach\n"
+" -b, --byte-offset wypisanie pozycji bajtów w wyniku\n"
+" -n, --line-number wypisanie numerów linii w wyniku\n"
+" --line-buffered opróżnienie bufora po każdej linii\n"
+" -H, --with-filename wypisanie nazwy pliku dla każdej linii\n"
+" -h, --no-filename bez nazwy pliku w liniach wyjściowych\n"
+" --label=ETYKIETA w wyniku ETYKIETA zastępuje nazwe pliku\n"
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+" -o, --only-matching pokazanie tylko niepustych części linii, które\n"
+" pasują\n"
+" -q, --quiet, --silent wyłączenie wypisywanie wyniku\n"
+" --binary-files=TYP założenie, że pliki binarne są typu TYP\n"
+" TYP to „binary”, „text” lub „without-match”.\n"
+" -a, --text równoważne --binary-files=text\n"
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+" -I równoważne --binary-files=without-match\n"
+" -d, --directories=DZIAŁANIE jak się obchodzić z katalogami,\n"
+" DZIAŁANIE to „read” (czytanie), „recurse”\n"
+" (przeglądanie rekurencujne) albo „skip”\n"
+" (pominięcie).\n"
+" -D, --devices=DZIAŁANIE jak odwoływać się do urządzeń, FIFO i gniazd,\n"
+" DZIAŁANIE to „read” (czytaj) albo "
+"„skip” (pomiń)\n"
+" -r, --recursive równoważne --directories=recurse\n"
+" -R, --dereference-recursive podobnie, ale z podążaniem za dowiązaniami\n"
+" symbolicznymi\n"
+
+#: src/grep.c:2023
+#, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+" --include=WZORZEC_PLIKOWY przeszukiwane będą pliki pasujące do\n"
+" WZORCA_PLIKOWEGO\n"
+" --exclude=WZORZEC_PLIKOWY pliki pasujące do WZORCA_PLIKOWEGO będą\n"
+" pominięte\n"
+" --exclude-from=PLIK pominięcie plików pasujących do wzorców "
+"plikowych\n"
+" w PLIKU\n"
+" --exclude-dir=WZORZEC_PLIKOWY katalogi pasujące do WZORCA_PLIKOWEGO\n"
+" będą pominięte\n"
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+" -L, --files-without-match wypisanie tylko nazw PLIKÓW bez wybranych "
+"linii\n"
+" -l, --files-with-matches wypisanie tylko nazw PLIKÓW z wybranymi liniami\n"
+" -c, --count wypisanie tylko liczby wybranych linii w każdym\n"
+" PLIKU\n"
+" -T, --initial-tab wyrównanie linii przez TAB (jeżeli potrzebne)\n"
+" -Z, --null wypisanie bajtu 0 po każdej nazwie PLIKU\n"
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+"\n"
+"Sterowanie kontekstem:\n"
+" -B, --before-context=ILE wypisanie ILU linii kontekstu przed\n"
+" -A, --after-context=ILE wypisanie ILU linii kontekstu po\n"
+" -C, --context=ILE wypisanie ILU linii kontekstu\n"
+
+#: src/grep.c:2043
+#, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+" -ILE to samo co --context=ILE\n"
+" --group-separator=SEP wypisanie SEP między dopasowaniami z "
+"kontekstem\n"
+" --no-group-separator bez wypisania separatora między dopasowaniami z\n"
+" z kontekstem\n"
+" --color[=KIEDY],\n"
+" --colour[=KIEDY] oznaczanie pasujących znaków,\n"
+" KIEDY to „always” (zawsze), „never” (nigdy)\n"
+" albo „auto” (automatycznie).\n"
+" -U, --binary bez usuwania znaków nowej linii na końcu\n"
+" (MSDOS/Windows)\n"
+"\n"
+
+#: src/grep.c:2052
+#, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"Jeżeli PLIK to „-”, czytane jest standardowe wejście. Jeżeli PLIK nie jest\n"
+"podany i użyta jest opcja -r, czytany jest katalog ., natomiast - gdy -r "
+"nie\n"
+"jest podane. Jeżeli podano mniej niż dwa PLIKI, program włącza opcję -h.\n"
+"Zakończenie działania z kodem wyjściowym 0, jeżeli pasuje jakaś linia\n"
+"z 1, jeżeli nie; z 2, w razie błędów i gdy nie podano opcji -q.\n"
+
+# viendo los fuentes , hay varias opciones
+# que hay sin documentar. O quiza es que getopt() lo he entendido mal
+# Son las opciones X ( requiere argumento ) , switchs -c, -b, -L e -y
+# grep.c:622 ->
+# opt = getopt(argc, argv, "0123456789A:B:CEFGVX:bce:f:hiLlnqsvwxy"
+# grep --help ->
+# usage: grep [-[[AB] ]<num>] [-[CEFGVchilnqsvwx]] [-[ef]] <expr> [<files...>]
+# La opción -X es a la que corresponde esta línea.
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "podano sprzeczne wzorce"
+
+#: src/grep.c:2101
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr ""
+"Dopasowywanie wzorców w stylu perla nie działa w wersji zbudowanej z --"
+"disable-perl-regexp"
+
+#: src/grep.c:2103
+#, c-format
+msgid "invalid matcher %s"
+msgstr "błędna dopasowanie %s"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "nieznany sposób przeglądania urządzeń"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr "uwaga: opcja --unix-byte-offsets (-u( jest przestarzała"
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "błędna maksymalna liczba powtórzeń"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "nieznany typ pliku binarnego"
+
+#: src/grep.c:2829
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+"Program napisany przez Mike'a Haertela i innych, zobacz\n"
+"https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS"
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr "nie udało się zaalokować pamięci dla stosu PCRE JIT"
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr "-P działa tylko kodowaniem jednobajtowym albo UTF-8"
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr "opcja -P może być użyta tylko do pojedynczego wzorca"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr "błąd wewnętrzny (nigdy nie powinien się zdarzyć)"
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr "przekroczony limit długości linii PCRE"
+
+#: src/pcresearch.c:306
+#, c-format
+msgid "%s: memory exhausted"
+msgstr "%s: pamięć wyczerpana"
+
+#: src/pcresearch.c:310
+#, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr "%s: wyczerpany stos JIT PCRE"
+
+#: src/pcresearch.c:315
+#, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr "%s: przekroczony limit analizy wstecznej PCRE"
+
+#: src/pcresearch.c:319
+#, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr "%s: przekroczony limit rekursji PCRE"
+
+#: src/pcresearch.c:327
+#, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr "%s: błąd wewnętrzny PCRE: %d"
diff --git a/src/grep/po/pt.gmo b/src/grep/po/pt.gmo
new file mode 100644
index 0000000..70f3c1c
--- /dev/null
+++ b/src/grep/po/pt.gmo
Binary files differ
diff --git a/src/grep/po/pt.po b/src/grep/po/pt.po
new file mode 100644
index 0000000..3d1ddcd
--- /dev/null
+++ b/src/grep/po/pt.po
@@ -0,0 +1,953 @@
+# Portuguese (Portugal) translation for the grep package.
+# Copyright (C) 2018 Free Software Foundation, Inc.
+# This file is distributed under the same license as the grep package.
+# Pedro Albuquerque <pmra@protonmail.com>, 2018, 2019, 2020, 2021.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: grep 3.6.27\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2021-08-09 10:42+0100\n"
+"Last-Translator: Pedro Albuquerque <pmra@protonmail.com>\n"
+"Language-Team: Portuguese <translation-team-pt@lists.sourceforge.net>\n"
+"Language: pt\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"X-Generator: Poedit 2.3\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "argumento inválido %s para %s"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "argumento ambíguo %s para %s"
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr "Os argumentos válidos são:"
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr "erro de programa"
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr "transporte da pilha"
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr "erro de escrita"
+
+#: lib/dfa.c:896
+msgid "unbalanced ["
+msgstr "[ sem par"
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr "classe de carácter inválida"
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr "a sintaxe da classe de carácter é [[:espaço:]], não [:espaço:]"
+
+#: lib/dfa.c:1210
+msgid "unfinished \\ escape"
+msgstr "não terminado\\escape"
+
+#: lib/dfa.c:1371
+msgid "invalid content of \\{\\}"
+msgstr "conteúdo inválido de \\{\\}"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr "expressão regular muito grande"
+
+#: lib/dfa.c:1858
+msgid "unbalanced ("
+msgstr "( sem par"
+
+#: lib/dfa.c:1975
+msgid "no syntax specified"
+msgstr "sintaxe não especificada"
+
+#: lib/dfa.c:1986
+msgid "unbalanced )"
+msgstr ") sem par"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "Erro de sistema desconhecido"
+
+#: lib/getopt.c:278
+#, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: a opção \"%s%s\" é ambígua\n"
+
+#: lib/getopt.c:284
+#, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: a opção \"%s%s\" é ambígua; possibilidades:"
+
+#: lib/getopt.c:319
+#, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: opção \"%s%s\" desconhecida\n"
+
+#: lib/getopt.c:345
+#, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: a opção \"%s%s\" não permite um argumento\n"
+
+#: lib/getopt.c:360
+#, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "\"%s: a opção \"%s%s\" requer um argumento\n"
+
+#: lib/getopt.c:621
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: opção inválida -- \"%c\"\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: a opção requer um argumento -- \"%c\"\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "memória esgotada"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr "impossível gravar a pasta de trabalho actual"
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "falha ao voltar à pasta de trabalho inicial"
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr "falha ao definir modo texto/binário do descritor de ficheiro"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "\""
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "\""
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr "Sucesso"
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr "Sem par"
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr "Expressão regular inválida"
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr "Carácter de agrupamento inválido"
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr "Nome de classe de carácter inválido"
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr "Barra invertida final"
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr "Referência de retorno inválida"
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr "[, [^, [:, [., ou [= sem par"
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr "( ou \\( sem par"
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr "\\{ sem par"
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr "Conteúdo inválido de \\{\\}"
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr "Final de intervalo inválido"
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "Memória esgotada"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr "Expressão regular precedente inválida"
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr "Fim prematuro de expressão regular"
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr "Expressão regular muito grande"
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr ") ou \\) sem par"
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr "Sem expressão regular prévia"
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Empacotado por %s (%s)\n"
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Empacotado por %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr "(©)"
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Licença GPLv3+: GNU GPL versão 3 ou posterior <%s>\n"
+"Este é um programa grátis: pode alterá-lo e redistribuí-lo.\n"
+"Não há QUALQUER GARANTIA, até ao limite da Lei.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Escrito por %s\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Escrito por %s e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Escrito por %s, %s e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Escrito por %s, %s, %s\n"
+"e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Escrito por %s, %s, %s,\n"
+"%s e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Escrito por %s, %s, %s,\n"
+"%s, %s e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Escrito por %s, %s, %s,\n"
+"%s, %s, %s e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Escrito por %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Escrito por %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Escrito por %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s e outros.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr "Reportar erros a: %s\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "Reportar %s erros a: %s\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Página inicial %s: <%s>\n"
+
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr "Ajuda geral para uso de programas GNU: <%s>\n"
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(entrada padrão)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "argumento de tamanho de contexto inválido"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "entrada muito grande para contar"
+
+#: src/grep.c:1641
+#, c-format
+msgid "%s: binary file matches"
+msgstr "%s: ficheiro binário coincide"
+
+#: src/grep.c:1679
+#, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "%s: aviso: ciclo de pasta recursivo"
+
+#: src/grep.c:1899
+#, c-format
+msgid "%s: input file is also the output"
+msgstr "%s: ficheiro de entrada também é a saída"
+
+#: src/grep.c:1961 src/grep.c:1968
+#, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "Uso: %s [OPÇÃO]... PADRÕES [FICHEIRO]...\n"
+
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "Tente \"%s --help\" para mais informação.\n"
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr "Procurar por PADRÕES em cada FICHEIRO\n"
+
+#: src/grep.c:1970
+#, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"Exemplo: %s -i 'hello world' menu.h main.c\n"
+"PADRÕES pode conter múltiplos padrões separados por newline.\n"
+"\n"
+"Selecção e interpretação de padrão:\n"
+
+#: src/grep.c:1975
+#, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp PADRÕES são expressões regulares estendidas\n"
+" -F, --fixed-strings PADRÕES são cadeias\n"
+" -G, --basic-regexp PADRÕES são expressões regulares básicas\n"
+" -P, --perl-regexp PADRÕES são expressões regulares Perl\n"
+
+#: src/grep.c:1981
+#, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=PADRÕES usar PADRÕES para comparação\n"
+" -f, --file=FICHEIRO ler PADRÕES do FICHEIRO\n"
+" -i, --ignore-case ignorar diferenças entre maiúsculas e "
+"minúsculas\n"
+" --no-ignore-case não ignorar diferenças de maiúsculas "
+"(predefinição)\n"
+" -w, --word-regexp comparar só palavras completas\n"
+" -x, --line-regexp comparar só linhas completas\n"
+" -z, --null-data uma linha de dados termina com o byte 0, não com "
+"newline\n"
+
+#: src/grep.c:1989
+#, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"Diversos:\\n\"\n"
+" -s, --no-messages suprime mensagens de erro\n"
+" -v, --invert-match selecciona linhas que não contenham PADRÃO\n"
+" -V, --version mostra informação de versão e sai\n"
+" --help mostra esta mensagem e sai\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+"\n"
+"Controlo de saída:\n"
+" -m, --max-count=NUM pára após NUM linhas seleccionadas\n"
+" -b, --byte-offset imprime o desvio de byte com as linhas de saída\n"
+" -n, --line-number imprime o nº de linha com as linhas de saída\n"
+" --line-buffered limpa a saída em cada linha\n"
+" -H, --with-filename imprime o nome de ficheiro com as linhas de "
+"saída\n"
+" -h, --no-filename suprime o prefixo do nome de ficheiro na saída\n"
+" --label=RÓTULO usa RÓTULO como prefixo de nome de ficheiro de "
+"entrada padrão\n"
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+" -o, --only-matching mostra só partes não-vazias de linhas que "
+"coincidem\n"
+" -q, --quiet, --silent suprime toda a saída normal\n"
+" --binary-files=TYPE assume que ficheiros binários são TIPO;\n"
+" TIPO é \"binary\", \"text\" ou \"without-match"
+"\"\n"
+" -a, --text equivalente a --binary-files=text\n"
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+" -I equivalente a --binary-files=without-match\n"
+" -d, --directories=ACÇÃO COMO GERIR PASTAS;\n"
+" ACÇÃO é 'read', 'recurse' ou 'skip'\n"
+" -D, --devices=ACÇÃO COMO GERIR DISPOSITIVOS, FIFOs e sockets;\n"
+" ACÇÃO é 'read' ou 'skip'\n"
+" -r, --recursive como --directories=recurse\n"
+" -R, --dereference-recursive igual, mas segue todas as symlinks\n"
+
+#: src/grep.c:2023
+#, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+" --include=GLOB procura só em ficheiros que contêm GLOB (um "
+"padrão de ficheiro)\n"
+" --exclude=GLOB salta ficheiros e pastas que contêm GLOB\n"
+" --exclude-from=FICH salta ficheiros que contêm qualquer padrão de "
+"FICHEIRO\n"
+" --exclude-dir=GLOB salta pastas que contêm GLOB\n"
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+" -L, --files-without-match imprime só nomes de FICHEIROs sem linhas "
+"seleccionadas\n"
+" -l, --files-with-matches imprime só nomes de FICHEIROs com linhas "
+"seleccionadas\n"
+" -c, --count imprime só um nº de linhas seleccionadas por "
+"FICHEIRO\n"
+" -T, --initial-tab alinha tabulações (se necessário)\n"
+" -Z, --null imprime byte 0 após o nome de FICHEIRO\n"
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM imprime NUM linhas de contexto inicial\n"
+" -A, --after-context=NUM imprime NUM linhas de contexto final\n"
+" -C, --context=NUM imprime NUM linhas de contexto de saída\n"
+
+#: src/grep.c:2043
+#, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+" -NUM igual a --context=NUM\n"
+" --group-separator=SEP imprimir SEP na linha entre correspondências "
+"com contexto\n"
+" --no-group-separator não imprimir separador para correspondências com "
+"contexto\n"
+" --color[=QUANDO],\n"
+" --colour[=QUANDO] usar marcadores para realçar as cadeias "
+"coincidentes;\n"
+" QUANDO é \"always\", \"never\" ou \"auto\"\n"
+" -U, --binary não eliminar caracteres CR em EOL (MSDOS/"
+"Windows)\n"
+"\n"
+
+#: src/grep.c:2052
+#, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"Quando FICHEIRO é '-', lê a entrada padrão. Sem FICH, lê '.' se\n"
+"recursivo, senão lê '-'. Com menos de dois FICHs, assume -h.\n"
+"O estado da saída é 0 se qualquer linha for seleccionada, senão é 1;\n"
+"se ocorrer um erro e -q não for dado, o estado da saída é 2.\n"
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "especificou comparadores em conflito"
+
+#: src/grep.c:2101
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr ""
+"Comparação Perl não suportada numa compilação --disable-perl-regexp build"
+
+#: src/grep.c:2103
+#, c-format
+msgid "invalid matcher %s"
+msgstr "comparador %s inválido"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "método dispositivos desconhecidos"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr "aviso: --unix-byte-offsets (-u) está obsoleto"
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "número máximo inválido"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "tipo de ficheiro binário desconhecido"
+
+#: src/grep.c:2829
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+"Escrito por Mike Haertel e outros; veja\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr "falha ao alocar memória para a pilha PCRE JIT"
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr "-P só suporta idiomas unibyte e UTF-8"
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr "a opção -P só suporta um padrão"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr "erro interno (nunca devia acontecer)"
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr "excedido o limite de tamanho da linha de PCRE"
+
+#: src/pcresearch.c:306
+#, c-format
+msgid "%s: memory exhausted"
+msgstr "%s: memória esgotada"
+
+#: src/pcresearch.c:310
+#, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr "%s: pilha PCRE JIT esgotada"
+
+#: src/pcresearch.c:315
+#, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr "%s: excedido o limite de retrocesso de PCRE"
+
+#: src/pcresearch.c:319
+#, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr "%s: limite de recursividade de PCRE excedido"
+
+#: src/pcresearch.c:327
+#, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr "%s: erro interno de PCRE: %d"
+
+#~ msgid "warning: GREP_OPTIONS is deprecated; please use an alias or script"
+#~ msgstr ""
+#~ "aviso: GREP_OPTIONS é obsoleto; por favor, use um aliás ou um script"
+
+#~ msgid "warning: %s: %s"
+#~ msgstr "aviso: %s: %s"
+
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "Página inicial %s: <https://www.gnu.org/software/%s/>\n"
+
+#~ msgid "invalid %s%s argument '%s'"
+#~ msgstr "Argumento \"%s\" de %s%s inválido"
+
+#~ msgid "invalid suffix in %s%s argument '%s'"
+#~ msgstr "sufixo inválido no argumento \"%s\" de %s%s"
+
+#~ msgid "%s%s argument '%s' too large"
+#~ msgstr "argumento \"%s\" de %s%s muito grande"
+
+#~ msgid "Mike Haertel"
+#~ msgstr "Mike Haertel"
+
+#~ msgid "internal error"
+#~ msgstr "erro interno"
+
+#~ msgid "unfinished repeat count"
+#~ msgstr "contador de repetição não terminado"
+
+#~ msgid "malformed repeat count"
+#~ msgstr "contador de repetição mal formado"
+
+#~ msgid "out of memory"
+#~ msgstr "sem memória"
+
+#~ msgid "writing output"
+#~ msgstr "a escrever o resultado"
+
+#~ msgid "Usage: %s [OPTION]... PATTERN [FILE] ...\n"
+#~ msgstr "Utilização: %s [OPÇÃO]... PADRÃO [FICHEIRO] ...\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Output control:\n"
+#~ " -m, --max-count=NUM stop after NUM matches\n"
+#~ " -b, --byte-offset print the byte offset with output lines\n"
+#~ " -n, --line-number print line number with output lines\n"
+#~ " --line-buffered flush output on every line\n"
+#~ " -H, --with-filename print the filename for each match\n"
+#~ " -h, --no-filename suppress the prefixing filename on output\n"
+#~ " --label=LABEL print LABEL as filename for standard input\n"
+#~ " -o, --only-matching show only the part of a line matching "
+#~ "PATTERN\n"
+#~ " -q, --quiet, --silent suppress all normal output\n"
+#~ " --binary-files=TYPE assume that binary files are TYPE\n"
+#~ " TYPE is 'binary', 'text', or 'without-match'\n"
+#~ " -a, --text equivalent to --binary-files=text\n"
+#~ " -I equivalent to --binary-files=without-match\n"
+#~ " -d, --directories=ACTION how to handle directories\n"
+#~ " ACTION is 'read', 'recurse', or 'skip'\n"
+#~ " -D, --devices=ACTION how to handle devices, FIFOs and sockets\n"
+#~ " ACTION is 'read' or 'skip'\n"
+#~ " -R, -r, --recursive equivalent to --directories=recurse\n"
+#~ " --include=PATTERN files that match PATTERN will be examined\n"
+#~ " --exclude=PATTERN files that match PATTERN will be skipped.\n"
+#~ " --exclude-from=FILE files that match PATTERN in FILE will be "
+#~ "skipped.\n"
+#~ " -L, --files-without-match only print FILE names containing no match\n"
+#~ " -l, --files-with-matches only print FILE names containing matches\n"
+#~ " -c, --count only print a count of matching lines per "
+#~ "FILE\n"
+#~ " -Z, --null print 0 byte after FILE name\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Controlo de resultados\n"
+#~ " -m, --max-count=NUM pára após NUM resultados\n"
+#~ " -b, --byte-offset apresenta o 'byte offset' nos resultados\n"
+#~ " -n, --line-number apresenta o número de linha nos resultados\n"
+#~ " --line-buffered 'flush output' em cada linha\n"
+#~ " -H, --with-filename apresenta o nome do ficheiro para cada "
+#~ "resultado\n"
+#~ " -h, --no-filename não apresenta o nome do ficheiro nos "
+#~ "resultados\n"
+#~ " --label=NOME utiliza NOME de ficheiro para o «standard "
+#~ "input»\n"
+#~ " -o, --only-matching apresenta só a parte da linha que satisfaz "
+#~ "PADRÃO\n"
+#~ " -q, --quiet, --silent suprime toda a apresentação de resultados\n"
+#~ " --binary-files=TIPO assume que ficheiros binários são do TIPO\n"
+#~ " TIPO pode ser 'binary', 'text', ou 'without-"
+#~ "match'\n"
+#~ " -a, --text equivalente a --binary-files=text\n"
+#~ " -I equivalente a --binary-files=without-match\n"
+#~ " -d, --directories=ACÇÃO como lidar com directorias\n"
+#~ " ACÇÃO pode ser 'read', 'recurse', ou 'skip'\n"
+#~ " -D, --devices=ACÇÃO como lidar com devices, FIFOs e sockets\\n\"\n"
+#~ " ACÇÃO pode ser 'read' ou 'skip'\n"
+#~ " -R, -r, --recursive equivalente a --directories=recurse\n"
+#~ " --include=PADRÃO ficheiros que satisfaçam PADRÃO serão "
+#~ "examinados\n"
+#~ " --exclude=PADRÃO ficheiros que satisfaçam PADRÃo serão "
+#~ "ignorados\n"
+#~ " --exclude-from=FICH ficheiros que satisfaçam PADRÃO indicado em "
+#~ "FICH\n"
+#~ " serão ignorados\n"
+#~ " -L, --files-without-match apresenta apenas FICHEIROS que não satisfaçam "
+#~ "PADRÃO\n"
+#~ " -l, --files-with-matches apresenta apenas FICHEIROS que satisfaçam o "
+#~ "PADRÃO\n"
+#~ " -c, --count apresenta para cada FICHEIRO um contador com "
+#~ "o\n"
+#~ " número de linhas que satisfazem PADRÃO\n"
+#~ " -Z, --null imprimir o byte 0 após cada nome de FICHEIRO\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Context control:\n"
+#~ " -B, --before-context=NUM print NUM lines of leading context\n"
+#~ " -A, --after-context=NUM print NUM lines of trailing context\n"
+#~ " -C, --context=NUM print NUM lines of output context\n"
+#~ " -NUM same as --context=NUM\n"
+#~ " --color[=WHEN],\n"
+#~ " --colour[=WHEN] use markers to distinguish the matching "
+#~ "string\n"
+#~ " WHEN may be `always', `never' or `auto'.\n"
+#~ " -U, --binary do not strip CR characters at EOL (MSDOS)\n"
+#~ " -u, --unix-byte-offsets report offsets as if CRs were not there "
+#~ "(MSDOS)\n"
+#~ "\n"
+#~ "`egrep' means `grep -E'. `fgrep' means `grep -F'.\n"
+#~ "With no FILE, or when FILE is -, read standard input. If less than\n"
+#~ "two FILEs given, assume -h. Exit status is 0 if match, 1 if no match,\n"
+#~ "and 2 if trouble.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Controlo de contexto:\n"
+#~ " -B, --before-context=NUM apresenta NUM linhas de contexto anteriores a "
+#~ "PADRÃO\n"
+#~ " -A, --after-context=NUM apresenta NUM linhas de contexto a seguir a "
+#~ "PADRÃO\n"
+#~ " -C, --context=NUM apresenta NUM linhas de contexto no "
+#~ "resultado\n"
+#~ " -NUM equivalente a --context=NUM\n"
+#~ " --color[=QUANDO],\n"
+#~ " --colour[=QUANDO] utiliza marcadores para distinguir as partes "
+#~ "que\n"
+#~ " satisfazem o PADRÃO\n"
+#~ " QUANDO pode ser `always', `never' ou `auto'\n"
+#~ " -U, --binary não remover caracteres CR em EOL (MSDOS)\n"
+#~ " -u, --unix-byte-offsets reportar «offsets» como se não houvesse CRs "
+#~ "(MSDOS)\n"
+#~ "\n"
+#~ "`egrep' é equivalente a `grep -E'. `fgrep' é equivalente a `grep -F'\n"
+#~ "Sem FICHEIRO ou quando FICHEIRO é -, ler o «standard input». Se forem "
+#~ "dados\n"
+#~ "dois FICHEIROS, assume -h. Devolve 0 se encontrar pelo menos uma "
+#~ "occorência\n"
+#~ "de PADRÃO, 1 se não encontrar, 2 se tiver algum problema.\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Report bugs to <bug-gnu-utils@gnu.org>.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Reporte «bugs» para <bug-gnu-utils@gnu.org>.\n"
+
+#~ msgid "unknown directories method"
+#~ msgstr "método para acesso a directorias desconhecido"
+
+#~ msgid "%s (GNU grep) %s\n"
+#~ msgstr "%s (GNU grep) %s\n"
+
+#~ msgid ""
+#~ "Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc.\n"
+#~ msgstr ""
+#~ "Direitos de autor 1988, 1992-1999, 2000, 2001 Free Software Foundation, "
+#~ "Inc.\n"
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "Este software é software livre; leia o código fonte para saber as "
+#~ "condições.\n"
+#~ "NÃO existe qualquer garantia; nem mesmo sobre COMERCIALIZAÇÃO ou "
+#~ "CONFORMIDADE\n"
+#~ "PARA UM DETERMINADO FIM.\n"
+
+#~ msgid "The -P and -z options cannot be combined"
+#~ msgstr "A opção -P e -z não podem ser combinadas"
+
+#~ msgid "%s: option `--%s' doesn't allow an argument\n"
+#~ msgstr "%s: a opção `%s' não aceita um argumento\n"
+
+#~ msgid "%s: unrecognized option `--%s'\n"
+#~ msgstr "%s: opção `--%s' desconhecida\n"
+
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: opção ilegal -- %c\n"
+
+#~ msgid "%s: option `-W %s' is ambiguous\n"
+#~ msgstr "%s: a opção `-W %s' é ambígua\n"
+
+#~ msgid "%s: option `-W %s' doesn't allow an argument\n"
+#~ msgstr "%s: a opção `-W %s' não aceita um argumento\n"
diff --git a/src/grep/po/pt_BR.gmo b/src/grep/po/pt_BR.gmo
new file mode 100644
index 0000000..aef8ec7
--- /dev/null
+++ b/src/grep/po/pt_BR.gmo
Binary files differ
diff --git a/src/grep/po/pt_BR.po b/src/grep/po/pt_BR.po
new file mode 100644
index 0000000..68b3706
--- /dev/null
+++ b/src/grep/po/pt_BR.po
@@ -0,0 +1,966 @@
+# translation of grep-3.5.16.po to Brazilian Portuguese
+# This file is distributed under the same license as the grep package.
+# grep: translation to Brazilian Portuguese (pt_BR)
+# Copyright (C) 2002, 2007, 2008, 2009, 2011, 2012, 2014 Free Software Foundation, Inc.
+#
+# Enrique Melero Gómez <melero@eurolands.com>, 1996.
+# Rodrigo Stulzer Lopes <rodrigo@conectiva.com.br>, 1997.
+# Santiago Vila Doncel <sanvila@unex.es>, 1997, 1998, 1999, 2000, 2001, 2002.
+# Alexandre Folle de Menezes <afmenez@terra.com.br>, 2002.
+# Rodolfo Ribeiro Gomes <rodolforg@gmail.com>, 2007-2020.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU grep-3.5.16\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2020-11-04 09:30-0300\n"
+"Last-Translator: Rodolfo Ribeiro Gomes <rodolforg@gmail.com>\n"
+"Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge."
+"net>\n"
+"Language: pt_BR\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Gtranslator 3.38.0\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "%s é um argumento inválido para %s"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "%s é um argumento ambíguo para %s"
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr "Os argumentos válidos são:"
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr "erro do programa"
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr "estouro de pilha"
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr "erro de escrita"
+
+#: lib/dfa.c:896
+msgid "unbalanced ["
+msgstr "[ sem correspondente"
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr "categoria de caracteres inválida"
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr "a sintaxe de categoria de caracteres é [[:space:]], e não [:space:]"
+
+#: lib/dfa.c:1210
+msgid "unfinished \\ escape"
+msgstr "escape \\ não terminado"
+
+#: lib/dfa.c:1371
+msgid "invalid content of \\{\\}"
+msgstr "conteúdo inválido de \\{\\}"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr "expressão regular grande demais"
+
+#: lib/dfa.c:1858
+msgid "unbalanced ("
+msgstr "( sem correspondente"
+
+#: lib/dfa.c:1975
+msgid "no syntax specified"
+msgstr "nenhuma sintaxe especificada"
+
+#: lib/dfa.c:1986
+msgid "unbalanced )"
+msgstr ") sem correspondente"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "Erro desconhecido de sistema"
+
+#: lib/getopt.c:278
+#, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: a opção \"%s%s\" é ambígua\n"
+
+#: lib/getopt.c:284
+#, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: a opção \"%s%s\" é ambígua; possibilidades:"
+
+#: lib/getopt.c:319
+#, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: a opção \"%s%s\" é desconhecida\n"
+
+#: lib/getopt.c:345
+#, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: a opção \"%s%s\" não aceita argumentos\n"
+
+#: lib/getopt.c:360
+#, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: a opção \"%s%s\" requer um argumento\n"
+
+#: lib/getopt.c:621
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: a opção é inválida -- \"%c\"\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: a opção exige um argumento -- \"%c\"\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "memória esgotada"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr "incapaz de memorizar o diretório de trabalho atual"
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "falhou em retornar ao diretório de trabalho inicial"
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr "falhou em definir o modo texto/binário do descritor de arquivo"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "\""
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "\""
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr "Sucesso"
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr "Nenhuma ocorrência do padrão"
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr "Expressão regular inválida"
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr "Caractere inválido de colagem"
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr "Nome inválido de categoria de caracteres"
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr "Barra invertida excedente ao final"
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr "Retro-referência inválida"
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr "Sem correspondência para [, [^, [:, [. ou [="
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr "( ou \\( sem correspondente"
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr "\\{ sem correspondente"
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr "Conteúdo inválido de \\{\\}"
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr "Fim inválido de intervalo"
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "Memória esgotada"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr "Expressão regular precedente é inválida"
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr "Fim prematuro da expressão regular"
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr "Expressão regular grande demais"
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr ") ou \\) sem correspondente"
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr "Nenhuma expressão regular anterior"
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Empacotado por %s (%s)\n"
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Empacotado por %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr "(C)"
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Licença GPLv3+: GNU GPL versão 3 ou superior <%s>.\n"
+"Este é um software livre: você é livre para alterá-lo e redistribuí-lo.\n"
+"NÃO HÁ GARANTIAS, na máxima extensão permitida por lei.\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Escrito por %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Escrito por %s e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Escrito por %s, %s e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Escrito por %s, %s, %s\n"
+"e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Escrito por %s, %s, %s,\n"
+"%s e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Escrito por %s, %s, %s,\n"
+"%s, %s e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Escrito por %s, %s, %s,\n"
+"%s, %s, %s e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Escrito por %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Escrito por %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s e %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Escrito por %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s e outros.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr "Relate os problemas para: %s\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "Relate os problemas de %s para: %s\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "página de %s: <%s>\n"
+
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr "Ajuda geral sobre uso de software GNU: <%s>\n"
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(entrada padrão)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "argumento inválido para comprimento do contexto"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "entrada longa demais para contar"
+
+#: src/grep.c:1641
+#, c-format
+msgid "%s: binary file matches"
+msgstr "%s: arquivo binário coincide com o padrão"
+
+#: src/grep.c:1679
+#, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "%s: aviso: recursão cíclica de diretório"
+
+#: src/grep.c:1899
+#, c-format
+msgid "%s: input file is also the output"
+msgstr "%s: o arquivo de entrada também é o de saída"
+
+#: src/grep.c:1961 src/grep.c:1968
+#, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "Uso: %s [OPÇÃO]... PADRÕES [ARQUIVO]...\n"
+
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "Experimente \"%s --help\" para mais informações.\n"
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr "Busca por PADRÕES em cada ARQUIVO.\n"
+
+#: src/grep.c:1970
+#, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"Exemplo: %s -i \"olá, mundo\" menu.h main.c\n"
+"PADRÕES pode conter múltiplos padrões separados por nova-linha.\n"
+"\n"
+"Seleção e interpretação de padrão:\n"
+
+#: src/grep.c:1975
+#, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp PADRÕES são expressões regulares estendidas\n"
+" -F, --fixed-strings PADRÕES são textos\n"
+" -G, --basic-regexp PADRÕES são expressões regulares básicas\n"
+" -P, --perl-regexp PADRÕES são expressões regulares Perl\n"
+
+#: src/grep.c:1981
+#, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=PADRÕES usa PADRÕES para coincidir\n"
+" -f, --file=ARQUIVO obtém PADRÕES contidos no ARQUIVO\n"
+" -i, --ignore-case ignora diferenças entre maiúsculas/minúsculas "
+"nos\n"
+" padrões e dados\n"
+" --no-ignore-case não ignora diferença de maiusculizações "
+"(padrão)\n"
+" -w, --word-regexp coincide só com palavras completas\n"
+" -x, --line-regexp coincide só com linhas inteiras\n"
+" -z, --null-data uma linha de dados termina com byte 0, e não "
+"com\n"
+" caractere de nova linha\n"
+
+#: src/grep.c:1989
+#, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"Miscelânea:\n"
+" -s, --no-messages suprime mensagens de erro\n"
+" -v, --invert-match seleciona somente linhas não coincidentes\n"
+" -V, --version mostra informações sobre versão e sai\n"
+" --help exibe esta ajuda e sai\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+"\n"
+"Controle de saída:\n"
+" -m, --max-count=NÚM interrompe depois de NÚM ocorrências\n"
+" -b, --byte-offset emite a posição em bytes nas linhas de saída\n"
+" -n, --line-number emite o número da linha nas linhas de saída\n"
+" --line-buffered libera a saída a cada linha\n"
+" -H, --with-filename emite o nome do arquivo nas linhas de saída\n"
+" -h, --no-filename inibe o nome de arquivo na saída\n"
+" --label=RÓTULO usa RÓTULO como nome de arquivo para entrada "
+"padrão\n"
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+" -o, --only-matching mostra apenas as partes não-vazias das linhas "
+"que\n"
+" coincidem com os PADRÕES\n"
+" -q, --quiet, --silent inibe todas as mensagens normais de saída\n"
+" --binary-files=TIPO assume que arquivos binários são TIPO;\n"
+" TIPO pode ser \\\"binary\\\" (binário), \\\"text"
+"\\\" (texto),\n"
+" ou \\\"without-match\\\" (nunca coincide)\n"
+" -a, --text equivalente a --binary-files=text\n"
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+" -I equivalente a --binary-files=without-match\n"
+" -d, --directories=AÇÃO como tratar diretórios;\n"
+" AÇÃO pode ser \\\"read\\\" (ler), \\\"recurse\\"
+"\" (recursivo),\n"
+" ou \\\"skip\\\" (ignorar)\n"
+" -D, --devices=AÇÃO como tratar dispositivos, FIFOs e soquetes;\n"
+" AÇÃO pode ser \\\"read\\\" (ler) ou \\\"skip\\"
+"\" (ignorar)\n"
+" -r, --recursive equivalente a --directories=recurse\n"
+" -R, --dereference-recursive similar, mas segue todas as ligações "
+"simbólicas\n"
+
+#: src/grep.c:2023
+#, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+" --include=PADRÃO busca apenas em arquivos que casam com PADRÃO\n"
+" --exclude=PADRÃO ignora arquivos que casam com PADRÃO\n"
+" --exclude-from=ARQUI ignora arquivos que casam com algum padrão de\n"
+" arquivo contido em ARQUIvo\n"
+" --exclude-dir=PADRÃO ignora diretórios que casam com PADRÃO\n"
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+" -L, --files-without-match emite apenas os nomes dos ARQUIVOs sem linhas\n"
+" selecionadas\n"
+" -l, --files-with-matches emite apenas os nomes dos ARQUIVOs com linhas\n"
+" selecionadas\n"
+" -c, --count emite apenas a contagem de linhas selecionadas\n"
+" por ARQUIVO\n"
+" -T, --initial-tab alinha por tabulação (se necessário)\n"
+" -Z, --null emite byte 0 depois do nome do ARQUIVO\n"
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+"\n"
+"Controle de contexto:\n"
+" -B, --before-context=NÚM emite NÚM linhas de contexto anteriores\n"
+" -A, --after-context=NÚM emite NÚM linhas de contexto posteriores\n"
+" -C, --context=NÚM emite NÚM linhas de contexto de saída\n"
+
+#: src/grep.c:2043
+#, fuzzy, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+" -NÚM o mesmo que --context=NÚM\n"
+" --color[=QUANDO],\n"
+" --colour[=QUANDO] usa marcadores para destacar os textos "
+"coincidentes;\n"
+" QUANDO pode ser \"always\" (sempre), \"never"
+"\"\n"
+" (nunca) ou \"auto\" (automático).\n"
+" -U, --binary não exclui caracteres CR no fim de linha (MSDOS/"
+"Windows)\n"
+"\n"
+
+#: src/grep.c:2052
+#, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"Quando ARQUIVO é \"-\", lê da entrada padrão. Se ARQUIVO não é informado, lê "
+"\".\"\n"
+"se recursivo, senão lê \"-\". Se há menos que dois ARQUIVOs, assume-se -h.\n"
+"O estado de saída é 0 se alguma linha é selecionada, 1 em caso contrário;\n"
+"se ocorrer algum erro e -q não é especificado, o estado de saída é 2.\n"
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "especificou-se padrões de busca conflitantes"
+
+#: src/grep.c:2101
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr ""
+"não há suporte para coincidir conforme Perl em uma compilação com --disable-"
+"perl-regexp"
+
+#: src/grep.c:2103
+#, c-format
+msgid "invalid matcher %s"
+msgstr "comparador inválido %s"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "método desconhecido de dispositivos"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr ""
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "valor máximo inválido"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "tipo de arquivo binário desconhecido"
+
+#: src/grep.c:2829
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+"Escrito por Mike Haertel e outros; veja\n"
+"<http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>"
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr "falhou em alocar memória para a pilha de PCRE JIT"
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr ""
+"-P só oferece suporte a localidades unibyte (um caractere por byte) e UTF-8"
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr "a opção -P só oferece suporte a apenas um único padrão"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr "erro interno (nunca deveria acontecer)"
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr "atingiu o limite de comprimento de linha das PCRE"
+
+#: src/pcresearch.c:306
+#, c-format
+msgid "%s: memory exhausted"
+msgstr "%s: memória esgotada"
+
+#: src/pcresearch.c:310
+#, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr "%s: pilha PCRE JIT estourada"
+
+#: src/pcresearch.c:315
+#, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr "%s: atingiu o limite de backtracking das PCRE"
+
+#: src/pcresearch.c:319
+#, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr "%s: atingiu o limite de recursão das PCRE"
+
+#: src/pcresearch.c:327
+#, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr "%s: erro interno de PCRE: %d"
+
+#~ msgid "warning: GREP_OPTIONS is deprecated; please use an alias or script"
+#~ msgstr ""
+#~ "aviso: a variável de ambiente GREP_OPTIONS está obsoleta; use um alias ou "
+#~ "script"
+
+#~ msgid "warning: %s: %s"
+#~ msgstr "aviso: %s: %s"
+
+#~ msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
+#~ msgstr "página de %s: <http://www.gnu.org/software/%s/>\n"
+
+#~ msgid "invalid %s%s argument '%s'"
+#~ msgstr "argumento inválido para %s%s: \"%s\""
+
+#~ msgid "invalid suffix in %s%s argument '%s'"
+#~ msgstr "sufixo inválido no argumento para %s%s: \"%s\""
+
+#~ msgid "%s%s argument '%s' too large"
+#~ msgstr "%s%s: argumento \"%s\" é grande demais"
+
+#~ msgid "Mike Haertel"
+#~ msgstr "Mike Haertel"
+
+#~ msgid "internal error"
+#~ msgstr "erro interno"
+
+#~ msgid "%s: option '--%s' doesn't allow an argument\n"
+#~ msgstr "%s: a opção \"--%s\" não aceita argumentos\n"
+
+#~ msgid "%s: unrecognized option '--%s'\n"
+#~ msgstr "%s: a opção \"--%s\" é desconhecida\n"
+
+#~ msgid "%s: option '-W %s' is ambiguous\n"
+#~ msgstr "%s: a opção \"-W %s\" é ambígua\n"
+
+#~ msgid "%s: option '-W %s' doesn't allow an argument\n"
+#~ msgstr "%s: a opção \"-W %s\" não aceita argumentos\n"
+
+#~ msgid "%s: option '-W %s' requires an argument\n"
+#~ msgstr "%s: a opção \"-W %s\" requer um argumento\n"
+
+#~ msgid "lseek failed"
+#~ msgstr "a movimentação pelo arquivo (lseek) falhou"
+
+#~ msgid "PATTERN is, by default, a basic regular expression (BRE).\n"
+#~ msgstr "PADRÃO é, por padrão, uma expressão regular básica (BRE).\n"
+
+#~ msgid ""
+#~ "'egrep' means 'grep -E'. 'fgrep' means 'grep -F'.\n"
+#~ "Direct invocation as either 'egrep' or 'fgrep' is deprecated.\n"
+#~ msgstr ""
+#~ "\"egrep\" significa \"grep -E\". \"fgrep\" significa \"grep -F\".\n"
+#~ "A invocação direta tanto por \"egrep\" como por \"fgrep\" está obsoleta.\n"
+
+#~ msgid "unescaped ^ or $ not supported with -Pz"
+#~ msgstr "não há suporte para ^ ou $ sem escape ao usar -Pz"
+
+#~ msgid "PATTERN is an extended regular expression (ERE).\n"
+#~ msgstr "PADRÃO é uma expressão regular estendida (ERE).\n"
+
+#~ msgid "Invocation as 'egrep' is deprecated; use 'grep -E' instead.\n"
+#~ msgstr "Invocar como \"egrep\" está obsoleto; use \"grep -E\".\n"
+
+#~ msgid "PATTERN is a set of newline-separated fixed strings.\n"
+#~ msgstr ""
+#~ "PADRÃO é um conjunto de textos fixos separados por caractere de nova "
+#~ "linha.\n"
+
+#~ msgid "Invocation as 'fgrep' is deprecated; use 'grep -F' instead.\n"
+#~ msgstr "Invocar como \"fgrep\" está obsoleto; use \"grep -F\".\n"
+
+#~ msgid "GNU Grep home page: <%s>\n"
+#~ msgstr "Página do GNU Grep: <%s>\n"
+
+#~ msgid "%s can only use the %s pattern syntax"
+#~ msgstr "%s só pode usar a sintaxe de padrão %s"
+
+#~ msgid "the --mmap option has been a no-op since 2010"
+#~ msgstr "a opção --mmap não faz nada desde 2010"
+
+#~ msgid "unfinished repeat count"
+#~ msgstr "contador de repetição não terminado"
+
+#~ msgid "malformed repeat count"
+#~ msgstr "contador de repetição mal formulado"
+
+#~ msgid "writing output"
+#~ msgstr "escrevendo na saída"
+
+#~ msgid ""
+#~ "in GREP_COLORS=\"%s\", the \"%s\" capacity needs a value (\"=...\"); "
+#~ "skipped"
+#~ msgstr ""
+#~ "em GREP_COLORS=\"%s\", o recurso \"%s\" precisa de um valor (\"=...\"); "
+#~ "ignorado"
+
+#~ msgid ""
+#~ "in GREP_COLORS=\"%s\", the \"%s\" capacity is boolean and cannot take a "
+#~ "value (\"=%s\"); skipped"
+#~ msgstr ""
+#~ "em GREP_COLORS=\"%s\", o recurso \"%s\" é booleano e não pode assumir um "
+#~ "valor (\"=%s\"); ignorado"
+
+#~ msgid "in GREP_COLORS=\"%s\", the \"%s\" capacity %s"
+#~ msgstr "em GREP_COLORS=\"%s\", o recurso \"%s\" %s."
+
+#~ msgid ""
+#~ "stopped processing of ill-formed GREP_COLORS=\"%s\" at remaining "
+#~ "substring \"%s\""
+#~ msgstr ""
+#~ "interrompido o processamento da variável mal formatada GREP_COLORS=\"%s\" "
+#~ "no trecho de texto restante \"%s\""
+
+#~ msgid ""
+#~ "\n"
+#~ "Output control:\n"
+#~ " -m, --max-count=NUM stop after NUM matches\n"
+#~ " -b, --byte-offset print the byte offset with output lines\n"
+#~ " -n, --line-number print line number with output lines\n"
+#~ " --line-buffered flush output on every line\n"
+#~ " -H, --with-filename print the filename for each match\n"
+#~ " -h, --no-filename suppress the prefixing filename on output\n"
+#~ " --label=LABEL print LABEL as filename for standard input\n"
+#~ " -o, --only-matching show only the part of a line matching "
+#~ "PATTERN\n"
+#~ " -q, --quiet, --silent suppress all normal output\n"
+#~ " --binary-files=TYPE assume that binary files are TYPE;\n"
+#~ " TYPE is `binary', `text', or `without-match'\n"
+#~ " -a, --text equivalent to --binary-files=text\n"
+#~ " -I equivalent to --binary-files=without-match\n"
+#~ " -d, --directories=ACTION how to handle directories;\n"
+#~ " ACTION is `read', `recurse', or `skip'\n"
+#~ " -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+#~ " ACTION is `read' or `skip'\n"
+#~ " -R, -r, --recursive equivalent to --directories=recurse\n"
+#~ " --include=FILE_PATTERN search only files that match FILE_PATTERN\n"
+#~ " --exclude=FILE_PATTERN skip files and directories matching "
+#~ "FILE_PATTERN\n"
+#~ " --exclude-from=FILE skip files matching any file pattern from "
+#~ "FILE\n"
+#~ " --exclude-dir=PATTERN directories that match PATTERN will be "
+#~ "skipped.\n"
+#~ " -L, --files-without-match print only names of FILEs containing no "
+#~ "match\n"
+#~ " -l, --files-with-matches print only names of FILEs containing matches\n"
+#~ " -c, --count print only a count of matching lines per "
+#~ "FILE\n"
+#~ " -T, --initial-tab make tabs line up (if needed)\n"
+#~ " -Z, --null print 0 byte after FILE name\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Controle de saída:\n"
+#~ " -m, --max-count=NÚM interrompe depois de NÚM coincidências\n"
+#~ " -b, --byte-offset exibe a posição em bytes junto com a saída\n"
+#~ " -n, --line-number exibe o número da linha junto com a saída\n"
+#~ " --line-buffered libera a saída a cada linha\n"
+#~ " -H, --with-filename exibe o nome do arquivo para cada padrão "
+#~ "encontrado\n"
+#~ " -h, --no-filename inibe o nome de arquivo na saída\n"
+#~ " --label=RÓTULO mostra RÓTULO como o nome da entrada padrão\n"
+#~ " -o, --only-matching mostra apenas a parte da linha que coincide "
+#~ "com\n"
+#~ " o PADRÃO\n"
+#~ " -q, --quiet, --silent inibe todas as mensagens de saída normais\n"
+#~ " --binary-files=TIPO assume que arquivos binários são TIPO\n"
+#~ " TIPO pode ser \"binary\" (binário), \"text"
+#~ "\" (texto),\n"
+#~ " ou \"without-match\" (nunca coincide).\n"
+#~ " -a, --text equivalente a --binary-files=text\n"
+#~ " -I equivalente a --binary-files=without-match\n"
+#~ " -d, --directories=AÇÃO como tratar diretórios;\n"
+#~ " AÇÃO pode ser \"read\" (ler), \"recurse"
+#~ "\" (recursivo),\n"
+#~ " ou \"skip\" (ignorar).\n"
+#~ " -D, --devices=AÇÃO como tratar dispositivos, FIFOs e soquetes;\n"
+#~ " AÇÃO pode ser \"read\" (ler) ou \"skip"
+#~ "\" (ignorar)\n"
+#~ " -R, -r, --recursive equivalente a --directories=recurse.\n"
+#~ " --include=PADRÃO_ARQ busca apenas em arquivos que casam com "
+#~ "PADRÃO_ARQ\n"
+#~ " --exclude=PADRÃO_ARQ ignora arquivos que casam com PADRÃO_ARQ\n"
+#~ " --exclude-from=ARQUI ignora arquivos que casam com algum padrão "
+#~ "escrito\n"
+#~ " em ARQUIvo\n"
+#~ " --exclude-dir=PADRÃO diretórios que casam com PADRÃO serão "
+#~ "ignorados\n"
+#~ " -L, --files-without-match exibe os nomes somente dos arquivos não "
+#~ "casam\n"
+#~ " com o PADRÃO\n"
+#~ " -l, --files-with-matches exibe os nomes somente dos arquivos casam "
+#~ "com\n"
+#~ " o padrão\n"
+#~ " -c, --count exibe a contagem de linhas por aquivo que "
+#~ "casam\n"
+#~ " com o padrão\n"
+#~ " -T, --initial-tab alinha por tabulação (se necessário)\n"
+#~ " -Z, --null emite byte 0 depois do nome do ARQUIVO\n"
+
+#~ msgid "unknown directories method"
+#~ msgstr "método desconhecido de diretórios"
+
+#~ msgid "The -P and -z options cannot be combined"
+#~ msgstr "As opções -P e -z não podem ser combinadas"
+
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: opção ilegal -- %c\n"
diff --git a/src/grep/po/quot.sed b/src/grep/po/quot.sed
new file mode 100644
index 0000000..0122c46
--- /dev/null
+++ b/src/grep/po/quot.sed
@@ -0,0 +1,6 @@
+s/"\([^"]*\)"/“\1”/g
+s/`\([^`']*\)'/‘\1’/g
+s/ '\([^`']*\)' / ‘\1’ /g
+s/ '\([^`']*\)'$/ ‘\1’/g
+s/^'\([^`']*\)' /‘\1’ /g
+s/“”/""/g
diff --git a/src/grep/po/remove-potcdate.sin b/src/grep/po/remove-potcdate.sin
new file mode 100644
index 0000000..2436c49
--- /dev/null
+++ b/src/grep/po/remove-potcdate.sin
@@ -0,0 +1,19 @@
+# Sed script that remove the POT-Creation-Date line in the header entry
+# from a POT file.
+#
+# The distinction between the first and the following occurrences of the
+# pattern is achieved by looking at the hold space.
+/^"POT-Creation-Date: .*"$/{
+x
+# Test if the hold space is empty.
+s/P/P/
+ta
+# Yes it was empty. First occurrence. Remove the line.
+g
+d
+bb
+:a
+# The hold space was nonempty. Following occurrences. Do nothing.
+x
+:b
+}
diff --git a/src/grep/po/ro.gmo b/src/grep/po/ro.gmo
new file mode 100644
index 0000000..1cc128d
--- /dev/null
+++ b/src/grep/po/ro.gmo
Binary files differ
diff --git a/src/grep/po/ro.po b/src/grep/po/ro.po
new file mode 100644
index 0000000..b750228
--- /dev/null
+++ b/src/grep/po/ro.po
@@ -0,0 +1,940 @@
+# Mesajele în limba română pentru grep.
+# This file is distributed under the same license as the grep package.
+# Copyright (C) 2003 Free Software Foundation, Inc.
+# Eugen Hoanca <eugenh@urban-grafx.ro>, 2003.
+# Florentina Mușat <florentina.musat.28@gmail.com>, 2020.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: grep 3.3.42\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2020-06-24 11:09+0300\n"
+"Last-Translator: Florentina Mușat <florentina.musat.28@gmail.com>\n"
+"Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
+"Language: ro\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"X-Generator: Poedit 2.3.1\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "argument nevalid %s pentru %s"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "argument ambiguu %s pentru %s"
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr "Argumentele valide sunt:"
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr "eroare de program"
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr "supraplin de stivă"
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr "eroare de scriere"
+
+#: lib/dfa.c:896
+msgid "unbalanced ["
+msgstr "[ nebalansat"
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr "clasă de caractere nevalidă"
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr "sintaxa de clasă de caractere este [[:spațiu:]], nu [:spațiu]"
+
+#: lib/dfa.c:1210
+msgid "unfinished \\ escape"
+msgstr "\\ escape neterminat"
+
+#: lib/dfa.c:1371
+msgid "invalid content of \\{\\}"
+msgstr "\\{\\} conținut nevalid"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr "expresia regulată este prea mare"
+
+#: lib/dfa.c:1858
+msgid "unbalanced ("
+msgstr "( nebalansat"
+
+#: lib/dfa.c:1975
+msgid "no syntax specified"
+msgstr "nu s-a specificat nicio sintaxă"
+
+#: lib/dfa.c:1986
+msgid "unbalanced )"
+msgstr ") nebalansat"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "Eroare de sistem necunoscută"
+
+#: lib/getopt.c:278
+#, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: opțiunea „%s%s” este ambiguă\n"
+
+#: lib/getopt.c:284
+#, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: opțiunea „%s%s” este ambiguă; posibilități:"
+
+#: lib/getopt.c:319
+#, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: opțiunea nerecunoscută „%s%s”\n"
+
+#: lib/getopt.c:345
+#, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: opțiunea „%s%s” nu permite un argument\n"
+
+#: lib/getopt.c:360
+#, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: opțiunea „%s%s” necesită un argument\n"
+
+#: lib/getopt.c:621
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: opțiune nevalidă -- „%c”\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: opțiunea necesită un argument -- „%c”\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "memorie plină"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr "nu s-a putut înregistra directorul de lucru curent"
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "nu s-a putut întoarce la directorul de lucru inițial"
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr "nu s-a putut stabili modul de text/binar al descriptorului de fișier"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "'"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr "Succes"
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr "Nu există potrivire"
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr "Expresie regulată nevalidă"
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr "Caracter de ordine alfabetică nevalid"
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr "Nume de clasă de caracter nevalid"
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr "Linie oblică inversă de urmărire"
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr "Referință înapoi nevalidă"
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr "[, [^, [:, [., sau [= fără pereche"
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr "( sau \\( fără pereche"
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr "\\{ fără pereche"
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr "Conținut nevalid al \\{\\}"
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr "Sfârșit de interval nevalid"
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "Memorie plină"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr "Expresie regulată precedentă nevalidă"
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr "Sfârșit prematur al expresiei regulate"
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr "Expresie regulată prea mare"
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr ") sau \\) fără pereche"
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr "Nu există o expresie regulată anterioară"
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Împachetat de %s (%s)\n"
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Împachetat de %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr "(C)"
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Licența GPLv3+: GNU GPL versiunea 3 sau mai mare <%s>.\n"
+"Acesta este software liber: sunteți liber să îl modificați și să îl "
+"redistribuiți.\n"
+"NU există NICIO GARANȚIE, în măsura permisă de lege.\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Scris de %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Scris de %s și %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Scris de %s, %s și %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Scris de %s, %s, %s,\n"
+"și %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Scris de %s, %s, %s,\n"
+"%s, și %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Scris de %s, %s, %s,\n"
+"%s, %s, și %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Scris de %s, %s, %s,\n"
+"%s, %s, %s, și %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Scris de %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"și %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Scris de %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, și %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Scris de %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, și alții.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr "Raportați defecțiunile la: %s\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "Raportați defecțiunile %s la: %s\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s pagină principală: <%s>\n"
+
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr "Ajutor general utilizând software GNU: <%s>\n"
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(intrare standard)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "parametru lungime context invalid"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "intrarea(input) este prea mare pentru numărare"
+
+#: src/grep.c:1641
+#, fuzzy, c-format
+msgid "%s: binary file matches"
+msgstr "Fişierul binar %s corespunde\n"
+
+#: src/grep.c:1679
+#, fuzzy, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "buclă recursivă de directoare"
+
+#: src/grep.c:1899
+#, fuzzy, c-format
+msgid "%s: input file is also the output"
+msgstr "fișierul de intrare %s este de asemenea și ieșirea"
+
+#: src/grep.c:1961 src/grep.c:1968
+#, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "Utilizare: %s [OPȚIUNE]... MODELE [FIȘIER]...\n"
+
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "Încercați „%s --help” pentru mai multe informații.\n"
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr "Caută pentru MODELE în fiecare FIȘIER.\n"
+
+#: src/grep.c:1970
+#, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"Exemplu: %s -i 'hello world' menu.h main.c\n"
+"MODELELE pot conține modele multiple separate prin linii noi.\n"
+"\n"
+"Selectarea modelelor și interpretarea:\n"
+
+#: src/grep.c:1975
+#, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp MODELELE sunt expresii regulate extinse\n"
+" -F, --fixed-strings MODELELE sunt șiruri\n"
+" -G, --basic-regexp MODELELE sunt expresii regulate de bază\n"
+" -P, --perl-regexp MODELELE sunt expresii regulate PERL\n"
+
+#: src/grep.c:1981
+#, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=MODELE utilizează MODELELE pentru potrivire\n"
+" -f, --file=FIȘIER ia MODELELE de la FIȘIER\n"
+" -i, --ignore-case ignoră distincțiile de majuscule în modele și "
+"date\n"
+" --no-ignore-case nu ignora distincțiile de majuscule (implicit)\n"
+" -w, --word-regexp potrivește doar cuvinte întregi\n"
+" -x, --line-regexp potrivește doar linii întregi\n"
+" -z, --null-data o linie de date se termină în octetul 0, nu în "
+"linie nouă\n"
+
+#: src/grep.c:1989
+#, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"Diverse:\n"
+" -s, --no-messages suprimă mesajele de eroare\n"
+" -v, --invert-match selectează liniile care nu se potrivesc\n"
+" -V, --version afișează informațiile de versiune și ieși\n"
+" --help afișează acest text de ajutor și ieși\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+"\n"
+"Control de ieșire:\n"
+" -m, --max-count=NUM oprește după NUM linii selectate\n"
+" -b, --byte-offset tipărește decalajul de octet cu liniile de "
+"ieșire\n"
+" -n, --line-number tipărește numărul liniei cu liniile de ieșire\n"
+" --line-buffered golește ieșirea la fiecare linie\n"
+" -H, --with-filename tipărește numele fișierului cu liniile de "
+"ieșire\n"
+" -h, --no-filename suprimă prefixul numelui de fișier la ieșire\n"
+" --label=ETICHETĂ utilizează ETICHETĂ ca prefixul numelui de "
+"fișier de intrare standard\n"
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+" -o, --only-matching arată doar părțile pline ale liniilor care se "
+"potrivesc\n"
+" -q, --quiet, --silent suprimă toată ieșirea normală\n"
+" --binary-files=TIP presupune că fișierele binare sunt TIP;\n"
+" TIP este „binar”, „text” sau „fără-potrivire”\n"
+" -a, --text echivalent cu --binary-files=text\n"
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+" -I echivalent cu --binary-files=fără-potrivire\n"
+" -d, --directories=ACȚIUNE cum să se manipuleze directoarele;\n"
+" ACȚIUNE este „citește”, „recursivitate”, sau "
+"„omite”\n"
+" -D, --devices=ACȚIUNE cum să se manipuleze dispozitive, FIFO-uri și "
+"socluri;\n"
+" ACȚIUNE este „citește” sau „omite”\n"
+" -r, --recursive like --directories=recursivitate\n"
+" -R, --dereference-recursive de asemenea, dar urmărește toate legăturile "
+"simbolice\n"
+
+#: src/grep.c:2023
+#, fuzzy, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+" --include=GLOB caută doar fișiere care se potrivesc cu GLOB (un "
+"model de fișier)\n"
+" --exclude=GLOB omite fișierele și directoarele care se "
+"potrivesc cu GLOB\n"
+" --exclude-from=FIȘIER omite fișierele care se potrivesc oricărui "
+"model de la FIȘIER\n"
+" --exclude-dir=GLOB omite directoarele care se potrivesc cu GLOB\n"
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+" -L, --files-without-match tipărește doar numele de FIȘIERE fără linii "
+"selectate\n"
+" -l, --files-with-matches tipărește doar numele de FIȘIERE cu linii "
+"selectate\n"
+" -c, --count tipărește doar un număr al liniilor selectate "
+"per FIȘIER\n"
+" -T, --initial-tab face ca tab-urile să fie aliniate (dacă este "
+"nevoie)\n"
+" -Z, --null tipărește octetul 0 după numele de FIȘIER\n"
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+"\n"
+"Control de context:\n"
+" -B, --before-context=NUM tipărește NUM linii ale contextului de început\n"
+" -A, --after-context=NUM tipărește NUM linii ale contextului de urmărire\n"
+" -C, --context=NUM tipărește NUM linii al contextului de ieșire\n"
+
+#: src/grep.c:2043
+#, fuzzy, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+" -NUM la fel ca--context=NUM\n"
+" --color[=CÂND],\n"
+" --colour[=CÂND] utilizează markere pentru a evidenția șirurile "
+"care se potrivesc;\n"
+" CÂND este „totdeauna”, „niciodată” sau „auto”\n"
+" -U, --binary nu elimina caracterele CR la EOL (MSDOS/"
+"Windows)\n"
+"\n"
+
+#: src/grep.c:2052
+#, fuzzy, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"Când FILE este „-”, citește intrarea standard. Cu niciun FIȘIER, citește "
+"„.” dacă\n"
+"este recursiv,„-” altfel. Cu mai puțin de două FIȘIERE, presupune -h.\n"
+"Starea de ieșire este 0 dacă orice linie (sau fișier dacă -L) este "
+"selectată, 1 altfel;\n"
+"dacă orice eroare se întâmplă -q nu este dat, starea de ieșire este 2.\n"
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "conflicte între căutătorii (matchers) specificaţi"
+
+#: src/grep.c:2101
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr ""
+"Potrivirea Perl nu este suportată într-o generare --disable-perl-regexp"
+
+#: src/grep.c:2103
+#, c-format
+msgid "invalid matcher %s"
+msgstr "potrivire nevalidă %s"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "metodă dispozitive(devices) necunoscută"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr ""
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "numărare maximă invalidă"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "tip fişiere-binare necunoscut"
+
+#: src/grep.c:2829
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+"Scris de Mike Haertel și alții; consultați\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr "nu s-a putut aloca memorie pentru stiva PCRE JIT"
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr "-P suportă doar localizări unioctet și UTF-8"
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr "opțiunea -P suportă doar un singur model"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr "eroare internă (nu ar trebui să se întâmple vreodată)"
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr "s-a depășit limita de lungime a liniei al PCRE"
+
+#: src/pcresearch.c:306
+#, fuzzy, c-format
+msgid "%s: memory exhausted"
+msgstr "memorie plină"
+
+#: src/pcresearch.c:310
+#, fuzzy, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr "s-a epuizat stiva PCRE JIT"
+
+#: src/pcresearch.c:315
+#, fuzzy, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr "s-a depășit limita de backtracking al PCRE"
+
+#: src/pcresearch.c:319
+#, fuzzy, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr "s-a depășit limita de backtracking al PCRE"
+
+#: src/pcresearch.c:327
+#, fuzzy, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr "eroare PCRE internă: %d"
+
+#, c-format
+#~ msgid "warning: GREP_OPTIONS is deprecated; please use an alias or script"
+#~ msgstr ""
+#~ "avertisment: GREP_OPTIONS este depășit; utilizați un alias sau un script"
+
+#, c-format
+#~ msgid "warning: %s: %s"
+#~ msgstr "avertisment: %s: %s"
+
+#~ msgid "unfinished repeat count"
+#~ msgstr "numărare repetată neterminată"
+
+#~ msgid "malformed repeat count"
+#~ msgstr "numărare repetată malformată"
+
+#~ msgid "out of memory"
+#~ msgstr "memorie plină"
+
+#~ msgid "writing output"
+#~ msgstr "scriere output"
+
+#~ msgid "Usage: %s [OPTION]... PATTERN [FILE] ...\n"
+#~ msgstr "Folosire: %s [OPŢIUNE]... TIPAR [FIŞIER]...\n"
+
+#~ msgid ""
+#~ "Search for PATTERN in each FILE or standard input.\n"
+#~ "Example: %s -i 'hello world' menu.h main.c\n"
+#~ "\n"
+#~ "Regexp selection and interpretation:\n"
+#~ msgstr ""
+#~ "Caută după TIPAR în fiecare FIşIER sau de la intrare standard.\n"
+#~ "Exemplu: %s -i 'hello world' menu.h main.c\n"
+#~ "\n"
+#~ "Selecţie şi interpretare regexp:\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Output control:\n"
+#~ " -m, --max-count=NUM stop after NUM matches\n"
+#~ " -b, --byte-offset print the byte offset with output lines\n"
+#~ " -n, --line-number print line number with output lines\n"
+#~ " --line-buffered flush output on every line\n"
+#~ " -H, --with-filename print the filename for each match\n"
+#~ " -h, --no-filename suppress the prefixing filename on output\n"
+#~ " --label=LABEL print LABEL as filename for standard input\n"
+#~ " -o, --only-matching show only the part of a line matching "
+#~ "PATTERN\n"
+#~ " -q, --quiet, --silent suppress all normal output\n"
+#~ " --binary-files=TYPE assume that binary files are TYPE\n"
+#~ " TYPE is 'binary', 'text', or 'without-match'\n"
+#~ " -a, --text equivalent to --binary-files=text\n"
+#~ " -I equivalent to --binary-files=without-match\n"
+#~ " -d, --directories=ACTION how to handle directories\n"
+#~ " ACTION is 'read', 'recurse', or 'skip'\n"
+#~ " -D, --devices=ACTION how to handle devices, FIFOs and sockets\n"
+#~ " ACTION is 'read' or 'skip'\n"
+#~ " -R, -r, --recursive equivalent to --directories=recurse\n"
+#~ " --include=PATTERN files that match PATTERN will be examined\n"
+#~ " --exclude=PATTERN files that match PATTERN will be skipped.\n"
+#~ " --exclude-from=FILE files that match PATTERN in FILE will be "
+#~ "skipped.\n"
+#~ " -L, --files-without-match only print FILE names containing no match\n"
+#~ " -l, --files-with-matches only print FILE names containing matches\n"
+#~ " -c, --count only print a count of matching lines per "
+#~ "FILE\n"
+#~ " -Z, --null print 0 byte after FILE name\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Control ieşire (output)l:\n"
+#~ " -m, --max-count=NUM oprire după NUM potriviri\n"
+#~ " -b, --byte-offset tipăreşte locaţia (byte offset) cu liniile "
+#~ "rezultate\n"
+#~ " -n, --line-number tipăreşte numărul liniei cu liniile "
+#~ "rezultate\n"
+#~ " --line-buffered înnoieşte (flush) outputul la fiecare linie\n"
+#~ " -H, --with-filename tipăreşte numele de fişier care corespund\n"
+#~ " -h, --no-filename suprimă prefixarea cu nume de fişier la "
+#~ "output\n"
+#~ " --label=ETICHETĂ tipăreşte ETICHETĂ ca nume fişier pentru "
+#~ "intrare standard\n"
+#~ " -o, --only-matching afişează doar o parte a unei linii "
+#~ "corespunzătoare TIPARului\n"
+#~ " -q, --quiet, --silent suprimă tot outputul\n"
+#~ " --binary-files=TiP presupune ca fişierele binare sunt TIP\n"
+#~ " unde TIP este 'binary', 'text', sau 'without-"
+#~ "match'\n"
+#~ " -a, --text echivalent cu --binary-files=text\n"
+#~ " -I echivalent cu --binary-files=without-match\n"
+#~ " -d, --directories=ACŢIUNE mod de manipulare al directoarelor\n"
+#~ " ACŢIUNE este 'read', 'recurse', sau 'skip'\n"
+#~ " -D, --devices=ACŢIUNE mod de manipulare device-uri, FIFOuri şi "
+#~ "sockeţi\n"
+#~ " ACŢIUNE este 'read' sau 'skip'\n"
+#~ " -R, -r, --recursive echivalent cu --directories=recurse\n"
+#~ " --include=TIPAR fişierele potrivite TIPARului vor fi "
+#~ "examinate\n"
+#~ " --exclude=TIPAR fişierele potrivite TIPARului vor fi omise.\n"
+#~ " --exclude-from=FIŞIER fişierele potrivite TIPARului în FIŞIER vor "
+#~ "fi omise.\n"
+#~ " -L, --files-without-match afişează doar nume FIŞIERe care nu corespund\n"
+#~ " -l, --files-with-matches afişează doar nume FIŞIERe care corespund\n"
+#~ " -c, --count afişează doar numărul de potriviri per "
+#~ "FIŞIER\n"
+#~ " -Z, --null tipăreşte octet 0 după nume FIŞIER\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Context control:\n"
+#~ " -B, --before-context=NUM print NUM lines of leading context\n"
+#~ " -A, --after-context=NUM print NUM lines of trailing context\n"
+#~ " -C, --context=NUM print NUM lines of output context\n"
+#~ " -NUM same as --context=NUM\n"
+#~ " --color[=WHEN],\n"
+#~ " --colour[=WHEN] use markers to distinguish the matching "
+#~ "string\n"
+#~ " WHEN may be `always', `never' or `auto'.\n"
+#~ " -U, --binary do not strip CR characters at EOL (MSDOS)\n"
+#~ " -u, --unix-byte-offsets report offsets as if CRs were not there "
+#~ "(MSDOS)\n"
+#~ "\n"
+#~ "`egrep' means `grep -E'. `fgrep' means `grep -F'.\n"
+#~ "With no FILE, or when FILE is -, read standard input. If less than\n"
+#~ "two FILEs given, assume -h. Exit status is 0 if match, 1 if no match,\n"
+#~ "and 2 if trouble.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Control de context:\n"
+#~ " -B, --before-context=NUM tipăreşte NUM linii dinainte de context\n"
+#~ " -A, --after-context=NUM tipăreşte NUM linii de după context\n"
+#~ " -C, --context=NUM tipăreşte NUM linii de context\n"
+#~ " -NUM la fel ca şi --context=NUM\n"
+#~ " --color[=CÂND],\n"
+#~ " --colour[=CÂND] foloseşte marcaje pentru a deosebi şirurile "
+#~ "potrivite\n"
+#~ " CÂND poate fi `always', `never' sau `auto'.\n"
+#~ " -U, --binary nu renunţa la caractere CR la EOL (MSDOS)\n"
+#~ " -u, --unix-byte-offsets declară offset ca şi cum CR n-ar fi "
+#~ "acolo(MSDOS)\n"
+#~ "\n"
+#~ "`egrep' înseamnă `grep -E'. `fgrep' înseamnă `grep -F'.\n"
+#~ "Fără FIŞIER, sau când FIŞIER este -, se citeşte intrarea standard. Dacă "
+#~ "se dau\n"
+#~ "mai puţin de 2 FIŞIERe, se presupune -h. Starea de ieşire e 0 pentru\n"
+#~ "corespunzător, 1 pentru necorespunzător, şi 2 pentru probleme.\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Report bugs to <bug-gnu-utils@gnu.org>.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Raportaţi buguri la <bug-gnu-utils@gnu.org>.\n"
+
+#~ msgid "unknown directories method"
+#~ msgstr "metodă directoare necunoscută"
+
+#~ msgid "%s (GNU grep) %s\n"
+#~ msgstr "%s (GNU grep) %s\n"
+
+#~ msgid ""
+#~ "Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc.\n"
+#~ msgstr ""
+#~ "Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc.\n"
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "Acesta este software liber; vedeţi sursele pentru condiţii de copiere. "
+#~ "NU\n"
+#~ "există nici o garanţie; nici măcar pentru VANDABILITATE sau POTRIVIRE\n"
+#~ "PENTRU UN SCOP ANUME.\n"
+
+#~ msgid "The -P and -z options cannot be combined"
+#~ msgstr "Opţiunile -P şi -z nu pot fi combinate"
+
+#~ msgid "%s: option `--%s' doesn't allow an argument\n"
+#~ msgstr "%s: opţiunea `--%s' nu permite un parametru\n"
+
+#~ msgid "%s: unrecognized option `--%s'\n"
+#~ msgstr "%s: opţiune necunoscută `--%s'\n"
+
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: opţiune ilegală -- %c\n"
+
+#~ msgid "%s: option `-W %s' is ambiguous\n"
+#~ msgstr "%s: opţiunea `-W %s' este ambiguă\n"
+
+#~ msgid "%s: option `-W %s' doesn't allow an argument\n"
+#~ msgstr "%s: opţiunea `-W %s' nu permite un parametru\n"
diff --git a/src/grep/po/ru.gmo b/src/grep/po/ru.gmo
new file mode 100644
index 0000000..dcd99a4
--- /dev/null
+++ b/src/grep/po/ru.gmo
Binary files differ
diff --git a/src/grep/po/ru.po b/src/grep/po/ru.po
new file mode 100644
index 0000000..e3933ef
--- /dev/null
+++ b/src/grep/po/ru.po
@@ -0,0 +1,876 @@
+# translation of grep-2.6.ru.po to Russian
+# Локализация для grep.
+# Copyright (C) 1997, 1998, 1999, 2000, 2009, 2010 Free Software Foundation, Inc.
+# This file is distributed under the same license as the grep package.
+#
+# Denis Perchine <dyp@perchine.com>, 1998-2000.
+# Yuri Kozlov <yuray@komyakino.ru>, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021.
+msgid ""
+msgstr ""
+"Project-Id-Version: grep 3.6.27\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2021-08-10 06:59+0300\n"
+"Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
+"Language-Team: Russian <gnu@d07.ru>\n"
+"Language: ru\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"X-Generator: Lokalize 20.12.0\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "неверный аргумент %s для %s"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "двусмысленный аргумент %s для %s"
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr "Допустимые аргументы:"
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr "ошибка программы"
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr "переполнение стека"
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr "ошибка записи"
+
+#: lib/dfa.c:896
+msgid "unbalanced ["
+msgstr "несбалансированная ["
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr "неправильный класс символов"
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr "синтаксис класса символов: [[:space:]], а не [:space:]"
+
+#: lib/dfa.c:1210
+msgid "unfinished \\ escape"
+msgstr "незавершённая \\ экранирующая последовательность"
+
+#: lib/dfa.c:1371
+msgid "invalid content of \\{\\}"
+msgstr "неправильное содержимое в \\{\\}"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr "регулярное выражение слишком большое"
+
+#: lib/dfa.c:1858
+msgid "unbalanced ("
+msgstr "несбалансированная ("
+
+#: lib/dfa.c:1975
+msgid "no syntax specified"
+msgstr "не указан синтаксис"
+
+#: lib/dfa.c:1986
+msgid "unbalanced )"
+msgstr "несбалансированная )"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "Неизвестная системная ошибка"
+
+#: lib/getopt.c:278
+#, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: двусмысленный параметр «%s%s»\n"
+
+#: lib/getopt.c:284
+#, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: двусмысленный параметр «%s%s»; возможные варианты:"
+
+#: lib/getopt.c:319
+#, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: нераспознанный параметр «%s%s»\n"
+
+#: lib/getopt.c:345
+#, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: для параметра «%s%s» нельзя использовать аргумент\n"
+
+#: lib/getopt.c:360
+#, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: для параметра «%s%s» требуется аргумент\n"
+
+#: lib/getopt.c:621
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: неверный параметр «%c»\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: параметру требуется аргумент «%c»\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "память исчерпана"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr "не удалось запомнить текущий рабочий каталог"
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "не удалось вернуться в начальный рабочий каталог"
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr "не удалось изменить текстовый/двоичный режим у файлового дескриптора"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "«"
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "»"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr "Выполнено успешно"
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr "Нет совпадений"
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr "Неправильное регулярное выражение"
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr "Неправильный символ сравнения"
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr "Неправильное имя класса символов"
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr "Завершающий символ обратной косой черты"
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr "Неправильная обратная ссылка"
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr "Непарная [, [^, [:, [. или [="
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr "Непарная ( или \\("
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr "Непарная \\{"
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr "Неправильное содержимое в \\{\\}"
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr "Неправильный конец диапазона"
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "Память исчерпана"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr "Неправильное предшествующее регулярное выражение"
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr "Преждевременное завершение регулярного выражения"
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr "Регулярное выражение слишком большое"
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr "Непарная ) или \\)"
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr "Нет предыдущего регулярного выражения"
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Упакован %s (%s)\n"
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Упакован %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr "(C)"
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Лицензия GPLv3+: GNU GPL версии 3 или новее <%s>.\n"
+"Это свободное ПО: вы можете изменять и распространять его.\n"
+"Нет НИКАКИХ ГАРАНТИЙ в пределах действующего законодательства.\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Автор программы — %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Авторы программы — %s и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Авторы программы — %s, %s и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Авторы программы — %s, %s, %s\n"
+"и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Авторы программы — %s, %s, %s,\n"
+"%s и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Авторы программы — %s, %s, %s,\n"
+"%s, %s и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Авторы программы — %s, %s, %s,\n"
+"%s, %s, %s и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Авторы программы — %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Авторы программы — %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Авторы программы — %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s и другие.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr "Об ошибках сообщайте по адресу: %s\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "Об ошибках в %s сообщайте по адресу %s\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Домашняя страница %s: <%s>\n"
+
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr "Справка по работе с программами GNU: <%s>\n"
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(стандартный ввод)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "неверный аргумент длины контекста"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "входные данные слишком велики, чтобы сосчитать"
+
+#: src/grep.c:1641
+#, c-format
+msgid "%s: binary file matches"
+msgstr "%s: двоичный файл совпадает"
+
+#: src/grep.c:1679
+#, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "%s: предупреждение: каталоги зациклены"
+
+#: src/grep.c:1899
+#, c-format
+msgid "%s: input file is also the output"
+msgstr "%s: файл ввода также используется и для вывода"
+
+#: src/grep.c:1961 src/grep.c:1968
+#, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "Использование: %s [ПАРАМЕТР]… ШАБЛОНЫ [ФАЙЛ]…\n"
+
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "Запустите «%s --help» для получения более подробного описания.\n"
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr "Поиск ШАБЛОНОВ в каждом ФАЙЛЕ.\n"
+
+#: src/grep.c:1970
+#, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"Пример: %s -i 'hello world' menu.h main.c\n"
+"ШАБЛОНОВ можно указать несколько, разделяя их символом новой строки.\n"
+"\n"
+"Шаблон выбора и его интерпретация:\n"
+
+#: src/grep.c:1975
+#, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp ШАБЛОНЫ — расширенные регулярные выражения\n"
+" -F, --fixed-regexp ШАБЛОНЫ — строки\n"
+" -G, --basic-regexp ШАБЛОНЫ — простые регулярные выражения\n"
+" -P, --perl-regexp ШАБЛОНЫ — регулярные выражения языка Perl\n"
+
+#: src/grep.c:1981
+#, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=ШАБЛОНЫ использовать ШАБЛОНЫ для поиска\n"
+" -f, --file=ФАЙЛ брать ШАБЛОНЫ из ФАЙЛа\n"
+" -i, --ignore-case игнорировать различие регистра\n"
+" --no-ignore-case учитывать регистр (по умолчанию)\n"
+" -w, --word-regexp совпадение обязательно с целым словом\n"
+" -x, --line-regexp совпадение обязательно с целой строкой\n"
+" -z, --null-data строки разделяются байтом с нулевым значением, а "
+"не\n"
+" символом конца строки\n"
+
+#: src/grep.c:1989
+#, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"Разное:\n"
+" -s, --no-messages не показывать сообщения об ошибках\n"
+" -v, --invert-match выбирать не подходящие строки\n"
+" -V, --version показать информацию о версии и закончить работу\n"
+" --help показать эту справку и закончить работу\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+"\n"
+"Управление выводом:\n"
+" -m, --max-count=ЧИСЛО остановиться после указанного\n"
+" ЧИСЛА совпавших строк\n"
+" -b, --byte-offset печатать вместе с выходными строками смещение в\n"
+" байтах\n"
+" -n, --line-number печатать номер строки вместе с выходными "
+"строками\n"
+" --line-buffered сбрасывать буфер после каждой строки\n"
+" -H, --with-filename печатать имя файла для каждой выводимой строки\n"
+" -h, --no-filename не начинать вывод с имени файла\n"
+" --label=МЕТКА использовать МЕТКУ в качестве имени файла для\n"
+" стандартного ввода\n"
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+" -o, --only-matching показывать только совпавшие непустые части "
+"строк\n"
+" -q, --quiet, --silent подавлять весь обычный вывод\n"
+" --binary-files=ТИП считать, что двоичный файл имеет ТИП:\n"
+" «binary», «text» или «without-match».\n"
+" -a, --text тоже, что и --binary-files=text\n"
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+" -I то же, что и --binary-files=without-match\n"
+" -d, --directories=ДЕЙСТВ как обрабатывать каталоги\n"
+" ДЕЙСТВИЕ может быть «read» (читать),\n"
+" «recurse» (рекурсивно) или «skip» (пропускать).\n"
+" -D, --devices=ДЕЙСТВ как обрабатывать устройства, FIFO и сокеты\n"
+" ДЕЙСТВИЕ может быть «read» или «skip»\n"
+" -r, --recursive то же, что и --directories=recurse\n"
+" -R, --dereference-recursive тоже, но с "
+"переходом\n"
+" по всем символьным ссылкам\n"
+
+#: src/grep.c:2023
+#, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+" --include=МАСКА обработать только файлы, подпадающие под\n"
+" МАСКУ (файловый шаблон)\n"
+" --exclude=МАСКА пропустить файлы, подпадающие под МАСКУ\n"
+" --exclude-from=ФАЙЛ пропустить файлы, подпадающие под маску\n"
+" файлов из ФАЙЛА\n"
+" --exclude-dir=МАСКА пропустить каталоги, подпадающие под МАСКУ\n"
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+" -L, --files-without-match печатать только имена ФАЙЛОВ без выбранных "
+"строк\n"
+" -l, --files-with-matches печатать только имена ФАЙЛОВ с выбранными "
+"строками\n"
+" -c, --count печатать только количество выбранных\n"
+" строк на ФАЙЛ\n"
+" -T, --initial-tab выравнивать табуляцией (если нужно)\n"
+" -Z, --null печатать байт 0 после имени ФАЙЛА\n"
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+"\n"
+"Управление контекстом:\n"
+" -B, --before-context=ЧИС печатать ЧИСЛО строк предшествующего контекста\n"
+" -A, --after-context=ЧИС печатать ЧИСЛО строк последующего контекста\n"
+" -C, --context[=ЧИС] печатать ЧИСЛО строк контекста\n"
+
+#: src/grep.c:2043
+#, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+" -ЧИСЛО то же, что и --context=ЧИСЛО\n"
+" --group-separator=SEP печатать SEP в строке между совпадениями\n"
+" с контекстом\n"
+" --no-group-separator не печатать разделитель между совпадениями\n"
+" с контекстом\n"
+" --color[=КОГДА],\n"
+" --colour[=КОГДА] использовать маркеры для различия совпадающих\n"
+" строк; КОГДА может быть «always» (всегда),\n"
+" «never» (никогда) или «auto» (автоматически)\n"
+" -U, --binary не удалять символы CR в конце строки\n"
+" (MSDOS/Windows)\n"
+"\n"
+
+#: src/grep.c:2052
+#, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"Если в качестве ФАЙЛА указан символ «-», то читается стандартный ввод.\n"
+"Если ФАЙЛ не указан, то читается текущий каталог «.» и «-» в противном\n"
+"случае. Если указано менее двух ФАЙЛОВ, то предполагается -h.\n"
+"При нахождении совпадений любой строки кодом завершения будет 0\n"
+"и 1, если ничего не совпало. При возникновении ошибок и если не указан\n"
+"параметр -q, кодом завершения будет 2.\n"
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "заданы конфликтующие образцы"
+
+#: src/grep.c:2101
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr "Шаблоны Perl не поддерживаются при сборке с --disable-perl-regexp"
+
+#: src/grep.c:2103
+#, c-format
+msgid "invalid matcher %s"
+msgstr "неверный образец %s"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "неизвестный метод для устройств"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr "предупреждение: параметр --unix-byte-offsets (-u) устарел"
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "неверно задано число максимального количества совпадений"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "неизвестный тип двоичных файлов"
+
+#: src/grep.c:2829
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+"Авторы программы: Mike Haertel и другие; смотрите\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>"
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr "ошибка выделения памяти для стека PCRE JIT"
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr "параметр -P поддерживает только однобайтовые локали и UTF-8"
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr "параметр -P поддерживает только одиночный шаблон"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr "внутренняя ошибка (не должна возникать)"
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr "превышено ограничение длины строки PCRE"
+
+#: src/pcresearch.c:306
+#, c-format
+msgid "%s: memory exhausted"
+msgstr "%s: память исчерпана"
+
+#: src/pcresearch.c:310
+#, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr "%s: исчерпан стек PCRE JIT"
+
+#: src/pcresearch.c:315
+#, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr "%s: исчерпан лимит возвратов в PCRE"
+
+#: src/pcresearch.c:319
+#, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr "%s: исчерпан лимит рекурсии в PCRE"
+
+#: src/pcresearch.c:327
+#, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr "%s: внутренняя ошибка PCRE: %d"
+
+#~ msgid "warning: GREP_OPTIONS is deprecated; please use an alias or script"
+#~ msgstr ""
+#~ "предупреждение: GREP_OPTIONS устарел; используйте псевдоним или сценарий"
+
+#~ msgid "warning: %s: %s"
+#~ msgstr "предупреждение: %s: %s"
+
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "Домашняя страница %s: <https://www.gnu.org/software/%s/>\n"
+
+#~ msgid "invalid %s%s argument '%s'"
+#~ msgstr "неверный аргумент %s%s в «%s»"
+
+#~ msgid "invalid suffix in %s%s argument '%s'"
+#~ msgstr "недопустимый суффикс в аргументе %s%s для «%s»"
+
+#~ msgid "%s%s argument '%s' too large"
+#~ msgstr "аргумент %s%s слишком велик для «%s»"
+
+#~ msgid "Mike Haertel"
+#~ msgstr "Майк Гертель (Mike Haertel)"
+
+#~ msgid "internal error"
+#~ msgstr "внутренняя ошибка"
+
+#~ msgid "%s: option '--%s' doesn't allow an argument\n"
+#~ msgstr "%s: у параметра «--%s» не может быть аргумента\n"
+
+#~ msgid "%s: unrecognized option '--%s'\n"
+#~ msgstr "%s: неизвестный параметр «--%s»\n"
+
+#~ msgid "%s: option '-W %s' is ambiguous\n"
+#~ msgstr "%s: двусмысленный параметр «-W %s»\n"
+
+#~ msgid "%s: option '-W %s' doesn't allow an argument\n"
+#~ msgstr "%s: у параметра «-W %s» не может быть аргумента\n"
+
+#~ msgid "%s: option '-W %s' requires an argument\n"
+#~ msgstr "%s: для параметра «-W %s» требуется аргумент\n"
+
+#~ msgid "lseek failed"
+#~ msgstr "Вызов lseek завершился неудачно"
+
+#~ msgid "PATTERN is, by default, a basic regular expression (BRE).\n"
+#~ msgstr ""
+#~ "По умолчанию, ШАБЛОН представляет собой простое регулярное выражение "
+#~ "(BRE).\n"
+
+#~ msgid ""
+#~ "'egrep' means 'grep -E'. 'fgrep' means 'grep -F'.\n"
+#~ "Direct invocation as either 'egrep' or 'fgrep' is deprecated.\n"
+#~ msgstr ""
+#~ "Вместо «egrep» предполагается запуск «grep -E». Вместо «fgrep» "
+#~ "предполагается\n"
+#~ "«grep -F». Запуск под именами «egrep» или «fgrep» лучше не выполнять.\n"
+
+#~ msgid "unescaped ^ or $ not supported with -Pz"
+#~ msgstr "неэкранированный символ ^ или $ не поддерживается при указании -Pz"
+
+#~ msgid "GNU Grep home page: <%s>\n"
+#~ msgstr "Домашняя страница GNU Grep: <%s>\n"
+
+#~ msgid "invalid UTF-8 byte sequence in input"
+#~ msgstr "недопустимая последовательность байтов UTF-8 во входных данных"
+
+#~ msgid "PATTERN is an extended regular expression (ERE).\n"
+#~ msgstr "ШАБЛОН представляет собой расширенное регулярное выражение (ERE).\n"
+
+#~ msgid "Invocation as 'egrep' is deprecated; use 'grep -E' instead.\n"
+#~ msgstr ""
+#~ "Запуск под именем «egrep» устарел; вместо этого используйте «grep -E».\n"
+
+#~ msgid "PATTERN is a set of newline-separated fixed strings.\n"
+#~ msgstr ""
+#~ "ШАБЛОН представляет строки фиксированной длины, разделённые символом "
+#~ "новой строки.\n"
+
+#~ msgid "Invocation as 'fgrep' is deprecated; use 'grep -F' instead.\n"
+#~ msgstr ""
+#~ "Запуск под именем «fgrep» устарел; вместо этого используйте «grep -F».\n"
+
+#~ msgid "%s can only use the %s pattern syntax"
+#~ msgstr "В %s можно использовать только шаблонный синтаксис %s"
+
+#~ msgid "the --mmap option has been a no-op since 2010"
+#~ msgstr ""
+#~ "начиная с 2010 года при указании параметра --mmap ничего не выполняется"
+
+#~ msgid "unfinished repeat count"
+#~ msgstr "незавершённое количество повторений"
+
+#~ msgid "malformed repeat count"
+#~ msgstr "некорректно указано количество повторений"
+
+#~ msgid "writing output"
+#~ msgstr "запись выходных данных"
+
+#~ msgid ""
+#~ "in GREP_COLORS=\"%s\", the \"%s\" capacity needs a value (\"=...\"); "
+#~ "skipped"
+#~ msgstr ""
+#~ "в GREP_COLORS=\"%s\" для свойства «%s» требуется указать значение («=…»); "
+#~ "пропускается"
+
+#~ msgid ""
+#~ "in GREP_COLORS=\"%s\", the \"%s\" capacity is boolean and cannot take a "
+#~ "value (\"=%s\"); skipped"
+#~ msgstr ""
+#~ "в GREP_COLORS=\"%s\" свойство «%s» является логическим и не требует "
+#~ "значения («=%s»); пропускается"
+
+#~ msgid "in GREP_COLORS=\"%s\", the \"%s\" capacity %s"
+#~ msgstr "в GREP_COLORS=\"%s\" значение «%s» присвоено свойству %s"
+
+#~ msgid ""
+#~ "stopped processing of ill-formed GREP_COLORS=\"%s\" at remaining "
+#~ "substring \"%s\""
+#~ msgstr ""
+#~ "прекращение обработки неправильной GREP_COLORS=\"%s\", начиная с "
+#~ "оставшейся подстроки «%s»"
+
+#~ msgid "unknown directories method"
+#~ msgstr "неизвестный метод для каталогов"
diff --git a/src/grep/po/sk.gmo b/src/grep/po/sk.gmo
new file mode 100644
index 0000000..0f5814c
--- /dev/null
+++ b/src/grep/po/sk.gmo
Binary files differ
diff --git a/src/grep/po/sk.po b/src/grep/po/sk.po
new file mode 100644
index 0000000..70445ee
--- /dev/null
+++ b/src/grep/po/sk.po
@@ -0,0 +1,944 @@
+# Translation of grep to Slovak
+# Copyright (C) 1997-99, 2000, 2001, 2002 Free Software Foundation, Inc.
+# This file is distributed under the same license as the grep package.
+# Ivan Masár <helix84@centrum.sk>, 2007, 2008, 2009, 2010, 2011, 2012.
+# Ladislav Michnovič <ladislav.michnovic@gmail.com>, 2020, 2021.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: grep 3.6.27\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2021-08-09 17:38+0200\n"
+"Last-Translator: Ladislav Michnovič <ladislav.michnovic@gmail.com>\n"
+"Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
+"Language: sk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"X-Generator: Poedit 2.4.1\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "neplatný argument %s pre %s"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "nejednoznačný argument %s pre %s"
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr "Platné argumentu sú:"
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr "chyba programu"
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr "pretečenie zásobníka"
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr "chyba zápisu"
+
+#: lib/dfa.c:896
+msgid "unbalanced ["
+msgstr "[ bez náprotivku"
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr "neplatná trieda znakov"
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr "syntax triedy znakov je [[:space:]], nie [:space:]"
+
+#: lib/dfa.c:1210
+msgid "unfinished \\ escape"
+msgstr "nedokončená úniková klauzula \\"
+
+#: lib/dfa.c:1371
+msgid "invalid content of \\{\\}"
+msgstr "neplatný obsah \\{\\}"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr "regulárny výraz je príliš veľký"
+
+#: lib/dfa.c:1858
+msgid "unbalanced ("
+msgstr "( bez náprotivku"
+
+#: lib/dfa.c:1975
+msgid "no syntax specified"
+msgstr "neuvedená syntax"
+
+#: lib/dfa.c:1986
+msgid "unbalanced )"
+msgstr ") bez náprotivku"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "Neznáma systémová chyba"
+
+#: lib/getopt.c:278
+#, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: voľba „%s%s“ je nejednoznačná\n"
+
+#: lib/getopt.c:284
+#, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: voľba „%s%s“ je nejednoznačná; možnosti:"
+
+#: lib/getopt.c:319
+#, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: nerozpoznaná voľba „%s%s“\n"
+
+#: lib/getopt.c:345
+#, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: voľba „%s%s“ nepripúšťa argument\n"
+
+#: lib/getopt.c:360
+#, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: voľba „%s%s“ vyžaduje argument\n"
+
+#: lib/getopt.c:621
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: neplatná voľba -- %c\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: voľba vyžaduje argument -- %c\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "pamäť bola vyčerpaná"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr "nepodarilo sa zaznamenať aktuálny adresár"
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "zlyhalo navrátenie do pôvodného aktuálneho adresára"
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr "zlyhalo nastaviť deskriptor súboru do textového/binárneho módu"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "„"
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "“"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr "Úspešne vykonané"
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr "Nič nezodpovedá"
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr "Neplatný regulárny výraz"
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr "Neplatný radiaci znak"
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr "Neplatný názov triedy znakov"
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr "Spätná lomka na konci"
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr "Neplatný spätný odkaz"
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr "[, [^, [:, [., alebo [= bez náprotivku"
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr "( alebo \\( bez náprotivku"
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr "\\{ bez náprotivku"
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr "Neplatný obsah \\{\\}"
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr "Neplatný koniec rozsahu"
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "Pamäť bola vyčerpaná"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr "Neplatný predošlý regulárny výraz"
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr "Neplatný koniec regulárneho výrazu"
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr "Regulárny výraz je príliš veľký"
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr ") alebo \\) bez náprotivku."
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr "Žiadny predošlý regulárny výraz"
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Balík vytvoril %s (%s)\n"
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Balík vytvoril %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr "(C)"
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Licencia GPLv3+: GNU GPL verzie 3 alebo neskoršej <%s>\n"
+"Toto je slobodný softvér: môžete ho slobodne meniť a šíriť.\n"
+"Nie je poskytovaná ŽIADNA ZÁRUKA do miery akú povoľuje aplikovateľné právo.\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Napísal %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Napísali %s a %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Napísali %s, %s a %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Napísali %s, %s, %s a\n"
+"%s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Napísali %s, %s, %s,\n"
+"%s a %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Napísali %s, %s, %s,\n"
+"%s, %s a %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Napísali %s, %s, %s,\n"
+"%s, %s, %s a %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Napísali %s, %s, %s,\n"
+"%s, %s, %s, %s a\n"
+"%s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Napísali %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s a %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Napísali %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s a iní.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr "Chyby oznamujte na: %s\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "Chyby programu %s oznamujte na: %s\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Domovská stránka %s: <%s>\n"
+
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr "Všeobecná pomoc pri používaní softvéru GNU: <%s>\n"
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(štandardný vstup)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "neplatný argument dĺžky kontextu"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "vstup je príliš veľký, aby sa dal spočítať"
+
+#: src/grep.c:1641
+#, c-format
+msgid "%s: binary file matches"
+msgstr "%s: zhoda v binárnom súbore"
+
+#: src/grep.c:1679
+#, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "%s: upozornenie: rekurzívna adresárová slučka"
+
+#: src/grep.c:1899
+#, c-format
+msgid "%s: input file is also the output"
+msgstr "vstupný súbor %s je tiež uvedený ako výstupný"
+
+#: src/grep.c:1961 src/grep.c:1968
+#, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "Použitie: %s [VOĽBA]... VZORY [SÚBOR]...\n"
+
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "Ďalšie informácie získate príkazom „%s --help“.\n"
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr "Hľadať VZORY v každom SÚBORE.\n"
+
+#: src/grep.c:1970
+#, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"Príklad: %s -i 'hello world' menu.h main.c\n"
+"VZORY môžu obsahovať niekoľko vzorov oddelených odriadkovaním.\n"
+"\n"
+"Výber a interpretácia vzoru:\n"
+
+#: src/grep.c:1975
+#, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp VZOR je rozšírený regular expression (ERE)\n"
+" -F, --fixed-strings VZOR je množina pevných reťazcov\n"
+" -G, --basic-regexp VZOR je základný regulárny výraz (BRE)\n"
+" -P, --perl-regexp VZOR je perlovský regulárny výraz\n"
+
+#: src/grep.c:1981
+#, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=VZOR použiť na hľadanie zhody VZOR\n"
+" -f, --file=SÚBOR získať VZOR zo SÚBORu\n"
+" -i, --ignore-case ignorovať rozdiely vo veľkosti písmen\n"
+" --no-ignore-case neignorovať rozdiely vo veľkosti písmen "
+"(predvolené)\n"
+" -w, --word-regexp vynútiť, aby VZOR zodpovedal len celým slovám\n"
+" -x, --line-regexp vynútiť, aby VZOR zodpovedal len celým riadkom\n"
+" -z, --null-data údaje končia bajtom 0, nie novým riadkom\n"
+
+#: src/grep.c:1989
+#, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"Rozličné:\n"
+" -s, --no-messages potlačiť chybové správy\n"
+" -v, --invert-match vybrať riadky, ktoré nemajú zhodu\n"
+" -V, --version vypísať informácie o verzii a skončiť\n"
+" --help zobraziť tieto informácie a skončiť\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+"\n"
+"Riadenie výstupu:\n"
+" -m, --max-count=POČ zastaviť po POČ zhodách\n"
+" -b, --byte-offset vypísať pri výstupných riadkoch ofset v bajtoch\n"
+" -n, --line-number vypísať pri výstupných riadkoch číslo riadka\n"
+" --line-buffered vypisovať (flush) výstup po každom riadku\n"
+" -H, --with-filename vypísať názov súboru pri každej zhode\n"
+" -h, --no-filename potlačiť názov súboru ako predponu vo výstupe\n"
+" --label=NÁVESTIE použiť NÁVESTIE ako predponu názvu súboru pre "
+"štand. vstup\n"
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+" -o, --only-matching zobrazovať iba neprázdne časti riadkov, ktoré "
+"zodpovedajú\n"
+" -q, --quiet, --silent potlačiť všetok bežný výstup\n"
+" --binary-files=TYP predpokladať, že typ binárnych súborov je TYP;\n"
+" TYP zvoľte „binary“, „text“ alebo „without-"
+"match“\n"
+" -a, --text ekvivalentné s --binary-files=text\n"
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+" -I ekvivalentné s --binary-files=without-match\n"
+" -d, --directories=OPERÁCIA ako pracovať s adresármi; kde OPERÁCIA je\n"
+" „read“ (čítať), „recurse“ (prechádzať) alebo\n"
+" „skip“ (preskočiť)\n"
+" -D, --devices=OPERÁCIA ako pracovať so zariadeniami, FIFO a socketmi;\n"
+" OPERÁCIA je „read“ (čítať) alebo "
+"„skip“ (preskočiť)\n"
+" -r, --recursive ekvivalentné s --directories=recurse\n"
+" -R, --dereference-recursive podobné, ale nasleduje symbolické odkazy\n"
+
+#: src/grep.c:2023
+#, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+" --include=VZOR_SÚBORU hľadať iba v súboroch zodpovedajúcich "
+"VZOR_SÚBORU\n"
+" --exclude=VZOR_SÚBORU preskočiť súbory a adresáre zodpovedajúce "
+"VZOR_SÚBORU\n"
+" --exclude-from=SÚBOR preskočiť súbory zodpovedajúce akémukoľvek "
+"vzoru súboru zo SÚBOR\n"
+" --exclude-dir=VZOR preskočiť adresáre, ktoré zodpovedajú VZORu\n"
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+" -L, --files-without-match vypísať iba názvy SÚBORov neobsahujúce zhodu\n"
+" -l, --files-with-matches vypísať iba názvy SÚBORov obsahujúce zhodu\n"
+" -c, --count vypísať iba počet riadkov obsahujúcich zhodu v "
+"SÚBORe\n"
+" -T, --initial-tab zarovnávať tabulátory (ak je to potrebné)\n"
+" -Z, --null vypísať za názvom SÚBORu bajt 0\n"
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+"\n"
+"Riadenie kontextu:\n"
+" -B, --before-context=POČ vytlačiť POČ riadkov kontextu pred\n"
+" -A, --after-context=POČ vytlačiť POČ riadkov kontextu za\n"
+" -C, --context=POČ vytlačiť POČ riadkov kontextu výstupu\n"
+
+#: src/grep.c:2043
+#, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+" -NUM rovnaké ako --context=NUM\n"
+" --group-separator=SEP vypíš oddeľovač SEP na riadok medzi zhodami s "
+"kontextom\n"
+" --no-group-separator nevypisuj oddeľovač pre zhody s kontextom\n"
+" --color[=KEDY],\n"
+" --colour[=KEDY] použiť zvýrazňovanie zodpovedajúcich reťazcov;\n"
+" KEDY zvoľte „always“, „never“ alebo „auto“\n"
+" -U, --binary neodstraňovať znak CR na konci riadka (MSDOS/Windows)\n"
+"\n"
+
+#: src/grep.c:2052
+#, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"Ak SÚBOR je -, číta sa zo štandardného vstupu. Bez SÚBORU číta sa . ak \n"
+"je rekurzia, v opačnom prípade -. Ak sú zadané menej ako dva SÚBORY "
+"predpokladá sa -h.\n"
+"Výstupný chybový kód je 0 ak bol vybraný nejaký riadok,inak je 1;\n"
+"ak sa vyskytne nejaká chyba a nebolo zadané -q, výstupný chybový kód je 2.\n"
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "boli zadané konfliktné špecifikátory"
+
+#: src/grep.c:2101
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr ""
+"Podpora Perlu nebola zakompilovaná do tejto binárky s --disable-perl-regexp"
+
+#: src/grep.c:2103
+#, c-format
+msgid "invalid matcher %s"
+msgstr "neplatný zástupný znak %s"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "neznáme metódy zariadení"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr "Upozornenie: --unix-byte-offsets (-u) sa už nepoužíva"
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "neplatný maximálny počet"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "neznámy typ binárneho súboru"
+
+#: src/grep.c:2829
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+"Napísal Mike Haertel iní; pozri\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr "chyba pri alokácii pamäte pre zásobník PCRE JIT"
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr "-P podporuje iba unibyte a UTF-8 locales"
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr "voľba -P podporuje iba jediný vzor"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr "vnutorná chyba (nemalo by nikdy nastať)"
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr "prekročený limit dĺžky riadka PCRE"
+
+#: src/pcresearch.c:306
+#, c-format
+msgid "%s: memory exhausted"
+msgstr "%s: pamäť bola vyčerpaná"
+
+#: src/pcresearch.c:310
+#, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr "%s: vyčerpaný zásobník PCRE JIT"
+
+#: src/pcresearch.c:315
+#, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr "%s: prekročený limit backtrackingu PCRE"
+
+#: src/pcresearch.c:319
+#, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr "%s: prekročený limit rekurzie PCRE"
+
+#: src/pcresearch.c:327
+#, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr "%s: vnútorná chyba PCRE: %d"
+
+#~ msgid "%s: option '--%s' doesn't allow an argument\n"
+#~ msgstr "%s: voľba „--%s“ nepripúšťa argument\n"
+
+#~ msgid "%s: unrecognized option '--%s'\n"
+#~ msgstr "%s: nerozpoznaná voľba „--%s“\n"
+
+#~ msgid "%s: option '-W %s' doesn't allow an argument\n"
+#~ msgstr "%s: voľba „-W %s“ nepripúšťa argument\n"
+
+#~ msgid "%s: option '-W %s' requires an argument\n"
+#~ msgstr "%s: voľba „-W %s“ vyžaduje argument\n"
+
+#~ msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
+#~ msgstr "Domovská stránka %s: <http://www.gnu.org/software/%s/>\n"
+
+#~ msgid "invalid %s%s argument '%s'"
+#~ msgstr "neplatný argument %s%s „%s“"
+
+#~ msgid "invalid suffix in %s%s argument '%s'"
+#~ msgstr "neplatná prípona v argumente %s%s „%s“"
+
+#~ msgid "%s%s argument '%s' too large"
+#~ msgstr "argument %s%s „%s“ je príliš veľký"
+
+#~ msgid "PATTERN is an extended regular expression (ERE).\n"
+#~ msgstr "VZORKA je rozšírený regulárny výraz (ERE).\n"
+
+#~ msgid "Invocation as 'egrep' is deprecated; use 'grep -E' instead.\n"
+#~ msgstr ""
+#~ "Vyvolanie príkazu ako „egrep“ sa neodporúča; použite namiesto toho „grep -"
+#~ "E“.\n"
+
+#~ msgid "PATTERN is a set of newline-separated fixed strings.\n"
+#~ msgstr ""
+#~ "VZORKA je množina pevných reťazcov oddelených znakom nového riadka.\n"
+
+#~ msgid "Invocation as 'fgrep' is deprecated; use 'grep -F' instead.\n"
+#~ msgstr ""
+#~ "Vyvolanie príkazu ako „fgrep“ sa neodporúča; použite namiesto toho „grep -"
+#~ "F“.\n"
+
+#~ msgid "PATTERN is, by default, a basic regular expression (BRE).\n"
+#~ msgstr "VZORKA je štandardne základný regulárny výraz (BRE).\n"
+
+#~ msgid ""
+#~ "'egrep' means 'grep -E'. 'fgrep' means 'grep -F'.\n"
+#~ "Direct invocation as either 'egrep' or 'fgrep' is deprecated.\n"
+#~ msgstr ""
+#~ "„egrep“ znamená „grep -E“. „fgrep“ znamená „grep -F“.\n"
+#~ "Priame vyvolanie príkazu ako „egrep“ či „fgrep“ sa neodporúča.\n"
+
+#~ msgid "Mike Haertel"
+#~ msgstr "Mike Haertel"
+
+#~ msgid "lseek failed"
+#~ msgstr "nepodarilo sa vykonať lseek()"
+
+#~ msgid "warning: %s: %s"
+#~ msgstr "upozornenie: %s: %s"
+
+#~ msgid "GNU Grep home page: <%s>\n"
+#~ msgstr "Domovská stránka GNU Grep: <%s>\n"
+
+#~ msgid "%s can only use the %s pattern syntax"
+#~ msgstr "%s môže používať iba syntax vzorky %s"
+
+#~ msgid "the --mmap option has been a no-op since 2010"
+#~ msgstr "voľba --mmap nič nerobí od roku 2010"
+
+#~ msgid "unfinished repeat count"
+#~ msgstr "Nedokončený počet opakovaní"
+
+#~ msgid "malformed repeat count"
+#~ msgstr "Zle formulovaný počet opakovaní"
+
+#~ msgid "writing output"
+#~ msgstr "zapisuje sa výstup"
+
+#~ msgid ""
+#~ "in GREP_COLORS=\"%s\", the \"%s\" capacity needs a value (\"=...\"); "
+#~ "skipped"
+#~ msgstr ""
+#~ "V GREP_COLORS=\"%s\", potrebuje kapacita \"%s\" hodnotu (\"=...\"); "
+#~ "preskočené"
+
+#~ msgid ""
+#~ "in GREP_COLORS=\"%s\", the \"%s\" capacity is boolean and cannot take a "
+#~ "value (\"=%s\"); skipped"
+#~ msgstr ""
+#~ "V GREP_COLORS=\"%s\", je kapacita \"%s\" booleovského typu a nemôže "
+#~ "nadobúdať hodnotu (\"=%s\"); preskočené"
+
+#~ msgid "in GREP_COLORS=\"%s\", the \"%s\" capacity %s"
+#~ msgstr "V GREP_COLORS=\"%s\", kapacita \"%s\" %s."
+
+#~ msgid ""
+#~ "stopped processing of ill-formed GREP_COLORS=\"%s\" at remaining "
+#~ "substring \"%s\""
+#~ msgstr ""
+#~ "zastavené spracovanie zle utvoreného GREP_COLORS=\"%s\" na zvyšnom "
+#~ "podreťazci \"%s\"."
+
+#~ msgid "unknown directories method"
+#~ msgstr "neznáme metódy adresárov"
+
+#~ msgid ""
+#~ "\n"
+#~ "Output control:\n"
+#~ " -m, --max-count=NUM stop after NUM matches\n"
+#~ " -b, --byte-offset print the byte offset with output lines\n"
+#~ " -n, --line-number print line number with output lines\n"
+#~ " --line-buffered flush output on every line\n"
+#~ " -H, --with-filename print the filename for each match\n"
+#~ " -h, --no-filename suppress the prefixing filename on output\n"
+#~ " --label=LABEL print LABEL as filename for standard input\n"
+#~ " -o, --only-matching show only the part of a line matching "
+#~ "PATTERN\n"
+#~ " -q, --quiet, --silent suppress all normal output\n"
+#~ " --binary-files=TYPE assume that binary files are TYPE;\n"
+#~ " TYPE is `binary', `text', or `without-match'\n"
+#~ " -a, --text equivalent to --binary-files=text\n"
+#~ " -I equivalent to --binary-files=without-match\n"
+#~ " -d, --directories=ACTION how to handle directories;\n"
+#~ " ACTION is `read', `recurse', or `skip'\n"
+#~ " -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+#~ " ACTION is `read' or `skip'\n"
+#~ " -R, -r, --recursive equivalent to --directories=recurse\n"
+#~ " --include=FILE_PATTERN search only files that match FILE_PATTERN\n"
+#~ " --exclude=FILE_PATTERN skip files and directories matching "
+#~ "FILE_PATTERN\n"
+#~ " --exclude-from=FILE skip files matching any file pattern from "
+#~ "FILE\n"
+#~ " --exclude-dir=PATTERN directories that match PATTERN will be "
+#~ "skipped.\n"
+#~ " -L, --files-without-match print only names of FILEs containing no "
+#~ "match\n"
+#~ " -l, --files-with-matches print only names of FILEs containing matches\n"
+#~ " -c, --count print only a count of matching lines per "
+#~ "FILE\n"
+#~ " -T, --initial-tab make tabs line up (if needed)\n"
+#~ " -Z, --null print 0 byte after FILE name\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Riadenie výstupu:\n"
+#~ " -m, --max-count=POČET zastaviť po POČET zhodách\n"
+#~ " -b, --byte-offset vypísať ofset v bajtoch pri riadkoch výstupu\n"
+#~ " -n, --line-number vypísať číslo riadka pri riadkoch výstupu\n"
+#~ " --line-buffered flush výstupu po každom riadku\n"
+#~ " -H, --with-filename vypísať názov súboru pri každej zhode\n"
+#~ " -h, --no-filename potlačiť prefix názvu súboru na výstupe\n"
+#~ " --label=ŠTÍTOK vypísať ŠTÍTOK ako názov súboru pre štandard. "
+#~ "vstup\n"
+#~ " -o, --only-matching zobraziť iba časť riadka zodpovedajúcu "
+#~ "VZORKE\n"
+#~ " -q, --quiet, --silent potlačiť všetok normálny výstup\n"
+#~ " --binary-files=TYP predpokladať, že binárne súbory sú zadaného "
+#~ "TYPu;\n"
+#~ " TYP je „binary“, „text“ alebo „without-"
+#~ "match“\n"
+#~ " -a, --text ekvivalentné s --binary-files=text\n"
+#~ " -I ekvivalentné s --binary-files=without-match\n"
+#~ " -d, --directories=AKCIA ako zaobchádzať s adresármi;\n"
+#~ " AKCIA je „read“, „recurse“ alebo „skip“\n"
+#~ " -D, --devices=AKCIA ako zaobchádzať so zariadeniami, FIFO a "
+#~ "socketmi;\n"
+#~ " AKCIA je „read“ alebo „skip“\n"
+#~ " -R, -r, --recursive ekvivalentné s --directories=recurse\n"
+#~ " --include=SÚBOR_VZORKA hľadať iba v súboroch zodpoved. "
+#~ "SÚBOR_VZORKA\n"
+#~ " --exclude=SÚBOR_VZORKA preskočiť súbory a adresáre zodp. "
+#~ "SÚBOR_VZORKA\n"
+#~ " --exclude-from=SÚBOR preskočiť súbory zodp. akejkoľvek vzorke zo "
+#~ "SÚBORU\n"
+#~ " --exclude-dir=VZORKA preskočiť adresáre zodpovedajúce VZORKE.\n"
+#~ " -L, --files-without-match vypísať iba názvy SÚBOROV, ktoré neobsahujú "
+#~ "zhodu\n"
+#~ " -l, --files-with-matches vypísať iba názvy SÚBOROV, ktoré obsahujú "
+#~ "zhodu\n"
+#~ " -c, --count vypísať iba počet zodpovedajúcich riadkov na "
+#~ "SÚBOR\n"
+#~ " -T, --initial-tab zarovnať tabulátory (ak je potrebné)\n"
+#~ " -Z, --null vytlačiť bajt 0 po SÚBORE\n"
+
+#~ msgid "The -P and -z options cannot be combined"
+#~ msgstr "Voľby -P a -z nie je možné kombinovať"
+
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: neprípustná voľba -- %c\n"
+
+#~ msgid "Copyright (C) 2008 Free Software Foundation, Inc.\n"
+#~ msgstr "Copyright (C) 2008 Free Software Foundation, Inc.\n"
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "Tento program je slobodný softvér; podmienky šírenia si pozrite v "
+#~ "zdrojových\n"
+#~ "súboroch. Nie je poskytovaná ŽIADNA záruka; ani záruka PREDAJNOSTI či\n"
+#~ "VHODNOSTI NA DANÝ ÚČEL.\n"
diff --git a/src/grep/po/sl.gmo b/src/grep/po/sl.gmo
new file mode 100644
index 0000000..91323ce
--- /dev/null
+++ b/src/grep/po/sl.gmo
Binary files differ
diff --git a/src/grep/po/sl.po b/src/grep/po/sl.po
new file mode 100644
index 0000000..abd9423
--- /dev/null
+++ b/src/grep/po/sl.po
@@ -0,0 +1,1014 @@
+# -*- mode: po; coding: utf-8; -*- Slovenian message catalogue for grep
+# Copyright (C) 1996, 1999, 2000, 2007, 2008, 2009, 2011, 2012, 2013, 2014, 2015, 2017 Free Software Foundation, Inc.
+# This file is distributed under the same license as the grep package.
+# Primož Peterlin <primozz.peterlin@gmail.com>, 1996, 1999, 2000, 2007, 2008, 2009, 2011, 2012, 2013, 2014, 2015, 2018.
+#
+# $Id: grep-3.0.23-b00.sl.po,v 1.2 2018/07/28 21:40:33 peterlin Exp $
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU grep 3.0.23-b00\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2018-07-28 23:40+0200\n"
+"Last-Translator: Primož Peterlin <primozz.peterlin@gmail.com>\n"
+"Language-Team: Slovenian <translation-team-sl@lists.sourceforge.net>\n"
+"Language: sl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8-bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
+"%100==4 ? 3 : 0);\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "neveljavni argument %s za %s"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "dvoumni argument %s za %s"
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr "Veljavni argumenti so:"
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr ""
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr ""
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr "napaka pri pisanju"
+
+#: lib/dfa.c:896
+msgid "unbalanced ["
+msgstr "uklepaj [ brez zaklepaja"
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr "neveljavno ime razreda znakov"
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr "skladnja imena razreda znakov je [[:space:]], ne [:space:]"
+
+#: lib/dfa.c:1210
+msgid "unfinished \\ escape"
+msgstr "nedokončano ubežno zaporedje \\"
+
+#: lib/dfa.c:1371
+msgid "invalid content of \\{\\}"
+msgstr "neveljavna vsebina \\{\\}"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr "regularni izraz je preobsežen"
+
+#: lib/dfa.c:1858
+msgid "unbalanced ("
+msgstr "uklepaj ( brez zaklepaja"
+
+#: lib/dfa.c:1975
+msgid "no syntax specified"
+msgstr "skladnja ni podana"
+
+#: lib/dfa.c:1986
+msgid "unbalanced )"
+msgstr "zaklepaj ) brez uklepaja"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "Neznana sistemska napaka"
+
+#: lib/getopt.c:278
+#, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: izbira »%s%s« ni enopomenska\n"
+
+#: lib/getopt.c:284
+#, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: izbira »%s%s« ni enopomenska; možnosti:"
+
+#: lib/getopt.c:319
+#, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: neprepoznana izbira »%s%s«\n"
+
+#: lib/getopt.c:345
+#, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: izbira »%s%s« ne dovoljuje argumenta\n"
+
+#: lib/getopt.c:360
+#, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: izbira »%s%s« zahteva argument\n"
+
+#: lib/getopt.c:621
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: neveljavna izbira -- »%c«\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: izbira zahteva argument -- »%c«\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "pomnilnik porabljen"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr "trenutnega delovnega imenika ni mogoče zabeležiti"
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "vrnitev v začetni delovni imenik ni mogoča"
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr "nastavitev deskriptorja datoteke za tekstovni/binarni način ni uspela"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "»"
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "«"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr "Uspešno"
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr "Brez zadetkov"
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr "Neveljaven regularen izraz"
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr "Neveljaven razvrščevalni znak"
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr "Neveljavno ime razreda znakov"
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr "Zaključna obratna poševnica"
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr "Neveljaven povratni sklic"
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr "Uklepaj [, [^, [:, [. ali [= brez para"
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr "Uklepaj ( ali \\( brez para"
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr "Uklepaj \\{ brez para"
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr "Neveljavna vsebina \\{\\}"
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr "Neveljaven konec razpona"
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "Pomnilnik porabljen"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr "Neveljaven predhodni regularni izraz"
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr "Predčasen zaključek regularnega izraza"
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr "Regularni izraz je preobsežen"
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr "Zaklepaj ) ali \\\\) brez para"
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr "Manjkajoč prejšnji regularni izraz"
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Priprava paketa: %s (%s)\n"
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Priprava paketa: %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr "©"
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, fuzzy, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"\n"
+"GPLv3+: GNU GPL, 3. izdaja ali poznejša <http://www.gnu.org/licenses/gpl."
+"html>\n"
+"To je prosto programje; lahko ga redistribuirate in/ali spreminjate.\n"
+"Za izdelek ni NOBENEGA JAMSTVA, do z zakonom dovoljene meje.\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Avtor(ica): %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Avtorja: %s in %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Avtorji: %s, %s in %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Avtorji: %s, %s, %s\n"
+"in %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Avtorji: %s, %s, %s,\n"
+"%s in %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Avtorji: %s, %s, %s,\n"
+"%s, %s in %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Avtorji: %s, %s, %s,\n"
+"%s, %s, %s in %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Avtorji: %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"in %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Avtorji: %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s in %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Avtorji: %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s in drugi.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, fuzzy, c-format
+msgid "Report bugs to: %s\n"
+msgstr ""
+"\n"
+"Poročila o napakah: %s\n"
+"Napake v prevodu sporočite na <translation-team-sl@lists.sourceforge.net>.\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr ""
+"Napake v programu %s sporočite na %s.\n"
+"Napake v prevodu sporočite na <translation-team-sl@lists.sourceforge.net>.\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Spletna stran %s: <%s>\n"
+
+#: lib/version-etc.c:260
+#, fuzzy, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr "Splošna pomoč za rabo programja GNU: <http://www.gnu.org/gethelp/>\n"
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(standardni vhod)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "velikost konteksta ni veljavna"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "vhod je prevelik, da bi ga mogli prešteti"
+
+#: src/grep.c:1641
+#, fuzzy, c-format
+msgid "%s: binary file matches"
+msgstr "Binarna datoteka %s ustreza\n"
+
+#: src/grep.c:1679
+#, fuzzy, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "rekurzivna zanka imenikov"
+
+#: src/grep.c:1899
+#, fuzzy, c-format
+msgid "%s: input file is also the output"
+msgstr "vhodna datoteka %s je tudi izhodna"
+
+#: src/grep.c:1961 src/grep.c:1968
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "Uporaba: %s [IZBIRA]... VZOREC [DATOTEKA]...\n"
+
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "Poskusite »%s --help« za dodatna pojasnila.\n"
+
+#: src/grep.c:1969
+#, fuzzy, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr "V vsaki DATOTEKI se išče VZOREC.\n"
+
+#: src/grep.c:1970
+#, fuzzy, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"Zgled: %s -i 'hello world' menu.h main.c\n"
+"\n"
+"Izbira in tolmačenje vzorcev:\n"
+
+#: src/grep.c:1975
+#, fuzzy, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp VZOREC je razširjeni regularni izraz\n"
+" -F, --fixed-strings VZOREC je množica nizov, vsak v svoji vrstici\n"
+" -G, --basic-regexp VZOREC je osnovni regularni izraz (privzeto)\n"
+" -P, --perl-regexp VZOREC je regularni izraz z razširitvami perla\n"
+
+#: src/grep.c:1981
+#, fuzzy, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=VZOREC uporabi VZOREC kot regularni izraz\n"
+" -f, --file=DATOTEKA preberi VZOREC iz podane DATOTEKE\n"
+" -i, --ignore-case velike in male črke obravnavaj enako\n"
+" -w, --word-regexp iskanje uspešno le, če je VZOREC cela beseda\n"
+" -x, --line-regexp iskanje uspešno le, če je VZOREC cela vrstica\n"
+" -z, --null-data vrstica podatkov je končana z znakom NUL, ne z\n"
+" znakom za skok v novo vrstico\n"
+
+#: src/grep.c:1989
+#, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"Razno:\n"
+" -s, --no-messages brez sporočil o napakah\n"
+" -v, --invert-match izberi vrstice, ki se ne ujemajo\n"
+" -V, --version verzija programa\n"
+" --help ta pomoč\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+"\n"
+"Nadzor izhoda:\n"
+" -m, --max-count=ŠTEVILO odnehaj po danem ŠTEVILU izbranih vrstic\n"
+" -b, --byte-offset z izpisom odmika (v zlogih)\n"
+" -n, --line-number z izpisom zaporedne številke vrstice\n"
+" --line-buffered izhodni medpomnilnik izpraznimo vsako vrstico\n"
+" -H, --with-filename z izpisom imena datoteke\n"
+" -h, --no-filename brez izpisa imena datoteke\n"
+" --label=OZNAKA z navedeno OZNAKO, kadar beremo s standardnega "
+"vhoda\n"
+
+#: src/grep.c:2007
+#, fuzzy, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+" -o, --only-matching izpis samo dela vrstice z VZORCEM\n"
+" -q, --quiet, --silent brez vsega običajnega izpisa\n"
+" --binary-type=TIP privzemi izbrani TIP binarne datoteke\n"
+" TIP je lahko »binary«, »text« ali »without-"
+"match«\n"
+" -a, --text isto kot --binary-type=text\n"
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+" -I isto kot --binary-type=without-match\n"
+" -d, --directories=DEJANJE kako obravnavamo imenike\n"
+" DEJANJE je lahko »read«, »recurse« ali »skip«\n"
+" -D, --devices=DEJANJE kako obravnavamo datoteke naprav\n"
+" DEJANJE je lahko »read« ali »skip«\n"
+" -r, --recursive podobno kot --directories=recurse\n"
+" -R, --dereference-recursive podobno, vendar s sledenjem vseh simbolnih \n"
+" povezav\n"
+
+#: src/grep.c:2023
+#, fuzzy, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+" --include=VZOREC preišči le datoteke, ki ustrezajo VZORCU\n"
+" --exclude=VZOREC izpusti datoteke, ki ustrezajo VZORCU\n"
+" --exclude-from=DATOTEKA izpusti datoteke, ki ustrezajo vzorcu v "
+"DATOTEKI\n"
+" --exclude-dir=VZOREC izpusti imenike, ki ustrezajo VZORCU\n"
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+" -L, --files-without-match le imena DATOTEK brez izbranih vrstic\n"
+" -l, --files-with-matches le imena DATOTEK z izbranimi vrsticami\n"
+" -c, --count le skupno število izbranih vrstic v DATOTEKI\n"
+" -T, --initial-tab dodaj začetni tabulator (če je potrebno)\n"
+" -Z, --null izpiši znak NUL za imenom DATOTEKE\n"
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+"\n"
+"Nadzor nad kontekstom:\n"
+" -B, --before-context=ŠT ŠT vrstic konteksta pred vrstico z VZORCEM\n"
+" -A, --after-context=ŠT ŠT vrstic konteksta za vrstico z VZORCEM\n"
+" -C, --context=ŠT ŠT vrstic konteksta pred in za vrstico z "
+"VZORCEM\n"
+
+#: src/grep.c:2043
+#, fuzzy, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+" -ŠT isto kot --context=ŠT\n"
+" --color[=KDAJ],\n"
+" --colour[=KDAJ] ujemajoče nize barvno označimo; KDAJ je lahko\n"
+" »always«, »never« ali »auto«\n"
+" -U, --binary ne porežemo znakov CR na koncu vrstic \n"
+" (MS-DOS/Windows)\n"
+"\n"
+
+#: src/grep.c:2052
+#, fuzzy, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"Če je podana DATOTEKA enaka »-«, se bere s standardnega vhoda. Če\n"
+"DATOTEKA ni podana, se bere ».«, kadar je podana izbira »--recursive«,\n"
+"sicer »-«. Če sta podani manj kot dve DATOTEKI, se privzame izbira »-h«.\n"
+"Izhodna koda je 0 ob vsaj eni izbrani vrstici, sicer pa 1; če je\n"
+"prišlo do napake in ni bila podana izbira -q, program vrne kodo 2.\n"
+
+# Sporočilo se pojavi pri nedokumentirani izbiri -X
+# grep.c:622 ->
+# opt = getopt(argc, argv, "0123456789A:B:CEFGVX:bce:f:hiLlnqsvwxy"
+# grep --help ->
+# usage: grep [-[[AB] ]<num>] [-[CEFGVchilnqsvwx]] [-[ef]] <expr> [<files...>]
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "podana navodila si nasprotujejo"
+
+#: src/grep.c:2101
+#, fuzzy
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr ""
+"podpora za izbiro -P ni bila vključena v ta prevedeni program (--disable-"
+"perl-regexp)"
+
+#: src/grep.c:2103
+#, c-format
+msgid "invalid matcher %s"
+msgstr "neveljaven ujemalnik %s"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "neznana metoda datotek naprav"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr ""
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "neveljavno največje število"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "neznan tip binarne datoteke"
+
+#: src/grep.c:2829
+#, fuzzy
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr "drugi, glejte <http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>"
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr "pomnilnika za sklad PCRE JIT se ni uspelo dodeliti"
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr "-P podpira samo enobajtna kodiranja in UTF-8"
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr "izbira -P podpira le en vzorec"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr "interna napaka (to tega ne bi smelo priti)"
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr "prekoračena meja PCRE za dolžino vrstice"
+
+#: src/pcresearch.c:306
+#, fuzzy, c-format
+msgid "%s: memory exhausted"
+msgstr "pomnilnik porabljen"
+
+#: src/pcresearch.c:310
+#, fuzzy, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr "prekoračitev sklada PCRE JIT"
+
+#: src/pcresearch.c:315
+#, fuzzy, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr "prekoračena meja PCRE za iskanje s povratnim sledenjem"
+
+#: src/pcresearch.c:319
+#, fuzzy, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr "prekoračena meja PCRE za iskanje s povratnim sledenjem"
+
+#: src/pcresearch.c:327
+#, fuzzy, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr "interna napaka PCRE: %d"
+
+#, c-format
+#~ msgid "warning: GREP_OPTIONS is deprecated; please use an alias or script"
+#~ msgstr ""
+#~ "opozorilo: uporabo GREP_OPTIONS odsvetujemo; uporabite alias ali skript"
+
+#, c-format
+#~ msgid "warning: %s: %s"
+#~ msgstr "opozorilo: %s: %s"
+
+#~ msgid "invalid %s%s argument '%s'"
+#~ msgstr "neveljavni %s%s argument '%s'"
+
+#~ msgid "invalid suffix in %s%s argument '%s'"
+#~ msgstr "neveljavna pripona pri %s%s argumentu '%s'"
+
+#~ msgid "%s%s argument '%s' too large"
+#~ msgstr "%s%s: argument '%s' je prevelik"
+
+#, fuzzy
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "Spletna stran %s: <http://www.gnu.org/software/%s/>\n"
+
+#~ msgid "internal error"
+#~ msgstr "interna napaka"
+
+#~ msgid "Mike Haertel"
+#~ msgstr "Mike Haertel"
+
+#~ msgid "%s: option '--%s' doesn't allow an argument\n"
+#~ msgstr "%s: izbira »--%s« ne dovoljuje argumenta\n"
+
+#~ msgid "%s: unrecognized option '--%s'\n"
+#~ msgstr "%s: neprepoznana izbira »--%s«\n"
+
+#~ msgid "%s: option '-W %s' is ambiguous\n"
+#~ msgstr "%s: izbira »-W %s« ni enopomenska\n"
+
+#~ msgid "%s: option '-W %s' doesn't allow an argument\n"
+#~ msgstr "%s: izbira »-W %s« ne dovoljuje argumenta\n"
+
+#~ msgid "%s: option '-W %s' requires an argument\n"
+#~ msgstr "%s: izbira »-W %s« zahteva argument\n"
+
+#~ msgid "lseek failed"
+#~ msgstr "klic lseek ni uspel"
+
+#~ msgid "PATTERN is, by default, a basic regular expression (BRE).\n"
+#~ msgstr "VZOREC je privzeto osnovni regularni izraz (ORI).\n"
+
+#~ msgid ""
+#~ "'egrep' means 'grep -E'. 'fgrep' means 'grep -F'.\n"
+#~ "Direct invocation as either 'egrep' or 'fgrep' is deprecated.\n"
+#~ msgstr ""
+#~ "Ukaz »egrep« pomeni isto kot »grep -E«, »fgrep« pa isto kot »grep -F«.\n"
+#~ "Neposredna raba ukazov »egrep« ali »fgrep« je odsvetovana.\n"
+
+#~ msgid "GNU Grep home page: <%s>\n"
+#~ msgstr "Spletna stran GNU Grep: <%s>\n"
+
+#~ msgid "invalid UTF-8 byte sequence in input"
+#~ msgstr "neveljavno zaporedje bajtov UTF-8 na vhodu"
+
+#~ msgid "PATTERN is an extended regular expression (ERE).\n"
+#~ msgstr "VZOREC je razširjeni regularni izraz (RRI).\n"
+
+#~ msgid "Invocation as 'egrep' is deprecated; use 'grep -E' instead.\n"
+#~ msgstr ""
+#~ "Raba ukaza »egrep« je odsvetovana; namesto njega uporabite »grep -E«.\n"
+
+#~ msgid "PATTERN is a set of newline-separated fixed strings.\n"
+#~ msgstr "VZOREC je množica nespremenljivih nizov, po eden v vrstici.\n"
+
+#~ msgid "Invocation as 'fgrep' is deprecated; use 'grep -F' instead.\n"
+#~ msgstr ""
+#~ "Raba ukaza »fgrep« je odsvetovana; namesto njega uporabite »grep -F«.\n"
+
+#~ msgid "%s can only use the %s pattern syntax"
+#~ msgstr "%s lahko uporablja le skladnjo vzorcev %s"
+
+#~ msgid "the --mmap option has been a no-op since 2010"
+#~ msgstr "izbira --mmap je neaktivna od leta 2010 "
+
+#~ msgid "unfinished repeat count"
+#~ msgstr "nedokončano število ponovitev"
+
+#~ msgid "malformed repeat count"
+#~ msgstr "slabo določeno število ponovitev"
+
+#~ msgid "writing output"
+#~ msgstr "pisanje rezultatov"
+
+#~ msgid ""
+#~ "in GREP_COLORS=\"%s\", the \"%s\" capacity needs a value (\"=...\"); "
+#~ "skipped"
+#~ msgstr ""
+#~ "v GREP_COLORS=\"%s\" mora \"%s\" vsebovati vrednost (\"=...\"); "
+#~ "ignorirano."
+
+#~ msgid ""
+#~ "in GREP_COLORS=\"%s\", the \"%s\" capacity is boolean and cannot take a "
+#~ "value (\"=%s\"); skipped"
+#~ msgstr ""
+#~ "v GREP_COLORS=\"%s\" je \"%s\" Boolova spremenljivka in ji ne moremo "
+#~ "določiti vrednosti (\"=%s\"); ignorirano"
+
+#~ msgid "in GREP_COLORS=\"%s\", the \"%s\" capacity %s"
+#~ msgstr "v GREP_COLORS=\"%s\", \"%s\" vsebuje %s."
+
+#~ msgid ""
+#~ "stopped processing of ill-formed GREP_COLORS=\"%s\" at remaining "
+#~ "substring \"%s\""
+#~ msgstr ""
+#~ "prekinjena obdelava slabo formuliranega določila GREP_COLORS=\"%s\" pri "
+#~ "preostalem podnizu \"%s\"."
+
+#~ msgid ""
+#~ "\n"
+#~ "Output control:\n"
+#~ " -m, --max-count=NUM stop after NUM matches\n"
+#~ " -b, --byte-offset print the byte offset with output lines\n"
+#~ " -n, --line-number print line number with output lines\n"
+#~ " --line-buffered flush output on every line\n"
+#~ " -H, --with-filename print the filename for each match\n"
+#~ " -h, --no-filename suppress the prefixing filename on output\n"
+#~ " --label=LABEL print LABEL as filename for standard input\n"
+#~ " -o, --only-matching show only the part of a line matching "
+#~ "PATTERN\n"
+#~ " -q, --quiet, --silent suppress all normal output\n"
+#~ " --binary-files=TYPE assume that binary files are TYPE;\n"
+#~ " TYPE is `binary', `text', or `without-match'\n"
+#~ " -a, --text equivalent to --binary-files=text\n"
+#~ " -I equivalent to --binary-files=without-match\n"
+#~ " -d, --directories=ACTION how to handle directories;\n"
+#~ " ACTION is `read', `recurse', or `skip'\n"
+#~ " -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+#~ " ACTION is `read' or `skip'\n"
+#~ " -R, -r, --recursive equivalent to --directories=recurse\n"
+#~ " --include=FILE_PATTERN search only files that match FILE_PATTERN\n"
+#~ " --exclude=FILE_PATTERN skip files and directories matching "
+#~ "FILE_PATTERN\n"
+#~ " --exclude-from=FILE skip files matching any file pattern from "
+#~ "FILE\n"
+#~ " --exclude-dir=PATTERN directories that match PATTERN will be "
+#~ "skipped.\n"
+#~ " -L, --files-without-match print only names of FILEs containing no "
+#~ "match\n"
+#~ " -l, --files-with-matches print only names of FILEs containing matches\n"
+#~ " -c, --count print only a count of matching lines per "
+#~ "FILE\n"
+#~ " -T, --initial-tab make tabs line up (if needed)\n"
+#~ " -Z, --null print 0 byte after FILE name\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Nadzor izhoda:\n"
+#~ " -m, --max-count=ŠTEVILO odnehamo, ko je doseženo ŠTEVILO ujemanj\n"
+#~ " -b, --byte-offset z izpisom odmika (v zlogih)\n"
+#~ " -n, --line-number z izpisom zaporedne številke vrstice\n"
+#~ " --line-buffered izhodni medpomnilnik izpraznimo vsako "
+#~ "vrstico\n"
+#~ " -H, --with-filename z izpisom imena datoteke\n"
+#~ " -h, --no-filename brez izpisa imena datoteke\n"
+#~ " --label=OZNAKA z navedeno OZNAKO, kadar beremo s "
+#~ "standardnega vhoda\n"
+#~ " -o, --only-matching izpis samo dela vrstice z VZORCEM\n"
+#~ " -q, --quiet, --silent brez vsega običajnega izpisa\n"
+#~ " --binary-type=TIP privzemi izbrani TIP binarne datoteke\n"
+#~ " TIP je lahko ,binary`, ,text` ali ,without-"
+#~ "match`\n"
+#~ " -a, --text isto kot --binary-type=text\n"
+#~ " -I isto kot --binary-type=without-match\n"
+#~ " -d, --directories=DEJANJE kako obravnavamo imenike\n"
+#~ " DEJANJE je lahko ,read`, ,recurse` ali ,"
+#~ "skip`\n"
+#~ " -D, --devices=DEJANJE kako obravnavamo datoteke naprav\n"
+#~ " DEJANJE je lahko ,read` ali ,skip`\n"
+#~ " -R, -r, --recursive isto kot --directories=recurse\n"
+#~ " --include=VZOREC preiščemo le datoteke, ki ustrezajo VZORCU\n"
+#~ " --exclude=VZOREC izpustimo datoteke, ki ustrezajo VZORCU\n"
+#~ " --exclude-from=DATOTEKA izpustimo datoteke, ki ustrezajo vzorcu v "
+#~ "DATOTEKI\n"
+#~ " --exclude-dir=VZOREC izpustimo imenike, ki ustrezajo VZORCU\n"
+#~ " -L, --files-without-match le imena tistih DATOTEK, kjer VZORCA nismo "
+#~ "našli\n"
+#~ " -l, --files-with-matches le imena tistih DATOTEK, kjer smo VZOREC "
+#~ "našli\n"
+#~ " -c, --count le skupno število vrstic v DATOTEKI, v "
+#~ "katerih se\n"
+#~ " pojavi VZOREC\n"
+#~ " -T, --initial-tab dodaj začetni tabulator (če je potrebno)\n"
+#~ " -Z, --null izpiši znak NUL za imenom DATOTEKE\n"
+
+#~ msgid "unknown directories method"
+#~ msgstr "neznana metoda imenikov"
+
+#~ msgid "The -P and -z options cannot be combined"
+#~ msgstr "Izbiri -P in -z se med seboj izključujeta"
+
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: nedovoljena izbira -- %c\n"
+
+#~ msgid "Copyright (C) 2008 Free Software Foundation, Inc.\n"
+#~ msgstr "Copyright (C) 2008 Free Software Foundation, Inc.\n"
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "To je prost program; pogoji, pod katerimi ga lahko uporabljate, "
+#~ "razmnožujete\n"
+#~ "in razširjate so navedeni v izvorni kodi. Za program ni NOBENEGA "
+#~ "jamstva,\n"
+#~ "niti jamstev USTREZNOSTI ZA PRODAJO ali PRIMERNOSTI ZA UPORABO.\n"
+
+#~ msgid "out of memory"
+#~ msgstr "zmanjkalo pomnilnika"
+
+#~ msgid "Usage: %s [OPTION]... PATTERN [FILE] ...\n"
+#~ msgstr "Uporaba: %s [IZBIRA]... VZOREC [DATOTEKA] ...\n"
+
+#~ msgid "%s (GNU grep) %s\n"
+#~ msgstr "%s (GNU grep) %s\n"
+
+#~ msgid "option %s"
+#~ msgstr "izbira %s"
+
+#~ msgid " with arg %s"
+#~ msgstr " z argumentom %s"
+
+#~ msgid "digits occur in two different argv-elements.\n"
+#~ msgstr "števke nastopajo pri dveh elementih ARGV.\n"
+
+#~ msgid "option %c\n"
+#~ msgstr "izbira %c\n"
+
+#~ msgid "option a\n"
+#~ msgstr "izbira a\n"
+
+#~ msgid "option b\n"
+#~ msgstr "izbira b\n"
+
+#~ msgid "option c with value `%s'\n"
+#~ msgstr "izbira c z vrednostjo ,%s`\n"
+
+#~ msgid "option d with value `%s'\n"
+#~ msgstr "izbira d z vrednostjo ,%s`\n"
+
+#~ msgid "?? getopt returned character code 0%o ??\n"
+#~ msgstr "?? funkcija getopt vrnila kodo znaka 0%o ??\n"
+
+#~ msgid "non-option ARGV-elements: "
+#~ msgstr "neizbirni elementi ARGV: "
+
+#~ msgid "memory exhausted\n"
+#~ msgstr "pomnilnik porabljen\n"
+
+#~ msgid "you may specify only one of -E, -F, or -G"
+#~ msgstr "izberete lahko samo eno od izbir: -E, -F ali -G"
+
+#~ msgid "GNU grep version 2.0"
+#~ msgstr "GNU grep verzija 2.0"
+
+#~ msgid "(standard input)\n"
+#~ msgstr "(standardni vhod)\n"
diff --git a/src/grep/po/sr.gmo b/src/grep/po/sr.gmo
new file mode 100644
index 0000000..ff696ad
--- /dev/null
+++ b/src/grep/po/sr.gmo
Binary files differ
diff --git a/src/grep/po/sr.po b/src/grep/po/sr.po
new file mode 100644
index 0000000..43326f3
--- /dev/null
+++ b/src/grep/po/sr.po
@@ -0,0 +1,825 @@
+# Serbian translation of grep
+# Copyright © 2020 Free Software Foundation, Inc.
+# This file is distributed under the same license as the grep package.
+# Danilo Segan <dsegan@gmx.net>, 2003.
+# Мирослав Николић <miroslavnikolic@rocketmail.com>, 2011—2020.
+msgid ""
+msgstr ""
+"Project-Id-Version: grep-3.5.16\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2020-11-05 13:11+0200\n"
+"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
+"Language-Team: Serbian <(nothing)>\n"
+"Language: sr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "неисправан аргумент „%s“ за „%s“"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "нејасан аргумент „%s“ за „%s“"
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr "Исправни аргументи су:"
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr "грешка програма"
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr "прекорачење спремника"
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr "грешка писања"
+
+#: lib/dfa.c:896
+msgid "unbalanced ["
+msgstr "неуравнотежена ["
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr "неисправна класа знака"
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr "синтакса класе знака је [[:размак:]], а не [:размак:]"
+
+#: lib/dfa.c:1210
+msgid "unfinished \\ escape"
+msgstr "недовршена \\ излазим"
+
+#: lib/dfa.c:1371
+msgid "invalid content of \\{\\}"
+msgstr "неисправан садржај \\{\\}"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr "регуларни израз је превелик"
+
+#: lib/dfa.c:1858
+msgid "unbalanced ("
+msgstr "неуравнотежена ("
+
+#: lib/dfa.c:1975
+msgid "no syntax specified"
+msgstr "синтакса није наведена"
+
+#: lib/dfa.c:1986
+msgid "unbalanced )"
+msgstr "неуравнотежена )"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "Непозната системска грешка"
+
+#: lib/getopt.c:278
+#, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: опција „%s%s“ је нејасна\n"
+
+#: lib/getopt.c:284
+#, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: опција „%s%s“ је нејасна; могућности:"
+
+#: lib/getopt.c:319
+#, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: непрепознатљива опција „%s%s“\n"
+
+#: lib/getopt.c:345
+#, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: опција „%s%s“ не дозвољава аргумент\n"
+
+#: lib/getopt.c:360
+#, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: опција „%s%s“ захтева аргумент\n"
+
+#: lib/getopt.c:621
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: неисправна опција —— „%c“\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: опција захтева аргумент —— „%c“\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "меморија је потрошена"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr "не могу да снимим тренутни радни директоријум"
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "не могу да се вратим у почетни радни директоријум"
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr "нисам успео да подесим текстуални/бинарни режим описника датотеке"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "„"
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "“"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr "Успешно"
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr "Нема подударања"
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr "Неисправан регуларан израз"
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr "Неисправан знак поретка"
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr "Неисправан назив класе знака"
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr "Водећа контра коса црта"
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr "Неисправна повратна референца"
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr "Не одговара [, [^, [:, [., или [="
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr "Не одговара ( или \\("
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr "Не одговара \\{"
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr "Неисправан садржај \\{\\}"
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr "Неисправан крај опсега"
+
+# исцрпљена? ;-)
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "Меморија је потрошена"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr "Неисправан регуларан израз који претходи"
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr "Прерани крај регуларног израза"
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr "Регуларни израз је превелик"
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr "Не одговара ) или \\)"
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr "Нема претходног регуларног израза"
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Запаковао је %s (%s)\n"
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Запаковао је %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr "©"
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Лиценца ОЈЛв3+: Гнуова ОЈЛ 3. издање или новије <%s>.\n"
+"Ово је слободан софтвер: слободни сте да га мењате и расподељујете.\n"
+"Не постоји НИКАКВА ГАРАНЦИЈА, у оквирима дозвољеним законом.\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Написао је %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Написали су %s и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Написали су %s, %s, и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Написали су %s, %s, %s,\n"
+"и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Написали су %s, %s, %s,\n"
+"%s, и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Написали су %s, %s, %s,\n"
+"%s, %s, и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Написали су %s, %s, %s,\n"
+"%s, %s, %s, и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Написали су %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Написали су %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Написали су %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, и други.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr "Грешке пријавите на: %s\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "Грешке %s пријавите на: %s\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s матична страница: <%s>\n"
+
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr "Општа помоћ за Гнуов софтвер: <%s>\n"
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(стандардни улаз)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "неисправан аргумент дужине контекста"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "улаз је превелик за пребројавање"
+
+#: src/grep.c:1641
+#, c-format
+msgid "%s: binary file matches"
+msgstr "%s: бинарна датотека одговара"
+
+#: src/grep.c:1679
+#, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "%s: дубинско вртење кроз директоријуме"
+
+#: src/grep.c:1899
+#, c-format
+msgid "%s: input file is also the output"
+msgstr "%s: улазна датотека је такође излаз"
+
+#: src/grep.c:1961 src/grep.c:1968
+#, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "Употреба: %s [ОПЦИЈА]... ШАБЛОНИ [ДАТОТЕКА]...\n"
+
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "Пробајте „%s --help“ за више података.\n"
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr "Тражи наведене ШАБЛОНЕ у свакој ДАТОТЕЦИ.\n"
+
+#: src/grep.c:1970
+#, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"Пример: %s -i „hello world“ menu.h main.c\n"
+"ШАБЛОНИ може да садржи више шаблона раздвојених новим редовима.\n"
+"\n"
+"Одељак шаблона и тумачења:\n"
+
+#: src/grep.c:1975
+#, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp ШАБЛОНИ су проширени регуларни изрази\n"
+" -F, --fixed-strings ШАБЛОНИ су ниск\n"
+" -G, --basic-regexp ШАБЛОНИ су основни регуларни изрази\n"
+" -P, --perl-regexp ШАБЛОНИ су регуларни изрази Перла\n"
+
+#: src/grep.c:1981
+#, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=ШАБЛОНИ користи ШАБЛОНЕ за подударање\n"
+" -f, --file=ДАТОТЕКА преузима ШАБЛОНЕ из ДАТОТЕКЕ\n"
+" -i, --ignore-case занемарује разлике величине слова у "
+"шаблонима и подацима\n"
+" --no-ignore-case не занемарује разлике величине слова "
+"(основно)\n"
+" -w, --word-regexp подудара једино целе речи\n"
+" -x, --line-regexp подудара једино целе редове\n"
+" -z, --null-data ред података се завршава 0-бајтом, не "
+"новим редом\n"
+
+#: src/grep.c:1989
+#, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"Разно:\n"
+" -s, --no-messages искључује поруке о грешкама\n"
+" -v, --invert-match бира не-одговарајуће редове\n"
+" -V, --version исписује податке о издању и излази\n"
+" --help приказује ову помоћ и излази\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+"\n"
+"Излазне контроле:\n"
+" -m, --max-count=БРОЈ зауставља након БРОЈА изабраних редова\n"
+" -b, --byte-offset исписује померај бајта уз редове излаза\n"
+" -n, --line-number исписује број реда уз редове излаза\n"
+" --line-buffered претаче излаз на сваком реду\n"
+" -H, --with-filename исписује назив датотеке са редовима "
+"излаза\n"
+" -h, --no-filename потискује додавање префикса називу "
+"датотеке на излазу\n"
+" --label=НАТПИС користи НАТПИС као префикс назива датотеке "
+"стандардног улаза\n"
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+" -o, --only-matching приказује само непразне делове редова који "
+"одговарају\n"
+" -q, --quiet, --silent потискује све нормалне излазе\n"
+" --binary-files=ВРСТА сматра да су извршне датотеке ВРСТЕ;\n"
+" ВРСТА може бити „binary“, „text“, или "
+"„without-match“\n"
+" -a, --text исто као и „--binary-files=text“\n"
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+" -I исто као и „--binary-files=without-match“\n"
+" -d, --directories=РАДЊА како да рукује директоријумима;\n"
+" РАДЊА може бити „read“, „recurse“, или "
+"„skip“\n"
+" -D, --devices=РАДЊА како да рукује уређајима, ФИФО-има и "
+"прикључницама;\n"
+" РАДЊА може бити „read“ или „skip“\n"
+" -r, --recursive исто као и „--directories=recurse“\n"
+" -R, --dereference-recursive слично, али прати све симболичке везе\n"
+
+#: src/grep.c:2023
+#, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+" --include=ОПШТЕ тражи само датотеке које се поклапају са "
+"ОПШТЕ (шаблон датотеке)\n"
+" --exclude=ОПШТЕ прескаче датотеке које се поклапају са "
+"ОПШТЕ\n"
+" --exclude-from=ДАТОТЕКА прескаче датотеке које се поклапају са "
+"било којим шаблоном из ДАТОТЕКЕ\n"
+" --exclude-dir=ОПШТЕ прескаче директоријуме који се поклапају "
+"са ОПШТЕ\n"
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+" -L, --files-without-match исписује само називе ДАТОТЕКА без "
+"изабраних редова\n"
+" -l, --files-with-matches исписује само називе ДАТОТЕКА са изабраним "
+"редовима\n"
+" -c, --count исписује само број изабраних редова по "
+"ДАТОТЕЦИ\n"
+" -T, --initial-tab помера табове ред горе (ако је потребно)\n"
+" -Z, --null исписује 0-ти бајт након назива ДАТОТЕКЕ\n"
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+"\n"
+"Контроле контекста:\n"
+" -B, --before-context=БРОЈ исписује БРОЈ редова водећег контекста\n"
+" -A, --after-context=БРОЈ исписује БРОЈ редова пратећег контекста\n"
+" -C, --context=БРОЈ исписује БРОЈ редова излазног контекста\n"
+
+#: src/grep.c:2043
+#, fuzzy, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+" -БРОЈ исто као „--context=БРОЈ“\n"
+" --color[=КАДА],\n"
+" --colour[=КАДА] користи обележиваче за истицање "
+"поклапајућих ниски\n"
+" КАДА може бити „always“, „never“ или "
+"„auto“.\n"
+" -U, --binary не исеца ЦР знакове на крају реда (МСДОС/"
+"Виндоуз)\n"
+"\n"
+
+#: src/grep.c:2052
+#, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"Када је ДАТОТЕКА „-“, чита стандардни улаз. Без ДАТОТЕКЕ, чита . ако је "
+"дубински,\n"
+"у супротном „-“. Са мање од две ДАТОТЕКЕ, подразумева се „-h“.\n"
+"Излазно стање је 0 ако је изабран неки ред, у супротном 1;\n"
+"ако је дошло до неке грешке а „-q“ није дато, онда је излазно стање 2.\n"
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "наведени су трагачи у сукобу"
+
+#: src/grep.c:2101
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr "Поклапање за Перл није подржано у „--disable-perl-regexp“ извршној"
+
+#: src/grep.c:2103
+#, c-format
+msgid "invalid matcher %s"
+msgstr "неисправан трагач %s"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "непознат метод уређаја"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr ""
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "неисправан највећи број"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "непозната врста бинарних датотека"
+
+#: src/grep.c:2829
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+"Написали су Мајк Хиртел и други; погледајте\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr "нисам успео да доделим меморију за ПЦРЕ ЏИТ спремник"
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr "„-P“ подржава само једнобајтне и УТФ-8 језике"
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr "опција „-P“ подржава само самосталне шаблоне"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr "унутрашња грешка (не треба никада да се деси)"
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr "прекорачено је ограничење дужине реда ПЦРЕ-а"
+
+#: src/pcresearch.c:306
+#, c-format
+msgid "%s: memory exhausted"
+msgstr "%s: меморија је потрошена"
+
+#: src/pcresearch.c:310
+#, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr "%s: потрошени ПЦРЕ ЈИТ спремник"
+
+#: src/pcresearch.c:315
+#, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr "%s: прекорачено је ПЦРЕ-ово ограничење тражења уназад"
+
+#: src/pcresearch.c:319
+#, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr "%s: прекорачено је ограничење ПЦРЕ дубачења"
+
+#: src/pcresearch.c:327
+#, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr "%s: унутрашња грешка ПЦРЕ-а: %d"
+
+#~ msgid "warning: GREP_OPTIONS is deprecated; please use an alias or script"
+#~ msgstr ""
+#~ "упозорење: „GREP_OPTIONS“ је застарело; користите алијас или скрипту"
+
+#~ msgid "warning: %s: %s"
+#~ msgstr "упозорење: %s: %s"
+
+#~ msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
+#~ msgstr "%s матична страница: <http://www.gnu.org/software/%s/>\n"
+
+#~ msgid "invalid %s%s argument '%s'"
+#~ msgstr "неисправан %s%s аргумент „%s“"
+
+#~ msgid "invalid suffix in %s%s argument '%s'"
+#~ msgstr "неисправан суфикс у %s%s аргументу „%s“"
+
+#~ msgid "%s%s argument '%s' too large"
+#~ msgstr "%s%s аргумент „%s“ је превелик"
+
+#~ msgid "Mike Haertel"
+#~ msgstr "Мајк Хартел"
+
+#~ msgid "internal error"
+#~ msgstr "унутрашња грешка"
+
+#~ msgid "%s: option '--%s' doesn't allow an argument\n"
+#~ msgstr "%s: опција „--%s“ не дозвољава аргумент\n"
+
+#~ msgid "%s: unrecognized option '--%s'\n"
+#~ msgstr "%s: непрепознатљива опција „--%s“\n"
+
+#~ msgid "%s: option '-W %s' is ambiguous\n"
+#~ msgstr "%s: опција „-W %s“ је двосмислена\n"
+
+#~ msgid "%s: option '-W %s' doesn't allow an argument\n"
+#~ msgstr "%s: опција „-W %s“ не дозвољава аргумент\n"
+
+#~ msgid "%s: option '-W %s' requires an argument\n"
+#~ msgstr "%s: опција „-W %s“ захтева аргумент\n"
+
+#~ msgid "lseek failed"
+#~ msgstr "„lseek“ није успело"
+
+#~ msgid "PATTERN is, by default, a basic regular expression (BRE).\n"
+#~ msgstr "ШАБЛОН је, по основи, основни регуларан израз (BRE).\n"
+
+#~ msgid ""
+#~ "'egrep' means 'grep -E'. 'fgrep' means 'grep -F'.\n"
+#~ "Direct invocation as either 'egrep' or 'fgrep' is deprecated.\n"
+#~ msgstr ""
+#~ "„egrep“ значи „grep -E“. „fgrep“ значи „grep -F“.\n"
+#~ "Директно призивање као „egrep“ или „fgrep“ није одобрено.\n"
+
+#~ msgid "unescaped ^ or $ not supported with -Pz"
+#~ msgstr "непреспојено ^ или $ није подржано са „-Pz“"
+
+#~ msgid "GNU Grep home page: <%s>\n"
+#~ msgstr "Матична страница ГНУ Грепа: <%s>\n"
+
+#~ msgid "invalid UTF-8 byte sequence in input"
+#~ msgstr "неисправан низ УТФ-8 бита у улазу"
+
+#~ msgid "PATTERN is an extended regular expression (ERE).\n"
+#~ msgstr "ШАБЛОН је проширени регуларан израз (ERE).\n"
+
+#~ msgid "Invocation as 'egrep' is deprecated; use 'grep -E' instead.\n"
+#~ msgstr "Позив као „egrep“ је застарео; користите „grep -E“ уместо тога.\n"
+
+#~ msgid "PATTERN is a set of newline-separated fixed strings.\n"
+#~ msgstr "ШАБЛОН је скуп сталних низова у новим редовима.\n"
+
+#~ msgid "Invocation as 'fgrep' is deprecated; use 'grep -F' instead.\n"
+#~ msgstr "Позив као „fgrep“ је застарео; користите „grep -F“ уместо тога.\n"
+
+#~ msgid "%s can only use the %s pattern syntax"
+#~ msgstr "%s може да користи само %s синтаксу шаблона"
diff --git a/src/grep/po/stamp-po b/src/grep/po/stamp-po
new file mode 100644
index 0000000..9788f70
--- /dev/null
+++ b/src/grep/po/stamp-po
@@ -0,0 +1 @@
+timestamp
diff --git a/src/grep/po/sv.gmo b/src/grep/po/sv.gmo
new file mode 100644
index 0000000..1c92496
--- /dev/null
+++ b/src/grep/po/sv.gmo
Binary files differ
diff --git a/src/grep/po/sv.po b/src/grep/po/sv.po
new file mode 100644
index 0000000..9406e08
--- /dev/null
+++ b/src/grep/po/sv.po
@@ -0,0 +1,959 @@
+# Swedish messages for GNU Grep
+# Copyright © 1996, 1998, 1999, 2000, 2001, 2006, 2007, 2008, 2009, 2010, 2011, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Free Software Foundation, Inc.
+# This file is distributed under the same license as the grep package.
+# Thomas Olsson <cid95tho@student1.lu.se>, 1996.
+# Daniel Resare <daniel@resare.com>, 1998, 1999, 2000, 2001.
+# Daniel Nylander <po@danielnylander.se>, 2006, 2007, 2008, 2009, 2010, 2011.
+# Anders Jonsson <anders.jonsson@norsjovallen.se>, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: grep 3.6.27\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2021-08-09 11:55+0200\n"
+"Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
+"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
+"Language: sv\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"X-Generator: Poedit 2.4.2\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "ogiltigt argument %s för %s"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "tvetydigt argument %s för %s"
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr "Giltiga argument är:"
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr "programfel"
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr "stacköverspill"
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr "skrivfel"
+
+#: lib/dfa.c:896
+msgid "unbalanced ["
+msgstr "obalanserad ["
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr "ogiltig teckenklass"
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr "syntax för teckenklass är [[:space:]], inte [:space:]"
+
+#: lib/dfa.c:1210
+msgid "unfinished \\ escape"
+msgstr "oavslutad \\-sekvens"
+
+#: lib/dfa.c:1371
+msgid "invalid content of \\{\\}"
+msgstr "ogiltigt innehåll i \\{\\}"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr "reguljärt uttryck är för stort"
+
+#: lib/dfa.c:1858
+msgid "unbalanced ("
+msgstr "obalanserad ("
+
+#: lib/dfa.c:1975
+msgid "no syntax specified"
+msgstr "ingen syntax angiven"
+
+#: lib/dfa.c:1986
+msgid "unbalanced )"
+msgstr "obalanserad )"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "Okänt systemfel"
+
+#: lib/getopt.c:278
+#, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: flaggan ”%s%s” är tvetydig\n"
+
+#: lib/getopt.c:284
+#, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: flaggan ”%s%s” är tvetydig. Möjligheter:"
+
+#: lib/getopt.c:319
+#, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: okänd flagga ”%s%s”\n"
+
+#: lib/getopt.c:345
+#, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: flaggan ”%s%s” tillåter inget argument\n"
+
+#: lib/getopt.c:360
+#, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: flaggan ”%s%s” behöver ett argument\n"
+
+#: lib/getopt.c:621
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: ogiltig flagga -- ”%c”\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: flaggan behöver ett argument -- ”%c”\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "minnet är slut"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr "kan inte notera aktuell arbetskatalog"
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "misslyckades med att återvända till ursprunglig arbetskatalog"
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr "misslyckades med att ställa in text/binärläge för filbeskrivare"
+
+# Då det skulle krävas att spara hela filen i UTF-8 för att kunna göra
+# detta rätt, känns det inte värt det. Speciellt eftersom funktionen
+# inte används i grep
+#
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "”"
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "”"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr "Lyckades"
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr "Ingen träff"
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr "Ogiltigt reguljärt uttryck"
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr "Ogiltigt sorteringstecken"
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr "Ogiltigt teckenklassnamn"
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr "Efterföljande omvänt snedstreck"
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr "Ogiltig bakåtreferens"
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr "Omatchad [, [^, [:, [. eller [="
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr "Omatchad ( eller \\("
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr "Omatchad \\{"
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr "Ogiltigt innehåll i \\{\\}"
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr "Ogiltigt intervallslut"
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "Minnet är slut"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr "Ogiltigt inledande reguljärt uttryck"
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr "För tidigt slut på reguljärt uttryck"
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr "Reguljärt uttryck är för stort"
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr "Omatchad ) eller \\)"
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr "Inget tidigare reguljärt uttryck"
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Paketerad av %s (%s)\n"
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Paketerad av %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr "©"
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Licens GPLv3+: GNU GPL version 3 eller senare <%s>.\n"
+"Det här är fri programvara: du får ändra och distribuera den.\n"
+"Det finns INGEN GARANTI, så långt som tillåts enligt lag.\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Skriven av %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Skriven av %s och %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Skriven av %s, %s och %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Skriven av %s, %s, %s\n"
+"och %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Skriven av %s, %s, %s,\n"
+"%s och %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Skriven av %s, %s, %s,\n"
+"%s, %s och %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Skriven av %s, %s, %s,\n"
+"%s, %s, %s och %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Skriven av %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"och %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Skriven av %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s och %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Skriven av %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s och andra.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr ""
+"Rapportera fel till: %s\n"
+"Skicka synpunkter på översättningen till <tp-sv@listor.tp-sv.se>\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr ""
+"Rapportera fel i %s till: %s\n"
+"Skicka synpunkter på översättningen till <tp-sv@listor.tp-sv.se>\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Webbplats för %s: <%s>\n"
+
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr "Allmän hjälp för GNU-programvara: <%s>\n"
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(standard in)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "ogiltigt argument till -A, -B eller -C"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "det är för mycket indata för att räkna"
+
+#: src/grep.c:1641
+#, c-format
+msgid "%s: binary file matches"
+msgstr "%s: binär fil matchar"
+
+#: src/grep.c:1679
+#, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "%s: varning: rekursiv katalogloop"
+
+#: src/grep.c:1899
+#, c-format
+msgid "%s: input file is also the output"
+msgstr "%s: inmatningsfilen är även utmatningen"
+
+#: src/grep.c:1961 src/grep.c:1968
+#, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "Användning: %s [FLAGGA]... MÖNSTER [FIL]...\n"
+
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "Försök med ”%s --help” för mer information\n"
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr "Sök efter MÖNSTER i varje FIL.\n"
+
+#: src/grep.c:1970
+#, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"Exempel: %s -i \"hello world\" menu.h main.c\n"
+"MÖNSTER kan innehålla flera mönster åtskilda av nyradstecken.\n"
+"\n"
+"Val och tolkning av mönster:\n"
+
+#: src/grep.c:1975
+#, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp MÖNSTER är utökade reguljära uttryck\n"
+" -F, --fixed-strings MÖNSTER är strängar\n"
+" -G, --basic-regexp MÖNSTER är enkla reguljära uttryck\n"
+" -P, --perl-regexp MÖNSTER är reguljära uttryck som i Perl\n"
+
+#: src/grep.c:1981
+#, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=MÖNSTER använd MÖNSTER som ett reguljärt uttryck\n"
+" -f, --file=FIL ta MÖNSTER från FIL\n"
+" -i, --ignore-case skilj ej på gemener och versaler i mönster och "
+"data\n"
+" --no-ignore-case skilj på gemener och versaler (standard)\n"
+" -w, --word-regexp matcha endast hela ord\n"
+" -x, --line-regexp matcha endast hela rader\n"
+" -z, --null-data en datarad slutar i 0 byte, inte nyradstecken\n"
+
+#: src/grep.c:1989
+#, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"Diverse:\n"
+" -s, --no-messages visa inga felmeddelanden\n"
+" -v, --invert-match välj rader utan träffar\n"
+" -V, --version visa versionsinformation och avsluta\n"
+" --help visa detta hjälpmeddelande och avsluta\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+"\n"
+"Kontroll av utmatning:\n"
+" -m, --max-count=ANTAL avsluta efter ANTAL träffar\n"
+" -b, --byte-offset skriv ut byte-offset med utmatningsrader\n"
+" -n, --line-number skriv ut radnummer med utmatningsrader\n"
+" --line-buffered spola utmatning för varje rad\n"
+" -H, --with-filename skriv ut filnamn med utmatningsrader\n"
+" -h, --no-filename skriv inte ut filnamnets prefix vid utmatning\n"
+" --label=ETIKETT skriv ut ETIKETT som filnamnsprefix för standard "
+"in\n"
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+" -o, --only-matching visa endast icke-tomma delar av rader som "
+"matchar\n"
+" -q, --quiet, --silent undertryck all normal utmatning\n"
+" --binary-files=TYP anta att binärfiler är av TYP;\n"
+" TYP är ”binary”, ”text” eller ”without-match”\n"
+" -a, --text samma som --binary-files=text\n"
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+" -I samma som --binary-files=without-match\n"
+" -d, --directories=ÅTGÄRD hur kataloger ska hanteras;\n"
+" ÅTGÄRD är ”read”, ”recurse” eller ”skip”\n"
+" -D, --devices=ÅTGÄRD hur enheter, FIFO och uttag ska hanteras;\n"
+" ÅTGÄRD är ”read” eller ”skip”\n"
+" -r, --recursive samma som --directories=recurse\n"
+" -R, --dereference-recursive detsamma, men följ alla symboliska länkar\n"
+
+#: src/grep.c:2023
+#, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+" --include=GLOB sök endast filer som matchar GLOB (ett "
+"filmönster)\n"
+" --exclude=GLOB hoppa över filer som matchar GLOB\n"
+" --exclude-from=FIL hoppa över filer som matchar filmönster från "
+"FIL\n"
+" --exclude-dir=GLOB kataloger som matchar GLOB hoppas över\n"
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+" -L, --files-without-match skriv endast ut namn på FILer utan valda rader\n"
+" -l, --files-with-matches skriv endast ut namn på FILer med valda rader\n"
+" -c, --count skriv endast ut antalet valda rader per FIL\n"
+" -T, --initial-tab gör så att tabulatorer radas upp (om det "
+"behövs)\n"
+" -Z, --null skriv ut 0-tecken efter FILnamn\n"
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+"\n"
+"Kontroll av sammanhang:\n"
+" -B, --before-context=ANTAL skriv ANTAL rader före träffad rad\n"
+" -A, --after-context=ANTAL skriv ANTAL rader efter träffad rad\n"
+" -C, --context=ANTAL skriv ANTAL rader runt träffad rad\n"
+
+#: src/grep.c:2043
+#, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+" -ANTAL samma som --context=ANTAL\n"
+" --group-separator=SEP skriv ut SEP på rad mellan matchningar med "
+"sammanhang\n"
+" --no-group-separator skriv inte ut separator för matchningar med "
+"sammanhang\n"
+" --color[=NÄR],\n"
+" --colour[=NÄR] använd markörer för att särskilja träff\n"
+" NÄR kan vara ”always”, ”never” eller ”auto”.\n"
+" -U, --binary ta inte bort CR-tecken vid radslut (MSDOS/"
+"Windows)\n"
+"\n"
+
+#: src/grep.c:2052
+#, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"När FIL är ”-”, läs från standard in. Läs ”.” då FIL saknas om\n"
+"rekursiv, läs ”-” annars. Om färre än två FILer anges, anta -h.\n"
+"Avslutningsstatus är 0 om någon rad, annars 1;\n"
+"om något fel inträffar och -q inte angavs, är avslutningsstatusen 2.\n"
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "motstridiga söksträngar angivna"
+
+#: src/grep.c:2101
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr "Perlmatchning stöds inte i ett bygge med --disable-perl-regexp"
+
+#: src/grep.c:2103
+#, c-format
+msgid "invalid matcher %s"
+msgstr "ogiltig matchning %s"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "okänd metod för enheter"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr "varning: --unix-byte-offsets (-u) är föråldrat"
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "ogiltigt värde för antal träffar"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "okänd binärfiltyp"
+
+#: src/grep.c:2829
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+"Skrivet av Mike Haertel och andra, se <https://git.sv.gnu.org/cgit/grep.git/"
+"tree/AUTHORS>."
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr "misslyckades med att allokera minne för JIT-stacken för PCRE"
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr "-P stöder endast unibyte- och UTF-8-lokaler"
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr "flaggan -P har endast stöd för ett mönster"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr "internt fel (bör aldrig inträffa)"
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr "översteg radlängdsgräns för PCRE"
+
+#: src/pcresearch.c:306
+#, c-format
+msgid "%s: memory exhausted"
+msgstr "%s: minnet är slut"
+
+#: src/pcresearch.c:310
+#, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr "%s: fyllde JIT-stacken för PCRE"
+
+#: src/pcresearch.c:315
+#, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr "%s: översteg gräns för PCRE-bakåtspårning"
+
+#: src/pcresearch.c:319
+#, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr "%s: översteg rekursionsgräns för PCRE"
+
+#: src/pcresearch.c:327
+#, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr "%s: internt PCRE-fel: %d"
+
+#~ msgid "warning: GREP_OPTIONS is deprecated; please use an alias or script"
+#~ msgstr ""
+#~ "warning: GREP_OPTIONS är föråldrat; använd ett alias eller ett skript"
+
+#~ msgid "warning: %s: %s"
+#~ msgstr "varning: %s: %s"
+
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "Webbplats för %s: <https://www.gnu.org/software/%s/>\n"
+
+#~ msgid "invalid %s%s argument '%s'"
+#~ msgstr "ogiltigt %s%s-argument ”%s”"
+
+#~ msgid "invalid suffix in %s%s argument '%s'"
+#~ msgstr "ogiltigt suffix i %s%s-argumentet ”%s”"
+
+#~ msgid "%s%s argument '%s' too large"
+#~ msgstr "%s%s-argumentet ”%s” är för stort"
+
+#~ msgid "Mike Haertel"
+#~ msgstr "Mike Haertel"
+
+#~ msgid "internal error"
+#~ msgstr "internt fel"
+
+#~ msgid "%s: option '--%s' doesn't allow an argument\n"
+#~ msgstr "%s: flaggan ”--%s” tillåter inget argument\n"
+
+#~ msgid "%s: unrecognized option '--%s'\n"
+#~ msgstr "%s: okänd flagga ”--%s”\n"
+
+#~ msgid "%s: option '-W %s' is ambiguous\n"
+#~ msgstr "%s: flaggan ”-W %s” är tvetydig\n"
+
+#~ msgid "%s: option '-W %s' doesn't allow an argument\n"
+#~ msgstr "%s: flaggan ”-W %s” tillåter inget argument\n"
+
+#~ msgid "%s: option '-W %s' requires an argument\n"
+#~ msgstr "%s: flaggan ”-W %s” behöver ett argument\n"
+
+#~ msgid "lseek failed"
+#~ msgstr "lseek misslyckades"
+
+#~ msgid "PATTERN is, by default, a basic regular expression (BRE).\n"
+#~ msgstr "MÖNSTER är, som standard, ett enkelt reguljärt uttryck (BRE).\n"
+
+#~ msgid ""
+#~ "'egrep' means 'grep -E'. 'fgrep' means 'grep -F'.\n"
+#~ "Direct invocation as either 'egrep' or 'fgrep' is deprecated.\n"
+#~ msgstr ""
+#~ "”egrep” betyder ”grep -E”. ”fgrep” betyder ”grep -F”.\n"
+#~ "Direktanrop som antingen ”egrep” eller ”fgrep” är föråldrat.\n"
+
+#~ msgid "unescaped ^ or $ not supported with -Pz"
+#~ msgstr "oskyddat ^ eller $ stöds ej med -Pz"
+
+#~ msgid "GNU Grep home page: <%s>\n"
+#~ msgstr "Webbplats för GNU Grep: <%s>\n"
+
+#~ msgid "invalid UTF-8 byte sequence in input"
+#~ msgstr "ogiltig UTF-8-bytesekvens i inmatning"
+
+#~ msgid "unfinished repeat count"
+#~ msgstr "oavslutad repetitionsräknare"
+
+#~ msgid "malformed repeat count"
+#~ msgstr "felformaterad repetionsräknare"
+
+#~ msgid "PATTERN is an extended regular expression (ERE).\n"
+#~ msgstr "MÖNSTER är ett utökat reguljärt uttryck (ERE).\n"
+
+#~ msgid "Invocation as `egrep' is deprecated; use `grep -E' instead.\n"
+#~ msgstr "Körning som \"egrep\" är föråldrat; använd \"grep -E\" istället.\n"
+
+#~ msgid "PATTERN is a set of newline-separated fixed strings.\n"
+#~ msgstr "MÖNSTER är en uppsättning nyradsseparerade fasta strängar.\n"
+
+#~ msgid "Invocation as `fgrep' is deprecated; use `grep -F' instead.\n"
+#~ msgstr "Körning som \"fgrep\" är föråldrat; använd \"grep -F\" istället.\n"
+
+#~ msgid "writing output"
+#~ msgstr "skriver utdata"
+
+#~ msgid "%s can only use the %s pattern syntax"
+#~ msgstr "%s kan endast använda %s-mönstersyntax"
+
+#~ msgid ""
+#~ "in GREP_COLORS=\"%s\", the \"%s\" capacity needs a value (\"=...\"); "
+#~ "skipped"
+#~ msgstr ""
+#~ "i GREP_COLORS=\"%s\", \"%s\"-kapaciteten behöver ett värde (\"=...\"); "
+#~ "hoppades över"
+
+#~ msgid ""
+#~ "in GREP_COLORS=\"%s\", the \"%s\" capacity is boolean and cannot take a "
+#~ "value (\"=%s\"); skipped"
+#~ msgstr ""
+#~ "i GREP_COLORS=\"%s\", \"%s\"-kapaciteten är boolesk och kan inte ta ett "
+#~ "värde (\"=%s\"); hoppades över"
+
+#~ msgid "in GREP_COLORS=\"%s\", the \"%s\" capacity %s"
+#~ msgstr "i GREP_COLORS=\"%s\", \"%s\"-kapaciteten %s"
+
+#~ msgid ""
+#~ "stopped processing of ill-formed GREP_COLORS=\"%s\" at remaining "
+#~ "substring \"%s\""
+#~ msgstr ""
+#~ "stoppade behandling av felformulerad GREP_COLORS=\"%s\" på återstående "
+#~ "understrängen \"%s\""
+
+#~ msgid ""
+#~ "\n"
+#~ "Output control:\n"
+#~ " -m, --max-count=NUM stop after NUM matches\n"
+#~ " -b, --byte-offset print the byte offset with output lines\n"
+#~ " -n, --line-number print line number with output lines\n"
+#~ " --line-buffered flush output on every line\n"
+#~ " -H, --with-filename print the filename for each match\n"
+#~ " -h, --no-filename suppress the prefixing filename on output\n"
+#~ " --label=LABEL print LABEL as filename for standard input\n"
+#~ " -o, --only-matching show only the part of a line matching "
+#~ "PATTERN\n"
+#~ " -q, --quiet, --silent suppress all normal output\n"
+#~ " --binary-files=TYPE assume that binary files are TYPE;\n"
+#~ " TYPE is `binary', `text', or `without-match'\n"
+#~ " -a, --text equivalent to --binary-files=text\n"
+#~ " -I equivalent to --binary-files=without-match\n"
+#~ " -d, --directories=ACTION how to handle directories;\n"
+#~ " ACTION is `read', `recurse', or `skip'\n"
+#~ " -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+#~ " ACTION is `read' or `skip'\n"
+#~ " -R, -r, --recursive equivalent to --directories=recurse\n"
+#~ " --include=FILE_PATTERN search only files that match FILE_PATTERN\n"
+#~ " --exclude=FILE_PATTERN skip files and directories matching "
+#~ "FILE_PATTERN\n"
+#~ " --exclude-from=FILE skip files matching any file pattern from "
+#~ "FILE\n"
+#~ " --exclude-dir=PATTERN directories that match PATTERN will be "
+#~ "skipped.\n"
+#~ " -L, --files-without-match print only names of FILEs containing no "
+#~ "match\n"
+#~ " -l, --files-with-matches print only names of FILEs containing matches\n"
+#~ " -c, --count print only a count of matching lines per "
+#~ "FILE\n"
+#~ " -T, --initial-tab make tabs line up (if needed)\n"
+#~ " -Z, --null print 0 byte after FILE name\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Styrning av utskrift:\n"
+#~ " -m, --max-count=NUM skriv bara ut NUM träffar\n"
+#~ " -b, --byte-offset skriv position med visade rader\n"
+#~ " -n, --line-number skriv radnummer med visade rader\n"
+#~ " --line-buffered töm utskriftsbuffer efter varje rad\n"
+#~ " -H, --with-filename skriv filnamn vid varje träff\n"
+#~ " -h, --no-filename skriv inte filnamn vid varje visad rad\n"
+#~ " --label=ETIKETT skriv ut ETIKETT som filnamn för standard in\n"
+#~ " -o, --only-matching visa endast delen av en rad som matchar "
+#~ "MÖNSTER\n"
+#~ " -q, --quiet, --silent undvik all normal utskrift\n"
+#~ " --binary-files=TYP antag att binära filer är av TYP\n"
+#~ " TYP är \"binary\", \"text\" eller \"without-"
+#~ "match\"\n"
+#~ " -a, --text motsvarar --binary-files=text\n"
+#~ " -I motsvarar --binary-files=without-match\n"
+#~ " -d, --directories=ÅTGÄRD hur kataloger skall hanteras\n"
+#~ " ÅTGÄRD är \"read\", \"recurse\" eller \"skip"
+#~ "\".\n"
+#~ " -D, --devices=ÅTGÄRD hur enheter hanteras, FIFO:er och uttag\n"
+#~ " ÅTGÄRD är \"read\" eller \"skip\"\n"
+#~ " -R, -r, --recursive motsvarar --directories=recurse\n"
+#~ " --include=MÖNSTER filer som matchar MÖNSTER undersöks\n"
+#~ " --exclude=MÖNSTER filer som matchar MÖNSTER hoppas över\n"
+#~ " --exclude-from=FIL filer som matchar mönster i FIL hoppas över\n"
+#~ " --exclude-dir=MÖNSTER kataloger som matchar MÖNSTER hoppas över.\n"
+#~ " -L, --files-without-match skriv bara ut FILnamn utan träffar\n"
+#~ " -l, --files-with-matches skriv bara ut FILnamn med träffar\n"
+#~ " -c, --count skriv för varje FIL bara ut antal träffade "
+#~ "rader\n"
+#~ " -T, --initial-tab gör så tabulatorer radar upp (om det behövs)\n"
+#~ " -Z, --null skriv 0-byte efter FILnamn\n"
+
+#~ msgid "unknown directories method"
+#~ msgstr "okänd metod gällande kataloger"
+
+#~ msgid "The -P and -z options cannot be combined"
+#~ msgstr "Flaggorna -P och -z kan inte kombineras"
+
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: otillåten flagga -- %c\n"
+
+#~ msgid "Copyright (C) 2008 Free Software Foundation, Inc.\n"
+#~ msgstr "Copyright © 2008 Free Software Foundation, Inc.\n"
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "Det här är fri programvara, se källkoden för kopieringsvillkor. Det\n"
+#~ "finns INGEN garanti, inte ens för SÄLJBARHET eller LÄMPLIGHET FÖR NÅGOT\n"
+#~ "SPECIELLT ÄNDAMÅL.\n"
+
+#~ msgid "out of memory"
+#~ msgstr "minnet slut"
+
+#~ msgid "Usage: %s [OPTION]... PATTERN [FILE] ...\n"
+#~ msgstr "Användning: %s [FLAGGA]... MÖNSTER [FIL]...\n"
+
+#~ msgid "%s (GNU grep) %s\n"
+#~ msgstr "%s (GNU grep) %s\n"
diff --git a/src/grep/po/th.gmo b/src/grep/po/th.gmo
new file mode 100644
index 0000000..a2e95cd
--- /dev/null
+++ b/src/grep/po/th.gmo
Binary files differ
diff --git a/src/grep/po/th.po b/src/grep/po/th.po
new file mode 100644
index 0000000..314acc6
--- /dev/null
+++ b/src/grep/po/th.po
@@ -0,0 +1,788 @@
+# Translation of grep messages to Thai.
+# Copyright (C) 2018 Free Software Foundation, Inc.
+# This file is distributed under the same license as the grep package.
+# Seksan Poltree <seksan.poltree@gmail.com>, 2009-2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: grep-3.1.48\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2018-12-17 01:11+0700\n"
+"Last-Translator: Seksan Poltree <seksan.poltree@gmail.com>\n"
+"Language-Team: Thai <thai-l10n@googlegroups.com>\n"
+"Language: th\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "อาร์กิวเมนต์ %s ไม่ถูกต้องสำหรับ %s"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "อาร์กิวเมนต์ %s กำกวมไม่ชัดเจน สำหรับ %s"
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr "อาร์กิวเมนต์ที่ใช้ได้ ได้แก่:"
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr "โปรแกรมผิดพลาด"
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr "stack overflow"
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr "การเขียนผิดพลาด"
+
+#: lib/dfa.c:896
+msgid "unbalanced ["
+msgstr "[ ไม่สมดุลกัน"
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr "ชื่อกลุ่มชุดอักขระไม่ถูกต้อง"
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr "วากยสัมพันธ์ของกลุ่มชุดอักขระ คือ [[:space:]], ไม่ใช่ [:space:]"
+
+#: lib/dfa.c:1210
+msgid "unfinished \\ escape"
+msgstr "เครื่องหมายหลีก \\ ไม่จบ"
+
+#: lib/dfa.c:1371
+msgid "invalid content of \\{\\}"
+msgstr "เนื้อหาของ \\{\\} ไม่ถูกต้อง"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr "นิพจน์ปกติใหญ่เกินไป"
+
+#: lib/dfa.c:1858
+msgid "unbalanced ("
+msgstr "( ไม่สมดุลกัน"
+
+#: lib/dfa.c:1975
+msgid "no syntax specified"
+msgstr "ไม่ระบุวากยสัมพันธ์"
+
+#: lib/dfa.c:1986
+msgid "unbalanced )"
+msgstr ") ไม่สมดุลกัน"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "ข้อผิดพลาดของระบบที่ไม่รู้จัก"
+
+#: lib/getopt.c:278
+#, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: ตัวเลือก '%s%s' คลุมเครือไม่ชัดเจน\n"
+
+#: lib/getopt.c:284
+#, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: ตัวเลือก '%s%s' คลุมเครือไม่ชัดเจน; เป็นไปได้ที่จะเป็น:"
+
+#: lib/getopt.c:319
+#, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: ตัวเลือกที่ไม่รู้จัก '%s%s'\n"
+
+#: lib/getopt.c:345
+#, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: ตัวเลือก '%s%s' ไม่อนุญาตให้มีอาร์กิวเมนต์\n"
+
+#: lib/getopt.c:360
+#, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: ตัวเลือก '%s%s' ต้องการอาร์กิวเมนต์\n"
+
+#: lib/getopt.c:621
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: ตัวเลือกไม่ถูกต้อง -- '%c'\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: ตัวเลือกต้องการอาร์กิวเมนต์ -- '%c'\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "หน่วยความจำถูกใช้จนหมด"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr "ไม่สามารถบันทีกไดเรกทอรีที่ทำงานปัจจุบัน"
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "ล้มเหลวในการกลับไปยังไดเรกทอรีทำงานเริ่มต้น"
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr "ล้มเหลวในการตั้งค่าตัวอธิบายไฟล์ในโหมดข้อความ/ไบนารี"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "'"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr "สำเร็จ"
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr "ไม่ตรงกัน"
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr "นิพจน์ปกติไม่ถูกต้อง"
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr "ผลการเทียบกันของอักขระผิดพลาด"
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr "ชื่อกลุ่มชุดอักขระไม่ถูกต้อง"
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr "เครื่องหมายแบ็คสแลชตามท้าย"
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr "การอ้างอิงกลับไม่ถูกต้อง"
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr "ไม่ตรงกันกับ [, [^, [:, [., หรือ [="
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr "ไม่ตรงกันกับ ( หรือ \\("
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr "ไม่ตรงกันกับ \\{"
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr "เนื้อหาของ \\{\\} ไม่ถูกต้อง"
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr "ช่วงจบไม่ถูกต้อง"
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "หน่วยความจำถูกใช้จนหมด"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr "นิพจน์ปกติก่อนหน้าไม่ถูกต้อง"
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr "นิพจน์ปกติจบโดยยังไม่สมบูรณ์"
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr "นิพจน์ปกติใหญ่เกินไป"
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr "ไม่ตรงกันกับ ) หรือ \\)"
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr "ไม่มีนิพจน์ปกติก่อนหน้า"
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "สร้างแพกเกจโดย %s (%s)\n"
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "สร้างแพกเกจโดย %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr "(C)"
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, fuzzy, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"\n"
+"สัญญาอนุญาต GPLv3+: GNU GPL รุ่น 3 หรือใหม่กว่า <http://www.gnu.org/licenses/gpl."
+"html>\n"
+"นี่เป็นซอฟต์แวร์เสรี: คุณมีเสรีในการปรับเปลี่ยนและการส่งต่อมัน.\n"
+"มีการไม่รับประกัน, จากขอบเขตที่อนุญาตโดยกฎหมาย.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr "เขียนโดย %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "เขียนโดย %s และ %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "เขียนโดย %s, %s, และ %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"เขียนโดย %s, %s, %s,\n"
+"และ %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"เขียนโดย %s, %s, %s,\n"
+"%s, และ %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"เขียนโดย %s, %s, %s,\n"
+"%s, %s, และ %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"เขียนโดย %s, %s, %s,\n"
+"%s, %s, %s, และ %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"เขียนโดย %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"และ %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"เขียนโดย %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, และ %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"เขียนโดย %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, และคณะ.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, fuzzy, c-format
+msgid "Report bugs to: %s\n"
+msgstr ""
+"\n"
+"รายงานข้อผิดพลาดไปยัง: %s\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "รายงานข้อผิดพลาดของ %s ไปยัง: %s\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "โฮมเพจของ %s : <%s>\n"
+
+#: lib/version-etc.c:260
+#, fuzzy, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr "ความช่วยเหลือทั่วไปในการใช้ซอฟต์แวร์ GNU: <https://www.gnu.org/gethelp/>\n"
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(นำเข้ามาตรฐาน)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "ความยาวบริบทอาร์กิวเมนต์ไม่ถูกต้อง"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "ข้อมูลเข้ายาวเกินกว่าจะนับได้"
+
+#: src/grep.c:1641
+#, fuzzy, c-format
+msgid "%s: binary file matches"
+msgstr "ตรงกันกันกับแฟ้มฐานสอง %s\n"
+
+#: src/grep.c:1679
+#, fuzzy, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "เรียกซ้ำไดเรกทอรีเป็นวงวน"
+
+#: src/grep.c:1899
+#, fuzzy, c-format
+msgid "%s: input file is also the output"
+msgstr "แฟ้มนำเข้า %s เป็นแฟ้มส่งออกด้วยเหมือนกัน"
+
+#: src/grep.c:1961 src/grep.c:1968
+#, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "วิธีใช้: %s [OPTION]… PATTERNS [FILE]…\n"
+
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "ลองใช้ '%s --help' เพื่อข้อมูลเพิ่มเติม.\n"
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr "ค้นหาสำหรับ PATTERNS ในแต่ละ FILE.\n"
+
+#: src/grep.c:1970
+#, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"ตัวอย่าง: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS สามารถประกอบด้วยหลายรูปแบบโดยแยกด้วยตัวขึ้นบรรทัดใหม่\n"
+"\n"
+"การเลือกนิพจน์ปกติและการแปลความหมาย:\n"
+
+#: src/grep.c:1975
+#, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp PATTERNS เป็นส่วนขยายนิพจน์ปกติ\n"
+" -F, --fixed-strings PATTERNS เป็นชุดสายอักขระ\n"
+" -G, --basic-regexp PATTERNS เป็นนิพจน์ปกติพื้นฐาน (BRE)\n"
+" -P, --perl-regexp PATTERNS เป็นนิพจน์ปกติภาษา Perl\n"
+
+#: src/grep.c:1981
+#, fuzzy, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=PATTERN ใช้ PATTERNS สำหรับการจับคู่กัน\n"
+" -f, --file=FILE รับ PATTERNS มาจาก FILE\n"
+" -i, --ignore-case เพิกเฉยต่อความแตกต่างอักษรใหญ่เล็ก\n"
+" -w, --word-regexp บังคับให้จับคู่เฉพาะที่ตรงกันทั้งคำเท่านั้น\n"
+" -x, --line-regexp บังคับให้จับคู่เฉพาะที่ตรงกันทั้งบรรทัดเท่าทั้น\n"
+" -z, --null-data ข้อมูลบรรทัดจบด้วยขนาด 0 ไบต์, ไม่มีตัวขึ้นบรรทัดใหม่\n"
+
+#: src/grep.c:1989
+#, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"เบ็ดเตล็ด:\n"
+" -s, --no-messages ระงับข้อความแสดงข้อผิดพลาด\n"
+" -v, --invert-match เลือกบรรทัดที่ไม่ตรงกัน\n"
+" -V, --version พิมพ์ข้อมูลรุ่นแล้วออก\n"
+" --help แสดงความช่วยเหลือนี้แล้วออก\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+"\n"
+"ควบคุมการนำออก:\n"
+" -m, --max-count=NUM หยุดหลังจากมี NUM บรรทัดที่ถูกเลือก\n"
+" -b, --byte-offset พิมพ์การชดเชยไบต์กับบรรทัดนำออก\n"
+" -n, --line-number พิมพ์หมายเลขบรรทัดกับบรรทัดนำออก\n"
+" --line-buffered ล้างนำออกบนทุก ๆ บรรทัด\n"
+" -H, --with-filename พิมพ์ชื่อแฟ้มกับบรรทัดนำออก\n"
+" -h, --no-filename ระงับคำนำหน้าชื่อแฟ้มในการนำออก\n"
+" --label=LABEL ใช้ LABEL เป็นชื่อคำนำหน้าแฟ้มสำหรับนำเข้ามาตรฐาน\n"
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+" -o, --only-matching แสดงเพียงแต่ส่วนของบรรทัดที่ไม่ว่างเปล่าของบรรทัดที่ตรงกัน\n"
+" -q, --quiet, --silent ระงับนำออกปกติทั้งหมด\n"
+" --binary-files=TYPE ทึกทักเอาว่าแฟ้มฐานสองเป็น TYPE;\n"
+" TYPE เป็น 'binary', 'text', หรือ 'without-match'\n"
+" -a, --text มีค่าเท่ากันกับ --binary-files=text\n"
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+" -I มีค่าเท่ากันกับ --binary-files=without-match\n"
+" -d, --directories=ACTION จะทำการจัดการไดเรกทอรีอย่างไร;\n"
+" ACTION เป็น 'read', 'recurse', หรือ 'skip'\n"
+" -D, --devices=ACTION จะทำการจัดการอุปกรณ์อย่างไร, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive เหมือนกับ --directories=recurse\n"
+" -R, --dereference-recursive เช่นกัน, แต่ตาม symlink ทั้งหมด\n"
+
+#: src/grep.c:2023
+#, fuzzy, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+" --include=GLOB ค้นหาเพียงแต่แฟ้มที่ตรงกันกับ GLOB(รูปแบบชื่อไฟล์)\n"
+" --exclude=GLOB ข้ามแฟ้มและไดเร็กทอรีที่ตรงกันกับ GLOB\n"
+" --exclude-from=FILE ข้ามแฟ้มที่ตรงกันกับแบบแผนแฟ้มจาก FILE\n"
+" --exclude-dir=GLOB ข้ามไดเร็กทอรีที่ตรงกันกับ GLOB\n"
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+" -L, --files-without-match พิมพ์เพียงแค่ชื่อของ FILEs ที่ไม่ตรงกันกับบรรทัดที่ถูกเลือก\n"
+" -l, --files-with-matches พิมพ์เพียงแค่ชื่อของ FILEs กับบรรทัดที่ถูกเลือก\n"
+" -c, --count พิมพ์เพียงแต่จำนวนบรรทัดที่ตรงกันที่นับได้ในแต่ละ FILE\n"
+" -T, --initial-tab ทำการจัดเตรียมแท็บ (ถ้าจำเป็น)\n"
+" -Z, --null พิมพ์ 0 ไบต์หลังชื่อ FILE\n"
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+"\n"
+"ควบคุมบริบท:\n"
+" -B, --before-context=NUM พิมพ์ NUM บรรทัดของบริบทส่วนนำ\n"
+" -A, --after-context=NUM พิมพ์ NUM บรรทัดของบริบทส่วนตาม\n"
+" -C, --context=NUM พิมพ์ NUM บรรทัดของบริบทส่งออก\n"
+
+#: src/grep.c:2043
+#, fuzzy, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+" -NUM เหมือนกับ --context=NUM\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] ใช้เครื่องหมายกำกับเพื่อเน้นสายอักขระที่ตรงกัน;\n"
+" เมื่อ WHEN ได้แก่ 'always', 'never', หรือ 'auto'\n"
+" -U, --binary ไม่ต้องถอดอักขระ CR ที่ EOL (MSDOS/Windows)\n"
+"\n"
+
+#: src/grep.c:2052
+#, fuzzy, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"เมื่อ FILE เป็น -, อ่านจากนำเข้ามาตรฐาน. กับไม่มี FILE อ่าน. ถ้าเรียกซ้ำ\n"
+", - แทน. ถ้าให้ FILE มาน้อยกว่าสอง. ทึกทักเอาว่าเป็น -h\n"
+"สถานะการออกเป็น 0 เมื่อบรรทัดใด ๆ (หรือ ไฟล์ถ้า -L)ถูกเลือก, 1แทน ;\n"
+"ถ้าเกิดข้อผิดพลาดขึ้นและ -q ไม่ได้ถูกให้มา, สถานะการออกเป็น 2\n"
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "การขัดแย้งของการตรงกันได้รับการระบุ"
+
+#: src/grep.c:2101
+#, fuzzy
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr "การสนับสนุนตัวเลือก -P ไม่ได้ถูกรวบรวมไปยังแฟ้มฐานสอง --disable-perl-regexp นี้"
+
+#: src/grep.c:2103
+#, c-format
+msgid "invalid matcher %s"
+msgstr "ตัวจับคู่ไม่ถูกต้อง %s"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "ไม่รู้จักกระบวนการอุปกรณ์"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr ""
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "ตัวนับสูงสุดไม่ถูกต้อง"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "ชนิดแฟ้มไบนารีที่ไม่รู้จัก"
+
+#: src/grep.c:2829
+#, fuzzy
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr "อื่น ๆ , ดูที่ <https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>"
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr "ล้มเหลวที่จะจัดสรรหน่วยความจำสำหรับสแต็ก PCRE JIT"
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr "-P สนับสนุนเฉพาะโลแคล unibyte และ UTF-8"
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr "ตัวเลือก -P สนับสนุนรูปแบบเดียวเท่านั้น"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr "ข้อผิดพลาดภายใน (ไม่ควรเกิดขึ้นมาก่อน)"
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr "ขอบเขตความยาวบรรทัด PCRE เกินจากข้อจำกัด"
+
+#: src/pcresearch.c:306
+#, fuzzy, c-format
+msgid "%s: memory exhausted"
+msgstr "หน่วยความจำถูกใช้จนหมด"
+
+#: src/pcresearch.c:310
+#, fuzzy, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr "แสต็ก PCRE JIT ถูกใช้จนหมดแล้ว"
+
+#: src/pcresearch.c:315
+#, fuzzy, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr "ขอบเขตการ backtrack ของ PCRE เกินจากข้อจำกัด"
+
+#: src/pcresearch.c:319
+#, fuzzy, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr "ขอบเขตการ backtrack ของ PCRE เกินจากข้อจำกัด"
+
+#: src/pcresearch.c:327
+#, fuzzy, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr "ข้อผิดพลาด PCRE ภายใน: %d"
+
+#, c-format
+#~ msgid "warning: GREP_OPTIONS is deprecated; please use an alias or script"
+#~ msgstr "คำเตือน: GREP_OPTIONS ไม่สนับสนุนให้ใช้ ; กรุณาใช้นามแฝงหรือสคริปต์"
+
+#, c-format
+#~ msgid "warning: %s: %s"
+#~ msgstr "คำเตือน: %s: %s"
+
+#~ msgid "invalid %s%s argument '%s'"
+#~ msgstr "%s%s รับอาร์กิวเมนต์ที่ไม่ถูกต้อง '%s'"
+
+#~ msgid "invalid suffix in %s%s argument '%s'"
+#~ msgstr "คำเสริมท้ายไม่ถูกต้องใน %s%s อาร์กิวเมนต์ '%s'"
+
+#~ msgid "%s%s argument '%s' too large"
+#~ msgstr "%s%s อาร์กิวเมนต์ '%s' ใหญ่มากเกินไป"
+
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "โฮมเพจของ %s : <http://www.gnu.org/software/%s/>\n"
+
+#~ msgid "internal error"
+#~ msgstr "ข้อผิดพลาดภายใน"
+
+#~ msgid "Mike Haertel"
+#~ msgstr "ไมค์ ฮาเออร์เทล"
+
+#~ msgid "%s: option '--%s' doesn't allow an argument\n"
+#~ msgstr "%s: ตัวเลือก '--%s' ไม่อนุญาตให้มีอาร์กิวเมนต์\n"
+
+#~ msgid "%s: unrecognized option '--%s'\n"
+#~ msgstr "%s: ตัวเลือกที่ไม่รู้จัก '--%s'\n"
+
+#~ msgid "%s: option '-W %s' is ambiguous\n"
+#~ msgstr "%s: ตัวเลือก '-W %s' คลุมเครือไม่ชัดเจน\n"
+
+#~ msgid "%s: option '-W %s' doesn't allow an argument\n"
+#~ msgstr "%s: ตัวเลือก '-W %s' ไม่อนุญาตให้มีอาร์กิวเมนต์\n"
+
+#~ msgid "%s: option '-W %s' requires an argument\n"
+#~ msgstr "%s: ตัวเลือก '-W %s' ต้องการอาร์กิวเมนต์\n"
+
+#~ msgid "PATTERN is, by default, a basic regular expression (BRE).\n"
+#~ msgstr "PATTERN โดยมาตรฐานเป็นนิพจน์ปกติพื้นฐาน (BRE).\n"
+
+#~ msgid ""
+#~ "'egrep' means 'grep -E'. 'fgrep' means 'grep -F'.\n"
+#~ "Direct invocation as either 'egrep' or 'fgrep' is deprecated.\n"
+#~ msgstr ""
+#~ "'egrep' หมายถึง 'grep -E'. 'fgrep' หมายถึง 'grep -F'.\n"
+#~ "การร้องขอโดยตรงทั้ง 'egrep' หรือ 'fgrep' ไม่แนะนำให้ใช้.\n"
+
+#~ msgid "lseek failed"
+#~ msgstr "lseek ล้มเหลว"
+
+#~ msgid "GNU Grep home page: <%s>\n"
+#~ msgstr "โฮมเพจ GNU Grep : <%s>\n"
+
+#~ msgid "invalid UTF-8 byte sequence in input"
+#~ msgstr "ลำดับไบต์ UTF-8 ที่นำเข้าไม่ถูกต้อง"
diff --git a/src/grep/po/tr.gmo b/src/grep/po/tr.gmo
new file mode 100644
index 0000000..14ed8d6
--- /dev/null
+++ b/src/grep/po/tr.gmo
Binary files differ
diff --git a/src/grep/po/tr.po b/src/grep/po/tr.po
new file mode 100644
index 0000000..96e6cca
--- /dev/null
+++ b/src/grep/po/tr.po
@@ -0,0 +1,816 @@
+# Turkish translations for GNU grep messages.
+# Copyright (C) 2005 Free Software Foundation, Inc.
+# Nilgün Belma Bugüner <nilgun@superonline.com>, 2001, ..., 2005
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: grep 2.5.1a\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2005-03-04 16:37+0300\n"
+"Last-Translator: Nilgün Belma Bugüner <nilgun@superonline.com>\n"
+"Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
+"Language: tr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"X-Generator: KBabel 1.0\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr ""
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr ""
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr ""
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr ""
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr ""
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr ""
+
+#: lib/dfa.c:896
+#, fuzzy
+msgid "unbalanced ["
+msgstr "Karşılıksız ["
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr ""
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr ""
+
+#: lib/dfa.c:1210
+#, fuzzy
+msgid "unfinished \\ escape"
+msgstr "Tamamlanmamış \\ öncelemi"
+
+#: lib/dfa.c:1371
+#, fuzzy
+msgid "invalid content of \\{\\}"
+msgstr "en çok miktarı geçersiz"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr ""
+
+#: lib/dfa.c:1858
+#, fuzzy
+msgid "unbalanced ("
+msgstr "Karşılıksız ("
+
+#: lib/dfa.c:1975
+#, fuzzy
+msgid "no syntax specified"
+msgstr "Sözdizimi belirtilmemiş"
+
+#: lib/dfa.c:1986
+#, fuzzy
+msgid "unbalanced )"
+msgstr "Karşılıksız )"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "Bilinmeyen sistem hatası"
+
+#: lib/getopt.c:278
+#, fuzzy, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: `%s' seçeneği belirsiz\n"
+
+#: lib/getopt.c:284
+#, fuzzy, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: `%s' seçeneği belirsiz\n"
+
+#: lib/getopt.c:319
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: `%c%s' seçeneği bilinmiyor\n"
+
+#: lib/getopt.c:345
+#, fuzzy, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: seçenek `%c%s' argümansız kullanılır\n"
+
+#: lib/getopt.c:360
+#, fuzzy, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: `%s' seçeneği bir argümanla kullanılır\n"
+
+#: lib/getopt.c:621
+#, fuzzy, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: geçersiz seçenek -- %c\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, fuzzy, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: seçenek bir argümanla kullanılır -- %c\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "bellek tükendi"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr ""
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr ""
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr ""
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "'"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr ""
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "Bellek tükendi"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr ""
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr ""
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr ""
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr ""
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, fuzzy, c-format
+msgid "Report bugs to: %s\n"
+msgstr ""
+"\n"
+"Yazılım hatalarını <bug-grep@gnu.org> adresine,\n"
+"çeviri hatalarını <gnu-tr-u12a@lists.sourceforge.net> adresine bildirin.\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr ""
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr ""
+
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr ""
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(standart girdi)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "bağlam uzunluk değeri geçersiz"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "girdi sayılamayacak kadar büyük"
+
+#: src/grep.c:1641
+#, fuzzy, c-format
+msgid "%s: binary file matches"
+msgstr "İkilik dosya %s eşleşir\n"
+
+#: src/grep.c:1679
+#, fuzzy, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "ardışık dizin çevrimi"
+
+#: src/grep.c:1899
+#, c-format
+msgid "%s: input file is also the output"
+msgstr ""
+
+#: src/grep.c:1961 src/grep.c:1968
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "Kullanımı: %s [SEÇENEK]... MASKE [DOSYA]...\n"
+
+#: src/grep.c:1963
+#, fuzzy, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "Daha fazla bilgi için `%s --help' yazın.\n"
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr ""
+
+#: src/grep.c:1970
+#, fuzzy, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"Standart girdi ya da her DOSYA içinde KALIP için arama yapar.\n"
+"Örneğin: %s -i 'merhaba dunya' menu.h main.c\n"
+"\n"
+"Düzenli ifade seçimi ve yorumlanması:\n"
+
+#: src/grep.c:1975
+#, fuzzy, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp KALIP bir genişletilmiş düzenli ifadedir\n"
+" -F, --fixed-strings KALIP satır satır ayrılmış bir dizgedir\n"
+" -G, --basic-regexp KALIP bir temel düzenli ifadedir\n"
+" -P, --perl-regexp KALIP bir Perl düzenli ifadesidir\n"
+
+#: src/grep.c:1981
+#, fuzzy, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=KALIP KALIP bir düzenli ifade olarak kullanılır\n"
+" -f, --file=DOSYA KALIP DOSYA dan alınır\n"
+" -i, --ignore-case harf büyüklüklerini bir ayrım olarak görmez\n"
+" -w, --word-regexp KALIP bir deyim olarak ele alınır\n"
+" -x, --line-regexp KALIP bir bütün satır olarak ele alınır\n"
+" -z, --null-data satır sonu içermeyen 0 baytlık satır\n"
+
+#: src/grep.c:1989
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"Çeşitli:\n"
+" -s, --no-messages hata iletileri gösterilmez\n"
+" -v, --invert-match eşleşmeyen satırlar seçilir\n"
+" -V, --version sürümü gösterir ve çıkar\n"
+" --help bu iletileri gösterir ve çıkar\n"
+" --mmap mümkünse bellek-eşlemli girdi kullanılır\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+
+#: src/grep.c:2023
+#, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+
+#: src/grep.c:2043
+#, fuzzy, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+"\n"
+"Bağlamsal denetim:\n"
+" -B, --before-context=SAYI bağlamdan önceki SAYI satır gösterilir\n"
+" -A, --after-context=SAYI bağlamdan sonraki SAYI satır gösterilir\n"
+" -C, --context=SAYI çıktı olarak SAYI satır gösterilir\n"
+" -SAYI --context=SAYI ile aynı\n"
+" --color[=SÜREÇ],\n"
+" --colour[=SÜREÇ] eşleşen dizgeleri ayırt etmede renk kullanılır\n"
+" SÜREÇ: daima 'always', hiç 'never', 'auto' -U, "
+"--binary satır sonlarındaki satırbaşı (CR) karakterlerini\n"
+" kaldırmaz\n"
+" -u, --unix-byte-offsets satırbaşı karakterlerine bakmaz\n"
+"\n"
+"`egrep' ile `grep -E', `fgrep' ile `grep -F' aynı işi yapar.\n"
+"DOSYA verilmeksizin ya da yerine - verilirse standart girdi okunur.\n"
+"İki DOSYAdan az verilmişse -h varsayılır.\n"
+"Çıkışta durum eşleşme varsa 0, yoksa 1, belirsizlik varsa 2 dir.\n"
+
+#: src/grep.c:2052
+#, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "birbiriyle çatışan eşleştiriciler belirtildi"
+
+#: src/grep.c:2101
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr ""
+
+#: src/grep.c:2103
+#, fuzzy, c-format
+msgid "invalid matcher %s"
+msgstr "en çok miktarı geçersiz"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "bilinmeyen aygıt yöntemi"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr ""
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "en çok miktarı geçersiz"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "bilinmeyen ikilik dosya türü"
+
+#: src/grep.c:2829
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr ""
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr ""
+
+#: src/pcresearch.c:143
+#, fuzzy
+msgid "the -P option only supports a single pattern"
+msgstr "-P seçeneği desteklenmiyor"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr ""
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr ""
+
+#: src/pcresearch.c:306
+#, fuzzy, c-format
+msgid "%s: memory exhausted"
+msgstr "bellek tükendi"
+
+#: src/pcresearch.c:310
+#, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr ""
+
+#: src/pcresearch.c:315
+#, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr ""
+
+#: src/pcresearch.c:319
+#, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr ""
+
+#: src/pcresearch.c:327
+#, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr ""
+
+#, fuzzy, c-format
+#~ msgid "warning: %s: %s"
+#~ msgstr "uyarı: %s: %s\n"
+
+#, fuzzy
+#~ msgid "%s: option '--%s' doesn't allow an argument\n"
+#~ msgstr "%s: `--%s' seçeneği argümansız kullanılır\n"
+
+#, fuzzy
+#~ msgid "%s: unrecognized option '--%s'\n"
+#~ msgstr "%s: `--%s' seçeneği bilinmiyor\n"
+
+#, fuzzy
+#~ msgid "%s: option '-W %s' is ambiguous\n"
+#~ msgstr "%s: `-W %s' seçeneği belirsiz\n"
+
+#, fuzzy
+#~ msgid "%s: option '-W %s' doesn't allow an argument\n"
+#~ msgstr "%s: `-W %s' seçeneği argümansız kullanılır\n"
+
+#, fuzzy
+#~ msgid "%s: option '-W %s' requires an argument\n"
+#~ msgstr "%s: `%s' seçeneği bir argümanla kullanılır\n"
+
+#~ msgid "unfinished repeat count"
+#~ msgstr "Tamamlanmamış tekrar sayısı"
+
+#~ msgid "malformed repeat count"
+#~ msgstr "Tekrar sayısı hatalı"
+
+#~ msgid "out of memory"
+#~ msgstr "bellek yetersiz"
+
+#~ msgid "writing output"
+#~ msgstr "çıktıyı yazıyor"
+
+#~ msgid "Usage: %s [OPTION]... PATTERN [FILE] ...\n"
+#~ msgstr "Kullanımı: %s [SEÇENEK]... KALIP [DOSYA] ...\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Output control:\n"
+#~ " -m, --max-count=NUM stop after NUM matches\n"
+#~ " -b, --byte-offset print the byte offset with output lines\n"
+#~ " -n, --line-number print line number with output lines\n"
+#~ " --line-buffered flush output on every line\n"
+#~ " -H, --with-filename print the filename for each match\n"
+#~ " -h, --no-filename suppress the prefixing filename on output\n"
+#~ " --label=LABEL print LABEL as filename for standard input\n"
+#~ " -o, --only-matching show only the part of a line matching "
+#~ "PATTERN\n"
+#~ " -q, --quiet, --silent suppress all normal output\n"
+#~ " --binary-files=TYPE assume that binary files are TYPE\n"
+#~ " TYPE is 'binary', 'text', or 'without-match'\n"
+#~ " -a, --text equivalent to --binary-files=text\n"
+#~ " -I equivalent to --binary-files=without-match\n"
+#~ " -d, --directories=ACTION how to handle directories\n"
+#~ " ACTION is 'read', 'recurse', or 'skip'\n"
+#~ " -D, --devices=ACTION how to handle devices, FIFOs and sockets\n"
+#~ " ACTION is 'read' or 'skip'\n"
+#~ " -R, -r, --recursive equivalent to --directories=recurse\n"
+#~ " --include=PATTERN files that match PATTERN will be examined\n"
+#~ " --exclude=PATTERN files that match PATTERN will be skipped.\n"
+#~ " --exclude-from=FILE files that match PATTERN in FILE will be "
+#~ "skipped.\n"
+#~ " -L, --files-without-match only print FILE names containing no match\n"
+#~ " -l, --files-with-matches only print FILE names containing matches\n"
+#~ " -c, --count only print a count of matching lines per "
+#~ "FILE\n"
+#~ " -Z, --null print 0 byte after FILE name\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Çıktı denetimi:\n"
+#~ " -m, --max-count=SAYI SAYI eşleşmeden sonra durur\n"
+#~ " -b, --byte-offset çıktı satırlarında bayt adresi de gösterilir\n"
+#~ " -n, --line-number çıktı satırlarında satır no.ları da "
+#~ "gösterilir\n"
+#~ " --line-buffered her satırda tüm çıktı gösterilir\n"
+#~ " -H, --with-filename her eşleşmede dosya ismi de gösterilir\n"
+#~ " -h, --no-filename dosya ismi gösterilmez\n"
+#~ " --label=ETİKET standar girdi dosyası olarak ETİKET "
+#~ "gösterirlir\n"
+#~ " -o, --only-matching sadece satırın KALIPla eşleşen bölümü "
+#~ "gösterilir\n"
+#~ " -q, --quiet, --silent çıktı verilmez\n"
+#~ " --binary-files=TÜR ikilik dosyalar TÜR türünde varsayılır\n"
+#~ " TÜR: 'binary', 'text', ya da 'without-match'\n"
+#~ " -a, --text --binary-files=text ile aynı\n"
+#~ " -I --binary-files=without-match ile aynı\n"
+#~ " -d, --directories=EYLEM dizinlerin ele alınma şekli\n"
+#~ " EYLEM: 'read', 'recurse', ya da 'skip'\n"
+#~ " -D, --devices=EYLEM aygıtların ele alınma şekli, FIFO ve "
+#~ "soketler\n"
+#~ " için EYLEM: 'read' ya da 'skip'\n"
+#~ " -R, -r, --recursive --directories=recurse ile aynı (ardışık)\n"
+#~ " --include=KALIP KALIP ile eşleşen dosyalar gösterilir\n"
+#~ " --exclude=KALIP KALIP ile eşleşen dosyalar atlanır\n"
+#~ " --exclude-from=DOSYA DOSYA içindeki dosyalardan KALIP ile "
+#~ "eşleşenler atlanır.\n"
+#~ " -L, --files-without-match sadece eşleşmeyen DOSYA isimleri gösterilir\n"
+#~ " -l, --files-with-matches sadece eşleşen DOSYA isimleri gösterilir\n"
+#~ " -c, --count her DOSYAdaki eşleşen satır sayısı "
+#~ "gösterilir\n"
+#~ " -Z, --null DOSYA isminin arkasına null ekler\n"
+
+#~ msgid "unknown directories method"
+#~ msgstr "bilinmeyen dizin yöntemi"
+
+#~ msgid "%s (GNU grep) %s\n"
+#~ msgstr "%s (GNU grep) %s\n"
+
+#~ msgid ""
+#~ "Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc.\n"
+#~ msgstr ""
+#~ "Telif Hakkı 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc.\n"
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "Bu serbest yazılımdır; kopyalama koşulları için kaynak koduna bakınız.\n"
+#~ "Hiçbir garantisi yoktur; hatta SATILABİLİRLİĞİ veya ŞAHSİ KULLANIMINIZA\n"
+#~ "UYGUNLUĞU için bile garanti verilmez.\n"
+
+#~ msgid "The -P and -z options cannot be combined"
+#~ msgstr "-P ve -z seçenekleri birlikte olamaz"
+
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: kuraldışı seçenek -- %c\n"
diff --git a/src/grep/po/uk.gmo b/src/grep/po/uk.gmo
new file mode 100644
index 0000000..3e9e1b6
--- /dev/null
+++ b/src/grep/po/uk.gmo
Binary files differ
diff --git a/src/grep/po/uk.po b/src/grep/po/uk.po
new file mode 100644
index 0000000..3eeff84
--- /dev/null
+++ b/src/grep/po/uk.po
@@ -0,0 +1,772 @@
+# grep -- Ukrainian translation.
+# Copyright (C) 2003 Free Software Foundation, Inc.
+# This file is distributed under the same license as the grep package.
+#
+# Volodymyr M. Lisivka <lvm@mystery.lviv.net>, 2001-2002.
+# Dmytro O. Redchuk <dor@kiev-online.net>, 2002.
+# Yuri Chornoivan <yurchor@ukr.net>, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021.
+msgid ""
+msgstr ""
+"Project-Id-Version: grep-3.6.27\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2021-08-09 11:00+0300\n"
+"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
+"Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n"
+"Language: uk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Lokalize 20.12.0\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "некоректний аргумент, %s, %s"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "неоднозначний аргумент, %s, %s"
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr "Список коректних аргументів:"
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr "помилка програми"
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr "переповнення стека"
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr "помилка запису"
+
+#: lib/dfa.c:896
+msgid "unbalanced ["
+msgstr "неврівноважена дужка ["
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr "некоректний клас символів"
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr ""
+"синтаксичну конструкцію класу символів слід визначати так: [[:space:]], а не "
+"так: [:space:]"
+
+#: lib/dfa.c:1210
+msgid "unfinished \\ escape"
+msgstr "незавершена \\-послідовність"
+
+#: lib/dfa.c:1371
+msgid "invalid content of \\{\\}"
+msgstr "некоректний вміст \\{\\}"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr "занадто об'ємний формальний вираз"
+
+#: lib/dfa.c:1858
+msgid "unbalanced ("
+msgstr "неврівноважена дужка ("
+
+#: lib/dfa.c:1975
+msgid "no syntax specified"
+msgstr "не вказано синтаксис"
+
+#: lib/dfa.c:1986
+msgid "unbalanced )"
+msgstr "неврівноважена дужка )"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "Невідома системна помилка"
+
+#: lib/getopt.c:278
+#, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: параметр «%s%s» не є однозначним\n"
+
+#: lib/getopt.c:284
+#, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: неоднозначний параметр «%s%s»; можливі варіанти:"
+
+#: lib/getopt.c:319
+#, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: невідомий параметр «%s%s»\n"
+
+#: lib/getopt.c:345
+#, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: додавання аргументів до параметра «%s%s» не передбачено\n"
+
+#: lib/getopt.c:360
+#, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: параметр «%s%s» потребує аргументу\n"
+
+#: lib/getopt.c:621
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: некоректний параметр — «%c»\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: до параметра слід додати аргумент — «%c»\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "пам'ять вичерпано"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr "не вдалося зберегти поточний робочий каталог"
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "не вдалося повернутись до початкового робочого каталогу"
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr ""
+"не вдалося встановити текстовий або двійковий режим для дескриптора файла"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "«"
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "»"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr "Успіх"
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr "Не знайдено"
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr "Помилка у формальному виразі"
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr "Некоректний символ порівняння"
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr "Некоректна назва класу символів"
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr "Кінцевий символ похилої риски"
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr "Некоректне зворотне посилання"
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr "Незавершена послідовність [, [^, [:, [. або [="
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr "Неврівноважена послідовність ( або \\("
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr "Неврівноважена послідовність \\{"
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr "Некоректний вміст \\{\\}"
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr "Некоректне завершення діапазону"
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "Пам'ять вичерпано"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr "Помилка у попередньому формальному виразі"
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr "Неочікуване завершення формального виразу"
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr "Занадто об'ємний формальний вираз"
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr "Неврівноважена послідовність ) або \\)"
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr "Не виявлено попереднього формального виразу"
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Пакування — %s (%s)\n"
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Пакування — %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr "©"
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Умови ліцензування викладено у GPLv3+: GNU GPL версії 3 або новішій, <%s>\n"
+"Це вільне програмне забезпечення: ви можете вільно змінювати і поширювати "
+"його.\n"
+"Вам не надається ЖОДНИХ ГАРАНТІЙ, окрім гарантій передбачених "
+"законодавством.\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Автор — %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Автори: %s і %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Автори: %s, %s і %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Автори: %s, %s, %s\n"
+"і %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Автори: %s, %s, %s,\n"
+"%s і %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Автори: %s, %s, %s,\n"
+"%s, %s і %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Автори: %s, %s, %s,\n"
+"%s, %s, %s і %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Автори: %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"і %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Автори: %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s і %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Автори: %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s та інші.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr "Повідомляйте про вади на адресу: %s\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "Про вади у %s повідомляйте на адресу %s\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Домашня сторінка %s: <%s>\n"
+
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr ""
+"Загальна довідкова інформація щодо використання програмного забезпечення "
+"GNU: <%s>\n"
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(стандартне джерело вхідних даних)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "помилковий аргумент довжини контексту"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "вхідні дані занадто довгі для обліку"
+
+#: src/grep.c:1641
+#, c-format
+msgid "%s: binary file matches"
+msgstr "%s: двійковий файл містить збіжність"
+
+#: src/grep.c:1679
+#, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "%s: попередження: зациклення рекурсивного проходу каталогів"
+
+#: src/grep.c:1899
+#, c-format
+msgid "%s: input file is also the output"
+msgstr "%s: файл вхідних даних є також файлом вихідних даних"
+
+#: src/grep.c:1961 src/grep.c:1968
+#, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "Використання: %s [ПАРАМЕТР]... ШАБЛОНИ [ФАЙЛ]...\n"
+
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "Віддайте команду «%s --help», щоб дізнатися більше.\n"
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr "Шукати ШАБЛОНИ у кожному ФАЙЛі.\n"
+
+#: src/grep.c:1970
+#, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"Приклад: %s -i 'hello world' menu.h main.c\n"
+"Запис ШАБЛОНИ може містити декілька шаблонів, які відокремлено символами "
+"нового рядка.\n"
+"\n"
+"Вибір за взірцем та інтерпретація:\n"
+
+#: src/grep.c:1975
+#, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp ШАБЛОНИ є розширеним формальним виразом\n"
+" -F, --fixed-strings ШАБЛОНИ є набором рядків\n"
+" -G, --basic-regexp ШАБЛОНИ є звичайними формальними виразами\n"
+" -P, --perl-regexp ШАБЛОНИ є формальними виразами Perl\n"
+
+#: src/grep.c:1981
+#, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=ШАБЛОНИ використовувати ШАБЛОНИ для встановлення "
+"відповідності\n"
+" -f, --file=ФАЙЛ взяти ШАБЛОНИ із ФАЙЛа\n"
+" -i, --ignore-case ігнорувати регістр літер у шаблонах і даних\n"
+" --no-ignore-case не ігнорувати регістр літер (типова поведінка)\n"
+" -w, --word-regexp шукати лише цілі слова\n"
+" -x, --line-regexp шукати лише цілі рядки\n"
+" -z, --null-data рядки даних закінчуються байтом \"0\", а не "
+"символом\n"
+" кінця рядка (\\n)\n"
+
+#: src/grep.c:1989
+#, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"Інше:\n"
+" -s, --no-messages придушити повідомлення про помилки\n"
+" -v, --invert-match вибирати рядки без збіжностей\n"
+" -V, --version показати дані щодо версії і завершити роботу\n"
+" --help показати ці довідкові дані і завершити роботу\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+"\n"
+"Керування виведенням даних:\n"
+" -m, --max-count=ЧИСЛО зупинитися після виявлення кількості рядків, що "
+"дорівнює ЧИСЛУ\n"
+" -b, --byte-offset показувати позиції у байтах разом з виведеними "
+"рядками\n"
+" -n, --line-number показувати номери рядків разом з виведеними "
+"рядками\n"
+" --line-buffered спорожняти буфер після виведення кожного рядка\n"
+" -H, --with-filename показувати для кожного рядка назву файла\n"
+" -h, --no-filename не показувати назв файлів у виведених даних\n"
+" --label=МІТКА показувати МІТКУ замість назви файла для "
+"стандартного джерела вхідних даних\n"
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+" -o, --only-matching показувати лише непорожні частини відповідних "
+"рядків\n"
+" -q, --quiet, --silent придушити виведення всіх звичайних даних\n"
+" --binary-files=ТИП припускати, що всі бінарні файли належать до "
+"ТИПу;\n"
+" ТИПом може бути `binary', `text' або `without-"
+"match'\n"
+" -a, --text те саме, що і --binary-files=text\n"
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+" -I те саме, що і --binary-files=without-match\n"
+" -d, --directories=ДІЯ визначити спосіб обробки каталогів;\n"
+" ДІЄЮ може бути `read' (прочитати), `recurse'\n"
+" (обробити рекурсивно) або `skip' (пропустити)\n"
+" -D, --devices=ДІЯ визначити спосіб обробки файлів пристроїв, FIFO\n"
+" та сокетів;\n"
+" ДІЄЮ може бути `read' (прочитати) або `skip'\n"
+" (пропустити)\n"
+" -r, --recursive те саме, що і --directories=recurse\n"
+" -R, --dereference-recursive подібне, але з переходом за всіма "
+"символічними\n"
+" посиланнями\n"
+
+#: src/grep.c:2023
+#, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+" --include=ВЗІРЕЦЬ шукати лише у файлах, назви яких відповідають "
+"ВЗІРЦЮ\n"
+" --exclude=ВЗІРЕЦЬ не шукати у файлах, назви яких відповідають "
+"ВЗІРЦЮ\n"
+" --exclude-from=ФАЙЛ пропустити файли, назви яких відповідають будь-"
+"якому з шаблонів з ФАЙЛа\n"
+" --exclude-dir=ВЗІРЕЦЬ пропустити каталоги, назви яких відповідають "
+"ВЗІРЦЮ.\n"
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+" -L, --files-without-match показати назви лише тих файлів, у яких немає "
+"вибраних рядків\n"
+" -l, --files-with-matches показати назви лише тих файлів, у яких є вибрані "
+"рядки\n"
+" -c, --count показувати лише вказану кількість вибраних "
+"рядків на ФАЙЛ\n"
+" -T, --initial-tab вирівнювати результати табуляцією (якщо "
+"потрібно)\n"
+" -Z, --null вивести байти 0 після назви ФАЙЛа\n"
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+"\n"
+"Керування контекстом:\n"
+" -B, --before-context=ЧИСЛО показати ЧИСЛО рядків перед рядком з "
+"відповідником\n"
+" -A, --after-context=ЧИСЛО показати ЧИСЛО рядків після рядка з "
+"відповідником\n"
+" -C, --context=ЧИСЛО показати ЧИСЛО рядків контексту виведених "
+"даних\n"
+
+#: src/grep.c:2043
+#, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+" -ЧИСЛО те саме, що і --context=ЧИСЛО\n"
+" --group-separator=РОЗД вивести символ РОЗД у рядку між відповідниками "
+"з контекстом\n"
+" --no-group-separator не виводити роздільник для відповідників із "
+"контекстом\n"
+" --color[=ДЕ],\n"
+" --colour[=ДЕ] використовувати маркери для позначення\n"
+" рядків з відповідниками\n"
+" ДЕ може приймати значення \"always\", \"never\" "
+"чи \"auto\".\n"
+" -U, --binary не вилучати символи CR на кінці рядка (MSDOS/"
+"Windows)\n"
+
+#: src/grep.c:2052
+#, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"Якщо ФАЙЛом є «-», читати дані зі стандартного джерела вхідних\n"
+"даних. Якщо не вказано ФАЙЛ, читати «.», якщо режим рекурсивний, і\n"
+"«-», якщо ні. Якщо вказано менше ніж два ФАЙЛи, буде використано -h.\n"
+"Код завершення 0 — якщо було виявлено відповідник рядка,\n"
+"1 — коли їх нема, 2 — якщо сталася помилка і не було використано\n"
+"параметр -q.\n"
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "задані умови відповідності є суперечливими"
+
+#: src/grep.c:2101
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr ""
+"Підтримки встановлення відповідності за правилами Perl у збірках із --"
+"disable-perl-regexp не передбачено"
+
+#: src/grep.c:2103
+#, c-format
+msgid "invalid matcher %s"
+msgstr "некоректний вираз порівняння %s"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "невідомий спосіб обробки для пристроїв"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr "попередження: --unix-byte-offsets (-u) є застарілим параметром"
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "помилкова максимальна кількість"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "невідомий тип двійкових файлів"
+
+#: src/grep.c:2829
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+"Авторами програми є Mike Haertel та інші програмісти; див.\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr "не вдалося отримати область пам’яті під стек JIT PCRE"
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr "у -P передбачено підтримку лише однобайтових локалей та UTF-8"
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr "аргументом параметра -P може бути лише один шаблон"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr "внутрішня помилка (такої помилки не повинно було статися)"
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr "перевищено обмеження на довжину рядка PCRE"
+
+#: src/pcresearch.c:306
+#, c-format
+msgid "%s: memory exhausted"
+msgstr "%s: пам'ять вичерпано"
+
+#: src/pcresearch.c:310
+#, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr "%s: вичерпано стек JIT PCRE"
+
+#: src/pcresearch.c:315
+#, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr "%s: перевищено обмеження на зворотне стеження у PCRE"
+
+#: src/pcresearch.c:319
+#, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr "%s: перевищено обмеження на рекурсію у PCRE"
+
+#: src/pcresearch.c:327
+#, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr "%s: внутрішня помилка PCRE: %d"
diff --git a/src/grep/po/vi.gmo b/src/grep/po/vi.gmo
new file mode 100644
index 0000000..efc8028
--- /dev/null
+++ b/src/grep/po/vi.gmo
Binary files differ
diff --git a/src/grep/po/vi.po b/src/grep/po/vi.po
new file mode 100644
index 0000000..6af0e1e
--- /dev/null
+++ b/src/grep/po/vi.po
@@ -0,0 +1,864 @@
+# Vietnamese Translation for Grep.
+# Bản dịch tiếng Việt dành cho Grep.
+# Copyright © 2016 Free Software Foundation, Inc.
+# This file is distributed under the same license as the grep package.
+# Clytie Siddall <clytie@riverland.net.au>, 2005-2010.
+# Trần Ngọc Quân <vnwildman@gmail.com>, 2012-2014, 2015, 2016, 2017, 2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: grep 3.3.42\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2020-01-04 15:02+0700\n"
+"Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n"
+"Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"
+"Language: vi\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Poedit 2.2.4\n"
+"X-Poedit-SourceCharset: UTF-8\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "đối số %s không hợp lệ đối với %s"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "đối số %s không rõ ràng đối với %s"
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr "Các đối số hợp lệ là:"
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr "lỗi chương trình"
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr "tràn ngăn xếp"
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr "lỗi ghi"
+
+#: lib/dfa.c:896
+msgid "unbalanced ["
+msgstr "thiếu dấu ngoặc vuông mở ["
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr "sai lớp ký tự"
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr "cú pháp lớp ký tự là [[:space:]], không phải [:space:]"
+
+#: lib/dfa.c:1210
+msgid "unfinished \\ escape"
+msgstr "chưa kết thúc thoát chuỗi \\"
+
+#: lib/dfa.c:1371
+msgid "invalid content of \\{\\}"
+msgstr "nội dung của \\{\\} không hợp lệ"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr "biểu thức chính quy quá lớn"
+
+#: lib/dfa.c:1858
+msgid "unbalanced ("
+msgstr "thiếu dấu ngoặc đơn mở ("
+
+#: lib/dfa.c:1975
+msgid "no syntax specified"
+msgstr "chưa đưa ra cú pháp"
+
+#: lib/dfa.c:1986
+msgid "unbalanced )"
+msgstr "thiếu dấu ngoặc đơn đóng )"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "Lỗi hệ thống không rõ"
+
+#: lib/getopt.c:278
+#, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: tùy chọn “%s%s” chưa rõ ràng\n"
+
+#: lib/getopt.c:284
+#, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: tùy chọn “%s%s” chưa rõ ràng; khả năng là:"
+
+#: lib/getopt.c:319
+#, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: không nhận ra tùy chọn “%s%s”\n"
+
+#: lib/getopt.c:345
+#, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: tùy chọn “%s%s” không không cho phép một đối số\n"
+
+#: lib/getopt.c:360
+#, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: tùy chọn “%s%s” cần một đối số\n"
+
+#: lib/getopt.c:621
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: tùy chọn không hợp lệ -- “%c”\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: tùy chọn yêu cầu một đối số -- “%c”\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "hết bộ nhớ"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr "không thể ghi nhớ được thư mục làm việc hiện thời"
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "gặp lỗi khi quay trở về thư mục làm việc khởi đầu"
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr "gặp lỗi khi đặt chế độ văn bản/nhị phân cho bộ mô tả tập tin"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "“"
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "”"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr "Thành công"
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr "Không tìm thấy"
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr "Biểu thức chính quy không hợp lệ"
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr "Ký tự đối chiếu không hợp lệ"
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr "Tên lớp ký tự không hợp lệ"
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr "Dấu gạch ngược theo sau"
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr "Tham chiếu ngược không hợp lệ"
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr "Có ký tự [, [^, [:, [., hay [= lẻ cặp"
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr "Có ký tự “(” hay “\\(” lẻ cặp"
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr "Có ký tự “\\{” lẻ cặp"
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr "Nội dung của \\{\\} không hợp lệ"
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr "Sai kết thúc phạm vi"
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "Hết bộ nhớ"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr "Biểu thức chính quy có trước không hợp lệ"
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr "Biểu thức chính quy kết thức quá sớm"
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr "Biểu thức chính quy quá lớn"
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr "Có ký tự “)” hay “\\)” lẻ cặp"
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr "Không có biểu thức chính quy nằm trước"
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Đóng gói bởi %s (%s)\n"
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Đóng gói bởi %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr "©"
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Giấy phép GPL pb3+ : Giấy phép Công cộng GNU phiên bản 3 hay sau <%s>.\n"
+"Đây là phần mềm tự do: bạn có quyền sửa đổi và phát hành lại nó.\n"
+"KHÔNG CÓ BẢO HÀNH GÌ CẢ, với điều kiện được pháp luật cho phép.\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Viết bởi %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Viết bởi %s và %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Viết bởi %s, %s và %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Viết bởi %s, %s, %s\n"
+"và %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Viết bởi %s, %s, %s,\n"
+"%s và %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Viết bởi %s, %s, %s,\n"
+"%s, %s và %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Viết bởi %s, %s, %s,\n"
+"%s, %s, %s và %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Viết bởi %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"và %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Viết bởi %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s và %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Viết bởi %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s và một số người khác.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr ""
+"Hãy thông báo lỗi cho: %s\n"
+"Hãy thông báo lỗi dịch cho <http://translationproject.org/team/vi.html>.\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr ""
+"Hãy thông các báo lỗi %s cho: %s\n"
+"Hãy thông báo lỗi dịch cho <http://translationproject.org/team/vi.html>.\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Trang chủ của %s: <%s>\n"
+
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr "Trợ giúp chung về cách sử dụng phần mềm GNU: <%s>\n"
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(đầu vào tiêu chuẩn)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "đối số chiều dài ngữ cảnh không hợp lệ"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "dữ liệu đầu vào quá lớn nên không thể đếm được"
+
+#: src/grep.c:1641
+#, fuzzy, c-format
+msgid "%s: binary file matches"
+msgstr "Tập tin nhị phân “%s” khớp mẫu tìm kiếm\n"
+
+#: src/grep.c:1679
+#, fuzzy, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "vòng lặp thư mục đệ quy"
+
+#: src/grep.c:1899
+#, fuzzy, c-format
+msgid "%s: input file is also the output"
+msgstr "tập tin đầu vào “%s” cũng là kết xuất"
+
+#: src/grep.c:1961 src/grep.c:1968
+#, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "Cách dùng: %s [TÙY_CHỌN]… MẪU [TẬP_TIN]…\n"
+
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "Hãy chạy lệnh “%s --help” để biết thêm thông tin.\n"
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr "Tìm kiếm MẪU trong từng TẬP_TIN.\n"
+
+#: src/grep.c:1970
+#, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"Ví dụ: %s -i \"chào thế giới\" menu.h main.c\n"
+"MẪU có thể chứa nhiều mẫu ngăn cách nhau bằng ký tự dòng mới.\n"
+"\n"
+"Chọn và biên dịch mẫu:\n"
+
+#: src/grep.c:1975
+#, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp MẪU là các biểu thức chính quy mở rộng\n"
+" -F, --fixed-strings MẪU là các chuỗi\n"
+" -G, --basic-regexp MẪU là các biểu thức chính quy cơ bản\n"
+" -P, --perl-regexp MẪU là các biểu thức chính quy Perl\n"
+
+#: src/grep.c:1981
+#, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=MẪU dùng MẪU để so khớp\n"
+" -f, --file=TẬP_TIN lấy MẪU từ TẬP_TIN\n"
+" -i, --ignore-case không phân biệt HOA/thường trong mẫu và dữ liệu\n"
+" --no-ignore-case phân biệt HOA/thường (mặc định)\n"
+" -w, --word-regexp chỉ khớp toàn bộ từ\n"
+" -x, --line-regexp chỉ khớp toàn bộ dòng\n"
+" -z, --null-data một dòng dữ liệu kết thúc bằng byte 0,\n"
+" không phải ký tự dòng mới\n"
+
+#: src/grep.c:1989
+#, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"Hỗn tạp:\n"
+" -s, --no-messages chặn các thông báo lỗi\n"
+" -v, --invert-match chọn các dòng không khớp\n"
+" -V, --version in ra thông tin phiên bản rồi thoát\n"
+" --help hiển thị trợ giúp này rồi thoát\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+"\n"
+"Điều khiển kết xuất:\n"
+" -m, --max-count=SỐ dừng sau khi khớp được SỐ lần\n"
+" -b, --byte-offset in ra vị trí tương đối tính theo byte\n"
+" cùng với dòng kết xuất\n"
+" -n, --line-number in ra số thứ tự dòng cùng với dòng kết xuất\n"
+" --line-buffered xóa sạch kết xuất trên từng dòng\n"
+" -H, --with-filename in ra tên tập tin cho từng dòng đầu ra\n"
+" -h, --no-filename chặn tiền tố tên tập tin khi xuất\n"
+" --label=NHÃN sử dụng NHÃN này làm tiền tố cho tập tin\n"
+" cho đầu ra tiêu chuẩn\n"
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+" -o, --only-matching chỉ hiển thị phần dòng không rỗng khớp với MẪU\n"
+" -q, --quiet, --silent chặn mọi kết xuất bình thường\n"
+" --binary-files=KIỂU coi rằng tập tin nhị phân có KIỂU:\n"
+" * “binary” nhị phân\n"
+" * “text” dạng chữ\n"
+" * “without-match” không khớp\n"
+" -a, --text giống với tùy chọn “--binary-files=text”\n"
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+" -I giống với “--binary-files=without-match”\n"
+" -d, --directories=HÀNH_VI cách quản lý các thư mục. HÀNH_VI là:\n"
+" * “read” đọc\n"
+" * “recurse” đệ quy\n"
+" * “skip” bỏ qua\n"
+" -D, --devices=HÀNH_VI cách quản lý các thiết bị, FIFO và socket;\n"
+" HÀNH_VI:\n"
+" * “read” đọc\n"
+" * “skip” bỏ qua\n"
+" -r, --recursive giống với tùy chọn “--directories=recurse”\n"
+" -R, --dereference-recursive cũng vậy nhưng cho phép cả các liên kết mềm\n"
+
+#: src/grep.c:2023
+#, fuzzy, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+" --include=GLOB chỉ tìm kiếm những tập tin khớp với GLOB (mẫu "
+"tập tin)\n"
+" --exclude=GLOB bỏ qua những tập tin và thư mục khớp với GLOB\n"
+" --exclude-from=TỆP bỏ qua những tập tin khớp với bất cứ mẫu tập\n"
+" tin trong tập tin này\n"
+" --exclude-dir=GLOB thư mục nào khớp với mẫu này thì bị bỏ qua\n"
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+" -L, --files-without-match chỉ in ra tên của các TẬP TIN không khớp mẫu\n"
+" -l, --files-with-matches chỉ in ra tên của các TẬP TIN khớp mẫu\n"
+" -c, --count chỉ in ra số lượng dòng khớp trong mỗi TẬP TIN\n"
+" -T, --initial-tab sắp hàng cột tab (nếu cần)\n"
+" -Z, --null in ra byte 0 (null) đằng sau tên TẬP TIN\n"
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+"\n"
+"Điều khiển ngữ cảnh:\n"
+" -B, --before-context=SỐ in ra SỐ dòng ngữ cảnh đi trước\n"
+" -A, --after-context=SỐ in ra SỐ dòng ngữ cảnh đi sau\n"
+" -C, --context=SỐ in ra SỐ dòng ngữ cảnh kết xuất\n"
+
+#: src/grep.c:2043
+#, fuzzy, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+" -NUM giống với “--context=SỐ”\n"
+" --color[=KHI],\n"
+" --colour[=KHI] đánh dấu để tô sáng các chuỗi khớp; KHI là:\n"
+" * “always” luôn luôn\n"
+" * “never” không bao giờ\n"
+" * “auto” tự động\n"
+" -U, --binary đừng gỡ bỏ các ký tự CR ở kết thúc dòng (EOL)\n"
+" (MSDOS/Windows)\n"
+"\n"
+
+#: src/grep.c:2052
+#, fuzzy, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"Khi TẬP_TIN là “-”, thì đọc từ đầu vào tiêu chuẩn. Không có TẬP_TIN, đọc “.” "
+"nếu\n"
+"đệ quy, “-” nếu không phải vậy. Nếu ít hơn hai TẬP_TIN thì coi là “-h”.\n"
+"Trạng thái thoát là 0 nếu có dòng (hay tập tin nếu -L) nào khớp mẫu, không "
+"thì bằng 1;\n"
+"nếu có lỗi phát sinh và “-q” không được đưa ra thì trạng thái thoát là 2.\n"
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "đã ghi rõ dữ liệu khớp mà xung đột"
+
+#: src/grep.c:2101
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr "Không hỗ trợ khớp mẫu perl khi biên dịch với --disable-perl-regexp"
+
+#: src/grep.c:2103
+#, c-format
+msgid "invalid matcher %s"
+msgstr "sai mẫu so khớp %s"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "không rõ phương thức thiết bị"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr ""
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "số lượng tối đa không hợp lệ"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "không rõ kiểu tập tin nhị phân (binary-files)"
+
+#: src/grep.c:2829
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+"Được viết bởi Mike Haertel và nhiều người khác, xem tại\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr "gặp lỗi khi cấp phát bộ nhớ cho stack (ngăn xếp) PCRE JIT"
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr "-P chỉ hỗ trợ miền địa phương unibyte và UTF-8"
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr "tùy chọn “-P” chỉ hỗ trợ một mẫu đơn lẻ"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr "lỗi nội bộ (không nên xảy ra như thế)"
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr "đã vượt quá giới hạn chiều dài dòng của PCRE"
+
+#: src/pcresearch.c:306
+#, fuzzy, c-format
+msgid "%s: memory exhausted"
+msgstr "hết bộ nhớ"
+
+#: src/pcresearch.c:310
+#, fuzzy, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr "ngăn xếp “PCRE JIT” đã hết"
+
+#: src/pcresearch.c:315
+#, fuzzy, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr "đã vượt quá giới hạn tìm ngược của PCRE"
+
+#: src/pcresearch.c:319
+#, fuzzy, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr "đã vượt quá giới hạn tìm ngược của PCRE"
+
+#: src/pcresearch.c:327
+#, fuzzy, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr "lỗi nội bộ PCRE: %d"
+
+#, c-format
+#~ msgid "warning: GREP_OPTIONS is deprecated; please use an alias or script"
+#~ msgstr ""
+#~ "cảnh báo: GREP_OPTIONS đã lỗi thời; vui lòng dòng một bí danh hoặc văn "
+#~ "lệnh"
+
+#, c-format
+#~ msgid "warning: %s: %s"
+#~ msgstr "cảnh báo: %s: %s"
+
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "Trang chủ %s: <https://www.gnu.org/software/%s/>\n"
+
+#~ msgid "invalid %s%s argument '%s'"
+#~ msgstr "đối số %s%s không hợp lệ “%s”"
+
+#~ msgid "invalid suffix in %s%s argument '%s'"
+#~ msgstr "hậu tố không hợp lệ trong %s%s đối số “%s”"
+
+#~ msgid "%s%s argument '%s' too large"
+#~ msgstr "%s%s đối số “%s” quá lớn"
+
+#~ msgid "Mike Haertel"
+#~ msgstr "Mike Haertel"
+
+#~ msgid "internal error"
+#~ msgstr "lỗi nội bộ"
+
+#~ msgid "%s: option '--%s' doesn't allow an argument\n"
+#~ msgstr "%s: tùy chọn “--%s” không cho phép có đối số\n"
+
+#~ msgid "%s: unrecognized option '--%s'\n"
+#~ msgstr "%s: không nhận ra tùy chọn “--%s”\n"
+
+#~ msgid "%s: option '-W %s' is ambiguous\n"
+#~ msgstr "%s: tùy chọn “-W %s” chưa rõ ràng\n"
+
+#~ msgid "%s: option '-W %s' doesn't allow an argument\n"
+#~ msgstr "%s: tùy chọn “-W %s” không cho phép đối số\n"
+
+#~ msgid "%s: option '-W %s' requires an argument\n"
+#~ msgstr "%s: tùy chọn “-W %s” yêu cầu một đối số\n"
+
+#~ msgid "lseek failed"
+#~ msgstr "lseek gặp lỗi"
+
+#~ msgid "PATTERN is, by default, a basic regular expression (BRE).\n"
+#~ msgstr "MẪU, theo mặc định, là một biểu thức chính quy cơ bản (BRE).\n"
+
+#~ msgid ""
+#~ "'egrep' means 'grep -E'. 'fgrep' means 'grep -F'.\n"
+#~ "Direct invocation as either 'egrep' or 'fgrep' is deprecated.\n"
+#~ msgstr ""
+#~ "“egrep” nên là “grep -E”, “fgrep” nên là “grep -F”.\n"
+#~ "Không tán thành gọi trực tiếp “egrep” cũng như “fgrep”.\n"
+
+#~ msgid "unescaped ^ or $ not supported with -Pz"
+#~ msgstr "không thoát ^ hay $ không được hỗ trợ với -Pz"
+
+#~ msgid "GNU Grep home page: <%s>\n"
+#~ msgstr "Trang chủ của GNU Grep: <%s>\n"
+
+#~ msgid "invalid UTF-8 byte sequence in input"
+#~ msgstr "chuỗi byte UTF-8 không hợp lệ ở đầu vào"
+
+#~ msgid "PATTERN is an extended regular expression (ERE).\n"
+#~ msgstr "MẪU là một biểu thức chính quy mở rộng (ERE).\n"
+
+#~ msgid "Invocation as 'egrep' is deprecated; use 'grep -E' instead.\n"
+#~ msgstr "Không tán thành việc gọi như “egrep” nên thay thế bằng “grep -E”.\n"
+
+#~ msgid "PATTERN is a set of newline-separated fixed strings.\n"
+#~ msgstr ""
+#~ "MẪU là một tập hợp các chuỗi cố định phân cách bằng ký tự dòng mới.\n"
+
+#~ msgid "Invocation as 'fgrep' is deprecated; use 'grep -F' instead.\n"
+#~ msgstr "Không tán thành việc gọi như “fgrep” nên thay thế bằng “grep -F”.\n"
+
+#~ msgid "%s can only use the %s pattern syntax"
+#~ msgstr "%s chỉ có khả năng sử dụng cú pháp mẫu %s"
+
+#~ msgid "the --mmap option has been a no-op since 2010"
+#~ msgstr "tùy chọn --mmap không còn được thực thi kể từ năm 2010"
+
+#~ msgid "unfinished repeat count"
+#~ msgstr "chưa kết thúc sự đếm lặp lại"
+
+#~ msgid "malformed repeat count"
+#~ msgstr "sự đếm lặp lại dạng sai"
+
+#~ msgid "writing output"
+#~ msgstr "đang ghi kết xuất"
+
+#~ msgid ""
+#~ "in GREP_COLORS='%s', the `%s' capacity needs a value ('=...'); skipped"
+#~ msgstr ""
+#~ "trong chuỗi “GREP_COLORS=“%s”, khả năng “%s” cần giá trị (“=…”); nên bỏ "
+#~ "qua"
+
+#~ msgid ""
+#~ "in GREP_COLORS='%s', the `%s' capacity is boolean and cannot take a value "
+#~ "('=%s'); skipped"
+#~ msgstr ""
+#~ "trong chuỗi “GREP_COLORS=“%s”, khả năng “%s” là luận lý thì không chấp "
+#~ "nhận được giá trị (“=%s”); nên bỏ qua"
+
+#~ msgid "in GREP_COLORS='%s', the `%s' capacity %s"
+#~ msgstr "trong GREP_COLORS=“%s”, khả năng “%s” %s"
+
+#~ msgid ""
+#~ "stopped processing of ill-formed GREP_COLORS='%s' at remaining substring `"
+#~ "%s'"
+#~ msgstr ""
+#~ "đã dừng xử lý chuỗi GREP_COLORS=“%s” dạng sai ở chuỗi con còn lại “%s”"
diff --git a/src/grep/po/zh_CN.gmo b/src/grep/po/zh_CN.gmo
new file mode 100644
index 0000000..946eb07
--- /dev/null
+++ b/src/grep/po/zh_CN.gmo
Binary files differ
diff --git a/src/grep/po/zh_CN.po b/src/grep/po/zh_CN.po
new file mode 100644
index 0000000..b9559ee
--- /dev/null
+++ b/src/grep/po/zh_CN.po
@@ -0,0 +1,912 @@
+# Simplified Chinese(zh_CN) messages for grep.
+# This file is distributed under the same license as the grep package.
+# Copyright (C) 2008 Free Software Foundation, Inc.
+# Ji ZhengYu <zhengyuji@gmail.com>, 2016.
+# Boyuan Yang <073plan@gmail.com>, 2018, 2019, 2020.
+msgid ""
+msgstr ""
+"Project-Id-Version: grep 3.5.16\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2020-11-04 09:09-0500\n"
+"Last-Translator: Boyuan Yang <073plan@gmail.com>\n"
+"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
+"Language: zh_CN\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"X-Generator: Poedit 2.4.1\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "%2$s 的参数 %1$s 无效"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "%2$s 的参数 %1$s 有歧义"
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr "有效参数是:"
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr "程序错误"
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr "栈溢出"
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr "写错误"
+
+#: lib/dfa.c:896
+msgid "unbalanced ["
+msgstr "有未匹配的 ["
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr "无效的字符类名"
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr "字符类的语法是 [[:space:]],而非 [:space:]"
+
+#: lib/dfa.c:1210
+msgid "unfinished \\ escape"
+msgstr "未做好 \\ 转义"
+
+#: lib/dfa.c:1371
+msgid "invalid content of \\{\\}"
+msgstr "\\{\\}中内容无效"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr "正则表达式太长"
+
+#: lib/dfa.c:1858
+msgid "unbalanced ("
+msgstr "有未匹配的 ("
+
+#: lib/dfa.c:1975
+msgid "no syntax specified"
+msgstr "未指定语法"
+
+#: lib/dfa.c:1986
+msgid "unbalanced )"
+msgstr "有未匹配的 )"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "未知的系统错误"
+
+#: lib/getopt.c:278
+#, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s:选项“%s%s”有歧义\n"
+
+#: lib/getopt.c:284
+#, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s:选项“%s%s”有歧义;可能原因:"
+
+#: lib/getopt.c:319
+#, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s:无法识别的选项“%s%s”\n"
+
+#: lib/getopt.c:345
+#, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s:选项“%s%s”不允许带参数\n"
+
+#: lib/getopt.c:360
+#, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s:选项“%s%s”需要一个参数\n"
+
+#: lib/getopt.c:621
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s:无效选项 -- “%c”\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s:选项需要一个参数 -- “%c”\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "内存耗尽"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr "无法记录当前工作目录"
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "无法返回起始工作目录"
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr "设置文件描述符文本/二进制模式失败"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "‘"
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "’"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr "成功"
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr "无匹配"
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr "无效的正则表达式"
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr "无效的冲突字符"
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr "无效的字符类名"
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr "多余的反斜杠"
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr "无效的回退索引"
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr "[, [^, [:, [.或[= 不匹配"
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr "( 或 \\( 不匹配"
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr "\\{ 不匹配"
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr "\\{\\} 中的内容无效"
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr "无效的结束地址"
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "内存耗尽"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr "之前的正则表达式无效"
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr "正则表达式非正常结束"
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr "正则表达式太大"
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr ") 或 \\) 不匹配"
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr "没有之前的正则表达式"
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "由 %s (%s) 打包\n"
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "由 %s 打包\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr "©"
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"GPLv3+ 许可证: GNU 通用公共许可证第三版或更高版本 <%s>。\n"
+"这是自由软件: 您可自由更改并重新分发它。\n"
+"在法律所允许的范围内,不附带任何担保条款。\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr "作者 %s。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "作者 %s 和 %s。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "作者 %s, %s 及 %s。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"作者 %s, %s, %s,\n"
+"及 %s。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"作者 %s, %s, %s,\n"
+"%s, 及 %s。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"作者 %s, %s, %s,\n"
+"%s, %s, 及 %s。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"作者 %s, %s, %s,\n"
+"%s, %s, %s, 及 %s。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"作者 %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"及 %s。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"作者 %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, 及 %s。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"作者 %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, 以及其他人。\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr "请将错误报告给:%s。翻译问题请报告至 <i18n-zh@googlegroups.com>。\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "请将 %s 错误报告给: %s\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s 主页: <%s>\n"
+
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr "GNU 软件的通用帮助: <%s>\n"
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(标准输入)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "无效的文本长度参数"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "输入太多无法计数"
+
+#: src/grep.c:1641
+#, c-format
+msgid "%s: binary file matches"
+msgstr "%s:匹配到二进制文件"
+
+#: src/grep.c:1679
+#, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "%s:警告:嵌套目录循环"
+
+#: src/grep.c:1899
+#, c-format
+msgid "%s: input file is also the output"
+msgstr "%s:输入文件同时也作为输出"
+
+#: src/grep.c:1961 src/grep.c:1968
+#, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "用法: %s [选项]... 模式 [文件]...\n"
+
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "尝试使用 '%s --help' 来获得更多信息。\n"
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr "在每个<文件>中查找给定<模式>。\n"
+
+#: src/grep.c:1970
+#, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"例如:%s -i 'hello world' menu.h main.c\n"
+"<模式>可以包括多个模式字符串,使用换行符进行分隔。\n"
+"\n"
+"模式选择与解释:\n"
+
+#: src/grep.c:1975
+#, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp <模式> 是扩展正则表达式\n"
+" -F, --fixed-strings <模式> 是字符串\n"
+" -G, --basic-regexp <模式> 是基本正则表达式\n"
+" -P, --perl-regexp <模式> 是 Perl 正则表达式\n"
+
+#: src/grep.c:1981
+#, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=<模式> 用指定的<模式>字符串来进行匹配操作\n"
+" -f, --file=<文件> 从给定<文件>中取得<模式>\n"
+" -i, --ignore-case 在模式和数据中忽略大小写\n"
+" --no-ignore-case 不要忽略大小写(默认)\n"
+" -w, --word-regexp 强制<模式>仅完全匹配字词\n"
+" -x, --line-regexp 强制<模式>仅完全匹配整行\n"
+" -z, --null-data 数据行以一个 0 字节结束,而非换行符\n"
+
+#: src/grep.c:1989
+#, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"杂项:\n"
+" -s, --no-messages 不显示错误信息\n"
+" -v, --invert-match 选中不匹配的行\n"
+" -V, --version 显示版本信息并退出\n"
+" --help 显示此帮助并退出\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+"\n"
+"输出控制:\n"
+" -m, --max-count=<次数> 得到给定<次数>次匹配后停止\n"
+" -b, --byte-offset 输出的同时打印字节偏移\n"
+" -n, --line-number 输出的同时打印行号\n"
+" --line-buffered 每行输出后刷新输出缓冲区\n"
+" -H, --with-filename 为输出行打印文件名\n"
+" -h, --no-filename 输出时不显示文件名前缀\n"
+" --label=<标签> 将给定<标签>作为标准输入文件名前缀\n"
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+" -o, --only-matching 只显示行中非空匹配部分\n"
+" -q, --quiet, --silent 不显示所有常规输出\n"
+" --binary-files=TYPE 设定二进制文件的 TYPE(类型);\n"
+" TYPE 可以是 'binary'、'text' 或 'without-match'\n"
+" -a, --text 等同于 --binary-files=text\n"
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+" -I 等同于 --binary-files=without-match\n"
+" -d, --directories=ACTION 读取目录的方式;\n"
+" ACTION 可以是`read', `recurse',或`skip'\n"
+" -D, --devices=ACTION 读取设备、先入先出队列、套接字的方式;\n"
+" ACTION 可以是`read'或`skip'\n"
+" -r, --recursive 等同于--directories=recurse\n"
+" -R, --dereference-recursive 同上,但遍历所有符号链接\n"
+
+#: src/grep.c:2023
+#, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+" --include=GLOB 只查找匹配 GLOB(文件模式)的文件\n"
+" --exclude=GLOB 跳过匹配 GLOB 的文件\n"
+" --exclude-from=FILE 跳过所有匹配给定文件内容中任意模式的文件\n"
+" --exclude-dir=GLOB 跳过所有匹配 GLOB 的目录\n"
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+" -L, --files-without-match 只打印没有匹配上的<文件>的名称\n"
+" -l, --files-with-matches 只打印有匹配的<文件>的名称\n"
+" -c, --count 只打印每个<文件>中的匹配行数目\n"
+" -T, --initial-tab 行首制表符对齐(如有必要)\n"
+" -Z, --null 在<文件>名最后打印空字符\n"
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+"\n"
+"文件控制:\n"
+" -B, --before-context=NUM 打印文本及其前面NUM 行\n"
+" -A, --after-context=NUM 打印文本及其后面NUM 行\n"
+" -C, --context=NUM 打印NUM 行输出文本\n"
+
+#: src/grep.c:2043
+#, fuzzy, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+" -NUM 等同于 --context=NUM\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] 使用标记高亮匹配字串;\n"
+" WHEN 可以是“always”、“never”或“auto”\n"
+" -U, --binary 不要清除行尾的 CR 字符(MSDOS/Windows)\n"
+"\n"
+
+#: src/grep.c:2052
+#, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"若给定文件为“-”,则从读取标准输入。 若无文件参数,则除非处于\n"
+"递归工作模式视为从“.”读取之外,一律视为从“-”读取。如果提供了少于\n"
+"两个文件参数,则默认启用 -h 选项。如果有任意行被匹配则退出状态为 0,\n"
+"否则为 1;如果有错误产生且未指定 -q 参数,则退出状态为 2。\n"
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "指定了互相冲突的比较程序"
+
+#: src/grep.c:2101
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr "当前使用了 --disable-perl-regexp 的构建无法支持 Perl 匹配模式"
+
+#: src/grep.c:2103
+#, c-format
+msgid "invalid matcher %s"
+msgstr "无效匹配 %s"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "未知的设备处理方式"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr ""
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "无效的最大计数"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "未知的二进制文件类型"
+
+#: src/grep.c:2829
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+"由 Mike Haerhtel 等人编写;作者信息请参见\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>。"
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr "为 PCRE JIT 栈分配内存时出错"
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr "-P 仅支持单字节及 UTF-8 语言环境"
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr "-P 选项仅支持单一匹配字词"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr "内部错误(永远不应该发生)"
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr "超过 PCRE 的行长度限制"
+
+#: src/pcresearch.c:306
+#, c-format
+msgid "%s: memory exhausted"
+msgstr "%s:内存耗尽"
+
+#: src/pcresearch.c:310
+#, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr "%s:PCRE JIT 栈已经用尽"
+
+#: src/pcresearch.c:315
+#, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr "%s:超过 PCRE 的回溯限制"
+
+#: src/pcresearch.c:319
+#, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr "%s:超过 PCRE 的递归限制"
+
+#: src/pcresearch.c:327
+#, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr "%s:PCRE 内部错误:%d"
+
+#~ msgid "warning: GREP_OPTIONS is deprecated; please use an alias or script"
+#~ msgstr "警告: GREP_OPTIONS 已被废弃;请使用别名或脚本"
+
+#~ msgid "warning: %s: %s"
+#~ msgstr "警告: %s: %s"
+
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "%s 主页: <https://www.gnu.org/software/%s/>\n"
+
+#~ msgid "invalid %s%s argument '%s'"
+#~ msgstr "无效的 %s%s 参数'%s'"
+
+#~ msgid "invalid suffix in %s%s argument '%s'"
+#~ msgstr "%s%s 参数'%s' 的后缀无效"
+
+#~ msgid "%s%s argument '%s' too large"
+#~ msgstr "%s%s 参数“%s”过大"
+
+#~ msgid "Mike Haertel"
+#~ msgstr "Mike Haertel"
+
+#~ msgid "internal error"
+#~ msgstr "内部错误"
+
+#~ msgid "%s: option '--%s' doesn't allow an argument\n"
+#~ msgstr "%s: 选项'--%s' 不允许带参数\n"
+
+#~ msgid "%s: unrecognized option '--%s'\n"
+#~ msgstr "%s: 未知选项'--%s' \n"
+
+#~ msgid "%s: option '-W %s' is ambiguous\n"
+#~ msgstr "%s: 选项'-W %s' 有歧义\n"
+
+#~ msgid "%s: option '-W %s' doesn't allow an argument\n"
+#~ msgstr "%s: 选项'-W %s' 不允许带参数\n"
+
+#~ msgid "%s: option '-W %s' requires an argument\n"
+#~ msgstr "%s: 选项'-W %s' 必须带参数\n"
+
+#~ msgid "lseek failed"
+#~ msgstr "lseek 失败"
+
+#~ msgid "PATTERN is, by default, a basic regular expression (BRE).\n"
+#~ msgstr "默认的 PATTERN 是一个基本正则表达式(缩写为 BRE)。\n"
+
+#~ msgid ""
+#~ "'egrep' means 'grep -E'. 'fgrep' means 'grep -F'.\n"
+#~ "Direct invocation as either 'egrep' or 'fgrep' is deprecated.\n"
+#~ msgstr ""
+#~ "'egrep' 即'grep -E'。'fgrep' 即'grep -F'。\n"
+#~ "直接调用'egrep' 或是'fgrep' 均已被废弃。\n"
+
+#~ msgid "unescaped ^ or $ not supported with -Pz"
+#~ msgstr "-Pz 不支持未经转义的字符^ 或$"
+
+#~ msgid "PATTERN is an extended regular expression (ERE).\n"
+#~ msgstr "PATTERN 是一个可扩展的正则表达式(缩写为 ERE)。\n"
+
+#~ msgid "Invocation as 'egrep' is deprecated; use 'grep -E' instead.\n"
+#~ msgstr "‘egrep’已不再使用了;请用‘grep -E’代替。\n"
+
+#~ msgid "PATTERN is a set of newline-separated fixed strings.\n"
+#~ msgstr "PATTERN 是一组由断行符分隔的定长字符串。\n"
+
+#~ msgid "Invocation as 'fgrep' is deprecated; use 'grep -F' instead.\n"
+#~ msgstr "‘fgrep’已不再使用了;请用 ‘grep -F’代替。\n"
+
+#~ msgid "GNU Grep home page: <%s>\n"
+#~ msgstr "GNU Grep 主页: <%s>\n"
+
+#~ msgid "%s can only use the %s pattern syntax"
+#~ msgstr "%s 只能使用 %s 匹配语法"
+
+#~ msgid "the --mmap option has been a no-op since 2010"
+#~ msgstr "--mmap 选项从2010 年起已不再是操作符了"
+
+#~ msgid "unfinished repeat count"
+#~ msgstr "未定义重复次数"
+
+#~ msgid "malformed repeat count"
+#~ msgstr "重复次数定义地不完整"
+
+#~ msgid "writing output"
+#~ msgstr "正在写输出"
+
+#~ msgid ""
+#~ "in GREP_COLORS=\"%s\", the \"%s\" capacity needs a value (\"=...\"); "
+#~ "skipped"
+#~ msgstr ""
+#~ "在 GREP_COLORS=\"%s\"中, \"%s\" 需要指定一个值(\"=...\");已忽略此参数。"
+
+#~ msgid ""
+#~ "in GREP_COLORS=\"%s\", the \"%s\" capacity is boolean and cannot take a "
+#~ "value (\"=%s\"); skipped"
+#~ msgstr ""
+#~ "在 GREP_COLORS=\"%s\"中,\"%s\" 要的是一个 boolean(布尔值) 不是一个数值"
+#~ "(\"=%s\");已忽略此参数。"
+
+#~ msgid "in GREP_COLORS=\"%s\", the \"%s\" capacity %s"
+#~ msgstr "在 GREP_COLORS=\"%s\"中,\"%s\" 是 %s。"
+
+#~ msgid ""
+#~ "stopped processing of ill-formed GREP_COLORS=\"%s\" at remaining "
+#~ "substring \"%s\""
+#~ msgstr "在余下的子串 \"%2$s\" 中停止处理格式有误的 GREP_COLORS=\"%1$s\"。"
+
+#~ msgid "unknown directories method"
+#~ msgstr "未知的目录处理方法"
+
+#~ msgid ""
+#~ "\n"
+#~ "Output control:\n"
+#~ " -m, --max-count=NUM stop after NUM matches\n"
+#~ " -b, --byte-offset print the byte offset with output lines\n"
+#~ " -n, --line-number print line number with output lines\n"
+#~ " --line-buffered flush output on every line\n"
+#~ " -H, --with-filename print the filename for each match\n"
+#~ " -h, --no-filename suppress the prefixing filename on output\n"
+#~ " --label=LABEL print LABEL as filename for standard input\n"
+#~ " -o, --only-matching show only the part of a line matching "
+#~ "PATTERN\n"
+#~ " -q, --quiet, --silent suppress all normal output\n"
+#~ " --binary-files=TYPE assume that binary files are TYPE;\n"
+#~ " TYPE is `binary', `text', or `without-match'\n"
+#~ " -a, --text equivalent to --binary-files=text\n"
+#~ " -I equivalent to --binary-files=without-match\n"
+#~ " -d, --directories=ACTION how to handle directories;\n"
+#~ " ACTION is `read', `recurse', or `skip'\n"
+#~ " -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+#~ " ACTION is `read' or `skip'\n"
+#~ " -R, -r, --recursive equivalent to --directories=recurse\n"
+#~ " --include=FILE_PATTERN search only files that match FILE_PATTERN\n"
+#~ " --exclude=FILE_PATTERN skip files and directories matching "
+#~ "FILE_PATTERN\n"
+#~ " --exclude-from=FILE skip files matching any file pattern from "
+#~ "FILE\n"
+#~ " --exclude-dir=PATTERN directories that match PATTERN will be "
+#~ "skipped.\n"
+#~ " -L, --files-without-match print only names of FILEs containing no "
+#~ "match\n"
+#~ " -l, --files-with-matches print only names of FILEs containing matches\n"
+#~ " -c, --count print only a count of matching lines per "
+#~ "FILE\n"
+#~ " -T, --initial-tab make tabs line up (if needed)\n"
+#~ " -Z, --null print 0 byte after FILE name\n"
+#~ msgstr ""
+#~ "\n"
+#~ "输出控制:\n"
+#~ " -m, --max-count=NUM NUM 次匹配后停止\n"
+#~ " -b, --byte-offset 显示输出行的字节偏移\n"
+#~ " -n, --line-number 显示输出行的行号\n"
+#~ " --line-buffered 每行都清空输出\n"
+#~ " -H, --with-filename 为每个匹配打印出文件名\n"
+#~ " -h, --no-filename 输出时不显示文件名前的路径名\n"
+#~ " --label=LABEL 打印 LABEL 作为标准输入的文件名\n"
+#~ " -o, --only-matching 仅显示匹配 PATTERN 的那一行\n"
+#~ " -q, --quiet, --silent 不显示所有普通信息\n"
+#~ " --binary-files=TYPE 假定二进制文件类型为 TYPE;\n"
+#~ " TYPE 可以是‘binary’,‘text’或是‘without-"
+#~ "match’\n"
+#~ " -a, --text 等同于 --binary-files=text\n"
+#~ " -I 等同于 --binary-files=without-match\n"
+#~ " -d, --directories=ACTION 如何处理目录名;\n"
+#~ " ACTION 是‘read’,‘recurse’或是‘skip’\n"
+#~ " -D, --devices=ACTION 如何处理设备名,FIFOs(队列) 以及 sockets(套接"
+#~ "字)\n"
+#~ " ACTION 是‘read’或是‘skip’\n"
+#~ " -R, -r, --recursive 等同于 --directories=recurse\n"
+#~ " --include=FILE_PATTERN 仅查找匹配 FILE_PATTERN 的文件\n"
+#~ " --exclude=FILE_PATTERN 忽略匹配 FILE_PATTERN 的文件和目录\n"
+#~ " --exclude-from=FILE 忽略任何来自 FILE 的匹配字词\n"
+#~ " --exclude-dir=PATTERN 忽略匹配 PATTERN 的目录。\n"
+#~ " -L, --files-without-match 仅显示不包含匹配字词的 FILE 名称\n"
+#~ " -l, --files-with-matches 仅显示包含匹配字词的 FILE 名称\n"
+#~ " -c, --count 仅显示每个 FILE 中匹配行的数目\n"
+#~ " -T, --initial-tab 以 tab 为行首(如果必要的话)\n"
+#~ " -Z, --null 在 FILE 后打印 0 字节\n"
+
+#~ msgid "The -P and -z options cannot be combined"
+#~ msgstr "-P 和 -z 选项不能组合使用"
+
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: 非法选项 -- %c\n"
+
+#~ msgid "Copyright (C) 2008 Free Software Foundation, Inc.\n"
+#~ msgstr "Copyright (C) 2008 Free Software Foundation, Inc.\n"
diff --git a/src/grep/po/zh_TW.gmo b/src/grep/po/zh_TW.gmo
new file mode 100644
index 0000000..edaf898
--- /dev/null
+++ b/src/grep/po/zh_TW.gmo
Binary files differ
diff --git a/src/grep/po/zh_TW.po b/src/grep/po/zh_TW.po
new file mode 100644
index 0000000..4a64d87
--- /dev/null
+++ b/src/grep/po/zh_TW.po
@@ -0,0 +1,918 @@
+# Traditional Chinese Translation of grep.
+# Copyright (C) 2004, 2012, 2013, 2016, 2018, 2021 Free Software Foundation, Inc.
+# This file is distributed under the same license as the grep package.
+#
+# Yuan-Chen Cheng <ycheng@sinica.edu.tw>, 2004.
+# Webber Liao <wpliao@gmail.com>, 2012, 2016.
+# Wei-Lun Chao <bluebat@member.fsf.org>, 2013.
+# pan93412 <pan93412@gmail.com>, 2018, 2019, 2020, 2021.
+msgid ""
+msgstr ""
+"Project-Id-Version: grep 3.6.27\n"
+"Report-Msgid-Bugs-To: bug-grep@gnu.org\n"
+"POT-Creation-Date: 2021-08-14 12:54-0700\n"
+"PO-Revision-Date: 2021-08-10 02:06+0800\n"
+"Last-Translator: Yi-Jyun Pan <pan93412@gmail.com>\n"
+"Language-Team: Chinese (traditional) <zh-l10n@lists.linux.org.tw>\n"
+"Language: zh_TW\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Poedit 3.0\n"
+
+#: lib/argmatch.c:132
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "%2$s 的引數 %1$s 無效"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "%2$s 的引數 %1$s 不明確"
+
+#: lib/argmatch.c:152 lib/argmatch.h:223
+msgid "Valid arguments are:"
+msgstr "有效的引數為:"
+
+#: lib/c-stack.c:187
+msgid "program error"
+msgstr "程式錯誤"
+
+#: lib/c-stack.c:188
+msgid "stack overflow"
+msgstr "堆疊超出容量"
+
+#: lib/closeout.c:122 src/grep.c:1336
+msgid "write error"
+msgstr "寫入發生錯誤"
+
+#: lib/dfa.c:896
+msgid "unbalanced ["
+msgstr "不對稱的 ["
+
+#: lib/dfa.c:1017
+msgid "invalid character class"
+msgstr "無效的字元類別"
+
+#: lib/dfa.c:1143
+msgid "character class syntax is [[:space:]], not [:space:]"
+msgstr "字元類別的語法為 [[:space:]], 非 [:space:]"
+
+#: lib/dfa.c:1210
+msgid "unfinished \\ escape"
+msgstr "不完整的 \\ 逸出"
+
+#: lib/dfa.c:1371
+msgid "invalid content of \\{\\}"
+msgstr "\\{\\} 的內容無效"
+
+#: lib/dfa.c:1374
+msgid "regular expression too big"
+msgstr "正規表示式過長"
+
+#: lib/dfa.c:1858
+msgid "unbalanced ("
+msgstr "不對稱的 ("
+
+#: lib/dfa.c:1975
+msgid "no syntax specified"
+msgstr "沒有指定的語法"
+
+#: lib/dfa.c:1986
+msgid "unbalanced )"
+msgstr "不對稱的 )"
+
+#: lib/error.c:195
+msgid "Unknown system error"
+msgstr "未知的系統錯誤"
+
+#: lib/getopt.c:278
+#, c-format
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s:選項「%s%s」不明確\n"
+
+#: lib/getopt.c:284
+#, c-format
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s:選項「%s%s」不明確;可能選項為:"
+
+#: lib/getopt.c:319
+#, c-format
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s:無法識別的選項「%s%s」\n"
+
+#: lib/getopt.c:345
+#, c-format
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s:「%s%s」選項不接受引數\n"
+
+#: lib/getopt.c:360
+#, c-format
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s:「%s%s」選項需要個引數\n"
+
+#: lib/getopt.c:621
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: 無效的選項 -- \"%c\"\n"
+
+#: lib/getopt.c:636 lib/getopt.c:682
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: 選項需要一個引數 -- \"%c\"\n"
+
+#: lib/obstack.c:337 lib/obstack.c:339 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "記憶體用盡"
+
+#: lib/openat-die.c:38
+#, c-format
+msgid "unable to record current working directory"
+msgstr "無法記錄現行工作目錄"
+
+#: lib/openat-die.c:57
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "無法返回原本的工作目錄"
+
+#: lib/xbinary-io.c:37
+#, c-format
+msgid "failed to set file descriptor text/binary mode"
+msgstr "無法設定檔案描述符號的文字/二進位模式"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this". You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:355
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:356
+msgid "'"
+msgstr "'"
+
+#: lib/regcomp.c:135
+msgid "Success"
+msgstr "成功"
+
+#: lib/regcomp.c:138
+msgid "No match"
+msgstr "沒有符合的項目"
+
+#: lib/regcomp.c:141
+msgid "Invalid regular expression"
+msgstr "無效的正規表示式"
+
+#: lib/regcomp.c:144
+msgid "Invalid collation character"
+msgstr "無效的對照字元"
+
+#: lib/regcomp.c:147
+msgid "Invalid character class name"
+msgstr "無效的字元類別名"
+
+#: lib/regcomp.c:150
+msgid "Trailing backslash"
+msgstr "末端有反斜線"
+
+#: lib/regcomp.c:153
+msgid "Invalid back reference"
+msgstr "無效的向後引用"
+
+#: lib/regcomp.c:156
+msgid "Unmatched [, [^, [:, [., or [="
+msgstr "沒有對應的 [,[^,[:,[. 或 [="
+
+#: lib/regcomp.c:159
+msgid "Unmatched ( or \\("
+msgstr "沒有對應的 ( 或 \\("
+
+#: lib/regcomp.c:162
+msgid "Unmatched \\{"
+msgstr "沒有對應的 \\{"
+
+#: lib/regcomp.c:165
+msgid "Invalid content of \\{\\}"
+msgstr "無效的 \\{\\} 內容"
+
+#: lib/regcomp.c:168
+msgid "Invalid range end"
+msgstr "無效的結束範圍"
+
+#: lib/regcomp.c:171
+msgid "Memory exhausted"
+msgstr "記憶體用盡"
+
+#: lib/regcomp.c:174
+msgid "Invalid preceding regular expression"
+msgstr "無效的前置正規表示式"
+
+#: lib/regcomp.c:177
+msgid "Premature end of regular expression"
+msgstr "正規表示式過早結束"
+
+#: lib/regcomp.c:180
+msgid "Regular expression too big"
+msgstr "正規表示式過長"
+
+#: lib/regcomp.c:183
+msgid "Unmatched ) or \\)"
+msgstr "沒有對應的 ) 或 \\)"
+
+#: lib/regcomp.c:676
+msgid "No previous regular expression"
+msgstr "沒有先前的正規表示式"
+
+#: lib/version-etc.c:73
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "套件由 %s (%s) 所打包\n"
+
+#: lib/version-etc.c:76
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "套件由 %s 所打包\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:83
+msgid "(C)"
+msgstr "(C)"
+
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"授權條款 GPLv3+:GNU GPL 第 3 版或更新版 <%s>。\n"
+"這是自由軟體:您可自由修改或散布。\n"
+"在法律准許範圍內不附帶保證。\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:105
+#, c-format
+msgid "Written by %s.\n"
+msgstr "由 %s 編寫。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:109
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "由 %s 和 %s 編寫。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:113
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "由 %s、%s 和 %s 編寫。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:120
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"由 %s、%s、%s、\n"
+"和 %s 編寫。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:127
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"由 %s、%s、%s、\n"
+"%s 和 %s 編寫。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:134
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"由 %s、%s、%s、\n"
+"%s、%s 和 %s 編寫。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"由 %s、%s、%s、\n"
+"%s、%s、%s 和 %s 編寫。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:150
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"由 %s、%s、%s、\n"
+"%s、%s、%s、%s、\n"
+"和 %s 編寫。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:159
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"由 %s、%s、%s、\n"
+"%s、%s、%s、%s、\n"
+"%s 和 %s 編寫。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:170
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"由 %s、%s、%s、\n"
+"%s、%s、%s、%s、\n"
+"%s 和 %s 等人編寫。\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package. Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: lib/version-etc.c:249
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr "回報臭蟲至:%s\n"
+
+#: lib/version-etc.c:251
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "回報 %s bug 到: %s\n"
+
+#: lib/version-etc.c:255 lib/version-etc.c:257
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s 首頁: <%s>\n"
+
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr "GNU 軟體用法的一般說明:<%s>\n"
+
+#: src/grep.c:649
+msgid "(standard input)"
+msgstr "(標準輸入)"
+
+#: src/grep.c:829
+msgid "invalid context length argument"
+msgstr "無效的內容列數值"
+
+#: src/grep.c:894
+msgid "input is too large to count"
+msgstr "輸入過長無法計數"
+
+#: src/grep.c:1641
+#, c-format
+msgid "%s: binary file matches"
+msgstr "%s:二進位檔案符合"
+
+#: src/grep.c:1679
+#, c-format
+msgid "%s: warning: recursive directory loop"
+msgstr "%s:警告:目錄重複遞迴"
+
+#: src/grep.c:1899
+#, c-format
+msgid "%s: input file is also the output"
+msgstr "%s:輸入檔亦為輸出對象"
+
+#: src/grep.c:1961 src/grep.c:1968
+#, c-format
+msgid "Usage: %s [OPTION]... PATTERNS [FILE]...\n"
+msgstr "用法: %s [選項]… PATTERNS [檔案]…\n"
+
+#: src/grep.c:1963
+#, c-format
+msgid "Try '%s --help' for more information.\n"
+msgstr "請使用 \"%s --help\" 以閱讀更多的資訊。\n"
+
+#: src/grep.c:1969
+#, c-format
+msgid "Search for PATTERNS in each FILE.\n"
+msgstr "在每個檔案中尋找 PATTERNS。\n"
+
+#: src/grep.c:1970
+#, c-format
+msgid ""
+"Example: %s -i 'hello world' menu.h main.c\n"
+"PATTERNS can contain multiple patterns separated by newlines.\n"
+"\n"
+"Pattern selection and interpretation:\n"
+msgstr ""
+"範例:%s -i 'hello world' menu.h main.c\n"
+"PATTERNS 也可以包含多個以換行符號分隔的形樣。\n"
+"\n"
+"形樣 (Pattern) 選擇與解釋:\n"
+
+#: src/grep.c:1975
+#, c-format
+msgid ""
+" -E, --extended-regexp PATTERNS are extended regular expressions\n"
+" -F, --fixed-strings PATTERNS are strings\n"
+" -G, --basic-regexp PATTERNS are basic regular expressions\n"
+" -P, --perl-regexp PATTERNS are Perl regular expressions\n"
+msgstr ""
+" -E, --extended-regexp PATTERNS 是一個延伸正則表示式\n"
+" -F, --fixed-strings PATTERNS 是一個字串\n"
+" -G, --basic-regexp PATTERNS 是一個基本正則表示式\n"
+" -P, --perl-regexp PATTERNS 是一個 Perl 正規表示式\n"
+
+#: src/grep.c:1981
+#, c-format
+msgid ""
+" -e, --regexp=PATTERNS use PATTERNS for matching\n"
+" -f, --file=FILE take PATTERNS from FILE\n"
+" -i, --ignore-case ignore case distinctions in patterns and data\n"
+" --no-ignore-case do not ignore case distinctions (default)\n"
+" -w, --word-regexp match only whole words\n"
+" -x, --line-regexp match only whole lines\n"
+" -z, --null-data a data line ends in 0 byte, not newline\n"
+msgstr ""
+" -e, --regexp=模式 使用 <模式> 比對\n"
+" -f, --file=檔案 自 <檔案> 取得 <模式>\n"
+" -i, --ignore-case 忽略模式及資料的大小寫差異\n"
+" --no-ignore-case 不允許忽略大小寫差異 (預設值)\n"
+" -w, --word-regexp 僅比較整個單字\n"
+" -x, --line-regexp 僅比較整行\n"
+" -z, --null-data 設定資料列結尾為空白位元組,非換列符號\n"
+
+#: src/grep.c:1989
+#, c-format
+msgid ""
+"\n"
+"Miscellaneous:\n"
+" -s, --no-messages suppress error messages\n"
+" -v, --invert-match select non-matching lines\n"
+" -V, --version display version information and exit\n"
+" --help display this help text and exit\n"
+msgstr ""
+"\n"
+"雜項:\n"
+" -s, --no-messages 抑制錯誤訊息\n"
+" -v, --invert-match 選取不符合的列\n"
+" -V, --version 印出版本資訊然後結束\n"
+" --help 顯示此說明然後結束\n"
+
+#: src/grep.c:1996
+#, c-format
+msgid ""
+"\n"
+"Output control:\n"
+" -m, --max-count=NUM stop after NUM selected lines\n"
+" -b, --byte-offset print the byte offset with output lines\n"
+" -n, --line-number print line number with output lines\n"
+" --line-buffered flush output on every line\n"
+" -H, --with-filename print file name with output lines\n"
+" -h, --no-filename suppress the file name prefix on output\n"
+" --label=LABEL use LABEL as the standard input file name "
+"prefix\n"
+msgstr ""
+"\n"
+"輸出控制:\n"
+" -m, --max-count=NUM 在第 NUM 選取列後停止\n"
+" -b, --byte-offset 印出每個輸出列的位元組偏移量\n"
+" -n, --line-number 印出每個輸出列的列號\n"
+" --line-buffered 輸出每列後清除輸出\n"
+" -H, --with-filename 印出輸出列的檔案名稱\n"
+" -h, --no-filename 抑制輸出列的檔名前綴\n"
+" --label=LABEL 以 LABEL 作標準輸入的檔名前綴\n"
+
+#: src/grep.c:2007
+#, c-format
+msgid ""
+" -o, --only-matching show only nonempty parts of lines that match\n"
+" -q, --quiet, --silent suppress all normal output\n"
+" --binary-files=TYPE assume that binary files are TYPE;\n"
+" TYPE is 'binary', 'text', or 'without-match'\n"
+" -a, --text equivalent to --binary-files=text\n"
+msgstr ""
+" -o, --only-matching 只顯示相符行中的非空白部份\n"
+" -q, --quiet, --silent 抑制全部常態的輸出\n"
+" --binary-files=TYPE 設定二進制檔案為 TYPE 的檔案;\n"
+" TYPE 可為 \"binary\"、\"text\" 或 \"without-match"
+"\"\n"
+" -a, --text 等同於 --binary-files=text\n"
+
+#: src/grep.c:2014
+#, c-format
+msgid ""
+" -I equivalent to --binary-files=without-match\n"
+" -d, --directories=ACTION how to handle directories;\n"
+" ACTION is 'read', 'recurse', or 'skip'\n"
+" -D, --devices=ACTION how to handle devices, FIFOs and sockets;\n"
+" ACTION is 'read' or 'skip'\n"
+" -r, --recursive like --directories=recurse\n"
+" -R, --dereference-recursive likewise, but follow all symlinks\n"
+msgstr ""
+" -I 等同於 --binary-files=without-matc\n"
+" -d, --directories=ACTION 檔案目錄的處理方式;\n"
+" ACTION 為 \"read\"、\"recurse\" 或 \"skip\"\n"
+" -D, --devices=ACTION 裝置、FIFO 和通訊端的處理方式;\n"
+" ACTION 為 \"read\" 或 \"skip\"\n"
+" -R, -r, --recursive 等同於 --directories=recurse\n"
+
+#: src/grep.c:2023
+#, c-format
+msgid ""
+" --include=GLOB search only files that match GLOB (a file "
+"pattern)\n"
+" --exclude=GLOB skip files that match GLOB\n"
+" --exclude-from=FILE skip files that match any file pattern from "
+"FILE\n"
+" --exclude-dir=GLOB skip directories that match GLOB\n"
+msgstr ""
+" --include=GLOB 只搜尋符合 GLOB (一種檔案模式) 的檔案\n"
+" --exclude=GLOB 跳過符合 GLOB 的檔案\n"
+" --exclude-from=檔案 跳過符合 <檔案> 中任何檔案模式的檔案\n"
+" --exclude-dir=GLOB 跳過符合 GLOB 的資料夾。\n"
+
+#: src/grep.c:2030
+#, c-format
+msgid ""
+" -L, --files-without-match print only names of FILEs with no selected "
+"lines\n"
+" -l, --files-with-matches print only names of FILEs with selected lines\n"
+" -c, --count print only a count of selected lines per FILE\n"
+" -T, --initial-tab make tabs line up (if needed)\n"
+" -Z, --null print 0 byte after FILE name\n"
+msgstr ""
+" -L, --files-without-match 只印出未選取行的 檔案 名稱\n"
+" -l, --files-with-matches 只印出選取行的 檔案 名稱\n"
+" -c, --count 只印出每個 檔案 的選取行項目\n"
+" -T, --initial-tab (需要時) 對齊 Tab 符號\n"
+" -Z, --null 在 檔案 名稱後印出空白位元組\n"
+
+#: src/grep.c:2036
+#, c-format
+msgid ""
+"\n"
+"Context control:\n"
+" -B, --before-context=NUM print NUM lines of leading context\n"
+" -A, --after-context=NUM print NUM lines of trailing context\n"
+" -C, --context=NUM print NUM lines of output context\n"
+msgstr ""
+"\n"
+"內容控制:\n"
+" -B, --before-context=NUM 印出 NUM 列的前文\n"
+" -A, --after-context=NUM 印出 NUM 列的後文\n"
+" -C, --context=NUM 印出 NUM 列的內容\n"
+
+#: src/grep.c:2043
+#, c-format
+msgid ""
+" -NUM same as --context=NUM\n"
+" --group-separator=SEP print SEP on line between matches with context\n"
+" --no-group-separator do not print separator for matches with context\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] use markers to highlight the matching strings;\n"
+" WHEN is 'always', 'never', or 'auto'\n"
+" -U, --binary do not strip CR characters at EOL (MSDOS/"
+"Windows)\n"
+"\n"
+msgstr ""
+" -NUM 等同於 --context=NUM\n"
+" --group-separator=SEP 在上一個和下一個符合結果和鄰近列 (context) 之間輸"
+"出 SEP 分隔字串\n"
+" --no-group-separator 不要在上一個和下一個符合結果和鄰近列之間輸出分隔"
+"字串\n"
+" --color[=WHEN],\n"
+" --colour[=WHEN] 用特殊顏色標示符合字串;\n"
+" WHEN 為「always」、「never」或「auto」\n"
+" -U, --binary 不要刪除列尾 CR 字元 (MSDOS/Windows)\n"
+
+#: src/grep.c:2052
+#, c-format
+msgid ""
+"When FILE is '-', read standard input. With no FILE, read '.' if\n"
+"recursive, '-' otherwise. With fewer than two FILEs, assume -h.\n"
+"Exit status is 0 if any line is selected, 1 otherwise;\n"
+"if any error occurs and -q is not given, the exit status is 2.\n"
+msgstr ""
+"如果 <檔案> 為「-」,則讀取標準輸入資料。 當沒有指定 <檔案> 時,如果使用遞迴"
+"模式,\n"
+"則讀取「.」否則讀取「-」。當指定的 <檔案> 數目少於兩個時,則假設是 -h。\n"
+"如果有選到任何一列,則回傳結束狀態 0,否則回傳 1;\n"
+"如果發生任何錯誤且沒有傳入 -q 選項,結束狀態則為 2。\n"
+
+#: src/grep.c:2094
+msgid "conflicting matchers specified"
+msgstr "指定了互相衝突的配對選項"
+
+#: src/grep.c:2101
+msgid "Perl matching not supported in a --disable-perl-regexp build"
+msgstr "--disable-perl-regexp 組建不支援 Perl 比對"
+
+#: src/grep.c:2103
+#, c-format
+msgid "invalid matcher %s"
+msgstr "無效的配對選項 %s"
+
+#: src/grep.c:2538
+msgid "unknown devices method"
+msgstr "未知的裝置方法"
+
+#: src/grep.c:2580
+#, c-format
+msgid "warning: --unix-byte-offsets (-u) is obsolete"
+msgstr "警告:--unix-byte-offsets (-u) 已經廢棄"
+
+#: src/grep.c:2686
+msgid "invalid max count"
+msgstr "無效的最大計次"
+
+#: src/grep.c:2744
+msgid "unknown binary-files type"
+msgstr "未知的二進位檔案類別"
+
+#: src/grep.c:2829
+msgid ""
+"Written by Mike Haertel and others; see\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>."
+msgstr ""
+"由 Mike Haertel 及其他人撰寫而成;請見\n"
+"<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>。"
+
+#: src/pcresearch.c:85
+msgid "failed to allocate memory for the PCRE JIT stack"
+msgstr "為 PCRE JIT 堆疊分配記憶體時出現錯誤"
+
+#: src/pcresearch.c:137
+msgid "-P supports only unibyte and UTF-8 locales"
+msgstr "-P 只支援單位元組和 UTF-8 編碼"
+
+#: src/pcresearch.c:143
+msgid "the -P option only supports a single pattern"
+msgstr "-P 選項只支援單一樣式"
+
+#: src/pcresearch.c:187
+msgid "internal error (should never happen)"
+msgstr "內部錯誤 (不應該出現這個錯誤)"
+
+#: src/pcresearch.c:230
+msgid "exceeded PCRE's line length limit"
+msgstr "已超過 PCRE 的字數上限"
+
+#: src/pcresearch.c:306
+#, c-format
+msgid "%s: memory exhausted"
+msgstr "%s:已用盡記憶體"
+
+#: src/pcresearch.c:310
+#, c-format
+msgid "%s: exhausted PCRE JIT stack"
+msgstr "%s:已用盡 PCRE JIT 堆疊"
+
+#: src/pcresearch.c:315
+#, c-format
+msgid "%s: exceeded PCRE's backtracking limit"
+msgstr "%s:已超過 PCRE 的回溯上限"
+
+#: src/pcresearch.c:319
+#, c-format
+msgid "%s: exceeded PCRE's recursion limit"
+msgstr "%s:超過 PCRE 的遞迴上限"
+
+#: src/pcresearch.c:327
+#, c-format
+msgid "%s: internal PCRE error: %d"
+msgstr "%s:內部 PCRE 錯誤: %d"
+
+#~ msgid "warning: GREP_OPTIONS is deprecated; please use an alias or script"
+#~ msgstr "警告:已經廢除 GREP_OPTIONS;請使用別名或文稿"
+
+#~ msgid "warning: %s: %s"
+#~ msgstr "警告: %s: %s"
+
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "%s 首頁:<https://www.gnu.org/software/%s/>\n"
+
+#~ msgid "invalid %s%s argument '%s'"
+#~ msgstr "無效 %s%s 引數 \"%s\""
+
+#~ msgid "invalid suffix in %s%s argument '%s'"
+#~ msgstr "%s%s 引數 \"%s\" 中有無效的尾綴"
+
+#~ msgid "%s%s argument '%s' too large"
+#~ msgstr "%s%s 引數 \"%s\" 過大"
+
+#~ msgid "Mike Haertel"
+#~ msgstr "Mike Haertel"
+
+#~ msgid "internal error"
+#~ msgstr "內部錯誤"
+
+#~ msgid "%s: option '--%s' doesn't allow an argument\n"
+#~ msgstr "%s: 選項 \"--%s\" 不接受引數\n"
+
+#~ msgid "%s: unrecognized option '--%s'\n"
+#~ msgstr "%s: 未知的選項 \"--%s\"\n"
+
+#~ msgid "%s: option '-W %s' is ambiguous\n"
+#~ msgstr "%s: 選項 \"-W %s\" 不明確\n"
+
+#~ msgid "%s: option '-W %s' doesn't allow an argument\n"
+#~ msgstr "%s: 選項 \"-W %s\" 不接受引數\n"
+
+#~ msgid "%s: option '-W %s' requires an argument\n"
+#~ msgstr "%s: 選項 \"-W %s\" 需要一個引數\n"
+
+#~ msgid "lseek failed"
+#~ msgstr "lseek 失敗"
+
+#~ msgid "PATTERN is, by default, a basic regular expression (BRE).\n"
+#~ msgstr "PATTERN 原則上是一個基本正規表示式 (BRE)。\n"
+
+#~ msgid ""
+#~ "'egrep' means 'grep -E'. 'fgrep' means 'grep -F'.\n"
+#~ "Direct invocation as either 'egrep' or 'fgrep' is deprecated.\n"
+#~ msgstr ""
+#~ "\"egrep\" 等同於 \"grep -E\". \"fgrep\" 等同於 \"grep -F\"。\n"
+#~ "直接呼叫 \"egrep\" 或 \"fgrep\" 的做法已被廢除。\n"
+
+#~ msgid "unescaped ^ or $ not supported with -Pz"
+#~ msgstr "-Pz 不支援未逸出的 ^ 或 $ "
+
+#~ msgid "PATTERN is an extended regular expression (ERE).\n"
+#~ msgstr "PATTERN 是一個延伸正規表示式 (ERE)。\n"
+
+#~ msgid "Invocation as 'egrep' is deprecated; use 'grep -E' instead.\n"
+#~ msgstr "\"egrep\" 的呼叫方式已被廢除; 請用 \"grep -E\" 代替。\n"
+
+#~ msgid "PATTERN is a set of newline-separated fixed strings.\n"
+#~ msgstr "PATTERN 是一組以換列分隔開的固定字串。\n"
+
+#~ msgid "Invocation as 'fgrep' is deprecated; use 'grep -F' instead.\n"
+#~ msgstr "\"fgrep\" 的呼叫方式已被廢除; 請用 \"grep -F\" 代替。\n"
+
+#~ msgid "GNU Grep home page: <%s>\n"
+#~ msgstr "GNU Grep 首頁: <%s>\n"
+
+#~ msgid "%s can only use the %s pattern syntax"
+#~ msgstr "%s 只能使用 %s 樣式的語法"
+
+#~ msgid "the --mmap option has been a no-op since 2010"
+#~ msgstr "--mmap 選項自 2010 年起已經沒有任何效用"
+
+#~ msgid "unfinished repeat count"
+#~ msgstr "未完成的重複計次"
+
+#~ msgid "malformed repeat count"
+#~ msgstr "格式錯誤的重複次數"
+
+#~ msgid "out of memory"
+#~ msgstr "記憶體用盡"
+
+#~ msgid "writing output"
+#~ msgstr "正在輸出"
+
+#~ msgid "Usage: %s [OPTION]... PATTERN [FILE] ...\n"
+#~ msgstr "用法: %s [選項]… 樣板 [檔案]…\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Output control:\n"
+#~ " -m, --max-count=NUM stop after NUM matches\n"
+#~ " -b, --byte-offset print the byte offset with output lines\n"
+#~ " -n, --line-number print line number with output lines\n"
+#~ " --line-buffered flush output on every line\n"
+#~ " -H, --with-filename print the filename for each match\n"
+#~ " -h, --no-filename suppress the prefixing filename on output\n"
+#~ " --label=LABEL print LABEL as filename for standard input\n"
+#~ " -o, --only-matching show only the part of a line matching "
+#~ "PATTERN\n"
+#~ " -q, --quiet, --silent suppress all normal output\n"
+#~ " --binary-files=TYPE assume that binary files are TYPE\n"
+#~ " TYPE is 'binary', 'text', or 'without-match'\n"
+#~ " -a, --text equivalent to --binary-files=text\n"
+#~ " -I equivalent to --binary-files=without-match\n"
+#~ " -d, --directories=ACTION how to handle directories\n"
+#~ " ACTION is 'read', 'recurse', or 'skip'\n"
+#~ " -D, --devices=ACTION how to handle devices, FIFOs and sockets\n"
+#~ " ACTION is 'read' or 'skip'\n"
+#~ " -R, -r, --recursive equivalent to --directories=recurse\n"
+#~ " --include=PATTERN files that match PATTERN will be examined\n"
+#~ " --exclude=PATTERN files that match PATTERN will be skipped.\n"
+#~ " --exclude-from=FILE files that match PATTERN in FILE will be "
+#~ "skipped.\n"
+#~ " -L, --files-without-match only print FILE names containing no match\n"
+#~ " -l, --files-with-matches only print FILE names containing matches\n"
+#~ " -c, --count only print a count of matching lines per "
+#~ "FILE\n"
+#~ " -Z, --null print 0 byte after FILE name\n"
+#~ msgstr ""
+#~ "\n"
+#~ "輸出控制:\n"
+#~ " -m, --max-count=NUM 在顯示 NUM 個結果後停止\n"
+#~ " -b, --byte-offset 只顯示合乎條件資料以 byte 為記數單位的位置\n"
+#~ " -n, --line-number 只顯示合乎條件的行列編號\n"
+#~ " --line-buffered 每一列輸出後都立即顯示\n"
+#~ " -H, --with-filename 每列結果都印出檔案名稱\n"
+#~ " -h, --no-filename 輸出時不顯示前置的檔案名稱\n"
+#~ " --label=LABEL 對於標準輸入, 在顯示檔名處顯示 LABEL\n"
+#~ " -o, --only-matching 只顯示一列資料中與樣板條件相符的部分\n"
+#~ " -q, --quiet, --silent 關閉所有一般輸出的\n"
+#~ " --binary-files=TYPE 設定二進位檔案型別為 TYPE\n"
+#~ " TYPE 是 'binary', 'text', 或 'without-match' "
+#~ "之一\n"
+#~ " -a, --text 等同於 --binary-files=text\n"
+#~ " -I 等同於 --binary-files=without-match\n"
+#~ " -d, --directories=ACTION 處理目錄的方式\n"
+#~ " ACTION 是 'read', 'recurse', 或 'skip' 之一\n"
+#~ " -D, --devices=ACTION 處理裝置檔案, FIFO 以及 socket 的方式\n"
+#~ " ACTION 是 'read' 或 'skip'之一\n"
+#~ " -R, -r, --recursive 等同於 --directories=recurse\n"
+#~ " --include=PATTERN 檔名與 PATTERN 相符的將會被檢驗\n"
+#~ " --exclude=PATTERN 檔名與 PATTERN 相符的將會被略過\n"
+#~ " --exclude-from=FILE 檔名與 FILE 檔案中的 PATTERN 相符的將會被略"
+#~ "過\n"
+#~ " -L, --files-without-match 只列出找不到相符的檔案名稱\n"
+#~ " -l, --files-with-matches 只列出有發現與樣板相符的檔案\n"
+#~ " -c, --count 只針對每的檔案列出該檔案相符個數\n"
+#~ " -Z, --null 在檔名之後輸出一個值為 0 的位元\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Report bugs to <bug-gnu-utils@gnu.org>.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "請將發現的錯誤,以電子郵件寄到 <bug-gnu-utils@gnu.org>\n"
+
+#~ msgid "unknown directories method"
+#~ msgstr "未知的目錄方法"
+
+#~ msgid "%s (GNU grep) %s\n"
+#~ msgstr "%s (GNU grep) %s\n"
+
+#~ msgid ""
+#~ "Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc.\n"
+#~ msgstr "版權所有 1988, 1992-1999, 2000, 2001 自由軟體基金會.\n"
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "這個程式是自由軟體; 請參閱其版權條款. 此軟體沒有\n"
+#~ "沒有任何保証; 也沒有任何保証它使用於某一特定目的.\n"
+
+#~ msgid "The -P and -z options cannot be combined"
+#~ msgstr "參數 -P 以及 參數 -z 並不能結合使用"
+
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s; 不適用的選項 -- %c\n"