pgkiln 0.54.0 → 0.55.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 (67) hide show
  1. package/SECURITY.md +1 -0
  2. package/db/migrations/127_builder_language.sql +16 -0
  3. package/docs/apex-feature-parity.md +4 -4
  4. package/docs/guide/03-builder.md +22 -1
  5. package/docs/guide/12-development.md +41 -0
  6. package/package.json +1 -1
  7. package/public/builder.css +18 -0
  8. package/public/worksheet.css +3 -2
  9. package/src/builder/advisor.ts +1 -1
  10. package/src/builder/ai-agents.ts +5 -5
  11. package/src/builder/ai-builder.ts +3 -3
  12. package/src/builder/api.ts +1 -1
  13. package/src/builder/autorest.ts +2 -2
  14. package/src/builder/availability.ts +1 -1
  15. package/src/builder/backups.ts +1 -1
  16. package/src/builder/changelog.ts +1 -1
  17. package/src/builder/data-modeler.ts +4 -4
  18. package/src/builder/data-security.ts +1 -1
  19. package/src/builder/dataload.ts +1 -1
  20. package/src/builder/datapump.ts +1 -1
  21. package/src/builder/ddl-tools.ts +2 -2
  22. package/src/builder/designer.ts +134 -124
  23. package/src/builder/diagnostics.ts +2 -2
  24. package/src/builder/errors.ts +10 -12
  25. package/src/builder/feedback.ts +1 -1
  26. package/src/builder/globalization.ts +1 -1
  27. package/src/builder/home.ts +59 -57
  28. package/src/builder/i18n/de.ts +675 -0
  29. package/src/builder/i18n/en.ts +678 -0
  30. package/src/builder/i18n/es.ts +675 -0
  31. package/src/builder/i18n/fr.ts +675 -0
  32. package/src/builder/i18n/nl.ts +675 -0
  33. package/src/builder/i18n/pt.ts +675 -0
  34. package/src/builder/i18n.ts +116 -0
  35. package/src/builder/language.ts +74 -0
  36. package/src/builder/launchpad.ts +13 -8
  37. package/src/builder/object-browser.ts +1 -1
  38. package/src/builder/plugins.ts +1 -1
  39. package/src/builder/querybuilder.ts +1 -1
  40. package/src/builder/quicksql.ts +1 -1
  41. package/src/builder/rest-modules.ts +2 -2
  42. package/src/builder/routes.ts +88 -66
  43. package/src/builder/sampledata.ts +1 -1
  44. package/src/builder/scheduling.ts +1 -1
  45. package/src/builder/scripts.ts +1 -1
  46. package/src/builder/search.ts +1 -1
  47. package/src/builder/shared.ts +5 -5
  48. package/src/builder/sql-charts.ts +2 -2
  49. package/src/builder/sql-monitor.ts +2 -2
  50. package/src/builder/sql-tools.ts +6 -0
  51. package/src/builder/sql-utilities.ts +3 -3
  52. package/src/builder/sql.ts +24 -22
  53. package/src/builder/static-files.ts +1 -1
  54. package/src/builder/subscriptions.ts +1 -1
  55. package/src/builder/supporting.ts +1 -1
  56. package/src/builder/table-editor.ts +1 -1
  57. package/src/builder/team.ts +7 -5
  58. package/src/builder/themeroller.ts +1 -1
  59. package/src/builder/top-sql.ts +1 -1
  60. package/src/builder/ui.ts +87 -77
  61. package/src/builder/unload.ts +1 -1
  62. package/src/builder/wizards.ts +1 -1
  63. package/src/builder/workflow-migrate.ts +1 -1
  64. package/src/builder/workingcopies.ts +2 -2
  65. package/src/builder/worksheet.ts +1 -1
  66. package/src/builder/workspace-home.ts +62 -59
  67. package/src/builder/workspaces.ts +2 -1
