summaryrefslogtreecommitdiffstats
path: root/python/samba/ms_schema.py
blob: c16693c9b5ab08469816de5650b172b689bf0bb0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
# create schema.ldif (as a string) from WSPP documentation
#
# based on minschema.py and minschema_wspp
#
# 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/>.

"""Generate LDIF from WSPP documentation."""

import re
import base64
import uuid

bitFields = {}

# ADTS: 2.2.9
# bit positions as labeled in the docs
bitFields["searchflags"] = {
    'fATTINDEX': 31,         # IX
    'fPDNTATTINDEX': 30,     # PI
    'fANR': 29,  # AR
    'fPRESERVEONDELETE': 28,         # PR
    'fCOPY': 27,     # CP
    'fTUPLEINDEX': 26,       # TP
    'fSUBTREEATTINDEX': 25,  # ST
    'fCONFIDENTIAL': 24,     # CF
    'fNEVERVALUEAUDIT': 23,  # NV
    'fRODCAttribute': 22,    # RO


    # missing in ADTS but required by LDIF
    'fRODCFilteredAttribute': 22,    # RO ?
    'fCONFIDENTAIL': 24, # typo
    'fRODCFILTEREDATTRIBUTE': 22 # case
    }

# ADTS: 2.2.10
bitFields["systemflags"] = {
    'FLAG_ATTR_NOT_REPLICATED': 31, 'FLAG_CR_NTDS_NC': 31,     # NR
    'FLAG_ATTR_REQ_PARTIAL_SET_MEMBER': 30, 'FLAG_CR_NTDS_DOMAIN': 30,     # PS
    'FLAG_ATTR_IS_CONSTRUCTED': 29, 'FLAG_CR_NTDS_NOT_GC_REPLICATED': 29,     # CS
    'FLAG_ATTR_IS_OPERATIONAL': 28,     # OP
    'FLAG_SCHEMA_BASE_OBJECT': 27,     # BS
    'FLAG_ATTR_IS_RDN': 26,     # RD
    'FLAG_DISALLOW_MOVE_ON_DELETE': 6,     # DE
    'FLAG_DOMAIN_DISALLOW_MOVE': 5,     # DM
    'FLAG_DOMAIN_DISALLOW_RENAME': 4,     # DR
    'FLAG_CONFIG_ALLOW_LIMITED_MOVE': 3,     # AL
    'FLAG_CONFIG_ALLOW_MOVE': 2,     # AM
    'FLAG_CONFIG_ALLOW_RENAME': 1,     # AR
    'FLAG_DISALLOW_DELETE': 0     # DD
    }

# ADTS: 2.2.11
bitFields["schemaflagsex"] = {
    'FLAG_ATTR_IS_CRITICAL': 31
    }

# ADTS: 3.1.1.2.2.2
oMObjectClassBER = {
    '1.3.12.2.1011.28.0.702' : base64.b64encode('\x2B\x0C\x02\x87\x73\x1C\x00\x85\x3E'),
    '1.2.840.113556.1.1.1.12': base64.b64encode('\x2A\x86\x48\x86\xF7\x14\x01\x01\x01\x0C'),
    '2.6.6.1.2.5.11.29'      : base64.b64encode('\x56\x06\x01\x02\x05\x0B\x1D'),
    '1.2.840.113556.1.1.1.11': base64.b64encode('\x2A\x86\x48\x86\xF7\x14\x01\x01\x01\x0B'),
    '1.3.12.2.1011.28.0.714' : base64.b64encode('\x2B\x0C\x02\x87\x73\x1C\x00\x85\x4A'),
    '1.3.12.2.1011.28.0.732' : base64.b64encode('\x2B\x0C\x02\x87\x73\x1C\x00\x85\x5C'),
    '1.2.840.113556.1.1.1.6' : base64.b64encode('\x2A\x86\x48\x86\xF7\x14\x01\x01\x01\x06')
}

# separated by commas in docs, and must be broken up
multivalued_attrs = set(["auxiliaryclass","maycontain","mustcontain","posssuperiors",
                         "systemauxiliaryclass","systemmaycontain","systemmustcontain",
                         "systemposssuperiors"])

def __read_folded_line(f, buffer):
    """ reads a line from an LDIF file, unfolding it"""
    line = buffer

    while True:
        l = f.readline()

        if l[:1] == " ":
            # continued line

            # cannot fold an empty line
            assert(line != "" and line != "\n")

            # preserves '\n '
            line = line + l
        else:
            # non-continued line
            if line == "":
                line = l

                if l == "":
                    # eof, definitely won't be folded
                    break
            else:
                # marks end of a folded line
                # line contains the now unfolded line
                # buffer contains the start of the next possibly folded line
                buffer = l
                break

    return (line, buffer)


def __read_raw_entries(f):
    """reads an LDIF entry, only unfolding lines"""

    # will not match options after the attribute type
    attr_type_re = re.compile("^([A-Za-z]+[A-Za-z0-9-]*):")

    buffer = ""

    while True:
        entry = []

        while True:
            (l, buffer) = __read_folded_line(f, buffer)

            if l[:1] == "#":
                continue

            if l == "\n" or l == "":
                break

            m = attr_type_re.match(l)

            if m:
                if l[-1:] == "\n":
                    l = l[:-1]

                entry.append(l)
            else:
                print >>sys.stderr, "Invalid line: %s" % l,
                sys.exit(1)

        if len(entry):
            yield entry

        if l == "":
            break


def fix_dn(dn):
    """fix a string DN to use ${SCHEMADN}"""

    # folding?
    if dn.find("<RootDomainDN>") != -1:
        dn = dn.replace("\n ", "")
        dn = dn.replace(" ", "")
        return dn.replace("CN=Schema,CN=Configuration,<RootDomainDN>", "${SCHEMADN}")
    else:
        return dn

def __convert_bitfield(key, value):
    """Evaluate the OR expression in 'value'"""
    assert(isinstance(value, str))

    value = value.replace("\n ", "")
    value = value.replace(" ", "")

    try:
        # some attributes already have numeric values
        o = int(value)
    except ValueError:
        o = 0
        flags = value.split("|")
        for f in flags:
            bitpos = bitFields[key][f]
            o = o | (1 << (31 - bitpos))

    return str(o)

def __write_ldif_one(entry):
    """Write out entry as LDIF"""
    out = []

    for l in entry:
        if isinstance(l[1], str):
            vl = [l[1]]
        else:
            vl = l[1]

        if l[0].lower() == 'omobjectclass':
            out.append("%s:: %s" % (l[0], l[1]))
            continue

        for v in vl:
            out.append("%s: %s" % (l[0], v))


    return "\n".join(out)

