# Irish translations for sed
# Copyright (C) 2003, 2004 Free Software Foundation, Inc.
# Kevin Patrick Scannell <scannell@SLU.EDU>, 2003, 2004, 2006, 2008.
#
msgid ""
msgstr ""
"Project-Id-Version: sed 4.2.0\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
"POT-Creation-Date: 2009-06-27 15:08+0200\n"
"PO-Revision-Date: 2008-01-13 11:04-0500\n"
"Last-Translator: Kevin Scannell <kscanne@gmail.com>\n"
"Language-Team: Irish <gaeilge-gnulinux@lists.sourceforge.net>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : (n>2 && n<7) ? 2 :"
"(n>6 && n<11) ? 3 : 4;\n"

#: sed/compile.c:161
msgid "multiple `!'s"
msgstr "`!'-anna iomadúla"

#: sed/compile.c:162
msgid "unexpected `,'"
msgstr "`,' gan choinne"

#: sed/compile.c:163
msgid "invalid usage of +N or ~N as first address"
msgstr "ní féidir +N nó ~N a úsáid mar an chéad seoladh"

#: sed/compile.c:164
msgid "unmatched `{'"
msgstr "`{' corr"

#: sed/compile.c:165
msgid "unexpected `}'"
msgstr "`}' gan choinne"

#: sed/compile.c:166
msgid "extra characters after command"
msgstr "carachtair breise i ndiaidh an ordaithe"

#: sed/compile.c:167
msgid "expected \\ after `a', `c' or `i'"
msgstr "bhíothas ag súil le \\ i ndiaidh `a', `c', nó `i'"

#: sed/compile.c:168
msgid "`}' doesn't want any addresses"
msgstr "Níl fáilte roimh sheoltaí le `}'"

#: sed/compile.c:169
msgid ": doesn't want any addresses"
msgstr "Níl fáilte roimh sheoltaí le `:'"

#: sed/compile.c:170
msgid "comments don't accept any addresses"
msgstr "níl fáilte roimh sheoltaí le nótaí tráchta"

#: sed/compile.c:171
msgid "missing command"
msgstr "ordú ar iarraidh"

#: sed/compile.c:172
msgid "command only uses one address"
msgstr "ní úsáidtear an t-ordú ach seoladh amháin"

#: sed/compile.c:173
msgid "unterminated address regex"
msgstr "seoladh regex gan chríochnú"

#: sed/compile.c:174
msgid "unterminated `s' command"
msgstr "ordú `s' gan chríochnú"

#: sed/compile.c:175
msgid "unterminated `y' command"
msgstr "ordú `y' gan chríochnú"

#: sed/compile.c:176
msgid "unknown option to `s'"
msgstr "rogha anaithnid i ndiaidh `s'"

#: sed/compile.c:177
msgid "multiple `p' options to `s' command"
msgstr "an iomarca roghanna `p' i ndiaidh `s'"

#: sed/compile.c:178
msgid "multiple `g' options to `s' command"
msgstr "an iomarca roghanna `g' i ndiaidh `s'"

#: sed/compile.c:179
msgid "multiple number options to `s' command"
msgstr "an iomarca roghanna uimhriúla i ndiaidh `s'"

#: sed/compile.c:180
msgid "number option to `s' command may not be zero"
msgstr "ní cheadaítear nialas mar rogha uimhriúil leis an ordú `s'"

#: sed/compile.c:181
msgid "strings for `y' command are different lengths"
msgstr "níl aon fhad amháin ar na teaghráin leis an ordú `y'"

#: sed/compile.c:182
msgid "delimiter character is not a single-byte character"
msgstr "tá an teormharcóir ina charachtar ilbheart"

#: sed/compile.c:183
msgid "expected newer version of sed"
msgstr "bhíothas ag súil le leagan `sed' níos úire"

#: sed/compile.c:184
msgid "invalid usage of line address 0"
msgstr "ní féidir an seoladh líne 0 a úsáid"

#: sed/compile.c:185
#, c-format
msgid "unknown command: `%c'"
msgstr "ordú anaithnid: `%c'"

#: sed/compile.c:208
#, c-format
msgid "%s: file %s line %lu: %s\n"
msgstr "%s: comhad %s líne %lu: %s\n"

#: sed/compile.c:211
#, c-format
msgid "%s: -e expression #%lu, char %lu: %s\n"
msgstr "%s: -e slonn #%lu, char %lu: %s\n"