@@ -0,0 +1,675 @@
1
+ // French (Français) builder texts; keys and {placeholders} as in en.ts (sprint 121, WS-7).
2
+ import type { BuilderMessages } from '../i18n.ts';
3
+
4
+ export const fr: BuilderMessages = {
5
+ // ------------------------------------------------------------ common
6
+ 'common.about': 'À propos',
7
+ 'common.tasks': 'Tâches',
8
+ 'common.learn_more': 'En savoir plus …',
9
+ 'common.search': 'Rechercher',
10
+ 'common.show': 'Afficher',
11
+ 'common.go': 'OK',
12
+ 'common.next': 'Suivant',
13
+ 'common.save': 'Enregistrer',
14
+ 'common.cancel': 'Annuler',
15
+ 'common.run': 'Exécuter',
16
+ 'common.none': 'Aucun',
17
+ 'ago.now': "à l'instant",
18
+ 'ago.second': 'il y a {n} seconde',
19
+ 'ago.seconds': 'il y a {n} secondes',
20
+ 'ago.minute': 'il y a {n} minute',
21
+ 'ago.minutes': 'il y a {n} minutes',
22
+ 'ago.hour': 'il y a {n} heure',
23
+ 'ago.hours': 'il y a {n} heures',
24
+ 'ago.day': 'il y a {n} jour',
25
+ 'ago.days': 'il y a {n} jours',
26
+ 'ago.week': 'il y a {n} semaine',
27
+ 'ago.weeks': 'il y a {n} semaines',
28
+ 'ago.month': 'il y a {n} mois',
29
+ 'ago.months': 'il y a {n} mois',
30
+ 'ago.year': 'il y a {n} an',
31
+ 'ago.years': 'il y a {n} ans',
32
+
33
+ // ------------------------------------------------------------ shell: rail, top bar, user menu, status bar
34
+ 'shell.builder': 'Builder',
35
+ 'shell.skip': 'Aller au contenu',
36
+ 'shell.logo': 'pgkiln Builder',
37
+ 'shell.logo_home': 'Accueil de pgkiln Builder',
38
+ 'rail.home': 'Accueil',
39
+ 'rail.app_builder': 'App Builder',
40
+ 'rail.sql_workshop': 'SQL Workshop',
41
+ 'rail.gallery': "Galerie d'applications",
42
+ 'rail.reporter': 'Data Reporter',
43
+ 'rail.team': "Développement d'équipe",
44
+ 'rail.search_app': 'Rechercher dans cette application',
45
+ 'rail.admin': 'Administration',
46
+ 'rail.extensions': 'Extensions',
47
+ 'rail.help': 'Aide',
48
+ 'admin.utilities': "Utilitaires de l'espace de travail",
49
+ 'admin.manage_service': 'Gérer le service : {name}',
50
+ 'admin.ws_message': "Message de l'espace de travail et bannière d'environnement",
51
+ 'admin.ws_prefs': "Préférences de l'espace de travail",
52
+ 'admin.ext_links': "Liens d'extension",
53
+ 'admin.utilization': "Utilisation de l'espace de travail",
54
+ 'admin.mail_queue': "File d'attente des e-mails",
55
+ 'admin.network': 'Accès réseau',
56
+ 'admin.ws_devs': 'Espace de travail et développeurs',
57
+ 'admin.users': 'Gérer les utilisateurs et les groupes',
58
+ 'admin.developers': 'Développeurs',
59
+ 'admin.monitor': "Surveiller l'activité",
60
+ 'admin.db_users': 'Utilisateurs de la base de données',
61
+ 'admin.change_my_password': 'Modifier mon mot de passe',
62
+ 'nav.users': 'Utilisateurs',
63
+ 'user.weak_title': '{user} : modifiez le mot de passe par défaut',
64
+ 'user.account': 'Compte : {user}',
65
+ 'user.account_weak': 'Compte : {user} (mot de passe par défaut : modifiez-le)',
66
+ 'user.developer': 'Développeur',
67
+ 'user.weak_note': 'Vous utilisez le mot de passe par défaut : modifiez-le',
68
+ 'user.theme': 'Thème du Builder',
69
+ 'user.theme_dark': 'Sombre',
70
+ 'user.theme_light': 'Clair',
71
+ 'user.theme_auto': 'Système',
72
+ 'user.change_password': 'Modifier le mot de passe',
73
+ 'user.sign_out': 'Se déconnecter',
74
+ 'bar.back': 'Retour à {page}',
75
+ 'bar.breadcrumb': "Fil d'Ariane",
76
+ 'bar.search_label': 'Rechercher dans le Builder',
77
+ 'bar.search_placeholder': 'Rechercher (Ctrl+K)',
78
+ 'bar.environment': 'Environnement',
79
+ 'weak.banner': 'Vous vous êtes connecté avec le mot de passe par défaut. {link}',
80
+ 'weak.change_now': 'Modifiez-le maintenant.',
81
+ 'weak.dismiss': "Masquer jusqu'à la prochaine connexion",
82
+ 'status.signed_in_as': 'Connecté en tant que',
83
+ 'status.workspace': 'Espace de travail',
84
+ 'status.database': 'Base de données',
85
+ 'status.language': 'Langue du Builder',
86
+
87
+ // ------------------------------------------------------------ standard errors
88
+ 'error.csrf': 'Jeton CSRF non valide ; rechargez la page et réessayez.',
89
+ 'error.sql_off': "Le SQL Workshop est désactivé pour l'espace de travail {name}. Ses administrateurs peuvent l'activer dans les préférences de l'espace de travail.",
90
+ 'error.sql_off_switch': "Le SQL Workshop est désactivé pour l'espace de travail {name}. Ses administrateurs peuvent l'activer dans les préférences de l'espace de travail ; ou passez à un autre espace de travail.",
91
+ 'error.not_found_title': 'Page introuvable',
92
+ 'error.not_found_text': "Il n'y a rien à cette adresse dans l'App Builder. L'application ou la page a peut-être été supprimée, ou appartient à un espace de travail dont vous n'êtes pas membre.",
93
+ 'error.server_title': "Une erreur s'est produite",
94
+ 'error.server_text': "L'App Builder n'a pas pu afficher cette page à cause d'une erreur sur le serveur. Elle a été journalisée ; réessayez ou revenez en arrière.",
95
+ 'error.label_error': 'Erreur',
96
+ 'error.label_not_found': 'Introuvable',
97
+ 'error.home': "Accueil de l'App Builder",
98
+
99
+ // ------------------------------------------------------------ sign-in page
100
+ 'signin.title': 'Connexion',
101
+ 'signin.tagline': 'Créez des applications de données sur PostgreSQL, en SQL digne de confiance',
102
+ 'signin.license': 'Open source sous licence Apache-2.0',
103
+ 'signin.welcome': 'Bienvenue',
104
+ 'signin.intro': 'Connectez-vous à votre espace de travail pour continuer',
105
+ 'signin.workspace': 'Espace de travail',
106
+ 'signin.workspace_placeholder': 'Espace de travail (facultatif)',
107
+ 'signin.username': "Nom d'utilisateur",
108
+ 'signin.password': 'Mot de passe',
109
+ 'signin.show': 'Afficher',
110
+ 'signin.hide': 'Masquer',
111
+ 'signin.remember': "Mémoriser l'espace de travail et le nom d'utilisateur",
112
+ 'signin.submit': 'Se connecter',
113
+ 'signin.hint': "Laissez l'espace de travail vide pour ouvrir le dernier utilisé ; vous pourrez en changer plus tard dans le menu de votre compte.",
114
+ 'signin.quick': 'Actions rapides',
115
+ 'signin.find_ws': 'Trouver mon espace de travail',
116
+ 'signin.admin': 'Administration',
117
+ 'signin.about_ws': 'À propos des espaces de travail',
118
+ 'signin.languages': 'Langue',
119
+ 'signin.expired': 'Votre session a expiré. Veuillez réessayer.',
120
+ 'signin.throttled': 'Trop de tentatives de connexion échouées. Réessayez plus tard.',
121
+ 'signin.invalid': "Nom d'utilisateur ou mot de passe non valide.",
122
+ 'signin.invalid_ws': "Espace de travail, nom d'utilisateur ou mot de passe non valide.",
123
+
124
+ // ------------------------------------------------------------ workspace home
125
+ 'wh.title': "Accueil de l'espace de travail",
126
+ 'wh.title_ws': 'Espace de travail {name}',
127
+ 'wh.tools': 'Outils',
128
+ 'wh.card.apps': 'Créez, modifiez et exécutez les applications de cet espace de travail.',
129
+ 'wh.card.sql': 'Exécutez du SQL, parcourez les objets de la base, chargez des données et créez des services REST.',
130
+ 'wh.card.reporter': 'Jeux de données et états pour les utilisateurs métier, sans créer de pages.',
131
+ 'wh.card.gallery': 'Applications exemples et de démarrage à installer.',
132
+ 'wh.message': "Message de l'espace de travail",
133
+ 'wh.message_none': 'Aucun message pour les développeurs de {name}.',
134
+ 'wh.message_edit_title': "Modifier le message de l'espace de travail",
135
+ 'wh.message_edit': 'Modifier le message',
136
+ 'wh.message_help': "Affiché aux développeurs de {name} ici et sur l'accueil de l'App Builder. Texte brut, 2000 caractères au maximum ; vide, il est supprimé.",
137
+ 'wh.message_save': 'Enregistrer le message',
138
+ 'wh.summary': 'Récapitulatif',
139
+ 'wh.stat.app': 'application',
140
+ 'wh.stat.apps': 'applications',
141
+ 'wh.stat.table': 'table',
142
+ 'wh.stat.tables': 'tables',
143
+ 'wh.stat.developer': 'développeur',
144
+ 'wh.stat.developers': 'développeurs',
145
+ 'wh.stat.reporting': "application d'états",
146
+ 'wh.stat.reportings': "applications d'états",
147
+ 'wh.activity': 'Activité',
148
+ 'wh.timeframe': 'Période',
149
+ 'wh.tf.hour': '1 heure',
150
+ 'wh.tf.day': '1 jour',
151
+ 'wh.tf.week': '1 semaine',
152
+ 'wh.no_views': 'Aucune page vue sur la dernière période ({tf}).',
153
+ 'wh.top_apps': 'Principales applications ({tf})',
154
+ 'wh.top_users': 'Principaux utilisateurs ({tf})',
155
+ 'wh.top_devs': 'Principaux développeurs ({tf})',
156
+ 'wh.top_apps_caption': 'Principales applications, dernière période : {tf}',
157
+ 'wh.top_users_caption': 'Principaux utilisateurs, dernière période : {tf}',
158
+ 'wh.top_devs_caption': 'Principaux développeurs, dernière période : {tf}',
159
+ 'wh.col.app': 'Application',
160
+ 'wh.col.apps': 'Applications',
161
+ 'wh.col.views': 'Pages vues',
162
+ 'wh.col.users': 'Utilisateurs',
163
+ 'wh.col.user': 'Utilisateur',
164
+ 'wh.col.developer': 'Développeur',
165
+ 'wh.system': 'Message système',
166
+ 'wh.available': 'pgkiln {version} est disponible',
167
+ 'wh.server_runs': 'Ce serveur exécute pgkiln {version}.',
168
+ 'wh.server_runs_strong': 'Ce serveur exécute {version}.',
169
+ 'wh.latest': "C'est la dernière version.",
170
+ 'wh.release_notes': 'Notes de version',
171
+ 'wh.how_upgrade': 'Comment mettre à niveau',
172
+ 'wh.upgrade_steps': "Pour mettre à niveau : sauvegardez la base de données, installez la nouvelle version ({npm}, ou l'image Docker {docker}), exécutez {migrate} et redémarrez le serveur.",
173
+ 'wh.check_off': 'La recherche de nouvelles versions est désactivée.',
174
+ 'wh.check_failed': 'La dernière vérification a échoué ({error}).',
175
+ 'wh.check_failed_older': 'La dernière vérification a échoué ({error}) ; le résultat ci-dessus est plus ancien.',
176
+ 'wh.checked': 'Vérifié {ago}.',
177
+ 'wh.checking': "Recherche d'une nouvelle version…",
178
+ 'wh.check_explain': "Si elle est activée, le serveur interroge GitHub ({host}) une fois par jour sur la dernière version ; aucune information sur cette installation n'est envoyée.",
179
+ 'wh.check_now': 'Vérifier maintenant',
180
+ 'wh.turn_off': 'Désactiver',
181
+ 'wh.check_on': 'Rechercher les nouvelles versions',
182
+ 'wh.flash.too_long': 'Le message comporte au maximum 2000 caractères.',
183
+ 'wh.flash.saved': "Message de l'espace de travail enregistré.",
184
+ 'wh.flash.removed': "Message de l'espace de travail supprimé.",
185
+ 'wh.flash.check_daily': 'Le serveur recherche les nouvelles versions une fois par jour.',
186
+ 'wh.flash.check_failed': 'La vérification a échoué ({error}).',
187
+ 'wh.flash.checked': 'Nouvelle version recherchée.',
188
+ 'wh.aside': 'À propos et en savoir plus',
189
+ 'wh.about': "L'accueil de l'espace de travail : ses outils, l'utilisation de ses applications et les nouveautés.",
190
+ 'wh.you_work': 'Vous travaillez dans {name}.',
191
+ 'wh.learn_more': 'En savoir plus',
192
+ 'wh.guide': 'Le guide pgkiln',
193
+ 'wh.tutorial': 'Tutoriel',
194
+ 'wh.from_apex': "Vous venez d'APEX",
195
+ 'wh.whats_new': 'Nouveautés (changelog)',
196
+ 'wh.discussions': 'Discussions',
197
+ 'wh.resources': 'Ressources',
198
+ 'wh.mcp': 'Agents de codage IA (MCP)',
199
+ 'wh.report_problem': 'Signaler un problème',
200
+ 'team.open': 'Tickets ouverts',
201
+ 'team.mine': 'Qui vous sont affectés',
202
+ 'team.mentions': 'Où vous êtes mentionné',
203
+ 'team.setup': "Configurer le développement d'équipe",
204
+
205
+ // ------------------------------------------------------------ App Builder home (the applications)
206
+ 'ab.tile.create': 'Créer',
207
+ 'ab.tile.create_text': 'Créez une application dans cet espace de travail.',
208
+ 'ab.tile.import': 'Importer',
209
+ 'ab.tile.import_text': 'Importez une application exportée dans cet espace de travail.',
210
+ 'ab.tile.dashboard': 'Tableau de bord',
211
+ 'ab.tile.dashboard_text': "Consultez l'utilisation, l'activité et les problèmes de connexion de l'espace de travail.",
212
+ 'ab.tile.utilities': "Utilitaires de l'espace de travail",
213
+ 'ab.tile.utilities_text': "Utilisateurs, fournisseurs d'identité, développeurs et SQL Workshop.",
214
+ 'ab.aside': 'À propos, récents et tâches',
215
+ 'ab.about': "L'App Builder crée, modifie et exécute les applications de cet espace de travail : pages et régions sur vos tables PostgreSQL, avec connexion, rôles et sécurité au niveau des lignes.",
216
+ 'ab.recent': 'Récents',
217
+ 'ab.task.create': 'Créer une application',
218
+ 'ab.task.create_file': "Créer une application à partir d'un fichier",
219
+ 'ab.task.import': 'Importer une application',
220
+ 'ab.task.users': 'Gérer les utilisateurs',
221
+ 'ab.task.providers': "Fournisseurs d'identité",
222
+ 'ab.none_q': 'Aucune application ne correspond à « {q} ».',
223
+ 'ab.none_group': 'Aucune application dans le groupe {group}.',
224
+ 'ab.none_group_q': 'Aucune application du groupe {group} ne correspond à « {q} ».',
225
+ 'ab.show_all': 'Tout afficher',
226
+ 'ab.none_yet': 'Aucune application pour le moment. {create} ou {import}.',
227
+ 'ab.create_one': 'Créez-en une',
228
+ 'ab.import_one': 'importez-en une',
229
+ 'ab.pages': '{n} pages',
230
+ 'ab.pages_one': '{n} page',
231
+ 'ab.views_today': "{n} vues aujourd'hui",
232
+ 'ab.by': 'par',
233
+ 'ab.copies': '{n} copies de travail',
234
+ 'ab.copies_one': '{n} copie de travail',
235
+ 'ab.copies_of': '{copies} de {name}',
236
+ 'ab.locked_by': 'Verrouillée par {user}',
237
+ 'ab.edit': 'Modifier {name}',
238
+ 'ab.run': 'Exécuter {name}',
239
+ 'ab.col.apps': 'Applications',
240
+ 'ab.col.app': 'Application',
241
+ 'ab.col.name': 'Nom',
242
+ 'ab.col.alias': 'Alias',
243
+ 'ab.col.pages': 'Pages',
244
+ 'ab.col.views': 'Vues (24 h)',
245
+ 'ab.col.signin': 'Connexion',
246
+ 'ab.col.updated': 'Mise à jour',
247
+ 'ab.col.updated_by': 'Mise à jour par',
248
+ 'ab.col.copies': 'Copies de travail',
249
+ 'ab.col.actions': 'Actions',
250
+ 'ab.auth.none': 'Public',
251
+ 'ab.auth.header': 'En-tête HTTP',
252
+ 'ab.auth.database': 'Comptes de base de données',
253
+ 'ab.auth.custom': 'Personnalisée',
254
+ 'ab.auth.app_users': "Utilisateurs de l'application",
255
+ 'ab.search_label': 'Rechercher des applications',
256
+ 'ab.view': 'Vue',
257
+ 'ab.view_cards': 'Cartes',
258
+ 'ab.view_report': 'Etat',
259
+ 'ab.group': "Groupe d'applications",
260
+ 'ab.all_groups': 'Tous les groupes',
261
+ 'ab.actions': 'Actions',
262
+ 'ab.sort_by': 'Trier par',
263
+ 'ab.sort.name': 'Nom',
264
+ 'ab.sort.id': "ID d'application",
265
+ 'ab.sort.alias': 'Alias',
266
+ 'ab.sort.pages': 'Le plus de pages',
267
+ 'ab.sort.updated': 'Mises à jour récentes',
268
+ 'ab.ws_dashboard': "Tableau de bord de l'espace de travail",
269
+ 'ab.count': '{n} applications',
270
+ 'ab.count_one': '{n} application',
271
+ 'ab.count_of': '{n} sur {total}',
272
+
273
+ // ------------------------------------------------------------ an application's home (pages) and its tabs
274
+ 'app.head.id': 'Application {id}',
275
+ 'app.head.copies': 'Copies de travail',
276
+ 'app.head.backups': 'Sauvegardes',
277
+ 'app.head.availability': 'Disponibilité',
278
+ 'app.head.export': 'Exporter',
279
+ 'app.head.tabs': 'Application',
280
+ 'app.tab.pages': 'Pages',
281
+ 'app.tab.shared': 'Composants partagés',
282
+ 'app.tab.activity': 'Activité',
283
+ 'app.tab.api': 'API REST',
284
+ 'app.tab.settings': 'Paramètres',
285
+ 'app.tab.advisor': 'Conseiller',
286
+ 'app.lock_refused': "Les modifications sont refusées jusqu'à son déverrouillage.",
287
+ 'app.search_pages': 'Rechercher des pages',
288
+ 'app.search_placeholder': 'Nom ou numéro de page',
289
+ 'app.view_icons': 'Icônes',
290
+ 'app.create_page': 'Créer une page',
291
+ 'app.page_group': 'Groupe de pages',
292
+ 'app.all_pages': 'Toutes les pages',
293
+ 'app.no_group': 'Sans groupe',
294
+ 'app.regions': '{n} régions',
295
+ 'app.regions_one': '{n} région',
296
+ 'app.col.page': 'Page',
297
+ 'app.col.group': 'Groupe',
298
+ 'app.col.mode': 'Mode',
299
+ 'app.col.regions': 'Régions',
300
+ 'app.col.items': 'Eléments',
301
+ 'app.col.das': 'AD',
302
+ 'app.col.processes': 'Processus',
303
+ 'app.col.authz': 'Autorisation',
304
+ 'app.col.protection': 'Protection',
305
+ 'app.col.lock': 'Verrou',
306
+ 'app.dev_comments': 'Commentaires des développeurs',
307
+ 'app.comments': '{n} commentaires',
308
+ 'app.comments_one': '{n} commentaire',
309
+ 'app.public': 'public',
310
+ 'app.you': 'vous',
311
+ 'app.no_match': 'Aucune page ne correspond à « {q} ».',
312
+ 'app.lock_region': "Verrou et commentaires de l'application",
313
+ 'app.from_table': "Créer des pages à partir d'une table",
314
+ 'app.from_table_text': "Choisissez un type de page et une table ou une vue ; l'étape suivante propose les colonnes, la clé, les dates, les positions et les clés étrangères à partir de la base de données, puis crée la page avec une entrée de menu.",
315
+ 'app.page_type': 'Type de page',
316
+ 'app.table_or_view': 'Table ou vue (table maître pour maître-détail)',
317
+ 'app.no_access': '{table} (aucun accès pour {role})',
318
+ 'app.ai_pages': "Créer des pages avec l'IA",
319
+ 'app.ai_pages_note': '(décrivez-les avec vos propres mots)',
320
+ 'app.blank': 'Créer une page vierge',
321
+ 'app.page_number': 'Numéro de page',
322
+ 'app.parent': "Parent dans le fil d'Ariane",
323
+ 'app.task.run': "Exécuter l'application",
324
+ 'app.task.page_groups': 'Groupes de pages',
325
+ 'app.task.supporting': 'Objets de support',
326
+ 'app.task.lock': "Verrouiller l'application",
327
+ 'app.task.delete': "Supprimer l'application",
328
+ 'app.page_created': 'Page créée.',
329
+
330
+ // ------------------------------------------------------------ Page Designer: toolbar, menus, tree, layout, gallery
331
+ 'pd.designer': 'Page Designer',
332
+ 'pd.h1': 'Page Designer : page {n}, {name}',
333
+ 'pd.page_title': 'Page {n} : {name}',
334
+ 'pd.page_n_title': 'Page {n}',
335
+ 'pd.page_n': 'page {n}',
336
+ 'pd.no_page': "La page {page} n'existe pas.",
337
+ 'pd.pane.tree': 'Arborescence',
338
+ 'pd.layout': 'Disposition',
339
+ 'pd.properties': 'Propriétés',
340
+ 'pd.components': 'Composants de page',
341
+ 'pd.tab.rendering': 'Rendu',
342
+ 'pd.tab.da': 'Actions dynamiques',
343
+ 'pd.tab.processing': 'Traitement',
344
+ 'pd.tab.shared': 'Composants partagés',
345
+ 'pd.tree.items': 'Eléments',
346
+ 'pd.tree.buttons': 'Boutons',
347
+ 'pd.tree.buttons_at': 'Boutons : {slot}',
348
+ 'pd.tree.no_regions_yet': 'Aucune région pour le moment',
349
+ 'pd.tree.no_regions': 'Aucune région',
350
+ 'pd.tree.pre_rendering': "Pré-rendu (avant l'en-tête)",
351
+ 'pd.tree.no_pre_rendering': 'Aucun branchement, calcul ou processus avant le rendu',
352
+ 'pd.tree.page_items': 'Eléments de page',
353
+ 'pd.tree.page_buttons': 'Boutons de page',
354
+ 'pd.tree.events': 'Evénements : {event}',
355
+ 'pd.tree.button_target': 'cible du bouton',
356
+ 'pd.tree.after_submit': 'Après la soumission (calculs)',
357
+ 'pd.tree.no_computations': 'Aucun calcul',
358
+ 'pd.tree.validating': 'Validation',
359
+ 'pd.tree.no_validations': 'Aucune validation',
360
+ 'pd.tree.no_processes': 'Aucun processus',
361
+ 'pd.tree.after_processing': 'Après le traitement (branchements)',
362
+ 'pd.tree.no_branches': 'Aucun branchement',
363
+ 'pd.event.change': 'Modification',
364
+ 'pd.event.click': 'Clic',
365
+ 'pd.event.load': 'Chargement de page',
366
+ 'pd.event.menu_entry': 'Entrée de menu choisie',
367
+ 'pd.event.other': 'Autre',
368
+ 'pd.shared.all': 'Tous les composants partagés',
369
+ 'pd.shared.lovs': 'Listes de valeurs',
370
+ 'pd.shared.authz': "Schémas d'autorisation",
371
+ 'pd.shared.nav': 'Menu de navigation',
372
+ 'pd.shared.app_items': "Eléments d'application",
373
+ 'pd.badge.authz': 'Autorisation : {name}',
374
+ 'pd.badge.condition': 'A une condition',
375
+ 'pd.badge.build_option': 'Option de build : {name}',
376
+ 'pd.copy.title': 'Copier vers une autre page',
377
+ 'pd.copy.page': 'Page',
378
+ 'pd.copy.help': "Les éléments nommés {prefix} prennent le numéro de l'autre page ; les éléments et boutons d'une région sont copiés avec elle. Les références dans le SQL et les conditions ne sont pas modifiées.",
379
+ 'pd.copy.copy': 'Copier',
380
+ 'pd.slot_title': 'Position du bouton : {slot}',
381
+ 'pd.drag_move': 'Faire glisser pour déplacer',
382
+ 'pd.drag_span': 'Faire glisser pour modifier le nombre de colonnes',
383
+ 'pd.zone_off': '(absent de ce modèle de page : affiché dans le corps)',
384
+ 'pd.in_position': 'dans {position}',
385
+ 'pd.gallery': 'Galerie',
386
+ 'pd.gallery.regions': 'Régions',
387
+ 'pd.gallery_title': '{name} : faites glisser sur la disposition, ou ouvrez pour créer',
388
+ 'pd.zoom_out': 'Zoom arrière',
389
+ 'pd.zoom_in': 'Zoom avant',
390
+ 'pd.maximize': 'Agrandir la disposition',
391
+ 'pd.kbd_hint': "Faites glisser pour déplacer. Clavier : Alt+↑/↓ déplace le composant actif, Alt+Shift+←/→ modifie la largeur d'une région.",
392
+ 'pd.modal': '(boîte de dialogue modale)',
393
+ 'pd.page_level': 'Niveau page (aucune région)',
394
+ 'pd.search_label': "Rechercher dans les pages et composants de l'application",
395
+ 'pd.search_placeholder': 'p. ex. {prefix} ou un nom de table',
396
+ 'pd.page_search': 'Recherche de page',
397
+ 'pd.lock_comments': 'Verrou et commentaires',
398
+ 'pd.locked': 'verrouillée',
399
+ 'pd.lock_refused': 'Vos modifications seront refusées.',
400
+ 'pd.attributes': 'Attributs',
401
+ 'pd.jobs': 'Travaux',
402
+ 'pd.not_found': 'Composant introuvable.',
403
+ 'pd.save_page': 'Enregistrer la page',
404
+ 'pd.delete_page': 'Supprimer la page',
405
+ 'pd.delete_page_confirm': 'Supprimer la page {n} et tous ses composants ?',
406
+ 'pd.filter_label': 'Filtrer les propriétés',
407
+ 'pd.filter': 'Filtrer',
408
+ 'pd.help_hint': 'Sélectionnez une propriété pour afficher son aide ici.',
409
+ 'pd.arrange': 'Organiser',
410
+ 'pd.arrange.up': 'Monter',
411
+ 'pd.arrange.up_title': 'Monter (plus tôt dans la séquence)',
412
+ 'pd.arrange.down': 'Descendre',
413
+ 'pd.arrange.down_title': 'Descendre (plus tard dans la séquence)',
414
+ 'pd.arrange.narrower': 'Plus étroit',
415
+ 'pd.arrange.narrower_title': 'Plus étroit (une colonne de moins)',
416
+ 'pd.arrange.wider': 'Plus large',
417
+ 'pd.arrange.wider_title': 'Plus large (une colonne de plus)',
418
+ 'pd.arrange.span': 'Nombre de colonnes',
419
+ 'pd.arrange.to_region': 'Déplacer vers la région',
420
+ 'pd.arrange.move': 'Déplacer',
421
+ 'pd.arrange.move_title': 'Déplacer à la fin de cette région',
422
+ 'pd.arrange.page_level': '- niveau page -',
423
+ 'pd.menu.create': 'Créer',
424
+ 'pd.menu.page_item': 'Elément de page',
425
+ 'pd.menu.page': 'Page…',
426
+ 'pd.menu.utilities': 'Utilitaires',
427
+ 'pd.menu.search_items': 'Rechercher les éléments de cette page',
428
+ 'pd.menu.all_pages': 'Toutes les pages',
429
+ 'pd.menu.export': "Exporter l'application",
430
+ 'pd.prev': 'Page précédente',
431
+ 'pd.prev_title': 'Page précédente : {n}. {name}',
432
+ 'pd.next': 'Page suivante',
433
+ 'pd.next_title': 'Page suivante : {n}. {name}',
434
+ 'pd.goto_no': 'Numéro de page (Entrée pour y aller)',
435
+ 'pd.goto_no_title': 'Numéro de page : saisissez ou choisissez un numéro, puis Entrée',
436
+ 'pd.goto': 'Aller à la page',
437
+ 'pd.history': 'Historique',
438
+ 'pd.undo': 'Annuler',
439
+ 'pd.redo': 'Rétablir',
440
+ 'pd.nothing_undo': 'Rien à annuler',
441
+ 'pd.nothing_redo': 'Rien à rétablir',
442
+ 'pd.save_title': 'Enregistrer les propriétés',
443
+ 'pd.run_title': 'Exécuter la page {n}',
444
+ 'pd.page_saved': 'Page enregistrée.',
445
+ 'pd.page_deleted': 'Page supprimée.',
446
+ // the page's components (COMPONENTS in components.ts), per kind
447
+ 'comp.region': 'Région',
448
+ 'comp.region.plural': 'Régions',
449
+ 'comp.item': 'Elément',
450
+ 'comp.item.plural': 'Eléments',
451
+ 'comp.button': 'Bouton',
452
+ 'comp.button.plural': 'Boutons',
453
+ 'comp.dynamic_action': 'Action dynamique',
454
+ 'comp.validation': 'Validation',
455
+ 'comp.process': 'Processus',
456
+ 'comp.computation': 'Calcul',
457
+ 'comp.branch': 'Branchement',
458
+ 'pd.new.region': 'Nouvelle région',
459
+ 'pd.new.item': 'Nouvel élément',
460
+ 'pd.new.button': 'Nouveau bouton',
461
+ 'pd.new.dynamic_action': 'Nouvelle action dynamique',
462
+ 'pd.new.validation': 'Nouvelle validation',
463
+ 'pd.new.process': 'Nouveau processus',
464
+ 'pd.new.computation': 'Nouveau calcul',
465
+ 'pd.new.branch': 'Nouveau branchement',
466
+ 'pd.create.region': 'Créer une région',
467
+ 'pd.create.item': 'Créer un élément',
468
+ 'pd.create.button': 'Créer un bouton',
469
+ 'pd.create.dynamic_action': 'Créer une action dynamique',
470
+ 'pd.create.validation': 'Créer une validation',
471
+ 'pd.create.process': 'Créer un processus',
472
+ 'pd.create.computation': 'Créer un calcul',
473
+ 'pd.create.branch': 'Créer un branchement',
474
+ 'pd.delete.region': 'Supprimer la région',
475
+ 'pd.delete.item': "Supprimer l'élément",
476
+ 'pd.delete.button': 'Supprimer le bouton',
477
+ 'pd.delete.dynamic_action': "Supprimer l'action dynamique",
478
+ 'pd.delete.validation': 'Supprimer la validation',
479
+ 'pd.delete.process': 'Supprimer le processus',
480
+ 'pd.delete.computation': 'Supprimer le calcul',
481
+ 'pd.delete.branch': 'Supprimer le branchement',
482
+ 'pd.delete_confirm.region': 'Supprimer cette région ?',
483
+ 'pd.delete_confirm.item': 'Supprimer cet élément ?',
484
+ 'pd.delete_confirm.button': 'Supprimer ce bouton ?',
485
+ 'pd.delete_confirm.dynamic_action': 'Supprimer cette action dynamique ?',
486
+ 'pd.delete_confirm.validation': 'Supprimer cette validation ?',
487
+ 'pd.delete_confirm.process': 'Supprimer ce processus ?',
488
+ 'pd.delete_confirm.computation': 'Supprimer ce calcul ?',
489
+ 'pd.delete_confirm.branch': 'Supprimer ce branchement ?',
490
+ 'pd.saved.region': 'Région enregistrée.',
491
+ 'pd.saved.item': 'Elément enregistré.',
492
+ 'pd.saved.button': 'Bouton enregistré.',
493
+ 'pd.saved.dynamic_action': 'Action dynamique enregistrée.',
494
+ 'pd.saved.validation': 'Validation enregistrée.',
495
+ 'pd.saved.process': 'Processus enregistré.',
496
+ 'pd.saved.computation': 'Calcul enregistré.',
497
+ 'pd.saved.branch': 'Branchement enregistré.',
498
+ 'pd.deleted.region': 'Région supprimée.',
499
+ 'pd.deleted.item': 'Elément supprimé.',
500
+ 'pd.deleted.button': 'Bouton supprimé.',
501
+ 'pd.deleted.dynamic_action': 'Action dynamique supprimée.',
502
+ 'pd.deleted.validation': 'Validation supprimée.',
503
+ 'pd.deleted.process': 'Processus supprimé.',
504
+ 'pd.deleted.computation': 'Calcul supprimé.',
505
+ 'pd.deleted.branch': 'Branchement supprimé.',
506
+ // display positions (POSITION_LABELS) and region button positions (SLOT_LABELS) in arrange.ts
507
+ 'pos.banner': 'Bannière',
508
+ 'pos.breadcrumb': "Barre du fil d'Ariane",
509
+ 'pos.left': 'Colonne de gauche',
510
+ 'pos.body': 'Corps',
511
+ 'pos.right': 'Colonne de droite',
512
+ 'pos.footer': 'Pied de page',
513
+ 'slot.region': 'Boutons de région',
514
+ 'slot.create': 'Créer',
515
+ 'slot.edit': 'Modifier',
516
+ 'slot.change': 'Changer',
517
+ 'slot.copy': 'Copier',
518
+ 'slot.help': 'Aide',
519
+ 'slot.up': 'Haut',
520
+ 'slot.previous': 'Précédent',
521
+ 'slot.close': 'Fermer',
522
+ 'slot.delete': 'Supprimer',
523
+ 'slot.next': 'Suivant',
524
+ // the gallery (REGION_LABELS, ITEM_LABELS, BUTTON_LABELS in arrange.ts)
525
+ 'gallery.region.report': 'Etat interactif',
526
+ 'gallery.region.grid': 'Grille interactive',
527
+ 'gallery.region.form': 'Formulaire',
528
+ 'gallery.region.chart': 'Graphique',
529
+ 'gallery.region.cards': 'Cartes',
530
+ 'gallery.region.calendar': 'Calendrier',
531
+ 'gallery.region.facets': 'Recherche à facettes',
532
+ 'gallery.region.smart_filters': 'Filtres intelligents',
533
+ 'gallery.region.display_selector': "Sélecteur d'affichage de région",
534
+ 'gallery.region.tasks': 'Liste de tâches',
535
+ 'gallery.region.workflows': 'Console de workflow',
536
+ 'gallery.region.map': 'Carte',
537
+ 'gallery.region.tree': 'Arborescence',
538
+ 'gallery.region.static': 'Contenu statique',
539
+ 'gallery.region.dynamic': 'Contenu dynamique',
540
+ 'gallery.region.template_component': 'Composant de modèle',
541
+ 'gallery.region.list': 'Liste',
542
+ 'gallery.region.data_reporter': 'Data Reporter',
543
+ 'gallery.region.form_designer': 'Concepteur de formulaires',
544
+ 'gallery.region.ai_assistant': 'Assistant IA',
545
+ 'gallery.region.url': 'URL',
546
+ 'gallery.region.search': 'Recherche',
547
+ 'gallery.region.login': 'Connexion',
548
+ 'gallery.region.plugin': 'Plug-in',
549
+ 'gallery.item.text': 'Champ de texte',
550
+ 'gallery.item.textarea': 'Zone de texte',
551
+ 'gallery.item.number': 'Champ numérique',
552
+ 'gallery.item.date': 'Sélecteur de date',
553
+ 'gallery.item.datetime': 'Date et heure',
554
+ 'gallery.item.select': 'Liste de sélection',
555
+ 'gallery.item.popup_lov': 'LOV contextuelle',
556
+ 'gallery.item.radio': 'Groupe de boutons radio',
557
+ 'gallery.item.checkbox': 'Case à cocher',
558
+ 'gallery.item.switch': 'Commutateur',
559
+ 'gallery.item.checkbox_group': 'Groupe de cases à cocher',
560
+ 'gallery.item.multiselect': 'Sélection multiple',
561
+ 'gallery.item.email': 'E-mail',
562
+ 'gallery.item.tel': 'Numéro de téléphone',
563
+ 'gallery.item.url': 'URL',
564
+ 'gallery.item.color': 'Sélecteur de couleur',
565
+ 'gallery.item.file': 'Téléchargement de fichier',
566
+ 'gallery.item.location': 'Emplacement',
567
+ 'gallery.item.richtext': 'Editeur de texte enrichi',
568
+ 'gallery.item.markdown': 'Editeur Markdown',
569
+ 'gallery.item.rating': 'Notation par étoiles',
570
+ 'gallery.item.combobox': 'Liste déroulante (balises)',
571
+ 'gallery.item.daterange': 'Plage de dates',
572
+ 'gallery.item.qrcode': 'Code QR',
573
+ 'gallery.item.image': "Afficher l'image",
574
+ 'gallery.item.address': 'Adresse géocodée',
575
+ 'gallery.item.hidden': 'Masqué',
576
+ 'gallery.item.display': 'Affichage seul',
577
+ 'gallery.item.password': 'Mot de passe',
578
+ 'gallery.item.plugin': 'Plug-in',
579
+ 'gallery.button.submit': 'Soumettre la page',
580
+ 'gallery.button.redirect': 'Rediriger vers une page',
581
+ 'gallery.button.da': 'Action dynamique',
582
+ 'gallery.button.document': 'Télécharger un document',
583
+ 'gallery.button.menu': 'Menu',
584
+
585
+ // ------------------------------------------------------------ SQL Workshop: home (Launchpad) and tabs
586
+ 'sw.more': 'Plus',
587
+ 'sw.aside': 'À propos, schéma et tâches',
588
+ 'sw.about': "Le SQL Workshop est un ensemble d'outils pour gérer les objets de la base de données. Il s'exécute en tant que {role}.",
589
+ 'sw.schema': 'Schéma',
590
+ 'sw.schema_text': 'Le schéma par défaut de cette session : le premier du chemin de recherche de la feuille de calcul SQL et des scripts SQL.',
591
+ 'sw.default_path': '(le chemin de recherche par défaut)',
592
+ 'sw.set': 'Définir',
593
+ 'sw.task.quicksql': 'Créer un modèle de données avec Quick SQL',
594
+ 'sw.task.blueprint': "Créer une application à partir d'un plan",
595
+ 'sw.task.describe': 'Décrire les tables',
596
+ 'sw.task.sample': "Générer des données d'exemple",
597
+ 'sw.task.ddl': 'Générer le DDL',
598
+ 'sw.recent_tables': 'Tables créées récemment',
599
+ 'sw.rows': '~{n} lignes',
600
+ 'sw.no_tables': 'Aucune table accessible en lecture.',
601
+ 'sw.history_title': "Ouvrir l'historique SQL",
602
+ 'sw.recent_commands': 'Commandes SQL récentes',
603
+ 'sw.no_commands': "Vous n'avez encore exécuté aucune commande SQL.",
604
+ 'sw.recent_scripts': 'Scripts SQL récents',
605
+ 'sw.no_scripts': 'Aucun script dans cet espace de travail pour le moment.',
606
+ 'sw.flash.schema': 'Schéma {schema} en premier dans le chemin de recherche de la feuille de calcul SQL et des scripts SQL.',
607
+ 'sw.flash.default_path': 'De nouveau le chemin de recherche par défaut.',
608
+ 'sw.pinned': 'Epinglés et consultés récemment',
609
+ 'sw.pin_hint': 'Epinglez un outil, un objet ou une feuille de calcul enregistrée avec {pin} pour le garder ici.',
610
+ 'sw.recent': 'Consultés récemment',
611
+ 'sw.pin_title': "Epingler sur l'accueil du SQL Workshop",
612
+ 'sw.unpin': 'Désépingler',
613
+ 'sw.pin_what': 'Epingler {what}',
614
+ 'sw.unpin_what': 'Désépingler {what}',
615
+ // the Launchpad's groups (TOOL_GROUPS) and tools (SQL_TOOLS in sql-tools.ts: sql.tool.<key>, .desc)
616
+ 'sql.group.development': 'Développement',
617
+ 'sql.group.administration': 'Administration',
618
+ 'sql.group.monitoring': 'Surveillance',
619
+ 'sql.tool.worksheet': 'Feuille de calcul SQL',
620
+ 'sql.tool.worksheet.desc': 'Exécutez des instructions et des scripts avec un navigateur, des plans, des résultats et un historique.',
621
+ 'sql.tool.objects': "Navigateur d'objets",
622
+ 'sql.tool.objects.desc': 'Tables, vues et fonctions avec leurs colonnes, données, clés, stratégies et DDL.',
623
+ 'sql.tool.scripts': 'Scripts SQL',
624
+ 'sql.tool.scripts.desc': "Scripts enregistrés de l'espace de travail : chargement, exécution, téléchargement, historique d'exécution.",
625
+ 'sql.tool.table': 'Créer une table',
626
+ 'sql.tool.table.desc': 'Une nouvelle table dans un formulaire : colonnes, clés, index et sécurité.',
627
+ 'sql.tool.charts': 'Graphiques',
628
+ 'sql.tool.charts.desc': 'Des requêtes affichées en graphiques, et un tableau de bord qui les réunit.',
629
+ 'sql.tool.quicksql': 'Quick SQL',
630
+ 'sql.tool.quicksql.desc': 'Un modèle de données en notation abrégée, converti en DDL.',
631
+ 'sql.tool.query': 'Générateur de requêtes',
632
+ 'sql.tool.query.desc': 'Une requête dessinée à partir de tables et de leurs jointures.',
633
+ 'sql.tool.load': 'Charger des données',
634
+ 'sql.tool.load.desc': 'CSV, Excel, JSON ou XML dans une table nouvelle ou existante.',
635
+ 'sql.tool.unload': 'Décharger des données',
636
+ 'sql.tool.unload.desc': 'Une table, une vue ou une requête en CSV, JSON, Excel, XML ou insertions SQL.',
637
+ 'sql.tool.sample': "Données d'exemple",
638
+ 'sql.tool.sample.desc': 'Des lignes réalistes, pour le développement.',
639
+ 'sql.tool.ddl': 'Générer le DDL',
640
+ 'sql.tool.ddl.desc': "Les objets d'un schéma en un seul script.",
641
+ 'sql.tool.compare': 'Comparaison de schémas',
642
+ 'sql.tool.compare.desc': 'Les différences entre deux schémas, et le SQL pour les aligner.',
643
+ 'sql.tool.changes': 'Journal des modifications',
644
+ 'sql.tool.changes.desc': 'Le DDL exécuté ici, en ensembles de modifications par schéma ; téléchargement en migrations Flyway, Liquibase ou SQL.',
645
+ 'sql.tool.modeler': 'Modélisateur de données',
646
+ 'sql.tool.modeler.desc': 'Diagrammes relationnels des tables et de leurs clés étrangères ; DDL et dictionnaire de données à partir de ceux-ci.',
647
+ 'sql.tool.rest': 'Services RESTful',
648
+ 'sql.tool.rest.desc': 'Modules, modèles et gestionnaires REST ; tables et vues comme points de terminaison REST (AutoREST) ; OpenAPI.',
649
+ 'sql.tool.ai': 'IA',
650
+ 'sql.tool.ai.desc': "Du SQL à partir d'une question, des explications et des descriptions de tables.",
651
+ 'sql.tool.utilities': 'Utilitaires',
652
+ 'sql.tool.utilities.desc': "Etats d'objets, À propos de la base de données et les autres utilitaires.",
653
+ 'sql.tool.backups': 'Gérer les sauvegardes',
654
+ 'sql.tool.backups.desc': "Sauvegardes des applications de l'espace de travail.",
655
+ 'sql.tool.workspaces': 'Espaces de travail',
656
+ 'sql.tool.workspaces.desc': 'Espaces de travail, leurs développeurs et rôles de base de données.',
657
+ 'sql.tool.dbusers': 'Utilisateurs de base de données',
658
+ 'sql.tool.dbusers.desc': 'Rôles PostgreSQL : connexion, expiration, appartenances et privilèges sur les schémas.',
659
+ 'sql.tool.datapump': 'Export / import de schéma',
660
+ 'sql.tool.datapump.desc': 'Un schéma vers un fichier avec pg_dump, un fichier vers un schéma avec pg_restore (Data Pump).',
661
+ 'sql.tool.scheduling': 'Planification',
662
+ 'sql.tool.scheduling.desc': "Travaux pg_cron : SQL planifié, prochaines exécutions, historique d'exécution ; les automatisations de pgkiln sans lui.",
663
+ 'sql.tool.developers': 'Développeurs',
664
+ 'sql.tool.developers.desc': 'Comptes du Builder et leurs espaces de travail.',
665
+ 'sql.tool.monitor': 'Moniteur SQL',
666
+ 'sql.tool.monitor.desc': "Sessions en direct : ce qu'elles exécutent, ce qu'elles attendent et ce qui les bloque ; annulation ou arrêt.",
667
+ 'sql.tool.topsql': 'Top SQL',
668
+ 'sql.tool.topsql.desc': 'Les instructions les plus lentes et les plus appelées de la base de données, avec leurs plans.',
669
+ 'sql.tool.about': 'À propos de la base de données',
670
+ 'sql.tool.about.desc': 'Le serveur : version, paramètres, extensions et tailles.',
671
+ 'sql.tool.reports': "Etats d'objets",
672
+ 'sql.tool.reports.desc': 'Tables sans clé, clés étrangères non indexées, lacunes de sécurité au niveau des lignes, et plus encore.',
673
+ 'sql.tool.activity': "Surveiller l'activité",
674
+ 'sql.tool.activity.desc': 'Pages vues, erreurs et pages lentes des applications.',
675
+ };