def __transform_entry(entry, objectClass):
    """Perform transformations required to convert the LDIF-like schema
       file entries to LDIF, including Samba-specific stuff."""

    entry = [l.split(":", 1) for l in entry]

    cn = ""

    for l in entry:
        key = l[0].lower()
        l[1] = l[1].lstrip()
        l[1] = l[1].rstrip()

        if not cn and key == "cn":
            cn = l[1]

        if key in multivalued_attrs:
            # unlike LDIF, these are comma-separated
            l[1] = l[1].replace("\n ", "")
            l[1] = l[1].replace(" ", "")

            l[1] = l[1].split(",")

        if key in bitFields:
            l[1] = __convert_bitfield(key, l[1])

        if key == "omobjectclass":
            l[1] = oMObjectClassBER[l[1].strip()]

        if isinstance(l[1], str):
            l[1] = fix_dn(l[1])


    assert(cn)
    entry.insert(0, ["dn", "CN=%s,${SCHEMADN}" % cn])
    entry.insert(1, ["objectClass", ["top", objectClass]])
    entry.insert(2, ["cn", cn])
    entry.insert(2, ["objectGUID", str(uuid.uuid4())])
    entry.insert(2, ["adminDescription", cn])
    entry.insert(2, ["adminDisplayName", cn])

    for l in entry:
        key = l[0].lower()

        if key == "cn":
            entry.remove(l)

    return entry

def __parse_schema_file(filename, objectClass):
    """Load and transform a schema file."""

    out = []

    f = open(filename, "rU")
    for entry in __read_raw_entries(f):
        out.append(__write_ldif_one(__transform_entry(entry, objectClass)))

    return "\n\n".join(out)


def read_ms_schema(attr_file, classes_file, dump_attributes = True, dump_classes = True, debug = False):
    """Read WSPP documentation-derived schema files."""

    attr_ldif = ""
    classes_ldif = ""

    if dump_attributes:
        attr_ldif =  __parse_schema_file(attr_file, "attributeSchema")
    if dump_classes:
        classes_ldif = __parse_schema_file(classes_file, "classSchema")

    return attr_ldif + "\n\n" + classes_ldif + "\n\n"

if __name__ == '__main__':
    import sys

    try:
        attr_file = sys.argv[1]
        classes_file = sys.argv[2]
    except IndexError:
        print >>sys.stderr, "Usage: %s attr-file.txt classes-file.txt" % (sys.argv[0])
        sys.exit(1)

    print read_ms_schema(attr_file, classes_file)
00'>1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Red Hat
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# jdennis <jdennis@redhat.com>, 2011
# Mateusz Marzantowicz <mmarzantowicz@osdf.com.pl>, 2013
# Piotr Drąg <piotrdrag@gmail.com>, 2010,2013
msgid ""
msgstr ""
"Project-Id-Version: FreeIPA\n"
"Report-Msgid-Bugs-To: https://hosted.fedoraproject.org/projects/freeipa/"
"newticket\n"
"POT-Creation-Date: 2014-07-07 15:24+0200\n"
"PO-Revision-Date: 2014-07-03 08:37+0000\n"
"Last-Translator: Petr Viktorin <encukou@gmail.com>\n"
"Language-Team: Polish (http://www.transifex.com/projects/p/freeipa/language/"
"pl/)\n"
"Language: pl\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==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2);\n"

#, python-format
msgid "Enter %(label)s again to verify: "
msgstr "Proszę podać %(label)s ponownie, aby sprawdzić: "

#, c-format
msgid "Passwords do not match!"
msgstr "Hasła się nie zgadzają."

#, python-format
msgid "unknown error %(code)d from %(server)s: %(error)s"
msgstr "nieznany błąd %(code)d z %(server)s: %(error)s"

msgid "an internal error has occurred"
msgstr "wystąpił wewnętrzny błąd"

#, python-format
msgid "Invalid JSON-RPC request: %(error)s"
msgstr "Nieprawidłowe żądanie JSON-RPC: %(error)s"

#, python-format
msgid "Kerberos error: %(major)s/%(minor)s"
msgstr "Błąd Kerberosa: %(major)s/%(minor)s"

msgid "did not receive Kerberos credentials"
msgstr "nie otrzymano danych uwierzytelniających Kerberosa"

msgid "No credentials cache found"
msgstr "Nie odnaleziono pamięci podręcznej danych uwierzytelniających"

msgid "Ticket expired"
msgstr "Zgłoszenie wygasło"

msgid "Credentials cache permissions incorrect"
msgstr ""
"Uprawnienia pamięci podręcznej danych uwierzytelniających są niepoprawne"

msgid "Bad format in credentials cache"
msgstr "Błędny format w pamięci podręcznej danych uwierzytelniających"

msgid "Cannot resolve KDC for requested realm"
msgstr "Nie można rozwiązać KDC dla żądanego obszaru"

#, python-format
msgid "Insufficient access: %(info)s"
msgstr "Niewystarczający dostęp: %(info)s"

msgid "Passwords do not match"
msgstr "Hasła się nie zgadzają"

msgid "Command not implemented"
msgstr "Polecenie nie jest zaimplementowane"

#, python-format
msgid "%(reason)s"
msgstr "%(reason)s"

msgid "This entry already exists"
msgstr "Ten wpis już istnieje"

msgid "You must enroll a host in order to create a host service"
msgstr "Należy zapisać się do komputera, aby utworzyć jego usługę"

#, python-format
msgid ""
"Service principal is not of the form: service/fully-qualified host name: "
"%(reason)s"
msgstr ""
"Naczelnik usługi nie jest w formacie: usługa/w pełni kwalifikowana nazwa "
"komputera: %(reason)s"

msgid ""
"The realm for the principal does not match the realm for this IPA server"
msgstr "Obszar naczelnika nie zgadza się z obszarem dla tego serwera IPA"

msgid "This command requires root access"
msgstr "Te polecenie wymaga dostępu roota"

msgid "This is already a posix group"
msgstr "To jest już grupa POSIX"

msgid "A group may not be a member of itself"
msgstr "Grupa nie może być własnym elementem"

#, python-format
msgid "Base64 decoding failed: %(reason)s"
msgstr "Dekodowanie base64 nie powiodło się: %(reason)s"

msgid "A group may not be added as a member of itself"
msgstr "Nie można dodać grupy jako elementu jej samej"

msgid "The default users group cannot be removed"
msgstr "Nie można usunąć domyślnej grupy użytkowników"

msgid "Host does not have corresponding DNS A record"
msgstr "Komputer nie posiada pasującego wpisu DNS A"

msgid "Deleting a managed group is not allowed. It must be detached first."
msgstr ""
"Usuwanie zarządzanej grupy nie jest dozwolone. Musi zostać najpierw "
"odłączona."

#, python-format
msgid "%(attr)s does not contain '%(value)s'"
msgstr "%(attr)s nie zawiera \"%(value)s\""

msgid "change collided with another change"
msgstr "zmiana koliduje z inną zmianą"

msgid "no modifications to be performed"
msgstr "żadne modyfikacje nie zostaną wykonane"

msgid "limits exceeded for this query"
msgstr "przekroczono ograniczenia dla tego zapytania"

#, python-format
msgid "%(info)s"
msgstr "%(info)s"

#, python-format
msgid "Certificate operation cannot be completed: %(error)s"
msgstr "Nie można ukończyć działania na certyfikacie: %(error)s"

#, python-format
msgid "Certificate format error: %(error)s"
msgstr "Błąd formatu certyfikatu: %(error)s"

msgid "Results are truncated, try a more specific search"
msgstr ""
"Wyniki zostały obcięte, proszę spróbować bardziej konkretnego wyszukiwania"

msgid "Forward to server instead of running locally"
msgstr "Przekazanie do serwera zamiast uruchamiania lokalnie"

