Implementation of gettext, .gitignore fix
This commit is contained in:
		
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -22,6 +22,7 @@ Makefile.in.in | ||||
| po/Makevars.template | ||||
| po/POTFILES | ||||
| po/Rules-quot | ||||
| po/stamp-po | ||||
| po/*.header | ||||
| po/*.sed | ||||
| po/*.sin | ||||
|   | ||||
							
								
								
									
										292
									
								
								lib/gettext.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										292
									
								
								lib/gettext.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,292 @@ | ||||
| /* Convenience header for conditional use of GNU <libintl.h>. | ||||
|    Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009-2016 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 of the License, 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 <http://www.gnu.org/licenses/>.  */ | ||||
|  | ||||
| #ifndef _LIBGETTEXT_H | ||||
| #define _LIBGETTEXT_H 1 | ||||
|  | ||||
| /* NLS can be disabled through the configure --disable-nls option.  */ | ||||
| #if ENABLE_NLS | ||||
|  | ||||
| /* Get declarations of GNU message catalog functions.  */ | ||||
| # include <libintl.h> | ||||
|  | ||||
| /* You can set the DEFAULT_TEXT_DOMAIN macro to specify the domain used by | ||||
|    the gettext() and ngettext() macros.  This is an alternative to calling | ||||
|    textdomain(), and is useful for libraries.  */ | ||||
| # ifdef DEFAULT_TEXT_DOMAIN | ||||
| #  undef gettext | ||||
| #  define gettext(Msgid) \ | ||||
|      dgettext (DEFAULT_TEXT_DOMAIN, Msgid) | ||||
| #  undef ngettext | ||||
| #  define ngettext(Msgid1, Msgid2, N) \ | ||||
|      dngettext (DEFAULT_TEXT_DOMAIN, Msgid1, Msgid2, N) | ||||
| # endif | ||||
|  | ||||
| #else | ||||
|  | ||||
| /* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which | ||||
|    chokes if dcgettext is defined as a macro.  So include it now, to make | ||||
|    later inclusions of <locale.h> a NOP.  We don't include <libintl.h> | ||||
|    as well because people using "gettext.h" will not include <libintl.h>, | ||||
|    and also including <libintl.h> would fail on SunOS 4, whereas <locale.h> | ||||
|    is OK.  */ | ||||
| #if defined(__sun) | ||||
| # include <locale.h> | ||||
| #endif | ||||
|  | ||||
| /* Many header files from the libstdc++ coming with g++ 3.3 or newer include | ||||
|    <libintl.h>, which chokes if dcgettext is defined as a macro.  So include | ||||
|    it now, to make later inclusions of <libintl.h> a NOP.  */ | ||||
| #if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3) | ||||
| # include <cstdlib> | ||||
| # if (__GLIBC__ >= 2 && !defined __UCLIBC__) || _GLIBCXX_HAVE_LIBINTL_H | ||||
| #  include <libintl.h> | ||||
| # endif | ||||
| #endif | ||||
|  | ||||
| /* Disabled NLS. | ||||
|    The casts to 'const char *' serve the purpose of producing warnings | ||||
|    for invalid uses of the value returned from these functions. | ||||
|    On pre-ANSI systems without 'const', the config.h file is supposed to | ||||
|    contain "#define const".  */ | ||||
| # undef gettext | ||||
| # define gettext(Msgid) ((const char *) (Msgid)) | ||||
| # undef dgettext | ||||
| # define dgettext(Domainname, Msgid) ((void) (Domainname), gettext (Msgid)) | ||||
| # undef dcgettext | ||||
| # define dcgettext(Domainname, Msgid, Category) \ | ||||
|     ((void) (Category), dgettext (Domainname, Msgid)) | ||||
| # undef ngettext | ||||
| # define ngettext(Msgid1, Msgid2, N) \ | ||||
|     ((N) == 1 \ | ||||
|      ? ((void) (Msgid2), (const char *) (Msgid1)) \ | ||||
|      : ((void) (Msgid1), (const char *) (Msgid2))) | ||||
| # undef dngettext | ||||
| # define dngettext(Domainname, Msgid1, Msgid2, N) \ | ||||
|     ((void) (Domainname), ngettext (Msgid1, Msgid2, N)) | ||||
| # undef dcngettext | ||||
| # define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \ | ||||
|     ((void) (Category), dngettext (Domainname, Msgid1, Msgid2, N)) | ||||
| # undef textdomain | ||||
| # define textdomain(Domainname) ((const char *) (Domainname)) | ||||
| # undef bindtextdomain | ||||
| # define bindtextdomain(Domainname, Dirname) \ | ||||
|     ((void) (Domainname), (const char *) (Dirname)) | ||||
| # undef bind_textdomain_codeset | ||||
| # define bind_textdomain_codeset(Domainname, Codeset) \ | ||||
|     ((void) (Domainname), (const char *) (Codeset)) | ||||
|  | ||||
| #endif | ||||
|  | ||||
| /* Prefer gnulib's setlocale override over libintl's setlocale override.  */ | ||||
| #ifdef GNULIB_defined_setlocale | ||||
| # undef setlocale | ||||
| # define setlocale rpl_setlocale | ||||
| #endif | ||||
|  | ||||
| /* A pseudo function call that serves as a marker for the automated | ||||
|    extraction of messages, but does not call gettext().  The run-time | ||||
|    translation is done at a different place in the code. | ||||
|    The argument, String, should be a literal string.  Concatenated strings | ||||
|    and other string expressions won't work. | ||||
|    The macro's expansion is not parenthesized, so that it is suitable as | ||||
|    initializer for static 'char[]' or 'const char[]' variables.  */ | ||||
| #define gettext_noop(String) String | ||||
|  | ||||
| /* The separator between msgctxt and msgid in a .mo file.  */ | ||||
| #define GETTEXT_CONTEXT_GLUE "\004" | ||||
|  | ||||
| /* Pseudo function calls, taking a MSGCTXT and a MSGID instead of just a | ||||
|    MSGID.  MSGCTXT and MSGID must be string literals.  MSGCTXT should be | ||||
|    short and rarely need to change. | ||||
|    The letter 'p' stands for 'particular' or 'special'.  */ | ||||
| #ifdef DEFAULT_TEXT_DOMAIN | ||||
| # define pgettext(Msgctxt, Msgid) \ | ||||
|    pgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) | ||||
| #else | ||||
| # define pgettext(Msgctxt, Msgid) \ | ||||
|    pgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) | ||||
| #endif | ||||
| #define dpgettext(Domainname, Msgctxt, Msgid) \ | ||||
|   pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) | ||||
| #define dcpgettext(Domainname, Msgctxt, Msgid, Category) \ | ||||
|   pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, Category) | ||||
| #ifdef DEFAULT_TEXT_DOMAIN | ||||
| # define npgettext(Msgctxt, Msgid, MsgidPlural, N) \ | ||||
|    npgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) | ||||
| #else | ||||
| # define npgettext(Msgctxt, Msgid, MsgidPlural, N) \ | ||||
|    npgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) | ||||
| #endif | ||||
| #define dnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N) \ | ||||
|   npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) | ||||
| #define dcnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N, Category) \ | ||||
|   npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, Category) | ||||
|  | ||||
| #ifdef __GNUC__ | ||||
| __inline | ||||
| #else | ||||
| #ifdef __cplusplus | ||||
| inline | ||||
| #endif | ||||
| #endif | ||||
| static const char * | ||||
| pgettext_aux (const char *domain, | ||||
|               const char *msg_ctxt_id, const char *msgid, | ||||
|               int category) | ||||
| { | ||||
|   const char *translation = dcgettext (domain, msg_ctxt_id, category); | ||||
|   if (translation == msg_ctxt_id) | ||||
|     return msgid; | ||||
|   else | ||||
|     return translation; | ||||
| } | ||||
|  | ||||
| #ifdef __GNUC__ | ||||
| __inline | ||||
| #else | ||||
| #ifdef __cplusplus | ||||
| inline | ||||
| #endif | ||||
| #endif | ||||
| static const char * | ||||
| npgettext_aux (const char *domain, | ||||
|                const char *msg_ctxt_id, const char *msgid, | ||||
|                const char *msgid_plural, unsigned long int n, | ||||
|                int category) | ||||
| { | ||||
|   const char *translation = | ||||
|     dcngettext (domain, msg_ctxt_id, msgid_plural, n, category); | ||||
|   if (translation == msg_ctxt_id || translation == msgid_plural) | ||||
|     return (n == 1 ? msgid : msgid_plural); | ||||
|   else | ||||
|     return translation; | ||||
| } | ||||
|  | ||||
| /* The same thing extended for non-constant arguments.  Here MSGCTXT and MSGID | ||||
|    can be arbitrary expressions.  But for string literals these macros are | ||||
|    less efficient than those above.  */ | ||||
|  | ||||
| #include <string.h> | ||||
|  | ||||
| #if (((__GNUC__ >= 3 || __GNUG__ >= 2) && !defined __STRICT_ANSI__) \ | ||||
|      /* || __STDC_VERSION__ >= 199901L */ ) | ||||
| # define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS 1 | ||||
| #else | ||||
| # define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS 0 | ||||
| #endif | ||||
|  | ||||
| #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS | ||||
| #include <stdlib.h> | ||||
| #endif | ||||
|  | ||||
| #define pgettext_expr(Msgctxt, Msgid) \ | ||||
|   dcpgettext_expr (NULL, Msgctxt, Msgid, LC_MESSAGES) | ||||
| #define dpgettext_expr(Domainname, Msgctxt, Msgid) \ | ||||
|   dcpgettext_expr (Domainname, Msgctxt, Msgid, LC_MESSAGES) | ||||
|  | ||||
| #ifdef __GNUC__ | ||||
| __inline | ||||
| #else | ||||
| #ifdef __cplusplus | ||||
| inline | ||||
| #endif | ||||
| #endif | ||||
| static const char * | ||||
| dcpgettext_expr (const char *domain, | ||||
|                  const char *msgctxt, const char *msgid, | ||||
|                  int category) | ||||
| { | ||||
|   size_t msgctxt_len = strlen (msgctxt) + 1; | ||||
|   size_t msgid_len = strlen (msgid) + 1; | ||||
|   const char *translation; | ||||
| #if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS | ||||
|   char msg_ctxt_id[msgctxt_len + msgid_len]; | ||||
| #else | ||||
|   char buf[1024]; | ||||
|   char *msg_ctxt_id = | ||||
|     (msgctxt_len + msgid_len <= sizeof (buf) | ||||
|      ? buf | ||||
|      : (char *) malloc (msgctxt_len + msgid_len)); | ||||
|   if (msg_ctxt_id != NULL) | ||||
| #endif | ||||
|     { | ||||
|       int found_translation; | ||||
|       memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1); | ||||
|       msg_ctxt_id[msgctxt_len - 1] = '\004'; | ||||
|       memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len); | ||||
|       translation = dcgettext (domain, msg_ctxt_id, category); | ||||
|       found_translation = (translation != msg_ctxt_id); | ||||
| #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS | ||||
|       if (msg_ctxt_id != buf) | ||||
|         free (msg_ctxt_id); | ||||
| #endif | ||||
|       if (found_translation) | ||||
|         return translation; | ||||
|     } | ||||
|   return msgid; | ||||
| } | ||||
|  | ||||
| #define npgettext_expr(Msgctxt, Msgid, MsgidPlural, N) \ | ||||
|   dcnpgettext_expr (NULL, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES) | ||||
| #define dnpgettext_expr(Domainname, Msgctxt, Msgid, MsgidPlural, N) \ | ||||
|   dcnpgettext_expr (Domainname, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES) | ||||
|  | ||||
| #ifdef __GNUC__ | ||||
| __inline | ||||
| #else | ||||
| #ifdef __cplusplus | ||||
| inline | ||||
| #endif | ||||
| #endif | ||||
| static const char * | ||||
| dcnpgettext_expr (const char *domain, | ||||
|                   const char *msgctxt, const char *msgid, | ||||
|                   const char *msgid_plural, unsigned long int n, | ||||
|                   int category) | ||||
| { | ||||
|   size_t msgctxt_len = strlen (msgctxt) + 1; | ||||
|   size_t msgid_len = strlen (msgid) + 1; | ||||
|   const char *translation; | ||||
| #if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS | ||||
|   char msg_ctxt_id[msgctxt_len + msgid_len]; | ||||
| #else | ||||
|   char buf[1024]; | ||||
|   char *msg_ctxt_id = | ||||
|     (msgctxt_len + msgid_len <= sizeof (buf) | ||||
|      ? buf | ||||
|      : (char *) malloc (msgctxt_len + msgid_len)); | ||||
|   if (msg_ctxt_id != NULL) | ||||
| #endif | ||||
|     { | ||||
|       int found_translation; | ||||
|       memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1); | ||||
|       msg_ctxt_id[msgctxt_len - 1] = '\004'; | ||||
|       memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len); | ||||
|       translation = dcngettext (domain, msg_ctxt_id, msgid_plural, n, category); | ||||
|       found_translation = !(translation == msg_ctxt_id || translation == msgid_plural); | ||||
| #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS | ||||
|       if (msg_ctxt_id != buf) | ||||
|         free (msg_ctxt_id); | ||||
| #endif | ||||
|       if (found_translation) | ||||
|         return translation; | ||||
|     } | ||||
|   return (n == 1 ? msgid : msgid_plural); | ||||
| } | ||||
|  | ||||
| #endif /* _LIBGETTEXT_H */ | ||||
							
								
								
									
										2
									
								
								po/LINGUAS
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								po/LINGUAS
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | ||||
| # Languages | ||||
| de | ||||
							
								
								
									
										53
									
								
								po/Makevars
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								po/Makevars
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,53 @@ | ||||
| # 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_ | ||||
|  | ||||
| # 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 = Bandie <bandie@chaospott.de> | ||||
|  | ||||
| # 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 = https://github.com/pampanic/pam_panic | ||||
|  | ||||
| # 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 = | ||||
							
								
								
									
										5
									
								
								po/POTFILES.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								po/POTFILES.in
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| # The sources which contains output strings | ||||
| src/pam_panic/pam_panic.c | ||||
| src/pam_panic/pam_panic_authdevice.c | ||||
| src/pam_panic/pam_panic_password.c | ||||
| src/pam_panic_pw/pam_panic_pw.c | ||||
							
								
								
									
										97
									
								
								po/de.po
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										97
									
								
								po/de.po
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,97 @@ | ||||
| # German translations for pam_panic package | ||||
| # German translation for pam_panic. | ||||
| # Copyright (C) 2018 Bandie <bandie@chaospott.de> | ||||
| # This file is distributed under the same license as the pam_panic package. | ||||
| #  <bandie@chaospott.de>, 2018. | ||||
| # | ||||
| msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: pam_panic 0.2.0\n" | ||||
| "Report-Msgid-Bugs-To: https://github.com/pampanic/pam_panic\n" | ||||
| "POT-Creation-Date: 2018-09-21 22:52+0200\n" | ||||
| "PO-Revision-Date: 2018-09-20 21:03+0200\n" | ||||
| "Last-Translator:  <bandie@chaospott.de>\n" | ||||
| "Language-Team: German\n" | ||||
| "Language: de\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" | ||||
|  | ||||
| #: src/pam_panic/pam_panic.c:39 | ||||
| msgid "CRITICAL: Problem with regcomp." | ||||
| msgstr "CRITICAL: Problem mit regcomp." | ||||
|  | ||||
| #: src/pam_panic/pam_panic.c:116 | ||||
| msgid "" | ||||
| "ERROR: Arguments invalid. Note that \"allow\" and \"reject\" must have a " | ||||
| "valid GPT UUID." | ||||
| msgstr "" | ||||
| "ERROR: Argument ungültig. Hinweis: \"allow\" und \"reject\" müssen eine " | ||||
| "valide GPT UUID aufweisen." | ||||
|  | ||||
| #: src/pam_panic/pam_panic.c:152 | ||||
| msgid "ALERT for argument \"serious\": Device doesn't exist." | ||||
| msgstr "ALERT für Argument \"serious\": Gerät existiert nicht." | ||||
|  | ||||
| #: src/pam_panic/pam_panic_authdevice.c:37 | ||||
| msgid "Key? " | ||||
| msgstr "Schlüssel? " | ||||
|  | ||||
| #: src/pam_panic/pam_panic_authdevice.c:39 | ||||
| msgid "Couldn't identify any key after 3 tries." | ||||
| msgstr "Konnte keinen Schlüssel nach 3 Versuchen identifizieren." | ||||
|  | ||||
| #: src/pam_panic/pam_panic_password.c:31 | ||||
| msgid "ALERT for passwort option: No password file detected." | ||||
| msgstr "ALERT für Passwort-Option: Keine Passwort-Datei gefunden." | ||||
|  | ||||
| #: src/pam_panic/pam_panic_password.c:36 | ||||
| msgid "ERROR: Couldn't open password file." | ||||
| msgstr "ERROR: Konnte Passwort-Datei nicht öffnen." | ||||
|  | ||||
| #: src/pam_panic/pam_panic_password.c:48 | ||||
| msgid "CRITICAL: Password file is corrupt!" | ||||
| msgstr "CRITICAL: Passwort-Datei ist beschädigt!" | ||||
|  | ||||
| #: src/pam_panic/pam_panic_password.c:93 | ||||
| msgid "Password: " | ||||
| msgstr "Passwort: " | ||||
|  | ||||
| #: src/pam_panic_pw/pam_panic_pw.c:28 | ||||
| #, c-format | ||||
| msgid "ERROR opening file!\n" | ||||
| msgstr "" | ||||
|  | ||||
| #: src/pam_panic_pw/pam_panic_pw.c:64 | ||||
| msgid "Key password: " | ||||
| msgstr "Schlüsselpasswort: " | ||||
|  | ||||
| #: src/pam_panic_pw/pam_panic_pw.c:65 | ||||
| msgid "Panic password: " | ||||
| msgstr "Panikpasswort: " | ||||
|  | ||||
| #: src/pam_panic_pw/pam_panic_pw.c:66 | ||||
| msgid "Retype key password: " | ||||
| msgstr "Schlüsselpasswort wiederholen: " | ||||
|  | ||||
| #: src/pam_panic_pw/pam_panic_pw.c:67 | ||||
| msgid "Retype panic password: " | ||||
| msgstr "Panikpasswort wiederholen: " | ||||
|  | ||||
| #: src/pam_panic_pw/pam_panic_pw.c:73 | ||||
| #, c-format | ||||
| msgid "Please run this program under root. Write access to %s is mandatory.\n" | ||||
| msgstr "" | ||||
| "Dieses Programm muss als root ausgeführt werden. Schreibrechte auf %s sind " | ||||
| "dabei notwendig.\n" | ||||
|  | ||||
| #: src/pam_panic_pw/pam_panic_pw.c:96 | ||||
| #, c-format | ||||
| msgid "Didn't work. Bye.\n" | ||||
| msgstr "Hat nicht funktioniert. Tschüss.\n" | ||||
|  | ||||
| #: src/pam_panic_pw/pam_panic_pw.c:99 | ||||
| #, c-format | ||||
| msgid "Password didn't match. Try again.\n" | ||||
| msgstr "Passwort stimmt nicht überein. Bitte noch einmal versuchen.\n" | ||||
							
								
								
									
										92
									
								
								po/pam_panic.pot
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										92
									
								
								po/pam_panic.pot
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,92 @@ | ||||
| # SOME DESCRIPTIVE TITLE. | ||||
| # Copyright (C) YEAR Bandie <bandie@chaospott.de> | ||||
| # This file is distributed under the same license as the pam_panic package. | ||||
| # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. | ||||
| # | ||||
| #, fuzzy | ||||
| msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: pam_panic 0.2.0\n" | ||||
| "Report-Msgid-Bugs-To: https://github.com/pampanic/pam_panic\n" | ||||
| "POT-Creation-Date: 2018-09-21 22:55+0200\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" | ||||
|  | ||||
| #: src/pam_panic/pam_panic.c:39 | ||||
| msgid "CRITICAL: Problem with regcomp." | ||||
| msgstr "" | ||||
|  | ||||
| #: src/pam_panic/pam_panic.c:116 | ||||
| msgid "" | ||||
| "ERROR: Arguments invalid. Note that \"allow\" and \"reject\" must have a " | ||||
| "valid GPT UUID." | ||||
| msgstr "" | ||||
|  | ||||
| #: src/pam_panic/pam_panic.c:152 | ||||
| msgid "ALERT for argument \"serious\": Device doesn't exist." | ||||
| msgstr "" | ||||
|  | ||||
| #: src/pam_panic/pam_panic_authdevice.c:37 | ||||
| msgid "Key? " | ||||
| msgstr "" | ||||
|  | ||||
| #: src/pam_panic/pam_panic_authdevice.c:39 | ||||
| msgid "Couldn't identify any key after 3 tries." | ||||
| msgstr "" | ||||
|  | ||||
| #: src/pam_panic/pam_panic_password.c:31 | ||||
| msgid "ALERT for passwort option: No password file detected." | ||||
| msgstr "" | ||||
|  | ||||
| #: src/pam_panic/pam_panic_password.c:36 | ||||
| msgid "ERROR: Couldn't open password file." | ||||
| msgstr "" | ||||
|  | ||||
| #: src/pam_panic/pam_panic_password.c:48 | ||||
| msgid "CRITICAL: Password file is corrupt!" | ||||
| msgstr "" | ||||
|  | ||||
| #: src/pam_panic/pam_panic_password.c:93 | ||||
| msgid "Password: " | ||||
| msgstr "" | ||||
|  | ||||
| #: src/pam_panic_pw/pam_panic_pw.c:28 | ||||
| #, c-format | ||||
| msgid "ERROR opening file!\n" | ||||
| msgstr "" | ||||
|  | ||||
| #: src/pam_panic_pw/pam_panic_pw.c:64 | ||||
| msgid "Key password: " | ||||
| msgstr "" | ||||
|  | ||||
| #: src/pam_panic_pw/pam_panic_pw.c:65 | ||||
| msgid "Panic password: " | ||||
| msgstr "" | ||||
|  | ||||
| #: src/pam_panic_pw/pam_panic_pw.c:66 | ||||
| msgid "Retype key password: " | ||||
| msgstr "" | ||||
|  | ||||
| #: src/pam_panic_pw/pam_panic_pw.c:67 | ||||
| msgid "Retype panic password: " | ||||
| msgstr "" | ||||
|  | ||||
| #: src/pam_panic_pw/pam_panic_pw.c:73 | ||||
| #, c-format | ||||
| msgid "Please run this program under root. Write access to %s is mandatory.\n" | ||||
| msgstr "" | ||||
|  | ||||
| #: src/pam_panic_pw/pam_panic_pw.c:96 | ||||
| #, c-format | ||||
| msgid "Didn't work. Bye.\n" | ||||
| msgstr "" | ||||
|  | ||||
| #: src/pam_panic_pw/pam_panic_pw.c:99 | ||||
| #, c-format | ||||
| msgid "Password didn't match. Try again.\n" | ||||
| msgstr "" | ||||
		Reference in New Issue
	
	Block a user