pgkiln 0.80.0 → 0.82.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.
Files changed (85) hide show
  1. package/db/migrations/146_database_model_providers.sql +53 -0
  2. package/db/migrations/147_condition_types.sql +80 -0
  3. package/db/migrations/148_validation_types.sql +44 -0
  4. package/db/migrations/149_dynamic_action_events.sql +45 -0
  5. package/db/migrations/150_process_types.sql +23 -0
  6. package/db/migrations/151_item_types.sql +16 -0
  7. package/db/migrations/152_workflow_diagram_region.sql +10 -0
  8. package/docs/apex-feature-parity.md +12 -10
  9. package/docs/guide/02-concepts.md +3 -3
  10. package/docs/guide/03-builder.md +13 -3
  11. package/docs/guide/04-pages-and-regions.md +17 -3
  12. package/docs/guide/05-items.md +5 -0
  13. package/docs/guide/06-processing.md +104 -17
  14. package/docs/guide/07-dynamic-actions.md +16 -1
  15. package/docs/guide/11-from-apex.md +7 -0
  16. package/examples/hr/hr_79_condition_types.sql +17 -0
  17. package/package.json +1 -1
  18. package/public/app.css +12 -0
  19. package/public/app.js +157 -9
  20. package/src/ai/embeddings.ts +20 -7
  21. package/src/appfiles.ts +4 -4
  22. package/src/builder/advisor.ts +43 -7
  23. package/src/builder/code-editor.ts +14 -10
  24. package/src/builder/components.ts +51 -21
  25. package/src/builder/conditions.ts +64 -0
  26. package/src/builder/db-users.ts +124 -118
  27. package/src/builder/designer.ts +9 -1
  28. package/src/builder/home.ts +42 -40
  29. package/src/builder/i18n/de.ts +464 -0
  30. package/src/builder/i18n/en.ts +464 -0
  31. package/src/builder/i18n/es.ts +464 -0
  32. package/src/builder/i18n/fr.ts +464 -0
  33. package/src/builder/i18n/it.ts +464 -0
  34. package/src/builder/i18n/ja.ts +464 -0
  35. package/src/builder/i18n/ko.ts +464 -0
  36. package/src/builder/i18n/nl.ts +464 -0
  37. package/src/builder/i18n/pt.ts +464 -0
  38. package/src/builder/i18n/zh-cn.ts +464 -0
  39. package/src/builder/i18n/zh-tw.ts +464 -0
  40. package/src/builder/instance.ts +27 -23
  41. package/src/builder/ldap.ts +50 -47
  42. package/src/builder/mail-queue.ts +50 -45
  43. package/src/builder/network-access.ts +46 -43
  44. package/src/builder/region-help.ts +3 -1
  45. package/src/builder/region-settings.ts +30 -5
  46. package/src/builder/vector-column.ts +3 -3
  47. package/src/builder/vector-providers.ts +16 -5
  48. package/src/i18n/ar.ts +5 -0
  49. package/src/i18n/cs.ts +5 -0
  50. package/src/i18n/da.ts +5 -0
  51. package/src/i18n/de.ts +5 -0
  52. package/src/i18n/el.ts +5 -0
  53. package/src/i18n/es.ts +5 -0
  54. package/src/i18n/fi.ts +5 -0
  55. package/src/i18n/fr.ts +5 -0
  56. package/src/i18n/he.ts +5 -0
  57. package/src/i18n/it.ts +5 -0
  58. package/src/i18n/ja.ts +5 -0
  59. package/src/i18n/ko.ts +5 -0
  60. package/src/i18n/nb.ts +5 -0
  61. package/src/i18n/pl.ts +5 -0
  62. package/src/i18n/pt.ts +5 -0
  63. package/src/i18n/ru.ts +5 -0
  64. package/src/i18n/sv.ts +5 -0
  65. package/src/i18n/tr.ts +5 -0
  66. package/src/i18n/uk.ts +5 -0
  67. package/src/i18n/zh.ts +5 -0
  68. package/src/i18n.ts +10 -0
  69. package/src/metadata.ts +72 -9
  70. package/src/runtime/authz.ts +9 -5
  71. package/src/runtime/context.ts +4 -0
  72. package/src/runtime/da-styles.ts +37 -0
  73. package/src/runtime/documents.ts +3 -2
  74. package/src/runtime/engine.ts +95 -13
  75. package/src/runtime/items.ts +33 -0
  76. package/src/runtime/logic.ts +79 -8
  77. package/src/runtime/maps.ts +50 -4
  78. package/src/runtime/process-types.ts +139 -0
  79. package/src/runtime/processes.ts +2 -0
  80. package/src/runtime/regions.ts +4 -0
  81. package/src/runtime/render.ts +13 -2
  82. package/src/runtime/routes.ts +2 -2
  83. package/src/runtime/workflow-diagram.ts +45 -0
  84. package/src/vector.ts +3 -3
  85. package/src/workflow.ts +10 -2