msgid "A dictionary representing an LDAP entry"
msgstr "Słownik reprezentujący wpis LDAP"

msgid "A list of LDAP entries"
msgstr "Lista wpisów LDAP"

msgid "All commands should at least have a result"
msgstr "Wszystkie polecenia powinny powiadać przynajmniej wynik"

msgid "incorrect type"
msgstr "niepoprawny typ"

msgid "Only one value is allowed"
msgstr "Dozwolona jest tylko jedna wartość"

msgid "must be True or False"
msgstr "musi być prawdą lub fałszem"

msgid "must be an integer"
msgstr "musi być liczba całkowitą"

#, python-format
msgid "must be at least %(minvalue)d"
msgstr "musi wynosić co najmniej %(minvalue)d"

#, python-format
msgid "can be at most %(maxvalue)d"
msgstr "może wynosić co najwyżej %(maxvalue)d"

msgid "must be a decimal number"
msgstr "musi być liczbą dziesiętną"

#, python-format
msgid "must match pattern \"%(pattern)s\""
msgstr "musi pasować do wzorca \"%(pattern)s\""

msgid "must be binary data"
msgstr "musi być danymi binarnymi"

#, python-format
msgid "must be at least %(minlength)d bytes"
msgstr "musi wynosić co najmniej %(minlength)d bajtów"

#, python-format
msgid "can be at most %(maxlength)d bytes"
msgstr "może wynosić co najwyżej %(maxlength)d bajtów"

#, python-format
msgid "must be exactly %(length)d bytes"
msgstr "musi wynosić dokładnie %(length)d bajtów"

msgid "must be Unicode text"
msgstr "musi być tekstem w unikodzie"

#, python-format
msgid "must be at least %(minlength)d characters"
msgstr "musi wynosić co najmniej %(minlength)d znaków"

#, python-format
msgid "can be at most %(maxlength)d characters"
msgstr "może wynosić co najwyżej %(maxlength)d znaków"

#, python-format
msgid "must be exactly %(length)d characters"
msgstr "musi wynosić dokładnie %(length)d znaków"

msgid "A list of ACI values"
msgstr "Lista wartości ACI"

msgid "type, filter, subtree and targetgroup are mutually exclusive"
msgstr ""
"wartości \"type\", \"filter\", \"subtree\" i \"targetgroup\" są wzajemnie "
"wyłączne"

msgid ""
"at least one of: type, filter, subtree, targetgroup, attrs or memberof are "
"required"
msgstr ""
"co najmniej jedna z wartości: \"type\", \"filter\", \"subtree\", "
"\"targetgroup\", \"attrs\" lub \"memberof\" jest wymagana"

#, python-format
msgid "Group '%s' does not exist"
msgstr "Grupa \"%s\" nie istnieje"

#, python-format
msgid "Syntax Error: %(error)s"
msgstr "Błąd składni: %(error)s"

#, python-format
msgid "ACI with name \"%s\" not found"
msgstr "Nie odnaleziono ACI o nazwie \"%s\""

msgid "ACIs"
msgstr "ACI"

msgid "ACI name"
msgstr "Nazwa ACI"

msgid "User group"
msgstr "Grupa użytkowników"

msgid "User group ACI grants access to"
msgstr "Grupa użytkowników, do której ACI zapewnia dostęp"

msgid "Permissions"
msgstr "Uprawnienia"

msgid "Attributes"
msgstr "Atrybuty"

msgid "Type"
msgstr "Typ"

msgid "Member of"
msgstr "Element"

msgid "Member of a group"
msgstr "Element grupy"

msgid "Filter"
msgstr "Filtr"

msgid "Legal LDAP filter (e.g. ou=Engineering)"
msgstr "Dozwolony filtr LDAP (np. ou=Inżynieria)"

msgid "Subtree"
msgstr "Poddrzewo"

msgid "Subtree to apply ACI to"
msgstr "Poddrzewo, do którego zastosować ACI"

msgid "Target group"
msgstr "Grupa docelowa"

msgid "Group to apply ACI to"
msgstr "Grupa, do której zastosować ACI"

msgid "Target your own entry (self)"
msgstr "Cel własnego wpisu (\"self\")"

msgid "Apply ACI to your own entry (self)"
msgstr "Zastosowanie ACI do własnego wpisu (\"self\")"

#, python-format
msgid "Created ACI \"%(value)s\""
msgstr "Utworzono ACI \"%(value)s\""

#, python-format
msgid "Deleted ACI \"%(value)s\""
msgstr "Usunięto ACI \"%(value)s\""

#, python-format
msgid "Modified ACI \"%(value)s\""
msgstr "Zmodyfikowano ACI \"%(value)s\""

#, python-format
msgid "%(count)d ACI matched"
msgid_plural "%(count)d ACIs matched"
msgstr[0] "Pasuje %(count)d ACI"
msgstr[1] "Pasują %(count)d ACI"
msgstr[2] "Pasuje %(count)d ACI"

msgid "Description"
msgstr "Opis"

msgid "Users"
msgstr "Użytkownicy"

msgid "Hosts"
msgstr "Komputery"

msgid "Location"
msgstr "Położenie"

#, python-format
msgid "File %(file)s not found"
msgstr "Nie odnaleziono pliku %(file)s"

msgid "Map"
msgstr "Mapa"

msgid "Automount Maps"
msgstr "Automatyczne montowanie map"

msgid "Key"
msgstr "Klucz"

msgid "Mount information"
msgstr "Informacje o montowaniu"

msgid "description"
msgstr "opis"

msgid "Automount Keys"
msgstr "Automatyczne montowanie kluczy"

msgid "Mount point"
msgstr "Punkt montowania"

msgid "Parent map"
msgstr "Mapa nadrzędna"

msgid "Password"
msgstr "Hasło"

msgid "Failed members"
msgstr "Elementy, które się nie powiodły"

msgid "Member users"
msgstr "Elementy użytkowników"

msgid "Member groups"
msgstr "Elementy grupy"

msgid "Member of groups"
msgstr "Członek grup"

msgid "Member hosts"
msgstr "Element komputerów"

msgid "Member host-groups"
msgstr "Element grupy komputerów"

msgid "Member of host-groups"
msgstr "Element grupy komputerów"

msgid "Roles"
msgstr "Role"

msgid "Sudo Command Groups"
msgstr "Grupy polecenia sudo"

msgid "Member services"
msgstr "Usługi elementów"

msgid "Member service groups"
msgstr "Grupy usługi elementów"

msgid "External host"
msgstr "Zewnętrzny komputer"

#, python-format
msgid "container entry (%(container)s) not found"
msgstr "nie odnaleziono wpisu kontenera (%(container)s)"

#, python-format
msgid "%(parent)s: %(oname)s not found"
msgstr "%(parent)s: nie odnaleziono %(oname)s"

#, python-format
msgid "%(pkey)s: %(oname)s not found"
msgstr "%(pkey)s: nie odnaleziono %(oname)s"

msgid "Continuous mode: Don't stop on errors."
msgstr "Tryb ciągły: bez zatrzymywania po błędach."

msgid "Rights"
msgstr "Uprawnienia"

msgid "the entry was deleted while being modified"
msgstr "wpis został usunięty podczas modyfikowania"