#: sed/compile.c:1665
#, c-format
msgid "can't find label for jump to `%s'"
msgstr "níl aon fháil ar an lipéad `%s' don léim"

#: sed/execute.c:709
#, c-format
msgid "%s: can't read %s: %s\n"
msgstr "%s: ní féidir %s a léamh: %s\n"

# Irish is nice this way, no initial mutation on 'rud'! -- KPS
# Include all three b/c I'm using template version of "Plural-Forms"
#: sed/execute.c:740
#, c-format
msgid "couldn't edit %s: is a terminal"
msgstr "níorbh fhéidir %s a chur in eagar; is teirminéal é"

#: sed/execute.c:745
#, c-format
msgid "couldn't edit %s: not a regular file"
msgstr "níorbh fhéidir %s a chur in eagar: ní gnáthchomhad é"

#: sed/execute.c:757
#, c-format
msgid "%s: warning: failed to set default file creation context to %s: %s"
msgstr ""

#: sed/execute.c:764
#, c-format
msgid "%s: warning: failed to get security context of %s: %s"
msgstr ""

#: sed/execute.c:783 sed/utils.c:227
#, c-format
msgid "couldn't open temporary file %s: %s"
msgstr "níorbh fhéidir an comhad sealadach %s a oscailt: %s"

#: sed/execute.c:1317 sed/execute.c:1497
msgid "error in subprocess"
msgstr "earráid i bhfo-phróiseas"

#: sed/execute.c:1319
msgid "option `e' not supported"
msgstr "níl an rogha `e' ar fáil"

#: sed/execute.c:1499
msgid "`e' command not supported"
msgstr "níl an t-ordú `e' ar fáil"

#: sed/execute.c:1843
msgid "no input files"
msgstr "gan inchomhad"

#: sed/regexp.c:41
msgid "no previous regular expression"
msgstr "níl aon slonn ionadaíochta roimhe seo"

#: sed/regexp.c:42
msgid "cannot specify modifiers on empty regexp"
msgstr "ní féidir mionathraitheoirí a shonrú le slonn bán"

#: sed/regexp.c:131
#, c-format
msgid "invalid reference \\%d on `s' command's RHS"
msgstr "tagairt neamhbhailí \\%d ar dheis ordú `s'"

#: sed/sed.c:97
#, c-format
msgid ""
"GNU sed home page: <http://www.gnu.org/software/sed/>.\n"
"General help using GNU software: <http://www.gnu.org/gethelp/>.\n"
msgstr ""

#: sed/sed.c:104
#, fuzzy, c-format
msgid ""
"E-mail bug reports to: <%s>.\n"
"Be sure to include the word ``%s'' somewhere in the ``Subject:'' field.\n"
msgstr ""
"Seol tuairiscí fabhtanna chuig: %s .\n"
"Cuir an focal ``%s'' áit éigin sa líne ``Subject:'' le do thoil.\n"

#: sed/sed.c:117
msgid ""
"  -R, --regexp-perl\n"
"                 use Perl 5's regular expressions syntax in the script.\n"
msgstr ""
"  -R, --regexp-perl\n"
"                 bain úsáid as sloinn ionadaíochta atá ag Perl 5.\n"

#: sed/sed.c:122
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
"\n"
msgstr ""
"Úsáid: %s [ROGHA]... {script-mura-bhfuil-script-eile} [inchomhad]...\n"
"\n"

#: sed/sed.c:126
#, c-format
msgid ""
"  -n, --quiet, --silent\n"
"                 suppress automatic printing of pattern space\n"
msgstr ""
"  -n, --quiet, --silent\n"
"                 stop priontáil uathoibríoch den spás patrúin\n"

#: sed/sed.c:128
#, c-format
msgid ""
"  -e script, --expression=script\n"
"                 add the script to the commands to be executed\n"
msgstr ""
"  -e script, --expression=script\n"
"                 cuir an script leis na horduithe le rith\n"

#: sed/sed.c:130
#, c-format
msgid ""
"  -f script-file, --file=script-file\n"
"                 add the contents of script-file to the commands to be "
"executed\n"
msgstr ""
"  -f comhad-script, --file=comhad-script\n"
"                 cuir na línte i `comhad-script' leis na horduithe le rith\n"

