pgkiln 0.58.0 → 0.60.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/SECURITY.md +2 -0
- package/db/migrations/128_developer_mfa.sql +48 -0
- package/docs/apex-feature-parity.md +6 -3
- package/docs/guide/03-builder.md +56 -2
- package/docs/guide/08-security.md +4 -0
- package/docs/guide/18-cli.md +9 -0
- package/docs/guide/20-ai-agents.md +18 -0
- package/package.json +1 -1
- package/public/builder.css +8 -0
- package/src/builder/i18n/de.ts +401 -0
- package/src/builder/i18n/en.ts +401 -0
- package/src/builder/i18n/es.ts +401 -0
- package/src/builder/i18n/fr.ts +401 -0
- package/src/builder/i18n/nl.ts +401 -0
- package/src/builder/i18n/pt.ts +401 -0
- package/src/builder/instance.ts +2 -0
- package/src/builder/routes.ts +149 -36
- package/src/builder/security.ts +261 -0
- package/src/builder/shared.ts +2 -2
- package/src/builder/ui.ts +13 -1
- package/src/builder/users.ts +123 -118
- package/src/builder/workspaces.ts +143 -135
- package/src/cli/main.ts +51 -0
- package/src/mfa.ts +260 -0
package/src/builder/i18n/nl.ts
CHANGED
|
@@ -1383,4 +1383,405 @@ export const nl: BuilderMessages = {
|
|
|
1383
1383
|
'st.saved': 'Opgeslagen.',
|
|
1384
1384
|
'st.settings_saved': 'Instellingen opgeslagen.',
|
|
1385
1385
|
'st.app_deleted': 'Applicatie verwijderd.',
|
|
1386
|
+
// ------------------------------------------------------------ Users and identity providers (sprint 125)
|
|
1387
|
+
'us.hints_none': 'Deze applicatie controleert nog geen rollen. Rollen tellen alleen waar een autorisatieschema of {fn} ze controleert (Shared Components → Autorisatieschema’s).',
|
|
1388
|
+
'us.hints_label': 'Rollen die deze applicatie controleert',
|
|
1389
|
+
'us.hints_add': 'Toevoegen',
|
|
1390
|
+
'us.hints_app': '{app} controleert',
|
|
1391
|
+
'us.title': 'Gebruikers',
|
|
1392
|
+
'us.providers_btn': 'Identiteitsproviders (single sign-on)',
|
|
1393
|
+
'us.ldap_btn': 'LDAP-directory’s',
|
|
1394
|
+
'us.intro': 'Eén account per persoon. Geef accounts toegang tot applicaties, met rollen per applicatie, hier of onder {where} van een applicatie.',
|
|
1395
|
+
'us.access_path': 'Shared Components → Toegangsbeheer',
|
|
1396
|
+
'us.accounts': 'Accounts',
|
|
1397
|
+
'us.search_ph': 'Zoek naam, gebruikersnaam of e-mail…',
|
|
1398
|
+
'us.search_label': 'Accounts zoeken',
|
|
1399
|
+
'us.search': 'Zoeken',
|
|
1400
|
+
'us.username': 'Gebruikersnaam',
|
|
1401
|
+
'us.name': 'Naam',
|
|
1402
|
+
'us.apps_roles': 'Applicaties (rollen)',
|
|
1403
|
+
'us.applications': 'Applicaties',
|
|
1404
|
+
'us.signin': 'Aanmelden',
|
|
1405
|
+
'us.status': 'Status',
|
|
1406
|
+
'us.none': 'geen',
|
|
1407
|
+
'us.password': 'wachtwoord',
|
|
1408
|
+
'us.no_password': 'geen wachtwoord',
|
|
1409
|
+
'us.active': 'actief',
|
|
1410
|
+
'us.inactive': 'inactief',
|
|
1411
|
+
'us.last': 'laatst {at}',
|
|
1412
|
+
'us.no_accounts': 'Geen accounts gevonden.',
|
|
1413
|
+
'us.create': 'Account aanmaken',
|
|
1414
|
+
'us.username_help': 'Geen spaties of dubbele punten; niet hoofdlettergevoelig.',
|
|
1415
|
+
'us.email': 'E-mail',
|
|
1416
|
+
'us.password_label': 'Wachtwoord',
|
|
1417
|
+
'us.password_help': 'Minstens 8 tekens. Laat leeg voor accounts die alleen via single sign-on aanmelden.',
|
|
1418
|
+
'us.must_change': 'Wachtwoord wijzigen bij het eerste gebruik verplichten',
|
|
1419
|
+
'us.settings': 'Accountinstellingen',
|
|
1420
|
+
'us.min_length': 'Minimale wachtwoordlengte',
|
|
1421
|
+
'us.lifetime': 'Geldigheid van het wachtwoord (dagen)',
|
|
1422
|
+
'us.lifetime_help': 'Na zoveel dagen moeten gebruikers bij het aanmelden een nieuw wachtwoord kiezen. 0 = nooit.',
|
|
1423
|
+
'us.mixed': 'Wachtwoorden hebben letters en cijfers nodig',
|
|
1424
|
+
'us.policy_note': 'Wachtwoorden mogen nooit de gebruikersnaam bevatten. Aanmelden wordt {minutes} minuten geblokkeerd na {failures} mislukte pogingen (Werkruimtehulpmiddelen → Instantie-instellingen); Deblokkeren bij een account heft dat op.',
|
|
1425
|
+
'us.save_settings': 'Instellingen opslaan',
|
|
1426
|
+
'us.created': 'Account aangemaakt. Geef het nu toegang tot applicaties.',
|
|
1427
|
+
'us.exists': 'Er bestaat al een account met die gebruikersnaam.',
|
|
1428
|
+
'us.settings_saved': 'Accountinstellingen opgeslagen.',
|
|
1429
|
+
'us.details': 'Details',
|
|
1430
|
+
'us.active_label': 'Actief',
|
|
1431
|
+
'us.active_help': 'Inactieve accounts kunnen bij geen enkele applicatie aanmelden; deactiveren beëindigt hun sessies.',
|
|
1432
|
+
'us.save': 'Opslaan',
|
|
1433
|
+
'us.password_title': 'Wachtwoord',
|
|
1434
|
+
'us.set': 'Ingesteld',
|
|
1435
|
+
'us.set_on': 'Ingesteld op {date}',
|
|
1436
|
+
'us.sso_only': 'Geen wachtwoord (alleen single sign-on)',
|
|
1437
|
+
'us.must_next': 'Moet bij de volgende aanmelding worden gewijzigd',
|
|
1438
|
+
'us.expires': 'Verloopt over {n} dag(en)',
|
|
1439
|
+
'us.fails': '{n} mislukte aanmelding(en) in het afgelopen uur',
|
|
1440
|
+
'us.unexpire': 'Verloop opheffen',
|
|
1441
|
+
'us.expire': 'Wachtwoord laten verlopen',
|
|
1442
|
+
'us.unlock': 'Aanmelden deblokkeren',
|
|
1443
|
+
'us.new_password': 'Nieuw wachtwoord',
|
|
1444
|
+
'us.set_password_label': 'Een wachtwoord instellen',
|
|
1445
|
+
'us.ends_sessions': 'Beëindigt de sessies van het account.',
|
|
1446
|
+
'us.set_password': 'Wachtwoord instellen',
|
|
1447
|
+
'us.remove_confirm': 'Wachtwoord verwijderen? Het account kan dan alleen via single sign-on aanmelden.',
|
|
1448
|
+
'us.remove_password': 'Wachtwoord verwijderen',
|
|
1449
|
+
'us.delete_confirm': 'Account {user} met alle toegang tot applicaties verwijderen?',
|
|
1450
|
+
'us.delete': 'Account verwijderen',
|
|
1451
|
+
'us.app_access': 'Toegang tot applicaties',
|
|
1452
|
+
'us.application': 'Applicatie',
|
|
1453
|
+
'us.roles': 'Rollen',
|
|
1454
|
+
'us.roles_in': 'Rollen in {app}',
|
|
1455
|
+
'us.roles_ph': 'geen rollen (bijv. {example})',
|
|
1456
|
+
'us.revoke_confirm': 'Toegang tot {app} intrekken?',
|
|
1457
|
+
'us.revoke': 'Intrekken',
|
|
1458
|
+
'us.no_access': 'Nog geen toegang tot een applicatie.',
|
|
1459
|
+
'us.grant': 'Toegang verlenen',
|
|
1460
|
+
'us.roles_comma': 'gescheiden door komma’s, of kies hieronder',
|
|
1461
|
+
'us.saved': 'Account opgeslagen.',
|
|
1462
|
+
'us.pw_removed': 'Wachtwoord verwijderd.',
|
|
1463
|
+
'us.pw_set': 'Wachtwoord ingesteld.',
|
|
1464
|
+
'us.pw_expired': 'Wachtwoord verlopen: het moet bij de volgende aanmelding worden gewijzigd.',
|
|
1465
|
+
'us.pw_unexpired': 'Wachtwoord niet meer verlopen.',
|
|
1466
|
+
'us.unlocked': 'Aanmelden gedeblokkeerd.',
|
|
1467
|
+
'us.deleted': 'Account verwijderd.',
|
|
1468
|
+
'us.granted': 'Toegang verleend.',
|
|
1469
|
+
'us.roles_saved': 'Rollen opgeslagen. De gebruiker krijgt ze bij de volgende aanmelding.',
|
|
1470
|
+
'us.revoked': 'Toegang ingetrokken.',
|
|
1471
|
+
'idp.title': 'Identiteitsproviders',
|
|
1472
|
+
'idp.name': 'Naam (in URL’s)',
|
|
1473
|
+
'idp.name_help': 'kleine letters, bijv. entra, google, keycloak',
|
|
1474
|
+
'idp.protocol': 'Protocol',
|
|
1475
|
+
'idp.label': 'Tekst van de knop',
|
|
1476
|
+
'idp.label_help': 'Getoond als “Aanmelden met …”',
|
|
1477
|
+
'idp.issuer': 'Uitgever (OIDC: URL; SAML: de entity-ID van de IdP)',
|
|
1478
|
+
'idp.issuer_help': 'bijv. https://login.microsoftonline.com/<tenant>/v2.0, https://keycloak.example.com/realms/acme, of voor SAML de entityID uit de IdP-metadata',
|
|
1479
|
+
'idp.client_id': 'Client-ID (SAML: de entity-ID van pgkiln)',
|
|
1480
|
+
'idp.client_id_help': 'OIDC: verplicht. SAML: leeg = de metadata-URL van deze provider.',
|
|
1481
|
+
'idp.sso_url': 'SAML: aanmeld-URL van de IdP',
|
|
1482
|
+
'idp.sso_url_help': 'De SingleSignOnService-locatie (HTTP-Redirect-binding) uit de IdP-metadata.',
|
|
1483
|
+
'idp.cert': 'SAML: ondertekeningscertificaat van de IdP (PEM)',
|
|
1484
|
+
'idp.cert_help': 'Uit de IdP-metadata (X509Certificate, tussen BEGIN/END CERTIFICATE-regels). Assertions moeten ermee ondertekend zijn.',
|
|
1485
|
+
'idp.secret': 'Clientgeheim',
|
|
1486
|
+
'idp.secret_kept': 'Er is een geheim opgeslagen. Laat leeg om het te houden.',
|
|
1487
|
+
'idp.secret_public': 'Laat leeg voor een openbare client (alleen PKCE).',
|
|
1488
|
+
'idp.scopes': 'Scopes',
|
|
1489
|
+
'idp.username_claim': 'Claim voor de gebruikersnaam',
|
|
1490
|
+
'idp.username_claim_help': 'Gebruik een claim die gebruikers niet zelf kunnen wijzigen (bijv. preferred_username, upn, email). SAML: een attribuutnaam of nameID.',
|
|
1491
|
+
'idp.groups_claim': 'Claim voor groepen',
|
|
1492
|
+
'idp.groups_claim_help': 'Paden met punten werken, bijv. realm_access.roles',
|
|
1493
|
+
'idp.auto_create': 'Accounts automatisch aanmaken bij de eerste aanmelding',
|
|
1494
|
+
'idp.auto_create_help': 'Anders kunnen alleen mensen met een account dat aan deze provider is gekoppeld (of hieronder toegestaan) aanmelden.',
|
|
1495
|
+
'idp.link': 'Bestaande accounts met dezelfde gebruikersnaam koppelen bij hun eerste aanmelding',
|
|
1496
|
+
'idp.link_help': 'Alleen als gebruikers de gebruikersnaamclaim bij deze provider niet zelf kunnen kiezen: anders kan iemand de naam van een bestaand account registreren en het overnemen. Met de e-mailclaim worden alleen geverifieerde adressen gekoppeld. Zet het uit zodra de accounts gekoppeld zijn.',
|
|
1497
|
+
'idp.enabled': 'Ingeschakeld',
|
|
1498
|
+
'idp.remove_secret': 'Het opgeslagen clientgeheim verwijderen',
|
|
1499
|
+
'idp.add': 'Provider toevoegen',
|
|
1500
|
+
'idp.intro': 'OpenID Connect-providers voor single sign-on (Microsoft Entra ID, Google, Okta, Keycloak, Auth0, …). Registreer pgkiln bij de provider als webapplicatie met de getoonde redirect-URI en schakel de provider dan per applicatie in onder {where}.',
|
|
1501
|
+
'idp.where': 'Instellingen → Aanmeldmethoden',
|
|
1502
|
+
'idp.providers': 'Providers',
|
|
1503
|
+
'idp.provider': 'Provider',
|
|
1504
|
+
'idp.issuer_col': 'Uitgever',
|
|
1505
|
+
'idp.used_by': 'Gebruikt door',
|
|
1506
|
+
'idp.linked': 'Gekoppelde accounts',
|
|
1507
|
+
'idp.no_apps': 'geen applicaties',
|
|
1508
|
+
'idp.enabled_s': 'ingeschakeld',
|
|
1509
|
+
'idp.disabled_s': 'uitgeschakeld',
|
|
1510
|
+
'idp.auto_s': 'automatisch aanmaken',
|
|
1511
|
+
'idp.links_s': 'koppelt bestaande accounts',
|
|
1512
|
+
'idp.none': 'Nog geen identiteitsproviders.',
|
|
1513
|
+
'idp.settings': 'Instellingen',
|
|
1514
|
+
'idp.delete_confirm': '{name} verwijderen? Gekoppelde identiteiten worden verwijderd; de accounts blijven.',
|
|
1515
|
+
'idp.delete': 'Provider verwijderen',
|
|
1516
|
+
'idp.register_idp': 'Registreren bij de identiteitsprovider',
|
|
1517
|
+
'idp.sp_metadata': 'Metadata van de serviceprovider (importeer die bij de IdP):',
|
|
1518
|
+
'idp.by_hand': 'Of met de hand: entity-ID {entity}, assertion consumer service (HTTP-POST) {acs}.',
|
|
1519
|
+
'idp.saml_note': 'Gebaseerd op {env}. Onderteken de assertions; stuur de groepen in het attribuut {claim} om ze aan rollen te koppelen.',
|
|
1520
|
+
'idp.register': 'Registreren bij de provider',
|
|
1521
|
+
'idp.redirect': 'Redirect-URI (callback):',
|
|
1522
|
+
'idp.public_url': 'Gebaseerd op {env}; stel het in op het adres dat gebruikers zien (bijv. https://apps.example.com).',
|
|
1523
|
+
'idp.grant': 'Granttype: {type} met PKCE. Scopes: {scopes}. Neem een claim {claim} op in het ID-token om groepen aan rollen te koppelen.',
|
|
1524
|
+
'idp.auth_code': 'authorization code',
|
|
1525
|
+
'idp.test': 'Discovery testen',
|
|
1526
|
+
'idp.added': 'Provider toegevoegd. Registreer de redirect-URI bij de provider en test daarna de verbinding.',
|
|
1527
|
+
'idp.saved': 'Provider opgeslagen.',
|
|
1528
|
+
'idp.works': 'Discovery werkt. Autorisatie-endpoint: {url}',
|
|
1529
|
+
'idp.failed': 'Discovery mislukt: {error}',
|
|
1530
|
+
'idp.deleted': 'Provider verwijderd.',
|
|
1531
|
+
// ------------------------------------------------------------ Workspaces (sprint 125)
|
|
1532
|
+
'wsp.title': 'Werkruimten',
|
|
1533
|
+
'wsp.admins_only': 'Alleen beheerders beheren werkruimten.',
|
|
1534
|
+
'wsp.err.exists': 'Er bestaat al een werkruimte met deze naam.',
|
|
1535
|
+
'wsp.err.name_check': 'De naam heeft 1 tot 60 tekens, zonder spaties aan het begin of eind.',
|
|
1536
|
+
'wsp.err.name': 'De naam heeft 1 tot 60 tekens.',
|
|
1537
|
+
'wsp.iso.secret': 'stel PGKILN_SECRET_KEY (minstens 32 tekens) in de omgeving van de server in: de databaselogins van de werkruimte krijgen wachtwoorden die daarvan zijn afgeleid.',
|
|
1538
|
+
'wsp.iso.runtime': 'stel RUNTIME_DATABASE_URL in: applicaties draaien op de eigenaarsverbinding, dus geen werkruimte kan worden geïsoleerd.',
|
|
1539
|
+
'wsp.err.role_taken': 'deze rol hoort al bij een andere werkruimte.',
|
|
1540
|
+
'wsp.err.role_has': 'de werkruimte heeft deze rol al.',
|
|
1541
|
+
'wsp.isolated_tag': 'geïsoleerd',
|
|
1542
|
+
'wsp.iso.on': 'De applicaties draaien als {run} en de SQL van de ontwikkelaars (SQL Workshop, codecontroles, de Advisor) als {dev}. Beide bereiken alleen de rollen hieronder en zien in de tabellen van pgkiln alleen de applicaties, sessies en accounts van deze werkruimte. Ontwikkelaars die ook bij een gedeelde werkruimte horen, houden daar de rechten van die werkruimte.',
|
|
1543
|
+
'wsp.db_role': 'Databaserol',
|
|
1544
|
+
'wsp.used_by': 'Gebruikt door',
|
|
1545
|
+
'wsp.missing': 'ontbreekt',
|
|
1546
|
+
'wsp.no_app': 'geen applicatie',
|
|
1547
|
+
'wsp.remove': 'Verwijderen',
|
|
1548
|
+
'wsp.no_roles': 'Geen databaserollen: applicaties hier kunnen niet als een eigen rol draaien.',
|
|
1549
|
+
'wsp.add_role': 'Een databaserol toevoegen',
|
|
1550
|
+
'wsp.add_role_help': 'Een bestaande rol (geen superuser, geen rol die rollen maakt of row level security omzeilt). Haar rechten worden die van deze werkruimte; ze kan niet bij een andere werkruimte horen.',
|
|
1551
|
+
'wsp.add_role_btn': 'Rol toevoegen',
|
|
1552
|
+
'wsp.make_shared_confirm': '{name} weer gedeeld maken? De applicaties draaien dan op de gedeelde runtimeverbinding en de SQL van de ontwikkelaars als eigenaar.',
|
|
1553
|
+
'wsp.make_shared': 'Gedeeld maken',
|
|
1554
|
+
'wsp.shared_text': 'Gedeeld: de applicaties draaien op de gedeelde runtimeverbinding en de SQL van de ontwikkelaars als eigenaar, zoals bij elke gedeelde werkruimte.',
|
|
1555
|
+
'wsp.iso_help': 'Isoleren geeft de werkruimte twee eigen databaselogins en de databaserollen die haar applicaties nu gebruiken. Applicatiecode bereikt dan alleen die rollen en de applicaties van deze werkruimte; de SQL Workshop van de ontwikkelaars draait op de login van de werkruimte in plaats van als eigenaar. Nieuwe applicaties krijgen een eigen nieuwe rol en schema.',
|
|
1556
|
+
'wsp.to_isolate': 'Om een werkruimte te isoleren: {problem}',
|
|
1557
|
+
'wsp.isolate_confirm': '{name} isoleren?',
|
|
1558
|
+
'wsp.isolate': 'Deze werkruimte isoleren',
|
|
1559
|
+
'wsp.isolation': 'Isolatie',
|
|
1560
|
+
'wsp.service': 'Dienst beheren',
|
|
1561
|
+
'wsp.message': 'Werkruimtebericht',
|
|
1562
|
+
'wsp.message_help': 'Getoond aan de ontwikkelaars van deze werkruimte op de App Builder-startpagina, bijv. een onderhoudsvenster. Platte tekst.',
|
|
1563
|
+
'wsp.banner': 'Omgevingsbanner',
|
|
1564
|
+
'wsp.banner_help': 'Een kort label bovenaan elke builderpagina zolang deze werkruimte actief is. Leeg: geen banner.',
|
|
1565
|
+
'wsp.banner_colour': 'Kleur van de banner',
|
|
1566
|
+
'wsp.save': 'Opslaan',
|
|
1567
|
+
'wsp.prefs': 'Voorkeuren van de werkruimte',
|
|
1568
|
+
'wsp.sql_on': 'SQL Workshop inschakelen',
|
|
1569
|
+
'wsp.sql_on_help': 'Uit: het SQL-werkblad, de Objectbrowser, SQL-scripts, gegevens laden en uitladen, Quick SQL, de querybouwer, DDL, Vergelijken en AI worden geweigerd zolang deze werkruimte actief is, voor elke ontwikkelaar.',
|
|
1570
|
+
'wsp.rest_on': 'RESTful-services inschakelen',
|
|
1571
|
+
'wsp.rest_on_help': 'Uit: de REST-modules van de applicaties van deze werkruimte antwoorden 404 (Not found) op {path}; ze kunnen nog wel worden bewerkt.',
|
|
1572
|
+
'wsp.builder_home': 'Builderlinks openen',
|
|
1573
|
+
'wsp.home.apps': 'App Builder',
|
|
1574
|
+
'wsp.home.home': 'Startpagina van de werkruimte',
|
|
1575
|
+
'wsp.builder_home_help': 'Waar een link naar /builder (een bladwijzer van vóór de startpagina van de werkruimte) in deze werkruimte naartoe gaat. Aanmelden opent altijd de startpagina van de werkruimte; App Builder staat op /builder/apps.',
|
|
1576
|
+
'wsp.save_prefs': 'Voorkeuren opslaan',
|
|
1577
|
+
'wsp.links': 'Extensielinks',
|
|
1578
|
+
'wsp.links_help': 'Links naar andere hulpmiddelen van de ontwikkelaars van deze werkruimte (monitoring, een wiki, een ticketsysteem), in het menu {menu} van de builder zolang de werkruimte actief is. Ze openen in een nieuw tabblad.',
|
|
1579
|
+
'wsp.extensions': 'Extensies',
|
|
1580
|
+
'wsp.label': 'Label',
|
|
1581
|
+
'wsp.url': 'URL',
|
|
1582
|
+
'wsp.order': 'Volgorde',
|
|
1583
|
+
'wsp.delete_link_confirm': 'De link {label} verwijderen?',
|
|
1584
|
+
'wsp.delete': 'Verwijderen',
|
|
1585
|
+
'wsp.no_links': 'Geen extensielinks.',
|
|
1586
|
+
'wsp.label_ph': 'Monitoring',
|
|
1587
|
+
'wsp.description': 'Beschrijving',
|
|
1588
|
+
'wsp.add_link': 'Link toevoegen',
|
|
1589
|
+
'wsp.switched': 'Werkruimte {name}.',
|
|
1590
|
+
'wsp.intro': 'Een werkruimte groepeert applicaties en de ontwikkelaars die ze bouwen. Ontwikkelaars zien en wijzigen de applicaties van hun eigen werkruimten; beheerders zien ze allemaal. Een gedeelde werkruimte is geen beveiligingsgrens tussen ontwikkelaars die SQL schrijven: haar SQL Workshop en applicatiecode draaien met de rechten van deze installatie. Een {isolated} werkruimte is dat wel: haar applicaties en SQL draaien op eigen databaselogins die alleen haar databaserollen en haar eigen applicaties bereiken.',
|
|
1591
|
+
'wsp.isolated_word': 'geïsoleerde',
|
|
1592
|
+
'wsp.workspace': 'Werkruimte',
|
|
1593
|
+
'wsp.applications': 'Applicaties',
|
|
1594
|
+
'wsp.developers': 'Ontwikkelaars',
|
|
1595
|
+
'wsp.admins_text': 'alleen beheerders',
|
|
1596
|
+
'wsp.add': 'Werkruimte toevoegen',
|
|
1597
|
+
'wsp.name': 'Naam',
|
|
1598
|
+
'wsp.name_help': 'Bijvoorbeeld het team of de afdeling die hier haar applicaties bouwt.',
|
|
1599
|
+
'wsp.first_dev': 'U wordt de eerste ontwikkelaar; voeg anderen toe op de pagina ervan.',
|
|
1600
|
+
'wsp.added': 'Werkruimte {name} toegevoegd.',
|
|
1601
|
+
'wsp.settings': 'Instellingen',
|
|
1602
|
+
'wsp.default_no_delete': 'De werkruimte Default kan niet worden verwijderd: geïmporteerde applicaties en applicaties die via de opdrachtregel zijn gemaakt, beginnen hier.',
|
|
1603
|
+
'wsp.delete_confirm': 'Werkruimte {name} verwijderen?',
|
|
1604
|
+
'wsp.delete_ws': 'Werkruimte verwijderen',
|
|
1605
|
+
'wsp.move_first': 'Verplaats eerst de applicaties naar een andere werkruimte.',
|
|
1606
|
+
'wsp.devs_help': 'Ontwikkelaars van deze werkruimte zien en wijzigen haar applicaties. Beheerders zien elke werkruimte.',
|
|
1607
|
+
'wsp.administrator': '(beheerder)',
|
|
1608
|
+
'wsp.ws_admins': 'Werkruimtebeheerders',
|
|
1609
|
+
'wsp.ws_admins_help': 'Zij beheren de naam en de ontwikkelaars van deze werkruimte. Isolatie, databaserollen, applicaties verplaatsen en de werkruimte verwijderen blijven bij de beheerders.',
|
|
1610
|
+
'wsp.save_devs': 'Ontwikkelaars opslaan',
|
|
1611
|
+
'wsp.mail_net': 'Mail en netwerktoegang',
|
|
1612
|
+
'wsp.mail_net_text': 'De eigen {mail} van deze werkruimte voor haar applicaties zonder eigen dienst, haar lijst voor {network} (welke hosts haar applicaties mogen aanroepen, binnen de lijst van de installatie) en de {queue}.',
|
|
1613
|
+
'wsp.mail_service': 'maildienst',
|
|
1614
|
+
'wsp.network': 'netwerktoegang',
|
|
1615
|
+
'wsp.queue': 'mailwachtrij',
|
|
1616
|
+
'wsp.iso_short_on': 'Geïsoleerd: de applicaties en SQL draaien op eigen databaselogins.',
|
|
1617
|
+
'wsp.iso_short_off': 'Gedeeld.',
|
|
1618
|
+
'wsp.admins_change': 'Beheerders wijzigen dit.',
|
|
1619
|
+
'wsp.application': 'Applicatie',
|
|
1620
|
+
'wsp.move_to': 'Verplaatsen naar',
|
|
1621
|
+
'wsp.move_label': '{app} verplaatsen naar',
|
|
1622
|
+
'wsp.move': 'Verplaatsen',
|
|
1623
|
+
'wsp.no_other': 'geen andere werkruimte',
|
|
1624
|
+
'wsp.no_apps': 'Geen applicaties.',
|
|
1625
|
+
'wsp.saved': 'Werkruimte opgeslagen.',
|
|
1626
|
+
'wsp.not_found': 'Niet gevonden.',
|
|
1627
|
+
'wsp.devs_saved': 'Ontwikkelaars opgeslagen.',
|
|
1628
|
+
'wsp.not_moved': 'Niet verplaatst: {why}',
|
|
1629
|
+
'wsp.moved': 'Applicatie verplaatst naar {name}.',
|
|
1630
|
+
'wsp.err.default': 'De werkruimte Default kan niet worden verwijderd.',
|
|
1631
|
+
'wsp.err.isolated': 'Maak de werkruimte gedeeld (niet geïsoleerd) voordat u haar verwijdert.',
|
|
1632
|
+
'wsp.err.has_apps': 'Verplaats eerst de applicaties van deze werkruimte naar een andere.',
|
|
1633
|
+
'wsp.deleted': 'Werkruimte {name} verwijderd.',
|
|
1634
|
+
'wsp.isolated_now': 'De werkruimte is geïsoleerd: de applicaties en SQL draaien nu op eigen databaselogins.',
|
|
1635
|
+
'wsp.shared_now': 'De werkruimte is weer gedeeld: de applicaties draaien op de gedeelde runtimeverbinding.',
|
|
1636
|
+
'wsp.not_isolated': 'Niet geïsoleerd: {why}',
|
|
1637
|
+
'wsp.not_changed': 'Niet gewijzigd: {why}',
|
|
1638
|
+
'wsp.err.role_name': 'Een rolnaam is een letter of _ gevolgd door letters, cijfers, _ of $ (hoogstens 63).',
|
|
1639
|
+
'wsp.err.no_role': 'Er is geen databaserol {role}.',
|
|
1640
|
+
'wsp.err.role_used_one': '{apps} draait als {role}: geef haar eerst een andere rol.',
|
|
1641
|
+
'wsp.err.role_used': '{apps} draaien als {role}: geef ze eerst een andere rol.',
|
|
1642
|
+
'wsp.role_removed': 'Rol {role} verwijderd.',
|
|
1643
|
+
'wsp.role_added': 'Rol {role} toegevoegd.',
|
|
1644
|
+
'wsp.not_saved': 'Niet opgeslagen: {why}',
|
|
1645
|
+
'wsp.err.message': 'Het bericht heeft hoogstens 2000 tekens.',
|
|
1646
|
+
'wsp.err.banner': 'Het bannerlabel heeft hoogstens 40 tekens.',
|
|
1647
|
+
'wsp.service_saved': 'Bericht en banner opgeslagen.',
|
|
1648
|
+
'wsp.prefs_saved': 'Voorkeuren opgeslagen.',
|
|
1649
|
+
'wsp.err.label': 'Het label heeft 1 tot 60 tekens.',
|
|
1650
|
+
'wsp.err.url': 'De URL begint met http:// of https://.',
|
|
1651
|
+
'wsp.err.description': 'De beschrijving heeft hoogstens 500 tekens.',
|
|
1652
|
+
'wsp.err.order': 'De volgorde is een geheel getal.',
|
|
1653
|
+
'wsp.link_added': 'Link {label} toegevoegd.',
|
|
1654
|
+
'wsp.link_exists': 'Er is al een link {label}.',
|
|
1655
|
+
'wsp.link_not_saved': 'De link is niet opgeslagen.',
|
|
1656
|
+
'wsp.link_deleted': 'Link verwijderd.',
|
|
1657
|
+
'wsp.util_title': 'Gebruik van de werkruimte: {name}',
|
|
1658
|
+
'wsp.pages': 'Pagina’s',
|
|
1659
|
+
'wsp.views30': 'Paginaweergaven (30 dagen)',
|
|
1660
|
+
'wsp.scripts': 'SQL-scripts',
|
|
1661
|
+
'wsp.regions': 'Regio’s',
|
|
1662
|
+
'wsp.items': 'Items',
|
|
1663
|
+
'wsp.users30': 'Gebruikers (30 dagen)',
|
|
1664
|
+
'wsp.static': 'Statische bestanden',
|
|
1665
|
+
'wsp.views': 'Paginaweergaven',
|
|
1666
|
+
'wsp.users': 'Gebruikers',
|
|
1667
|
+
'wsp.schemas': 'Schema’s',
|
|
1668
|
+
'wsp.schemas_help': 'De schema’s die de databaserollen van de werkruimte mogen gebruiken, met de opslag van hun tabellen, indexen en TOAST-gegevens.',
|
|
1669
|
+
'wsp.schema': 'Schema',
|
|
1670
|
+
'wsp.owner': 'Eigenaar',
|
|
1671
|
+
'wsp.tables': 'Tabellen',
|
|
1672
|
+
'wsp.storage': 'Opslag',
|
|
1673
|
+
'wsp.no_schemas': 'Geen schema’s: de applicaties van de werkruimte hebben geen eigen databaserol.',
|
|
1674
|
+
'wsp.utilization': 'Gebruik',
|
|
1675
|
+
'wsp.util_crumb': 'Gebruik: {name}',
|
|
1676
|
+
// ------------------------------------------------------------ Developers (sprint 125)
|
|
1677
|
+
'dev.title': 'Ontwikkelaars',
|
|
1678
|
+
'dev.change_pw': 'Uw wachtwoord wijzigen',
|
|
1679
|
+
'dev.current': 'Huidig wachtwoord',
|
|
1680
|
+
'dev.new': 'Nieuw wachtwoord',
|
|
1681
|
+
'dev.min8': 'Minstens 8 tekens.',
|
|
1682
|
+
'dev.change_btn': 'Wachtwoord wijzigen',
|
|
1683
|
+
'dev.your_email': 'Uw e-mailadres',
|
|
1684
|
+
'dev.email': 'E-mailadres',
|
|
1685
|
+
'dev.email_help': '“Mijn werkruimte vinden” op de aanmeldpagina stuurt uw werkruimten daarheen. Leeg: geen.',
|
|
1686
|
+
'dev.save': 'Opslaan',
|
|
1687
|
+
'dev.accounts': 'Ontwikkelaarsaccounts',
|
|
1688
|
+
'dev.accounts_help': 'Beheerders voegen ontwikkelaars toe en verwijderen ze, en kunnen pagina- en applicatievergrendelingen van anderen opheffen.',
|
|
1689
|
+
'dev.username': 'Gebruikersnaam',
|
|
1690
|
+
'dev.role': 'Rol',
|
|
1691
|
+
'dev.email_col': 'E-mail',
|
|
1692
|
+
'dev.you': '(u)',
|
|
1693
|
+
'dev.administrator': 'Beheerder',
|
|
1694
|
+
'dev.developer': 'Ontwikkelaar',
|
|
1695
|
+
'dev.email_of': 'E-mailadres van {user}',
|
|
1696
|
+
'dev.none': 'geen',
|
|
1697
|
+
'dev.make_dev': 'Ontwikkelaar maken',
|
|
1698
|
+
'dev.make_admin': 'Beheerder maken',
|
|
1699
|
+
'dev.remove_confirm': 'Ontwikkelaar {user} verwijderen?',
|
|
1700
|
+
'dev.remove': 'Verwijderen',
|
|
1701
|
+
'dev.add': 'Ontwikkelaar toevoegen',
|
|
1702
|
+
'dev.password': 'Wachtwoord',
|
|
1703
|
+
'dev.optional_email': 'Optioneel: voor “Mijn werkruimte vinden”.',
|
|
1704
|
+
'dev.admins_only': 'Alleen beheerders voegen ontwikkelaars toe en verwijderen ze.',
|
|
1705
|
+
'dev.err.email': 'Het e-mailadres is niet geldig.',
|
|
1706
|
+
'dev.added_ws': 'Ontwikkelaar toegevoegd aan werkruimte {name}.',
|
|
1707
|
+
'dev.added': 'Ontwikkelaar toegevoegd.',
|
|
1708
|
+
'dev.err.current': 'Het huidige wachtwoord klopt niet.',
|
|
1709
|
+
'dev.pw_changed': 'Wachtwoord gewijzigd.',
|
|
1710
|
+
'dev.email_saved': 'E-mailadres opgeslagen.',
|
|
1711
|
+
'dev.not_found': 'Niet gevonden.',
|
|
1712
|
+
'dev.role_changed': 'Rol gewijzigd.',
|
|
1713
|
+
'dev.removed': 'Ontwikkelaar verwijderd.',
|
|
1714
|
+
// ------------------------------------------------------------ Security: two-factor sign-in (sprint 126)
|
|
1715
|
+
'mfa.menu': 'Aanmelden in twee stappen',
|
|
1716
|
+
'mfa.title': 'Beveiliging',
|
|
1717
|
+
'mfa.intro': 'Meld u na uw wachtwoord aan met een code uit een authenticator-app. Met herstelcodes komt u binnen als u de telefoon kwijtraakt.',
|
|
1718
|
+
'mfa.required_you': 'Uw beheerder vereist aanmelden in twee stappen: voeg een authenticator-app toe.',
|
|
1719
|
+
'mfa.banner': 'Aanmelden in twee stappen is verplicht. Stel het in vóór {date}: {link}',
|
|
1720
|
+
'mfa.set_up_now': 'nu instellen',
|
|
1721
|
+
'mfa.apps': 'Authenticator-apps',
|
|
1722
|
+
'mfa.app_name': 'Naam',
|
|
1723
|
+
'mfa.app_default': 'Telefoon',
|
|
1724
|
+
'mfa.added': 'Toegevoegd',
|
|
1725
|
+
'mfa.last_used': 'Laatst gebruikt',
|
|
1726
|
+
'mfa.no_apps': 'Nog geen authenticator-app: u meldt zich alleen met uw wachtwoord aan.',
|
|
1727
|
+
'mfa.add_app': 'Authenticator-app toevoegen',
|
|
1728
|
+
'mfa.no_key': 'Aanmelden in twee stappen heeft de instantiesleutel (PGKILN_SECRET_KEY) nodig om het geheim van de app op te slaan.',
|
|
1729
|
+
'mfa.scan': 'Scan de QR-code met een authenticator-app.',
|
|
1730
|
+
'mfa.or_enter': 'Of voer deze sleutel met de hand in:',
|
|
1731
|
+
'mfa.enter_code': 'Voer de 6-cijferige code uit de app in.',
|
|
1732
|
+
'mfa.qr_label': 'QR-code voor de authenticator-app',
|
|
1733
|
+
'mfa.confirm_app': 'Bevestigen en inschakelen',
|
|
1734
|
+
'mfa.cancel_setup': 'Annuleren',
|
|
1735
|
+
'mfa.setup_expired': 'Het instellen duurde te lang: begin opnieuw.',
|
|
1736
|
+
'mfa.wrong_setup': 'Die code klopt niet: controleer de tijd op uw telefoon en probeer de volgende code.',
|
|
1737
|
+
'mfa.app_added': 'Authenticator-app toegevoegd: voortaan meldt u zich ook met een code aan.',
|
|
1738
|
+
'mfa.remove': 'Verwijderen',
|
|
1739
|
+
'mfa.remove_app': 'Deze app verwijderen',
|
|
1740
|
+
'mfa.your_password': 'Uw wachtwoord',
|
|
1741
|
+
'mfa.wrong_password': 'Onjuist wachtwoord.',
|
|
1742
|
+
'mfa.cannot_remove_required': 'Aanmelden in twee stappen is voor u verplicht: voeg eerst een andere app toe.',
|
|
1743
|
+
'mfa.cannot_remove_admin': 'Minstens twee beheerders (of alle, als het er minder zijn) moeten aanmelden in twee stappen houden zolang het beleid aan staat.',
|
|
1744
|
+
'mfa.keep_admins': 'Nu niet: het beleid vereist minstens twee beheerders met aanmelden in twee stappen (of alle, als het er minder zijn).',
|
|
1745
|
+
'mfa.removed': 'Authenticator-app verwijderd.',
|
|
1746
|
+
'mfa.codes_title': 'Herstelcodes',
|
|
1747
|
+
'mfa.codes_once': 'Bewaar deze codes op een veilige plek, niet bij uw telefoon. Elke code vervangt één keer een app-code. Ze worden alleen nu getoond.',
|
|
1748
|
+
'mfa.codes_saved': 'Ik heb deze codes bewaard',
|
|
1749
|
+
'mfa.codes_done': 'Klaar',
|
|
1750
|
+
'mfa.codes_kept': 'Herstelcodes bewaard.',
|
|
1751
|
+
'mfa.codes_left': 'Ongebruikte herstelcodes: {n}.',
|
|
1752
|
+
'mfa.codes_after': 'U krijgt herstelcodes zodra u een authenticator-app toevoegt.',
|
|
1753
|
+
'mfa.codes_low': 'Nog maar weinig herstelcodes: maak nieuwe.',
|
|
1754
|
+
'mfa.codes_new': 'Nieuwe herstelcodes',
|
|
1755
|
+
'mfa.codes_new_confirm': 'Nieuwe herstelcodes maken? De oude werken dan niet meer.',
|
|
1756
|
+
'mfa.expired': 'Het aanmelden duurde te lang: meld u opnieuw aan.',
|
|
1757
|
+
'mfa.step_title': 'Aanmelden in twee stappen',
|
|
1758
|
+
'mfa.step_intro': 'Voer de code uit uw authenticator-app voor {user} in.',
|
|
1759
|
+
'mfa.code': 'Code',
|
|
1760
|
+
'mfa.code_help': '6 cijfers uit de app, of een van uw herstelcodes.',
|
|
1761
|
+
'mfa.verify': 'Controleren',
|
|
1762
|
+
'mfa.cancel': 'Terug naar aanmelden',
|
|
1763
|
+
'mfa.locked_out': 'Telefoon en codes kwijt? Vraag een beheerder uw aanmelden in twee stappen te resetten.',
|
|
1764
|
+
'mfa.wrong': 'Die code klopt niet of is al gebruikt.',
|
|
1765
|
+
'mfa.column': 'Twee stappen',
|
|
1766
|
+
'mfa.on': 'aan',
|
|
1767
|
+
'mfa.off': 'uit',
|
|
1768
|
+
'mfa.reset': 'Resetten',
|
|
1769
|
+
'mfa.reason': 'Reden',
|
|
1770
|
+
'mfa.reset_help': 'Verwijdert de apps en herstelcodes van {user} en meldt deze af. Wordt gelogd; de beheerders krijgen een e-mail.',
|
|
1771
|
+
'mfa.reset_btn': 'Aanmelden in twee stappen resetten',
|
|
1772
|
+
'mfa.reason_needed': 'Geef een reden voor de reset.',
|
|
1773
|
+
'mfa.reset_done': 'Aanmelden in twee stappen van {user} gereset.',
|
|
1774
|
+
'mfa.policy_title': 'Aanmelden in twee stappen',
|
|
1775
|
+
'mfa.policy_label': 'Aanmelden in twee stappen verplicht voor',
|
|
1776
|
+
'mfa.policy_off': 'Niemand (optioneel)',
|
|
1777
|
+
'mfa.policy_admins': 'Beheerders',
|
|
1778
|
+
'mfa.policy_all': 'Alle ontwikkelaars',
|
|
1779
|
+
'mfa.grace': 'Overgangsperiode (dagen)',
|
|
1780
|
+
'mfa.grace_help': 'Ontwikkelaars zonder app zien tot dan een herinnering; daarna alleen hun Beveiligingspagina.',
|
|
1781
|
+
'mfa.policy_help': 'Beheerders met aanmelden in twee stappen: {enrolled} van {admins}. Verplichten kan pas met minstens twee (of alle, als het er minder zijn).',
|
|
1782
|
+
'mfa.policy_save': 'Opslaan',
|
|
1783
|
+
'mfa.policy_saved': 'Beleid voor twee stappen opgeslagen.',
|
|
1784
|
+
'mfa.policy_needs_admins': 'Eerst moeten minstens twee beheerders (of alle, als het er minder zijn) aanmelden in twee stappen instellen, zodat niemand alleen buitengesloten raakt.',
|
|
1785
|
+
'mfa.without': 'Zonder aanmelden in twee stappen: {list}.',
|
|
1786
|
+
'mfa.cli_note': 'Buitengesloten? Op de server: pgkiln admin reset-2fa <developer> of pgkiln admin set-2fa-policy off.',
|
|
1386
1787
|
};
|