#, python-format
msgid "member %s"
msgstr "członek %s"

msgid "Members that could not be added"
msgstr "Elementy, które nie mogły zostać dodane"

msgid "Number of members added"
msgstr "Liczba dodanych elementów"

msgid "Members that could not be removed"
msgstr "Liczba elementów, które nie mogły zostać usunięte"

msgid "Number of members removed"
msgstr "Liczba usuniętych elementów"

msgid "Time Limit"
msgstr "Ograniczenie czasu"

msgid "Time limit of search in seconds"
msgstr "Ograniczenie czasu wyszukiwania w sekundach"

msgid "Size Limit"
msgstr "Ograniczenie rozmiaru"

msgid "Maximum number of entries returned"
msgstr "Maksymalna liczba zwróconych wpisów"

#, python-format
msgid "Failure decoding Certificate Signing Request: %s"
msgstr "Dekodowanie żądania podpisywania certyfikatu nie powiodło się: %s"

msgid "Principal"
msgstr "Naczelnik"

msgid "Service principal for this certificate (e.g. HTTP/test.example.com)"
msgstr "Naczelnik usługi dla tego certyfikatu (np. HTTP/test.przykład.pl)"

msgid "automatically add the principal if it doesn't exist"
msgstr "automatycznie dodaj naczelnika, jeśli nie istnieje"

msgid "Certificate"
msgstr "Certyfikat"

msgid "Subject"
msgstr "Temat"

msgid "Issuer"
msgstr "Wydawca"

msgid "Not Before"
msgstr "Nie wcześniej"

msgid "Not After"
msgstr "Nie po"

msgid "Fingerprint (MD5)"
msgstr "Odcisk (MD5)"

msgid "Fingerprint (SHA1)"
msgstr "Odcisk (SHA1)"

msgid "Serial number"
msgstr "Numer seryjny"

msgid "Dictionary mapping variable name to value"
msgstr "Nazwa zmiennej mapowania słownika do ustawienia jako wartość"

msgid "Request id"
msgstr "Identyfikator żądania"

msgid "Request status"
msgstr "Stan żądania"

msgid "Serial number in decimal or if prefixed with 0x in hexadecimal"
msgstr ""
"Numer seryjny w formie dziesiętnej lub szesnastkowej, jeśli poprzedzone 0x"

msgid "Revocation reason"
msgstr "Przyczyna unieważnienia"

msgid "Revoke a certificate."
msgstr "Odrzuć certyfikat."

msgid "Revoked"
msgstr "Unieważniono"

msgid "Reason"
msgstr "Przyczyna"

msgid "Reason for revoking the certificate (0-10)"
msgstr "Przyczyna unieważnienia certyfikatu (0-10)"

msgid "Unrevoked"
msgstr "Cofnięto unieważnienie"

msgid "Error"
msgstr "Błąd"

msgid "Status"
msgstr "Stan"

msgid "Configuration"
msgstr "Konfiguracja"

msgid "Home directory base"
msgstr "Podstawa katalogu domowego"

msgid "Default shell"
msgstr "Domyślna powłoka"

msgid "Default shell for new users"
msgstr "Domyślna powłoka dla nowych użytkowników"

msgid "Default users group"
msgstr "Domyślna grupa użytkowników"

msgid "Default group for new users"
msgstr "Domyślna grupa dla nowych użytkowników"

msgid "Search time limit"
msgstr "Ograniczenie czasu wyszukiwania"

msgid "Search size limit"
msgstr "Ograniczenie rozmiaru wyszukiwania"

msgid "User search fields"
msgstr "Pola wyszukiwania użytkowników"

msgid "Certificate Subject base"
msgstr "Podstawa tematu certyfikatu"

msgid "Hostname"
msgstr "Nazwa komputera"

msgid "Target"
msgstr "Cel"

msgid "Priority"
msgstr "Priorytet"

msgid "Zone name"
msgstr "Nazwa strefy"

msgid "Zone name (FQDN)"
msgstr "Nazwa strefy (FQDN)"

msgid "Active zone"
msgstr "Aktywna strefa"

msgid "DNS is not configured"
msgstr "DNS nie jest skonfigurowany"

msgid "Administrator e-mail address"
msgstr "Adres e-mail administratora"

msgid "SOA serial"
msgstr "Numer seryjny SOA"

msgid "SOA refresh"
msgstr "Odświeżenie SOA"

msgid "SOA retry"
msgstr "Ponowienie SOA"

msgid "SOA expire"
msgstr "Wygaszenie SOA"

msgid "SOA minimum"
msgstr "Minimalne SOA"

msgid "Time to live"
msgstr "Czas życia"

msgid "SOA class"
msgstr "Klasa SOA"

msgid "BIND update policy"
msgstr "Polityka aktualizacji BIND"

msgid "Class"
msgstr "Klasa"

msgid "Delete all associated records"
msgstr "Usuń wszystkie powiązane wpisy"

msgid "Delete all?"
msgstr "Usunąć wszystko?"

#, python-format
msgid "Found '%(value)s'"
msgstr "Odnaleziono \"%(value)s\""

#, python-format
msgid "Host '%(host)s' not found"
msgstr "Nie odnaleziono komputera \"%(host)s\""

msgid "User Groups"
msgstr "Grupy użytkowników"

msgid "Group name"
msgstr "Nazwa grupy"

msgid "Group description"
msgstr "Opis grupy"

msgid "GID"
msgstr "GID"

msgid "GID (use this option to set it manually)"
msgstr "GID (ta opcja umożliwia jego ręczne ustawienie)"

#, python-format
msgid "Added group \"%(value)s\""
msgstr "Dodano grupę \"%(value)s\""

#, python-format
msgid "Deleted group \"%(value)s\""
msgstr "Usunięto grupę \"%(value)s\""

#, python-format
msgid "Modified group \"%(value)s\""
msgstr "Zmodyfikowano grupę \"%(value)s\""

msgid "change to a POSIX group"
msgstr "zmiana na grupę POSIX"

#, python-format
msgid "%(count)d group matched"
msgid_plural "%(count)d groups matched"
msgstr[0] "Pasuje %(count)d grupa"
msgstr[1] "Pasują %(count)d grupy"
msgstr[2] "Pasuje %(count)d grup"

#, python-format
msgid "Detached group \"%(value)s\" from user \"%(value)s\""
msgstr "Odłączono grupę \"%(value)s\" od użytkownika \"%(value)s\""

msgid "not allowed to modify user entries"
msgstr "modyfikowanie wpisów użytkowników nie jest dozwolone"

msgid "not allowed to modify group entries"
msgstr "modyfikowanie wpisów grup nie jest dozwolone"

msgid "Not a managed group"
msgstr "Nie jest zarządzaną grupą"

msgid "Rule name"
msgstr "Nazwa reguły"

msgid "Rule type"
msgstr "Typ reguły"

msgid "User category"
msgstr "Kategoria użytkowników"

msgid "User category the rule applies to"
msgstr "Kategoria użytkowników, do których zastosowywana jest reguła"

msgid "Host category"
msgstr "Kategoria komputerów"

msgid "Host category the rule applies to"
msgstr "Kategoria komputerów, do których zastosowywana jest reguła"