#: sed/sed.c:133
#, c-format
msgid ""
"  --follow-symlinks\n"
"                 follow symlinks when processing in place\n"
msgstr ""
"  --follow-symlinks\n"
"                 lean naisc shiombalacha má phróiseáiltear an comhad san\n"
"                  áit a bhfuil sé\n"

#: sed/sed.c:136
#, c-format
msgid ""
"  -i[SUFFIX], --in-place[=SUFFIX]\n"
"                 edit files in place (makes backup if extension supplied)\n"
msgstr ""
"  -i[IARMHÍR], --in-place[=IARMHÍR]\n"
"                 cuir eagar ar chomhaid san áit a bhfuil siad (agus déan\n"
"                 cúltaca má thugtar IARMHÍR)\n"

#: sed/sed.c:139
#, c-format
msgid ""
"  -b, --binary\n"
"                 open files in binary mode (CR+LFs are not processed "
"specially)\n"
msgstr ""
"  -b, --binary\n"
"                 oscail comhaid sa mhód dénártha (ní phróiseáiltear CR"
"+LFanna\n"
"                    ar bhealach speisialta)\n"

#: sed/sed.c:142
#, c-format
msgid ""
"  -l N, --line-length=N\n"
"                 specify the desired line-wrap length for the `l' command\n"
msgstr ""
"  -l N, --line-length=N\n"
"                 ceap an fad timfhillte le haghaidh an ordaithe `l'\n"

#: sed/sed.c:144
#, c-format
msgid ""
"  --posix\n"
"                 disable all GNU extensions.\n"
msgstr ""
"  --posix\n"
"                 díchumasaigh gach feabhsúchán GNU.\n"

#: sed/sed.c:146
#, c-format
msgid ""
"  -r, --regexp-extended\n"
"                 use extended regular expressions in the script.\n"
msgstr ""
"  -r, --regexp-extended\n"
"                 úsáid sloinn ionadaíochta feabhsaithe sa script.\n"

#: sed/sed.c:151
#, c-format
msgid ""
"  -s, --separate\n"
"                 consider files as separate rather than as a single "
"continuous\n"
"                 long stream.\n"
msgstr ""
"  -s, --separate\n"
"                 féach ar chomhaid ina leith seachas mar shruth leanúnach.\n"

#: sed/sed.c:154
#, c-format
msgid ""
"  -u, --unbuffered\n"
"                 load minimal amounts of data from the input files and "
"flush\n"
"                 the output buffers more often\n"
msgstr ""
"  -u, --unbuffered\n"
"                 luchtaigh bloic bheaga ó na comhaid ionchuir agus "
"sruthlaigh\n"
"                 na maoláin aschuir níos minice\n"

#: sed/sed.c:157
#, c-format
msgid "      --help     display this help and exit\n"
msgstr "      --help     taispeáin an chabhair seo agus scoir\n"

#: sed/sed.c:158
#, c-format
msgid "      --version  output version information and exit\n"
msgstr "      --version  taispeáin eolas faoin leagan agus scoir\n"

#: sed/sed.c:159
#, c-format
msgid ""
"\n"
"If no -e, --expression, -f, or --file option is given, then the first\n"
"non-option argument is taken as the sed script to interpret.  All\n"
"remaining arguments are names of input files; if no input files are\n"
"specified, then the standard input is read.\n"
"\n"
msgstr ""
"\n"
"Mura bhfuil rogha -e, --expression, -f, nó --file ann, glacfar an chéad\n"
"argóint nach raibh ina rogha mar an script `sed' a léirmhíniú.  Tá gach\n"
"argóint eile an t-ainm do chomhad ionchuir; mura bhfuil comhad ann\n"
"léigh ón ghnáth-ionchur.\n"
"\n"

#: sed/sed.c:315
#, c-format
msgid "super-sed version %s\n"
msgstr "super-sed, leagan %s\n"

#: sed/sed.c:316
#, c-format
msgid ""
"based on GNU sed version %s\n"
"\n"
msgstr ""
"bunaithe ar GNU sed, leagan %s\n"
"\n"

#: sed/sed.c:318
#, c-format
msgid "GNU sed version %s\n"
msgstr "GNU sed, leagan %s\n"