@@ -1958,4 +1958,468 @@ export const fr: BuilderMessages = {
1958
1958
  'us.mfa_reset_help': 'Supprime les applications d’authentification et les codes de récupération de {user} et le déconnecte partout. Là où une application exige la connexion à deux facteurs, une nouvelle application est ajoutée à la prochaine connexion. Journalisé.',
1959
1959
  'us.mfa_reset_done': 'La connexion à deux facteurs de {user} a été réinitialisée.',
1960
1960
  'us.mfa_reason_needed': 'Indiquez la raison de la réinitialisation.',
1961
+ // ------------------------------------------------------------ Mail queue (sprint 152)
1962
+ 'mq.title': 'File d\'attente des e-mails',
1963
+ 'mq.refused': 'Seuls les administrateurs et les administrateurs de l\'espace de travail voient la file d\'attente des e-mails.',
1964
+ 'mq.period.24': 'Dernières 24 heures',
1965
+ 'mq.period.48': 'Dernières 48 heures',
1966
+ 'mq.period.168': 'Derniers 7 jours',
1967
+ 'mq.period': 'Période',
1968
+ 'mq.workspace': 'Espace de travail',
1969
+ 'mq.all_workspaces': 'Tous les espaces de travail',
1970
+ 'mq.app': 'Application',
1971
+ 'mq.all_apps': 'Toutes les applications',
1972
+ 'mq.intro_ws': 'Distribution des e-mails de l\'espace de travail {workspace} : ce qui a été mis en file d\'attente, envoyé et a échoué, quels e-mails sont réessayés, combien de temps les fournisseurs ont mis, et les échecs avec la réponse du fournisseur. Les e-mails sont conservés 30 jours.',
1973
+ 'mq.intro_all': 'Distribution des e-mails de tous les espaces de travail : ce qui a été mis en file d\'attente, envoyé et a échoué, quels e-mails sont réessayés, combien de temps les fournisseurs ont mis, et les échecs avec la réponse du fournisseur. Les e-mails sont conservés 30 jours.',
1974
+ 'mq.only_yours': 'Vous ne voyez que les applications de votre espace de travail.',
1975
+ 'mq.stat.queued': 'en file d\'attente',
1976
+ 'mq.stat.retrying': 'en cours de nouvel essai',
1977
+ 'mq.stat.sending': 'en cours d\'envoi',
1978
+ 'mq.stat.sent': 'envoyés',
1979
+ 'mq.stat.failed': 'en échec',
1980
+ 'mq.stat.delivered': 'distribués',
1981
+ 'mq.stat.avg': 'appel moyen au fournisseur',
1982
+ 'mq.per_hour': 'Par heure',
1983
+ 'mq.col.hour': 'Heure (UTC)',
1984
+ 'mq.col.hour_short': 'Heure',
1985
+ 'mq.col.queued': 'En file',
1986
+ 'mq.col.sent': 'Envoyés',
1987
+ 'mq.col.failed': 'En échec',
1988
+ 'mq.col.retrying': 'Nouvel essai',
1989
+ 'mq.none_period': 'Aucun e-mail pendant cette période.',
1990
+ 'mq.slowest': 'Appels au fournisseur les plus lents',
1991
+ 'mq.col.when': 'Quand (UTC)',
1992
+ 'mq.col.when_short': 'Quand',
1993
+ 'mq.col.service': 'Service',
1994
+ 'mq.col.status': 'Statut',
1995
+ 'mq.col.time': 'Durée',
1996
+ 'mq.status.sent': 'envoyé',
1997
+ 'mq.status.error': 'erreur',
1998
+ 'mq.status.retrying': 'nouvel essai',
1999
+ 'mq.status.sending': 'envoi',
2000
+ 'mq.status.cancelled': 'annulé',
2001
+ 'mq.none_calls': 'Aucun appel au fournisseur pendant cette période.',
2002
+ 'mq.per_app': 'Par espace de travail et application',
2003
+ 'mq.col.average': 'Moyenne',
2004
+ 'mq.col.slowest': 'Le plus lent',
2005
+ 'mq.failures': 'Échecs',
2006
+ 'mq.failures_intro': 'E-mails qui ne seront plus réessayés : le fournisseur les a refusés, ou ils ont échoué {n} fois. {retry} les remet en file d\'attente avec de nouvelles tentatives ; {purge} les supprime.',
2007
+ 'mq.col.failed_at': 'Échec (UTC)',
2008
+ 'mq.col.to': 'À',
2009
+ 'mq.col.subject': 'Objet',
2010
+ 'mq.col.answer': 'Réponse du fournisseur',
2011
+ 'mq.col.actions': 'Actions',
2012
+ 'mq.queued_at': 'mis en file {when}',
2013
+ 'mq.attempts_one': '{n} tentative',
2014
+ 'mq.attempts': '{n} tentatives',
2015
+ 'mq.retry': 'Réessayer',
2016
+ 'mq.purge': 'Purger',
2017
+ 'mq.purge_confirm': 'Supprimer cet e-mail ?',
2018
+ 'mq.none_failed': 'Aucun e-mail en échec.',
2019
+ 'mq.retry_all': 'Réessayer tous les échecs',
2020
+ 'mq.purge_all': 'Purger tous les échecs',
2021
+ 'mq.purge_all_confirm': 'Supprimer tous les e-mails en échec affichés ici ?',
2022
+ 'mq.requeued': 'L\'e-mail est de nouveau en file d\'attente.',
2023
+ 'mq.changed': 'L\'e-mail a changé entre-temps.',
2024
+ 'mq.deleted': 'L\'e-mail est supprimé.',
2025
+ 'mq.only_done': 'Seuls les e-mails envoyés, en échec ou annulés peuvent être purgés.',
2026
+ 'mq.n_requeued_one': '{n} e-mail remis en file d\'attente.',
2027
+ 'mq.n_requeued': '{n} e-mails remis en file d\'attente.',
2028
+ 'mq.n_deleted_one': '{n} e-mail supprimé.',
2029
+ 'mq.n_deleted': '{n} e-mails supprimés.',
2030
+ // ------------------------------------------------------------ Network access (sprint 152)
2031
+ 'na.title': 'Accès réseau',
2032
+ 'na.refused': 'Seuls les administrateurs et les administrateurs de l\'espace de travail gèrent l\'accès réseau.',
2033
+ 'na.none': 'Aucun.',
2034
+ 'na.url_invalid': 'L\'URL n\'est pas valide.',
2035
+ 'na.url_ok': '{host} peut être appelé par les applications de cet espace de travail (l\'adresse résolue est vérifiée au moment de l\'appel).',
2036
+ 'na.intro': 'Les services web que les applications peuvent appeler : {web_request}, les sources de données REST, le processus et l\'étape de workflow Invoke API, les points de terminaison de jeton des identifiants web, le stockage objet et les catalogues de sources REST. La liste de l\'installation s\'applique à chaque espace de travail ; la liste propre d\'un espace de travail ne peut que la restreindre, jamais l\'élargir. Les adresses privées et de bouclage restent refusées sauf si l\'installation les autorise, quoi qu\'un espace de travail liste.',
2037
+ 'na.workspace': 'Espace de travail {name}',
2038
+ 'na.outgoing': 'Appels sortants des applications de cet espace de travail',
2039
+ 'na.any_host': 'Tout hôte que l\'installation autorise',
2040
+ 'na.only_hosts': 'Uniquement les hôtes ci-dessous (et l\'installation doit aussi les autoriser)',
2041
+ 'na.hosts': 'Hôtes',
2042
+ 'na.hosts_help': 'Un par ligne : {a}, {b} pour ses sous-domaines, {c} pour un seul port. Pas de schéma ni de chemin. Restreint sans hôtes : aucun appel sortant.',
2043
+ 'na.unreachable': 'Absent de la liste de l\'installation, donc jamais joignable : {hosts}.',
2044
+ 'na.servers_on_hosts': 'Serveurs distants sur ces hôtes : {list}.',
2045
+ 'na.save': 'Enregistrer',
2046
+ 'na.installation': 'Installation',
2047
+ 'na.installation_note': 'Défini dans l\'environnement du serveur par ses administrateurs ({env}).',
2048
+ 'na.any_public': 'Tout hôte public ({star}).',
2049
+ 'na.private': 'Hôtes privés',
2050
+ 'na.private_note': 'Hôtes à adresse privée ou de bouclage pouvant être appelés ({env}).',
2051
+ 'na.servers': 'Serveurs distants',
2052
+ 'na.servers_intro': 'Les hôtes que représentent maintenant les {link} de cet espace de travail : les sources de données REST, catalogues et services d\'IA d\'un serveur appellent cet hôte.',
2053
+ 'na.servers_link': 'serveurs distants',
2054
+ 'na.col.server': 'Serveur',
2055
+ 'na.col.host': 'Hôte',
2056
+ 'na.col.from': 'Source',
2057
+ 'na.col.called': 'Serait appelé',
2058
+ 'na.host_none': 'aucun',
2059
+ 'na.base_url': 'URL de base',
2060
+ 'na.no': 'non',
2061
+ 'na.yes': 'oui',
2062
+ 'na.no_servers': 'Aucun serveur distant.',
2063
+ 'na.check': 'Vérifier une URL',
2064
+ 'na.url': 'URL',
2065
+ 'na.check_btn': 'Vérifier',
2066
+ 'na.check_note': 'Rien n\'est appelé : cela applique les listes à l\'URL telles qu\'elles sont maintenant.',
2067
+ 'na.workspaces': 'Espaces de travail',
2068
+ 'na.col.workspace': 'Espace de travail',
2069
+ 'na.col.outgoing': 'Appels sortants',
2070
+ 'na.n_hosts_one': '{n} hôte',
2071
+ 'na.n_hosts': '{n} hôtes',
2072
+ 'na.inst_list': 'la liste de l\'installation',
2073
+ 'na.ws_list': 'la liste de l\'espace de travail',
2074
+ 'na.refusals': 'Appels refusés',
2075
+ 'na.refusals_intro': 'Les 100 derniers appels de cet espace de travail refusés par une liste (conservés 7 jours). Le journal de débogage de l\'application les contient aussi.',
2076
+ 'na.col.when': 'Quand (UTC)',
2077
+ 'na.col.when_short': 'Quand',
2078
+ 'na.col.app': 'Application',
2079
+ 'na.col.call': 'Appel',
2080
+ 'na.col.refused_by': 'Refusé par',
2081
+ 'na.no_refusals': 'Aucun appel refusé.',
2082
+ 'na.saved_only': 'Enregistré : les applications de cet espace de travail n\'appellent que ces hôtes.',
2083
+ 'na.saved_none': 'Enregistré : les applications de cet espace de travail n\'appellent aucun hôte.',
2084
+ 'na.saved_inst': 'Enregistré : la liste de l\'installation s\'applique.',
2085
+ // ------------------------------------------------------------ Workspace utilities and dashboard (sprint 152)
2086
+ 'wu.title': 'Utilitaires de l\'espace de travail',
2087
+ 'wu.users': 'Utilisateurs',
2088
+ 'wu.users_text': 'Comptes des personnes qui utilisent les applications, et leurs accès.',
2089
+ 'wu.app_groups': 'Groupes d\'applications',
2090
+ 'wu.app_groups_text': 'Organisez les applications de cet espace de travail en groupes.',
2091
+ 'wu.gallery': 'Galerie d\'applications',
2092
+ 'wu.gallery_text': 'Applications d\'exemple et de démarrage à installer, et les modèles de cet espace de travail.',
2093
+ 'wu.providers': 'Fournisseurs d\'identité',
2094
+ 'wu.providers_text': 'Connexion OpenID Connect et SAML.',
2095
+ 'wu.ldap': 'Annuaires LDAP',
2096
+ 'wu.ldap_text': 'Connexion avec les comptes de l\'annuaire.',
2097
+ 'wu.password_policy': 'Politique de mots de passe',
2098
+ 'wu.password_policy_text': 'Longueur, complexité et durée de vie des mots de passe.',
2099
+ 'wu.developers': 'Développeurs',
2100
+ 'wu.developers_text': 'Qui peut utiliser ce générateur.',
2101
+ 'wu.sql': 'SQL Workshop',
2102
+ 'wu.sql_text': 'Exécutez du SQL, parcourez les objets et chargez des données.',
2103
+ 'wu.backups': 'Gérer les sauvegardes',
2104
+ 'wu.backups_text': 'Les sauvegardes de chaque application de cet espace de travail ; sauvegardez-les toutes en une fois.',
2105
+ 'wu.files': 'Fichiers statiques de l\'espace de travail',
2106
+ 'wu.files_text': 'CSS, JavaScript, images et polices que chaque application de cet espace de travail peut charger ({tag}).',
2107
+ 'wu.servers': 'Serveurs distants',
2108
+ 'wu.servers_text': 'URL de base nommées pour les sources de données REST, catalogues et services d\'IA : changez une valeur pour tous les déplacer.',
2109
+ 'wu.remote_dbs': 'Bases de données distantes',
2110
+ 'wu.remote_dbs_text': 'Les tables d\'une autre base PostgreSQL comme tables étrangères (postgres_fdw) que les applications interrogent comme les leurs (administrateurs).',
2111
+ 'wu.credentials': 'Identifiants web',
2112
+ 'wu.credentials_text': 'Clés et clients OAuth2 que les applications de cet espace de travail utilisent par leur nom (secrets chiffrés, en écriture seule).',
2113
+ 'wu.catalogs': 'Catalogues de sources REST',
2114
+ 'wu.catalogs_text': 'Services web décrits une fois pour l\'espace de travail (p. ex. depuis un document OpenAPI) ; les applications en créent des sources de données REST.',
2115
+ 'wu.export': 'Export et import',
2116
+ 'wu.export_text': 'Les composants de cet espace de travail dans un fichier : paramètres, développeurs, groupes, liens, catalogues, scripts, plans (administrateurs de l\'espace de travail).',
2117
+ 'wu.dashboard': 'Tableau de bord',
2118
+ 'wu.dashboard_text': 'Utilisation et problèmes dans tout l\'espace de travail.',
2119
+ 'wu.instance': 'Paramètres de l\'instance',
2120
+ 'wu.instance_text': 'Durée de session, limitation des connexions et configuration du serveur (administrateurs).',
2121
+ 'wu.workspaces': 'Espaces de travail',
2122
+ 'wu.workspaces_text': 'Groupes d\'applications et leurs développeurs (administrateurs).',
2123
+ 'wu.workspace': 'Espace de travail {name}',
2124
+ 'wu.workspace_text': 'Son nom, ses développeurs, ses préférences et ses liens d\'extension (administrateurs de l\'espace de travail).',
2125
+ 'wu.ui_defaults': 'Valeurs par défaut de l\'interface',
2126
+ 'wu.ui_defaults_text': 'Libellés, masques de format, aide et listes de valeurs par colonne de table, utilisés par les assistants de page.',
2127
+ 'wu.icons': 'Icônes',
2128
+ 'wu.icons_text': 'Parcourez les icônes du sélecteur d\'icônes.',
2129
+ 'wu.vectors': 'Fournisseurs de vecteurs',
2130
+ 'wu.vectors_text': 'Embeddings pour la recherche par le sens : les fournisseurs de vecteurs des applications, leurs colonnes vectorielles, et si pgvector est installé.',
2131
+ 'wu.ai': 'Services d\'IA',
2132
+ 'wu.ai_text': 'Claude, OpenAI, Gemini et services compatibles OpenAI pour les applications : modèles, clés, limites et utilisation (administrateurs).',
2133
+ 'wu.mail': 'Services de messagerie',
2134
+ 'wu.mail_text': 'SMTP, Microsoft 365, Amazon SES, Resend, Postmark, SendGrid ou Mailgun pour les e-mails des applications (administrateurs).',
2135
+ 'wu.otel': 'OpenTelemetry',
2136
+ 'wu.otel_text': 'Traces, journaux et métriques vers votre propre supervision via un OpenTelemetry Collector ; /metrics pour Prometheus (administrateurs).',
2137
+ 'wu.installation': 'Installation',
2138
+ 'wu.installation_text': 'Version, exécutions d\'installation et de mise à niveau, migrations appliquées (administrateurs).',
2139
+ 'wu.about': 'À propos',
2140
+ 'wu.about_text': 'Les utilitaires de l\'espace de travail contiennent ce que ses applications partagent : utilisateurs et connexion, groupes, la galerie et des rapports sur toutes les applications.',
2141
+ 'wu.learn_more': 'En savoir plus …',
2142
+ 'wu.cross_app': 'Rapports inter-applications',
2143
+ 'wu.side': 'À propos et rapports',
2144
+ 'wd.title': 'Tableau de bord de l\'espace de travail',
2145
+ 'wd.crumb': 'Tableau de bord',
2146
+ 'wd.apps': 'applications',
2147
+ 'wd.pages': 'pages',
2148
+ 'wd.accounts': 'comptes actifs',
2149
+ 'wd.views': 'pages vues (24 h)',
2150
+ 'wd.users': 'utilisateurs distincts (24 h)',
2151
+ 'wd.failures': 'connexions échouées / bloquées (24 h)',
2152
+ 'wd.problems': 'erreurs / accès refusés (24 h)',
2153
+ 'wd.per_app': 'Applications (7 jours)',
2154
+ 'wd.col.app': 'Application',
2155
+ 'wd.col.views_day': 'Vues (24 h)',
2156
+ 'wd.col.views_week': 'Vues (7 jours)',
2157
+ 'wd.col.users': 'Utilisateurs',
2158
+ 'wd.col.avg': 'ms moy.',
2159
+ 'wd.col.problems': 'Erreurs / refusés',
2160
+ 'wd.activity': 'Activité',
2161
+ // ------------------------------------------------------------ Instance settings (sprint 152)
2162
+ 'ins.title': 'Paramètres de l\'instance',
2163
+ 'ins.refused': 'Seuls les administrateurs modifient les paramètres de l\'instance.',
2164
+ 'ins.intro': 'Paramètres pour chaque application et le générateur de cette installation. Une valeur définie ici l\'emporte sur la variable d\'environnement ; vide utilise la variable d\'environnement ou la valeur par défaut. Les autres serveurs de cette installation prennent en compte un changement en 30 secondes.',
2165
+ 'ins.sessions': 'Sessions et connexion',
2166
+ 'ins.in_effect': 'En vigueur : {value} ({origin} ; {env}, par défaut {default}).',
2167
+ 'ins.origin.builder': 'défini ici',
2168
+ 'ins.origin.environment': 'variable d\'environnement',
2169
+ 'ins.origin.default': 'par défaut',
2170
+ 'ins.save': 'Enregistrer',
2171
+ 'ins.checks': 'Contrôles de verrouillage',
2172
+ 'ins.attention_one': '{n} d\'entre eux demande votre attention.',
2173
+ 'ins.attention': '{n} d\'entre eux demandent votre attention.',
2174
+ 'ins.nothing': 'Rien ne demande votre attention.',
2175
+ 'ins.checks_cli': 'Les mêmes contrôles s\'exécutent sur le serveur avec {cmd} ; {url} indique quelles clés d\'accès une nouvelle adresse casserait.',
2176
+ 'ins.level.ok': 'OK',
2177
+ 'ins.level.info': 'Remarque',
2178
+ 'ins.level.warning': 'Avertissement',
2179
+ 'ins.level.error': 'Erreur',
2180
+ 'ins.have_copy': 'J\'ai une copie de cette clé',
2181
+ 'ins.configuration': 'Configuration',
2182
+ 'ins.config_intro': 'Variables d\'environnement de ce serveur (chapitre 1 du guide). Les secrets indiquent seulement s\'ils sont définis.',
2183
+ 'ins.col.variable': 'Variable',
2184
+ 'ins.col.value': 'Valeur',
2185
+ 'ins.col.purpose': 'Rôle',
2186
+ 'ins.backup_ok': 'Sauvegarde de la clé de l\'instance confirmée.',
2187
+ 'ins.no_key': 'PGKILN_SECRET_KEY n\'est pas définie.',
2188
+ 'ins.saved': 'Paramètres de l\'instance enregistrés.',
2189
+ // ------------------------------------------------------------ LDAP directories (sprint 152)
2190
+ 'ldap.title': 'Annuaires LDAP',
2191
+ 'ldap.server': 'Serveur',
2192
+ 'ldap.name': 'Nom',
2193
+ 'ldap.name_help': 'en minuscules, p. ex. corp ou ad',
2194
+ 'ldap.display_name': 'Nom d\'affichage',
2195
+ 'ldap.url': 'URL',
2196
+ 'ldap.url_help': 'ldaps:// (TLS) ou ldap://, avec StartTLS ci-dessous. ldap:// seul envoie les mots de passe en clair.',
2197
+ 'ldap.bind_dn': 'DN du compte de service',
2198
+ 'ldap.bind_dn_help': 'Recherche les utilisateurs (et les groupes). Vide : une recherche anonyme.',
2199
+ 'ldap.bind_password': 'Mot de passe du compte de service',
2200
+ 'ldap.password_stored': 'Un mot de passe est enregistré. Laissez vide pour le conserver.',
2201
+ 'ldap.start_tls': 'StartTLS (pour les URL ldap://)',
2202
+ 'ldap.tls_verify': 'Vérifier le certificat du serveur',
2203
+ 'ldap.tls_verify_help': 'Désactivez uniquement pour des serveurs de test aux certificats auto-signés.',
2204
+ 'ldap.remove_password': 'Supprimer le mot de passe enregistré (recherche anonyme)',
2205
+ 'ldap.users': 'Utilisateurs',
2206
+ 'ldap.user_base': 'Base de recherche des utilisateurs',
2207
+ 'ldap.user_filter': 'Filtre des utilisateurs',
2208
+ 'ldap.user_filter_help': '{username} est remplacé par le nom d\'utilisateur échappé. Active Directory : {ad}',
2209
+ 'ldap.username_attr': 'Attribut du nom d\'utilisateur',
2210
+ 'ldap.username_attr_help': 'Le nom d\'utilisateur pgkiln ; AD : sAMAccountName',
2211
+ 'ldap.display_attr': 'Attribut du nom d\'affichage',
2212
+ 'ldap.email_attr': 'Attribut d\'e-mail',
2213
+ 'ldap.auto_create': 'Créer automatiquement les comptes à la première connexion',
2214
+ 'ldap.auto_create_help': 'Sinon, seules les personnes ayant déjà un compte (même nom d\'utilisateur) peuvent se connecter.',
2215
+ 'ldap.groups': 'Groupes (associés à des rôles dans le contrôle d\'accès de chaque application)',
2216
+ 'ldap.group_attr': 'Attribut de groupe de l\'utilisateur',
2217
+ 'ldap.group_attr_help': 'DN de groupes ; la première valeur de chacun est le nom du groupe. Vide : non utilisé.',
2218
+ 'ldap.group_base': 'Base de recherche des groupes',
2219
+ 'ldap.group_base_help': 'Facultatif : rechercher aussi les groupes.',
2220
+ 'ldap.group_filter': 'Filtre des groupes',
2221
+ 'ldap.group_filter_help': '{dn} : le DN de l\'utilisateur, {username} : le nom d\'utilisateur (tous deux échappés).',
2222
+ 'ldap.group_name_attr': 'Attribut du nom de groupe',
2223
+ 'ldap.enabled': 'Activé',
2224
+ 'ldap.add': 'Ajouter un annuaire',
2225
+ 'ldap.save': 'Enregistrer',
2226
+ 'ldap.intro': 'OpenLDAP, Active Directory et d\'autres serveurs LDAP. Le formulaire de connexion d\'une application vérifie d\'abord les mots de passe locaux, puis les annuaires activés sous {where}. Les groupes de l\'annuaire sont associés à des rôles dans le {access} de chaque application.',
2227
+ 'ldap.where': 'Paramètres → Méthodes de connexion',
2228
+ 'ldap.access': 'contrôle d\'accès',
2229
+ 'ldap.directories': 'Annuaires',
2230
+ 'ldap.col.directory': 'Annuaire',
2231
+ 'ldap.col.used_by': 'Utilisé par',
2232
+ 'ldap.col.linked': 'Comptes liés',
2233
+ 'ldap.col.status': 'Statut',
2234
+ 'ldap.no_apps': 'aucune application',
2235
+ 'ldap.status_enabled': 'activé',
2236
+ 'ldap.status_disabled': 'désactivé',
2237
+ 'ldap.status_auto': 'création automatique',
2238
+ 'ldap.none': 'Aucun annuaire LDAP pour l\'instant.',
2239
+ 'ldap.settings': 'Paramètres',
2240
+ 'ldap.delete_confirm': 'Supprimer {name} ? Les liens vers les comptes sont supprimés ; les comptes restent.',
2241
+ 'ldap.delete': 'Supprimer l\'annuaire',
2242
+ 'ldap.test': 'Tester la connexion',
2243
+ 'ldap.test_intro': 'Se connecte, s\'authentifie avec le compte de service (ou anonymement) et vérifie la base de recherche ; avec un nom d\'utilisateur, recherche l\'utilisateur avec le filtre. Aucun mot de passe n\'est vérifié.',
2244
+ 'ldap.test_username': 'Nom d\'utilisateur (facultatif)',
2245
+ 'ldap.test_username_label': 'Nom d\'utilisateur à rechercher',
2246
+ 'ldap.test_btn': 'Tester',
2247
+ 'ldap.added': 'Annuaire ajouté. Testez la connexion, puis activez-le pour une application.',
2248
+ 'ldap.saved': 'Annuaire enregistré.',
2249
+ 'ldap.test_failed': 'Le test a échoué : {error}',
2250
+ 'ldap.deleted': 'Annuaire supprimé.',
2251
+ // ------------------------------------------------------------ Database users (sprint 153)
2252
+ 'dbu.title': 'Utilisateurs de base de données',
2253
+ 'dbu.priv.none': 'Aucun',
2254
+ 'dbu.priv.read': 'Lecture (SELECT)',
2255
+ 'dbu.priv.write': 'Lecture et écriture',
2256
+ 'dbu.existing.none': 'Aucun changement',
2257
+ 'dbu.existing.read': 'Accorder la lecture',
2258
+ 'dbu.existing.write': 'Accorder la lecture et l\'écriture',
2259
+ 'dbu.existing.revoke': 'Tout révoquer',
2260
+ 'dbu.pw.none': 'Pas de mot de passe',
2261
+ 'dbu.pw.set': 'Définir un mot de passe',
2262
+ 'dbu.pw.keep': 'Conserver le mot de passe',
2263
+ 'dbu.pw.new': 'Définir un nouveau mot de passe',
2264
+ 'dbu.pw.remove': 'Supprimer le mot de passe',
2265
+ 'dbu.role': 'Rôle',
2266
+ 'dbu.name': 'Nom',
2267
+ 'dbu.name_help': 'Lettres, chiffres, _ et $ ; les noms commençant par pg_ ou pgkiln sont réservés.',
2268
+ 'dbu.sign_in': 'Connexion',
2269
+ 'dbu.can_login': 'Peut se connecter (LOGIN)',
2270
+ 'dbu.can_login_help': 'Un rôle sans cela est un rôle de groupe : d\'autres obtiennent ses privilèges en étant membres.',
2271
+ 'dbu.password': 'Mot de passe',
2272
+ 'dbu.password_help': 'Vous saisissez le mot de passe à l\'étape suivante, après avoir vérifié le SQL. Il est stocké comme vérificateur SCRAM-SHA-256 et jamais affiché.',
2273
+ 'dbu.valid_until': 'Valide jusqu\'au',
2274
+ 'dbu.valid_until_help': 'Le mot de passe cesse de fonctionner après cette date (VALID UNTIL). Vide : il n\'expire pas.',
2275
+ 'dbu.conn_limit': 'Limite de connexions',
2276
+ 'dbu.conn_limit_help': 'Vide : aucune limite.',
2277
+ 'dbu.search_path': 'Schéma par défaut (chemin de recherche)',
2278
+ 'dbu.search_path_help': 'Schémas, séparés par des virgules, pour les sessions de ce rôle dans cette base. Vide : la valeur par défaut du serveur.',
2279
+ 'dbu.comment': 'Commentaire',
2280
+ 'dbu.member_of': 'Membre de',
2281
+ 'dbu.member_of_intro': 'Le rôle obtient les privilèges des rôles dont il est membre. Les rôles propres à pgkiln, les superutilisateurs, les rôles de connexion et les rôles prédéfinis qui accèdent aux fichiers du serveur ne peuvent pas être accordés ici.',
2282
+ 'dbu.no_groups': 'Il n\'y a aucun rôle de groupe à accorder.',
2283
+ 'dbu.schemas': 'Schémas',
2284
+ 'dbu.schemas_intro': '{usage} permet au rôle d\'utiliser les objets d\'un schéma (dans la mesure où leurs propres privilèges le permettent), {create} d\'y créer des objets. {future} sont des privilèges par défaut sur les tables (et, pour l\'écriture, les séquences) que la connexion propriétaire de pgkiln y crée désormais ; {existing} accorde ou révoque une fois sur les tables présentes. Les schémas propres à pgkiln ne sont pas listés.',
2285
+ 'dbu.col.schema': 'Schéma',
2286
+ 'dbu.col.usage': 'Utilisation',
2287
+ 'dbu.col.create': 'Créer',
2288
+ 'dbu.col.future': 'Tables futures',
2289
+ 'dbu.col.existing': 'Tables existantes',
2290
+ 'dbu.usage_on': 'Utilisation de {schema}',
2291
+ 'dbu.create_in': 'Créer dans {schema}',
2292
+ 'dbu.future_in': 'Tables futures dans {schema}',
2293
+ 'dbu.existing_in': 'Tables existantes dans {schema}',
2294
+ 'dbu.custom': 'Tels quels (personnalisé)',
2295
+ 'dbu.no_schemas': 'Aucun schéma.',
2296
+ 'dbu.review': 'Vérifier le SQL',
2297
+ 'dbu.cancel': 'Annuler',
2298
+ 'dbu.sql': 'SQL',
2299
+ 'dbu.sql_intro': 'Ces instructions s\'exécutent dans une transaction lorsque vous les appliquez : toutes, ou aucune.',
2300
+ 'dbu.sql_masked': 'Le mot de passe apparaît comme \'********\' : pgkiln n\'envoie à PostgreSQL que son vérificateur SCRAM-SHA-256.',
2301
+ 'dbu.generated_sql': 'SQL généré',
2302
+ 'dbu.nothing_sql': 'Rien à changer : le rôle est tel que le formulaire le décrit.',
2303
+ 'dbu.confirm_password': 'Confirmer le mot de passe',
2304
+ 'dbu.password_note': 'Au moins 8 caractères. Il est haché par pgkiln avant d\'atteindre la base de données et n\'est pas conservé.',
2305
+ 'dbu.apply': 'Appliquer',
2306
+ 'dbu.back_form': 'Retour au formulaire',
2307
+ 'dbu.tag.in_use': 'utilisé',
2308
+ 'dbu.tag.superuser': 'superutilisateur',
2309
+ 'dbu.tag.bypassrls': 'contourne RLS',
2310
+ 'dbu.tag.createrole': 'créer des rôles',
2311
+ 'dbu.tag.createdb': 'créer BD',
2312
+ 'dbu.tag.replication': 'réplication',
2313
+ 'dbu.never': 'jamais',
2314
+ 'dbu.expired': 'expiré',
2315
+ 'dbu.in_days_one': 'dans {n} jour',
2316
+ 'dbu.in_days': 'dans {n} jours',
2317
+ 'dbu.f.all': 'Tous les rôles',
2318
+ 'dbu.f.login': 'Peut se connecter',
2319
+ 'dbu.f.expiring': 'Mot de passe expirant sous 30 jours',
2320
+ 'dbu.f.bypassrls': 'Contourne la sécurité au niveau des lignes',
2321
+ 'dbu.f.owners': 'Sans connexion, mais propriétaires d\'objets',
2322
+ 'dbu.f.pgkiln': 'Propres à pgkiln',
2323
+ 'dbu.list_intro': 'Les rôles PostgreSQL de ce serveur (pg_roles), sans les rôles prédéfinis pg_.',
2324
+ 'dbu.create_user': 'Créer un utilisateur de base de données',
2325
+ 'dbu.filters': 'Filtres',
2326
+ 'dbu.search_roles': 'Rechercher des rôles',
2327
+ 'dbu.search': 'Rechercher',
2328
+ 'dbu.col.attributes': 'Attributs',
2329
+ 'dbu.col.connections': 'Connexions',
2330
+ 'dbu.col.owns': 'Possède',
2331
+ 'dbu.yes': 'Oui',
2332
+ 'dbu.no': 'Non',
2333
+ 'dbu.no_limit': 'aucune limite',
2334
+ 'dbu.owns_schemas': 'schémas {list}',
2335
+ 'dbu.n_objects_one': '{n} objet',
2336
+ 'dbu.n_objects': '{n} objets',
2337
+ 'dbu.nothing': 'rien',
2338
+ 'dbu.elsewhere': '(+{n} ailleurs)',
2339
+ 'dbu.no_roles': 'Aucun rôle.',
2340
+ 'dbu.list_note': 'PostgreSQL n\'enregistre pas la date de création d\'un rôle. Les rôles {pgkiln} sont les connexions et rôles propres à pgkiln : ils sont affichés, pas modifiés ici. Les rôles {in_use} par une application ou un espace de travail isolé peuvent être modifiés, pas supprimés.',
2341
+ 'dbu.details': 'Détails',
2342
+ 'dbu.no_login': 'Pas de connexion (un rôle de groupe)',
2343
+ 'dbu.members': 'Membres',
2344
+ 'dbu.used_by': 'Utilisé par',
2345
+ 'dbu.none': 'aucun',
2346
+ 'dbu.owned_first': '{n} objets, les {first} premiers :',
2347
+ 'dbu.nothing_here': 'rien dans cette base de données',
2348
+ 'dbu.owned_other': '{n} dans d\'autres bases ou partagés',
2349
+ 'dbu.protected': '{name} est l\'un des rôles propres à pgkiln (sa connexion propriétaire ou d\'exécution, un rôle pgkiln_ ou le superutilisateur initial) : pgkiln en a besoin tel quel, il n\'est donc ni modifié ni supprimé ici.',
2350
+ 'dbu.role_title': 'Rôle {name}',
2351
+ 'dbu.drop_role_link': 'Supprimer le rôle…',
2352
+ 'dbu.used_change_only_one': '{users} utilise ce rôle : il peut être modifié, pas supprimé.',
2353
+ 'dbu.used_change_only': '{users} utilisent ce rôle : il peut être modifié, pas supprimé.',
2354
+ 'dbu.create_title': 'Créer l\'utilisateur de base de données {name}',
2355
+ 'dbu.change_title': 'Modifier le rôle {name}',
2356
+ 'dbu.crumb.create': 'Créer',
2357
+ 'dbu.crumb.review': 'Vérifier',
2358
+ 'dbu.crumb.drop': 'Supprimer',
2359
+ 'dbu.exists': 'Un rôle nommé {name} existe déjà.',
2360
+ 'dbu.changed_since': 'Les instructions ont changé depuis votre vérification (le rôle ou le formulaire a changé) : vérifiez-les à nouveau.',
2361
+ 'dbu.nothing_change': 'Rien à changer.',
2362
+ 'dbu.rolled_back': '{nothing} : les instructions se sont exécutées dans une transaction, qui a été annulée.',
2363
+ 'dbu.nothing_changed': 'Rien n\'a été modifié',
2364
+ 'dbu.created_one': 'Rôle {name} créé : {n} instruction.',
2365
+ 'dbu.created': 'Rôle {name} créé : {n} instructions.',
2366
+ 'dbu.changed_one': 'Rôle {name} modifié : {n} instruction.',
2367
+ 'dbu.changed': 'Rôle {name} modifié : {n} instructions.',
2368
+ 'dbu.drop_title': 'Supprimer le rôle {name}',
2369
+ 'dbu.drop_refused_one': '{users} utilise {name} : il n\'est pas supprimé tant que c\'est le cas.',
2370
+ 'dbu.drop_refused': '{users} utilisent {name} : il n\'est pas supprimé tant que c\'est le cas.',
2371
+ 'dbu.owns_here_one': '{name} possède {n} objet dans cette base de données',
2372
+ 'dbu.owns_here': '{name} possède {n} objets dans cette base de données',
2373
+ 'dbu.owns_elsewhere': 'et {n} dans d\'autres bases ou partagés (bases de données, tablespaces)',
2374
+ 'dbu.reassign_note': 'Réattribuez-les à un autre rôle, ou supprimez-les avec le rôle.',
2375
+ 'dbu.elsewhere_note': 'Les objets d\'autres bases doivent d\'abord y être réattribués ou supprimés, sinon DROP ROLE échoue.',
2376
+ 'dbu.owned_objects': 'Objets possédés',
2377
+ 'dbu.objects_it_owns': 'Objets qu\'il possède',
2378
+ 'dbu.reassign_to': 'Réattribuer à {name}',
2379
+ 'dbu.drop_owned': 'Les supprimer avec le rôle (DROP OWNED)',
2380
+ 'dbu.owns_nothing': 'Il ne possède rien ici : révoquer seulement ses privilèges',
2381
+ 'dbu.drop_owned_help': 'DROP OWNED révoque aussi les privilèges accordés au rôle dans cette base de données.',
2382
+ 'dbu.drop_objects_one': 'Supprimer l\'objet ({n}) que possède {name}, avec ses données',
2383
+ 'dbu.drop_objects': 'Supprimer les {n} objets que possède {name}, avec leurs données',
2384
+ 'dbu.drop_confirm': 'Supprimer le rôle {name} ?',
2385
+ 'dbu.drop_btn': 'Supprimer le rôle',
2386
+ 'dbu.choose_target': 'Choisissez un rôle auquel réattribuer les objets.',
2387
+ 'dbu.changed_since_drop': 'Les instructions ont changé depuis votre vérification : vérifiez-les à nouveau.',
2388
+ 'dbu.tick_box': 'Cochez la case pour supprimer les objets que possède {name}, ou réattribuez-les.',
2389
+ 'dbu.dropped': 'Rôle {name} supprimé.',
2390
+ // ------------------------------------------------------------ server-side conditions in words (sprint 154)
2391
+ 'cond.sql': 'Lorsque l\'expression SQL est vraie',
2392
+ 'cond.exists': 'Lorsque la requête renvoie une ligne',
2393
+ 'cond.not_exists': 'Lorsque la requête ne renvoie aucune ligne',
2394
+ 'cond.function_body': 'Lorsque le corps de fonction renvoie true',
2395
+ 'cond.item_null': 'Lorsque {item} est vide',
2396
+ 'cond.item_not_null': 'Lorsque {item} n\'est pas vide',
2397
+ 'cond.item_zero': 'Lorsque {item} vaut zéro',
2398
+ 'cond.item_not_zero': 'Lorsque {item} ne vaut pas zéro',
2399
+ 'cond.item_null_or_zero': 'Lorsque {item} est vide ou vaut zéro',
2400
+ 'cond.item_not_null_or_zero': 'Lorsque {item} n\'est ni vide ni zéro',
2401
+ 'cond.item_equals': 'Lorsque {item} vaut {value}',
2402
+ 'cond.item_not_equals': 'Lorsque {item} ne vaut pas {value}',
2403
+ 'cond.item_equals_item': 'Lorsque {item} est égal à {value}',
2404
+ 'cond.item_not_equals_item': 'Lorsque {item} diffère de {value}',
2405
+ 'cond.item_in_list': 'Lorsque {item} est l\'un de {value}',
2406
+ 'cond.item_not_in_list': 'Lorsque {item} n\'est aucun de {value}',
2407
+ 'cond.request_in': 'Lorsque la requête est {value}',
2408
+ 'cond.request_not_in': 'Lorsque la requête n\'est pas {value}',
2409
+ 'cond.page_in': 'Sur la page {value}',
2410
+ 'cond.page_not_in': 'Hors de la page {value}',
2411
+ 'cond.page_is_dialog': 'Lorsque la page est une boîte de dialogue modale',
2412
+ 'cond.page_is_not_dialog': 'Lorsque la page n\'est pas une boîte de dialogue modale',
2413
+ 'cond.user_signed_in': 'Lorsque l\'utilisateur est connecté',
2414
+ 'cond.user_public': 'Lorsque l\'utilisateur n\'est pas connecté',
2415
+ 'cond.language_in': 'Lorsque la langue est {value}',
2416
+ 'cond.language_not_in': 'Lorsque la langue n\'est pas {value}',
2417
+ 'cond.always': 'Toujours',
2418
+ 'cond.never': 'Jamais',
2419
+ // ------------------------------------------------------------ gallery: sprint 158 and 160 types
2420
+ 'gallery.region.workflow_diagram': 'Diagramme de workflow',
2421
+ 'gallery.item.image_upload': 'Téléchargement d\'image',
2422
+ 'gallery.item.autocomplete': 'Champ de texte avec saisie semi-automatique',
2423
+ 'gallery.item.percent_graph': 'Graphique de pourcentage',
2424
+ 'gallery.item.display_map': 'Afficher la carte',
1961
2425
  };