msgid "Service category"
msgstr "Kategoria usług"

msgid "Service category the rule applies to"
msgstr "Kategoria usług, do których zastosowywana jest reguła"

msgid "Enabled"
msgstr "Włączone"

msgid "Host Groups"
msgstr "Grupy komputerów"

msgid "Services"
msgstr "Usługi"

msgid "Service Groups"
msgstr "Grupy usług"

msgid "Access time"
msgstr "Czas dostępu"

msgid "Service name"
msgstr "Nazwa usługi"

msgid "Service group name"
msgstr "Nazwa grupy usługi"

msgid "HBAC service group description"
msgstr "Opis grupy usługi HBAC"

msgid "User name"
msgstr "Nazwa użytkownika"

msgid "Keytab"
msgstr "Tabela kluczy"

msgid "Host name"
msgstr "Nazwa komputera"

msgid "A description of this host"
msgstr "Opis tego komputera"

msgid "Locality"
msgstr "Lokalizacja"

msgid "Host locality (e.g. \"Baltimore, MD\")"
msgstr "Lokalizacja komputera (np. \"Baltimore, MD\")"

msgid "Host location (e.g. \"Lab 2\")"
msgstr "Położenie komputera (np. \"Laboratorium nr 2\")"

msgid "Platform"
msgstr "Platforma"

msgid "Host hardware platform (e.g. \"Lenovo T61\")"
msgstr "Platforma sprzętowa komputera (np. \"Lenovo T61\")"

msgid "Operating system"
msgstr "System operacyjny"

msgid "Host operating system and version (e.g. \"Fedora 9\")"
msgstr "System operacyjny komputera i jego wersja (np. \"Fedora 9\")"

msgid "User password"
msgstr "Hasło użytkownika"

msgid "Password used in bulk enrollment"
msgstr "Hasło używane w zapisywaniu większej części"

msgid "Base-64 encoded server certificate"
msgstr "Certyfikat serwera zakodowany za pomocą Base-64"

msgid "Principal name"
msgstr "Nazwa naczelnika"

#, python-format
msgid "Added host \"%(value)s\""
msgstr "Dodano komputer \"%(value)s\""

msgid "force host name even if not in DNS"
msgstr "wymuszenie nazwy komputera nawet, jeśli nie w DNS"

#, python-format
msgid "Deleted host \"%(value)s\""
msgstr "Usunięto komputer \"%(value)s\""

#, python-format
msgid "Modified host \"%(value)s\""
msgstr "Zmodyfikowano komputer \"%(value)s\""

msgid "Kerberos principal name for this host"
msgstr "Nazwa naczelnika Kerberosa dla tego komputera"

#, python-format
msgid "%(count)d host matched"
msgid_plural "%(count)d hosts matched"
msgstr[0] "Pasuje %(count)d komputer"
msgstr[1] "Pasuje %(count)d komputery"
msgstr[2] "Pasuje %(count)d komputerów"

msgid "Host-group"
msgstr "Grupa komputerów"

msgid "Name of host-group"
msgstr "Nazwa grupy komputerów"

msgid "A description of this host-group"
msgstr "Opis tej grupy komputerów"

#, python-format
msgid "Added hostgroup \"%(value)s\""
msgstr "Dodano grupę komputerów \"%(value)s\""

#, python-format
msgid "Deleted hostgroup \"%(value)s\""
msgstr "Usunięto grupę komputerów \"%(value)s\""

#, python-format
msgid "Modified hostgroup \"%(value)s\""
msgstr "Zmodyfikowano grupę komputerów \"%(value)s\""

#, python-format
msgid "%(count)d hostgroup matched"
msgid_plural "%(count)d hostgroups matched"
msgstr[0] "Pasuje %(count)d grupa komputerów"
msgstr[1] "Pasują %(count)d grupy komputerów"
msgstr[2] "Pasuje %(count)d grup komputerów"

msgid "Name of object to export"
msgstr "Nazwa obiektu do wyeksportowania"

msgid "Dict of JSON encoded IPA Objects"
msgstr "Słownik obiektów IPA zakodowanych w formacie JSON"

msgid "Add"
msgstr "Dodaj"

msgid "Add and Close"
msgstr "Dodaj i zamknij"

msgid "Add and Edit"
msgstr "Dodaj i edytuj"

msgid "Cancel"
msgstr "Anuluj"

msgid "Close"
msgstr "Zamknij"

msgid "Find"
msgstr "Znajdź"

msgid "Delete"
msgstr "Usuń"

msgid "Reset"
msgstr "Przywróć"

msgid "Restore"
msgstr "Przywróć"

msgid "Retry"
msgstr "Ponów"

msgid "Update"
msgstr "Zaktualizuj"

msgid "Back to Top"
msgstr "Wróć na górę"

msgid "Settings"
msgstr "Ustawienia"

msgid "Search"
msgstr "Wyszukaj"

msgid "Logged In As"
msgstr "Zalogowano jako"

msgid "Attribute"
msgstr "Atrybut"

msgid "New Certificate"
msgstr "Nowy certyfikat"

msgid "Certificate Revoked"
msgstr "Odrzucono certyfikat"

msgid "Data"
msgstr "Dane"

msgid "DNS Zone Settings"
msgstr "Ustawienia strefy DNS"

msgid "Host Name"
msgstr "Nazwa komputera"

msgid "Set OTP"
msgstr "Ustaw OTP"

msgid "Kerberos Ticket Policy"
msgstr "Polityka zgłoszeń Kerberosa"

msgid "User"
msgstr "Użytkownik"

msgid "Password Policy"
msgstr "Polityka haseł"

msgid "Groups"
msgstr "Grupy"

msgid "Commands"
msgstr "Polecenia"

msgid "Account Settings"
msgstr "Ustawienia konta"

msgid "Mailing Address"
msgstr "Adres pocztowy"

msgid "Misc. Information"
msgstr "Różne informacje"

msgid "New Password"
msgstr "Nowe hasło"

msgid "Password change complete"
msgstr "Ukończono zmianę hasła"

msgid "Passwords must match"
msgstr "Hasła muszą się zgadzać"

msgid "Quick Links"
msgstr "Szybkie odnośniki"

msgid "Select All"
msgstr "Zaznacz wszystko"

msgid "Unselect All"
msgstr "Odznacz wszystko"

msgid "Automount"
msgstr "Automatyczne montowanie"

msgid "DNS"
msgstr "DNS"

msgid "Role Based Access Control"
msgstr "Kontrola dostępu oparta na rolach"

msgid "Dict of I18N messages"
msgstr "Słownik komunikatów umiędzynaradawiania"

msgid "Manage ticket policy for specific user"
msgstr "Zarządzanie polityką zgłoszeń dla podanego użytkownika"

msgid "Max life"
msgstr "Maksymalny czas życia"

msgid "Maximum ticket life (seconds)"
msgstr "Minimalny czas życia zgłoszenia (sekundy)"

msgid "Max renew"
msgstr "Maksymalne odnowienie"

msgid "Maximum renewable age (seconds)"
msgstr "Maksymalny czas, w którym możliwe jest odnowienie (sekundy)"

#, python-format
msgid ""
"Kerberos principal %s already exists. Use 'ipa user-mod' to set it manually."
msgstr ""
"Naczelnik Kerberosa %s już istnieje. Należy użyć polecenia \"ipa user-mod\", "
"aby ustawić go ręcznie."