#: sed/sed.c:320
#, fuzzy, c-format
msgid ""
"Copyright (C) %d Free Software Foundation, Inc.\n"
"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"
"to the extent permitted by law.\n"
msgstr ""
"%s\n"
"Is saorbhogearra an ríomhchlár seo; féach ar an bhunchó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, an oiread atá ceadaithe\n"
"de réir dlí.\n"

#: sed/utils.c:93 sed/utils.c:438
#, c-format
msgid "cannot remove %s: %s"
msgstr "ní féidir %s a scriosadh: %s"

#: sed/utils.c:163
#, c-format
msgid "couldn't open file %s: %s"
msgstr "níorbh fhéidir an comhad %s a oscailt: %s"

#: sed/utils.c:186
#, c-format
msgid "couldn't attach to %s: %s"
msgstr "níorbh fhéidir ceangal le %s: %s"

# Irish is nice this way, no initial mutation on 'rud'! -- KPS
# Include all three b/c I'm using template version of "Plural-Forms"
#: sed/utils.c:245
#, c-format
msgid "couldn't write %d item to %s: %s"
msgid_plural "couldn't write %d items to %s: %s"
msgstr[0] "níorbh fhéidir %d rud a scríobh i %s: %s"
msgstr[1] "níorbh fhéidir %d rud a scríobh i %s: %s"
msgstr[2] "níorbh fhéidir %d rud a scríobh i %s: %s"
msgstr[3] "níorbh fhéidir %d rud a scríobh i %s: %s"
msgstr[4] "níorbh fhéidir %d rud a scríobh i %s: %s"

#: sed/utils.c:260 sed/utils.c:276
#, c-format
msgid "read error on %s: %s"
msgstr "earráid ag léamh %s: %s"

#: sed/utils.c:378
#, c-format
msgid "couldn't follow symlink %s: %s"
msgstr "níorbh fhéidir nasc siombalach %s a leanúint: %s"

#: sed/utils.c:412
#, c-format
msgid "cannot stat %s: %s"
msgstr "ní féidir %s a 'stat': %s"

#: sed/utils.c:443
#, c-format
msgid "cannot rename %s: %s"
msgstr "ní féidir %s a athainmniú: %s"

#: lib/regcomp.c:134
msgid "Success"
msgstr "D'éirigh leis"

#: lib/regcomp.c:137
msgid "No match"
msgstr "Níl a leithéid ann"

#: lib/regcomp.c:140
msgid "Invalid regular expression"
msgstr "Slonn ionadaíochta neamhbhailí"

#: lib/regcomp.c:143
msgid "Invalid collation character"
msgstr "Carachtar neamhbhailí comhordaithe"

#: lib/regcomp.c:146
msgid "Invalid character class name"
msgstr "Ainm neamhbhailí ar aicme charachtar"

#: lib/regcomp.c:149
msgid "Trailing backslash"
msgstr "Cúlslais ag deireadh"

# coinage - KPS
#: lib/regcomp.c:152
msgid "Invalid back reference"
msgstr "Cúltagairt neamhbhailí"

#: lib/regcomp.c:155
msgid "Unmatched [ or [^"
msgstr "[ nó [^ corr"

#: lib/regcomp.c:158
msgid "Unmatched ( or \\("
msgstr "( nó \\( corr"

#: lib/regcomp.c:161
msgid "Unmatched \\{"
msgstr "\\{ corr"

#: lib/regcomp.c:164
msgid "Invalid content of \\{\\}"
msgstr "Ábhar neamhbhailí idir \\{\\}"

#: lib/regcomp.c:167
msgid "Invalid range end"
msgstr "Deireadh raoin neamhbhailí"

#: lib/regcomp.c:170
msgid "Memory exhausted"
msgstr "Cuimhne ídithe"

#: lib/regcomp.c:173
msgid "Invalid preceding regular expression"
msgstr "Is neamhbhailí an slonn ionadaíochta roimhe seo"

#: lib/regcomp.c:176
msgid "Premature end of regular expression"
msgstr "Deireadh le slonn ionadaíochta gan choinne"

#: lib/regcomp.c:179
msgid "Regular expression too big"
msgstr "Slonn ionadaíochta rómhór"

#: lib/regcomp.c:182
msgid "Unmatched ) or \\)"
msgstr ") nó \\) corr"

#: lib/regcomp.c:703
msgid "No previous regular expression"
msgstr "Níl aon slonn ionadaíochta roimhe seo"