msgid ""
"Failed to add user to the default group. Use 'ipa group-add-member' to add "
"manually."
msgstr ""
"Dodanie użytkownika do domyślnej grupy nie powiodło się. Należy użyć "
"polecenia \"ipa group-add-member\", aby dodać go ręcznie."

msgid "LDAP URI"
msgstr "Adres URI LDAP"

msgid "LDAP URI of DS server to migrate from"
msgstr "Adres URI LDAP serwera DS, z którego migrować"

msgid "bind password"
msgstr "hasło Bind"

msgid "Bind DN"
msgstr "DN dowiązania"

msgid "User container"
msgstr "Kontener użytkownika"

msgid "Group container"
msgstr "Kontener grupy"

msgid "LDAP schema"
msgstr "Schemat LDAP"

msgid "Lists of objects migrated; categorized by type."
msgstr "Lista migrowanych obiektów, ułożonych w kategorie według typu."

msgid "Lists of objects that could not be migrated; categorized by type."
msgstr ""
"Lista obiektów, które nie mogły zostać migrowane, ułożonych w kategorie "
"według typu."

msgid "False if migration mode was disabled."
msgstr "Fałsz, jeśli wyłączono tryb migracji"

msgid "Migration mode is disabled. Use 'ipa config-mod' to enable it."
msgstr ""
"Tryb migracji jest wyłączony. Należy użyć polecenia \"ipa config-mod\", aby "
"go włączyć."

msgid ""
"Passwords have been migrated in pre-hashed format.\n"
"IPA is unable to generate Kerberos keys unless provided\n"
"with clear text passwords. All migrated users need to\n"
"login at https://your.domain/ipa/migration/ before they\n"
"can use their Kerberos accounts."
msgstr ""
"Hasła zostały migrowane w formacie sprzed mieszania.\n"
"Program IPA nie może utworzyć kluczy Kerberosa, chyba\n"
"że zostały podane z hasłami w zwykłym tekście. Wszyscy\n"
"migrowani użytkownicy muszą zalogować się na stronie\n"
"https://twoja.domena/ipa/migration/, zanim będą mogli\n"
"używać swoich kont Kerberosa."

#, python-format
msgid "%(count)d variables"
msgstr "%(count)d zmiennych"

msgid "Total number of variables env (>= count)"
msgstr "Całkowita liczba zmiennych środowiskowych (>= licznik)"

msgid "Number of variables returned (<= total)"
msgstr "Liczba zwróconych zmiennych (<= razem)"

#, python-format
msgid "%(count)d plugin loaded"
msgid_plural "%(count)d plugins loaded"
msgstr[0] "Wczytano %(count)d wtyczkę"
msgstr[1] "Wczytano %(count)d wtyczki"
msgstr[2] "Wczytano %(count)d wtyczek"

msgid "Number of plugins loaded"
msgstr "Liczba wczytanych wtyczek"

msgid "Member Host"
msgstr "Komputer elementu"

msgid "Netgroups"
msgstr "Grupy sieciowe"

msgid "Netgroup name"
msgstr "Nazwa grupy sieciowej"

msgid "Netgroup description"
msgstr "Opis grupy sieciowej"

msgid "NIS domain name"
msgstr "Nazwa domeny NIS"

msgid "IPA unique ID"
msgstr "Unikalny identyfikator IPA"

#, python-format
msgid "Changed password for \"%(value)s\""
msgstr "Zmieniono hasło dla \"%(value)s\""

msgid "Member of group"
msgstr "Członek grupy"

#, python-format
msgid "priority must be a unique value (%(prio)d already used by %(gname)s)"
msgstr ""
"priorytet musi być unikalną wartością (%(prio)d jest już używane przez "
"%(gname)s)"

msgid "Group"
msgstr "Grupa"

msgid "Manage password policy for specific group"
msgstr "Zarządzanie polityką haseł dla podanej grupy"

msgid "Max lifetime (days)"
msgstr "Maksymalny czas życia (w dniach)"

msgid "Maximum password lifetime (in days)"
msgstr "Maksymalny czas życia hasła (w dniach)"

msgid "Min lifetime (hours)"
msgstr "Minimalny czas życia (w godzinach)"

msgid "Minimum password lifetime (in hours)"
msgstr "Minimalny czas życia hasła (w godzinach)"

msgid "History size"
msgstr "Rozmiar historii"

msgid "Password history size"
msgstr "Rozmiar historii haseł"

msgid "Character classes"
msgstr "Klasy znaków"

msgid "Minimum number of character classes"
msgstr "Minimalna liczba klas znaków"

msgid "Min length"
msgstr "Minimalna długość"

msgid "Minimum length of password"
msgstr "Minimalna długość hasła"

msgid "Priority of the policy (higher number means lower priority"
msgstr "Priorytet polityki (wyższy numer równa się niższemu priorytetowi"

msgid "Maximum password life must be greater than minimum."
msgstr "Maksymalny czas życia hasła musi być wyższy niż minimalny."

msgid "priority cannot be set on global policy"
msgstr "nie można ustawiać priorytetu dla globalnej polityki"

msgid "Display effective policy for a specific user"
msgstr "Wyświetlanie aktywnej polityki dla podanego użytkownika"

msgid "A description of this role-group"
msgstr "Opis tej grupy rol"

msgid "Service principal"
msgstr "Naczelnik usługi"

#, python-format
msgid "Added service \"%(value)s\""
msgstr "Dodano usługę \"%(value)s\""

msgid "force principal name even if not in DNS"
msgstr "wymuszenie nazwy naczelnika nawet, jeśli nie w DNS"

#, python-format
msgid "Deleted service \"%(value)s\""
msgstr "Usunięto usługę \"%(value)s\""

#, python-format
msgid "Modified service \"%(value)s\""
msgstr "Zmodyfikowano usługę \"%(value)s\""

#, python-format
msgid "%(count)d service matched"
msgid_plural "%(count)d services matched"
msgstr[0] "Pasuje %(count)d usługa"
msgstr[1] "Pasuje %(count)d usługi"
msgstr[2] "Pasuje %(count)d usług"

msgid "Sudo Command"
msgstr "Polecenie sudo"

msgid "A description of this command"
msgstr "Opis tego polecenia"

msgid "Sudo Allow Commands"
msgstr "Polecenia zezwolone sudo"

msgid "Sudo Deny Commands"
msgstr "Polecenia zabronione sudo"

msgid "Realm name"
msgstr "Nazwa obszaru"

msgid "User login"
msgstr "Login użytkownika"

msgid "First name"
msgstr "Imię"

msgid "Last name"
msgstr "Nazwisko"

msgid "Full name"
msgstr "Pełna nazwa"

msgid "Home directory"
msgstr "Katalog domowy"

msgid "Login shell"
msgstr "Powłoka logowania"

msgid "Kerberos principal"
msgstr "Naczelnik Kerberosa"

msgid "Email address"
msgstr "Adres e-mail"

msgid "UID"
msgstr "UID"

msgid "User ID Number (system will assign one if not provided)"
msgstr ""
"Numer identyfikacyjny użytkownika (system go przydzieli, jeśli nie zostanie "
"podany)"

msgid "Street address"
msgstr "Adres zamieszkania"

msgid "City"
msgstr "Miasto"

msgid "Telephone Number"
msgstr "Numer telefonu"

msgid "Mobile Telephone Number"
msgstr "Numer telefonu komórkowego"

msgid "Pager Number"
msgstr "Numer pagera"

msgid "Fax Number"
msgstr "Numer faksu"

#, python-format
msgid "Added user \"%(value)s\""
msgstr "Dodano użytkownika \"%(value)s\""

#, python-format
msgid "Deleted user \"%(value)s\""
msgstr "Usunięto użytkownika \"%(value)s\""

#, python-format
msgid "Modified user \"%(value)s\""
msgstr "Zmodyfikowano użytkownika \"%(value)s\""

msgid "Self"
msgstr "Własny"

msgid "Display user record for current Kerberos principal"
msgstr "Wyświetlenie wpisu użytkownika dla bieżącego naczelnika Kerberosa"

#, python-format
msgid "%(count)d user matched"
msgid_plural "%(count)d users matched"
msgstr[0] "Pasuje %(count)d użytkownik"
msgstr[1] "Pasuje %(count)d użytkowników"
msgstr[2] "Pasuje %(count)d użytkowników"

#, python-format
msgid "Disabled user account \"%(value)s\""
msgstr "Wyłączono konto użytkownika \"%(value)s\""

#, python-format
msgid "Enabled user account \"%(value)s\""
msgstr "Włączono konto użytkownika \"%(value)s\""

#, python-format
msgid "Unable to communicate with CMS (%s)"
msgstr "Nie można komunikować się z CMS (%s)"

msgid "The hostname to register as"
msgstr "Nazwa komputera, pod jaką zarejestrować"

msgid "The IPA realm"
msgstr "Obszar IPA"

msgid "Hardware platform of the host (e.g. Lenovo T61)"
msgstr "Platforma sprzętowa komputera (np. Lenovo T61)"

msgid "Operating System and version of the host (e.g. Fedora 9)"
msgstr "System operacyjny komputera i jego wersja (np. Fedora 9)"

#, c-format
msgid "cannot open configuration file %s\n"
msgstr "nie można otworzyć pliku konfiguracji %s\n"

#, c-format
msgid "cannot stat() configuration file %s\n"
msgstr "nie można wykonać stat() na pliku konfiguracji %s\n"

#, c-format
msgid "read error\n"
msgstr "błąd odczytu\n"

#, c-format
msgid "No keys accepted by KDC\n"
msgstr "Żadne klucze nie zostały zaakceptowane przez KDC\n"

#, c-format
msgid "Out of memory \n"
msgstr "Brak pamięci \n"

#, c-format
msgid "Unable to initialize ldap library!\n"
msgstr "Nie można zainicjować biblioteki LDAP.\n"

#, c-format
msgid "Simple bind failed\n"
msgstr "Proste dowiązanie nie powiodło się\n"

#, c-format
msgid "Operation failed! %s\n"
msgstr "Działanie nie powiodło się. %s\n"

#, c-format
msgid "Missing reply control!\n"
msgstr "Brak kontroli odpowiedzi.\n"

#, c-format
msgid "Out of Memory!\n"
msgstr "Brak pamięci.\n"

#, c-format
msgid "Failed to create control!\n"
msgstr "Utworzenie kontroli nie powiodło się.\n"

#, c-format
msgid "ber_init() failed, Invalid control ?!\n"
msgstr "ber_init() nie powiodło się, nieprawidłowa kontrola?\n"

#, c-format
msgid "Out of memory!\n"
msgstr "Brak pamięci.\n"

msgid "New Principal Password"
msgstr "Nowe hasło naczelnika"

msgid "Verify Principal Password"
msgstr "Sprawdzenie hasła naczelnika"

msgid "Print as little as possible"
msgstr "Wyświetla tak mało, jak to możliwe"

msgid "Output only on errors"
msgstr "Wyświetla tylko błędy"

msgid "Contact this specific KDC Server"
msgstr "Kontaktuje się z konkretnym serwerem KDC"

msgid "Server Name"
msgstr "Nazwa serwera"

msgid "The principal to get a keytab for (ex: ftp/ftp.example.com@EXAMPLE.COM)"
msgstr ""
"Naczelnik, dla którego uzyskać tablicę kluczy (np.: ftp/ftp.przykład."
"pl@PRZYKŁAD.PL)"

msgid "Kerberos Service Principal Name"
msgstr "Nazwa naczelnika usługi Kerberos"

msgid "File were to store the keytab information"
msgstr "Plik, w którym przechowywać informację o tablicy kluczy"

msgid "Keytab File Name"
msgstr "Nazwa pliku tablicy kluczy"

msgid "Encryption types to request"
msgstr "Typy szyfrowania do zażądania"

msgid "Comma separated encryption types list"
msgstr "Lista typów szyfrowania oddzielonych przecinkami"

msgid "Show the list of permitted encryption types and exit"
msgstr "Wyświetla listę dozwolonych typów szyfrowania i kończy działanie"

msgid "Permitted Encryption Types"
msgstr "Dozwolone typy szyfrowania"

msgid "Asks for a non-random password to use for the principal"
msgstr "Pyta o nielosowe hasło do użycia z naczelnikiem"

msgid "LDAP DN"
msgstr "DN LDAP"

msgid "DN to bind as if not using kerberos"
msgstr "DN do dowiązania, jeśli nie jest używany Kerberos"

msgid "LDAP password"
msgstr "Hasło LDAP"

msgid "password to use if not using kerberos"
msgstr "hasło do użycia, jeśli nie jest używany Kerberos"

#, c-format
msgid "Kerberos context initialization failed\n"
msgstr "Zainicjowanie kontekstu Kerberosa nie powiodło się\n"

#, c-format
msgid "No system preferred enctypes ?!\n"
msgstr "Brak typów szyfrowania preferowanych przez system?\n"

#, c-format
msgid "Supported encryption types:\n"
msgstr "Obsługiwane typy szyfrowania:\n"

#, c-format
msgid "Warning: failed to convert type (#%d)\n"
msgstr "Ostrzeżenie: przekonwertowanie typu (#%d) nie powiodło się\n"

#, c-format
msgid "Bind password required when using a bind DN.\n"
msgstr "Hasło dowiązania jest wymagane podczas używania dowiązania DN.\n"

#, c-format
msgid ""
"Warning: salt types are not honored with randomized passwords (see opt. -P)\n"
msgstr ""
"Ostrzeżenie: typy salt nie są uwzględniane z losowymi hasłami (proszę "
"zobaczyć opcję -P)\n"

#, c-format
msgid "Invalid Service Principal Name\n"
msgstr "Nieprawidłowa nazwa naczelnika usługi\n"

#, c-format
msgid "Kerberos Credential Cache not found. Do you have a Kerberos Ticket?\n"
msgstr ""
"Nie odnaleziono pamięci podręcznej danych uwierzytelniających. Istnieje "
"zgłoszenie Kerberosa?\n"

#, c-format
msgid ""
"Kerberos User Principal not found. Do you have a valid Credential Cache?\n"
msgstr ""
"Nie odnaleziono naczelnika użytkownika Kerberosa. Istnieje prawidłowa pamięć "
"podręczna danych uwierzytelniających?\n"

#, c-format
msgid "Failed to open Keytab\n"
msgstr "Otwarcie tablicy kluczy nie powiodło się\n"

#, c-format
msgid "Failed to create key material\n"
msgstr "Utworzenie materiału klucza nie powiodło się\n"

#, c-format
msgid "Failed to add key to the keytab\n"
msgstr "Dodanie klucza do tablicy kluczy nie powiodło się\n"

#, c-format
msgid "Failed to close the keytab\n"
msgstr "Zamknięcie tablicy kluczy nie powiodło się\n"

#, c-format
msgid "Keytab successfully retrieved and stored in: %s\n"
msgstr "Pomyślnie pobrano tablicę kluczy i przechowano ją w: %s\n"

#, c-format
msgid "No permission to join this host to the IPA domain.\n"
msgstr "Brak uprawnienia do dołączenia do tego komputera w domenie IPA.\n"

#, c-format
msgid "No write permissions on keytab file '%s'\n"
msgstr "Brak uprawnień do zapisu pliku tablicy kluczy \"%s\"\n"

#, c-format
msgid "Unable to enable SSL in LDAP\n"
msgstr "Nie można włączyć SSL w LDAP\n"

#, c-format
msgid "Unable to set LDAP version\n"
msgstr "Nie można ustawić wersji LDAP\n"

#, c-format
msgid "Bind failed: %s\n"
msgstr "Dowiązanie nie powiodło się: %s\n"

#, c-format
msgid "No values for %s"
msgstr "Brak wartości dla %s"

#, c-format
msgid "Search for ipaCertificateSubjectBase failed with error %d"
msgstr "Wyszukiwanie ipaCertificateSubjectBase nie powiodło się z błędem %d"

#, c-format
msgid "Unable to determine root DN of %s\n"
msgstr "Nie można ustalić głównego DN %s\n"

#, c-format
msgid "Incorrect password.\n"
msgstr "Niepoprawne hasło.\n"

#, c-format
msgid "Unable to determine certificate subject of %s\n"
msgstr "Nie można ustalić tematu certyfikatu %s\n"

#, c-format
msgid "principal not found in XML-RPC response\n"
msgstr "nie odnaleziono naczelnika w odpowiedzi XML-RPC\n"

#, c-format
msgid "Host is already joined.\n"
msgstr "Komputer jest już dołączony.\n"

#, c-format
msgid "Unable to determine IPA server from %s\n"
msgstr "Nie można ustalić serwera IPA z %s\n"

#, c-format
msgid "The hostname must be fully-qualified: %s\n"
msgstr "Nazwa komputera musi być w pełni kwalifikowana: %s\n"

#, c-format
msgid "Unable to join host: Kerberos context initialization failed\n"
msgstr ""
"Nie można dołączyć do komputera: zainicjowanie kontekstu Kerberosa nie "
"powiodło się\n"

#, c-format
msgid "Error resolving keytab: %s.\n"
msgstr "Błąd podczas rozwiązywania tablicy kluczy: %s.\n"

#, c-format
msgid "Error obtaining initial credentials: %s.\n"
msgstr ""
"Błąd podczas uzyskiwania początkowych danych uwierzytelniających: %s.\n"

#, c-format
msgid "Unable to generate Kerberos Credential Cache\n"
msgstr ""
"Nie można utworzyć pamięci podręcznej danych uwierzytelniających Kerberosa\n"

#, c-format
msgid "Error storing creds in credential cache: %s.\n"
msgstr ""
"Błąd podczas przechowywania danych uwierzytelniających w pamięci podręcznej: "
"%s.\n"

#, c-format
msgid "Unenrollment successful.\n"
msgstr "Pomyślnie wypisano.\n"

#, c-format
msgid "Unenrollment failed.\n"
msgstr "Wypisanie nie powiodło się.\n"

#, c-format
msgid "result not found in XML-RPC response\n"
msgstr "nie odnaleziono wyniku w odpowiedzi XML-RPC\n"

#, c-format
msgid "Unable to join host: Kerberos Credential Cache not found\n"
msgstr ""
"Nie można dołączyć do komputera: nie odnaleziono pamięci podręcznej danych "
"uwierzytelniających Kerberosa\n"

#, c-format
msgid ""
"Unable to join host: Kerberos User Principal not found and host password not "
"provided.\n"
msgstr ""
"Nie można dołączyć do komputera: nie odnaleziono naczelnika użytkownika "
"Kerberosa oraz nie podano hasła komputera.\n"

#, c-format
msgid "fork() failed\n"
msgstr "fork() nie powiodło się\n"

#, c-format
msgid "ipa-getkeytab not found\n"
msgstr "nie odnaleziono ipa-getkeytab\n"

#, c-format
msgid "ipa-getkeytab has bad permissions?\n"
msgstr "ipa-getkeytab posiada błędne uprawnienia?\n"

#, c-format
msgid "executing ipa-getkeytab failed, errno %d\n"
msgstr "wykonanie ipa-getkeytab nie powiodło się, errno %d\n"

#, c-format
msgid "child exited with %d\n"
msgstr "potomek został zakończony z %d\n"

#, c-format
msgid "Certificate subject base is: %s\n"
msgstr "Podstawa tematu certyfikatu: %s\n"

msgid "Unenroll this host from IPA server"
msgstr "Wypisuje ten komputer z serwera IPA"

msgid "IPA Server to use"
msgstr "Serwer IPA do użycia"

msgid "password"
msgstr "hasło"

#, c-format
msgid "Unable to parse principal name\n"
msgstr "Nie można przetworzyć nazwy naczelnika\n"

#, c-format
msgid "Removing principal %s\n"
msgstr "Usuwanie naczelnika %s\n"

#, c-format
msgid "Failed to open keytab\n"
msgstr "Otwarcie tablicy kluczy nie powiodło się\n"

#, c-format
msgid "principal not found\n"
msgstr "nie odnaleziono naczelnika\n"

#, c-format
msgid "Unable to remove entry\n"
msgstr "Nie można usunąć wpisu\n"

#, c-format
msgid "kvno %d\n"
msgstr "kvno %d\n"

#, c-format
msgid "Unable to parse principal\n"
msgstr "Nie można przetworzyć naczelnika\n"

msgid "Print debugging information"
msgstr "Wyświetlanie informacji o debugowaniu"

msgid "Debugging output"
msgstr "Wyjście debugowania"

msgid "Remove all principals in this realm"
msgstr "Usuwa wszystkich naczelników w tym obszarze"

#, c-format
msgid "Closing keytab failed\n"
msgstr "Zamknięcie tablicy kluczy nie powiodło się\n"

msgid "Out of memory\n"
msgstr "Brak pamięci\n"

msgid "Out of memory!?\n"
msgstr "Brak pamięci?\n"

msgid "Enctype comparison failed!\n"
msgstr "Porównanie typów szyfrowania nie powiodło się.\n"

msgid "Failed to create random key!\n"
msgstr "Utworzenie losowego klucza nie powiodło się.\n"

msgid "Failed to create key!\n"
msgstr "Utworzenie klucza nie powiodło się.\n"