@adminiumjs/i18n 0.2.2-rc.0 → 0.2.3
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/dist/a11y-keys.d.ts +1 -1
- package/dist/a11y-keys.d.ts.map +1 -1
- package/dist/a11y-keys.js +481 -172
- package/dist/a11y-keys.js.map +1 -1
- package/dist/create-i18n.d.ts +16 -6
- package/dist/create-i18n.d.ts.map +1 -1
- package/dist/create-i18n.js +23 -9
- package/dist/create-i18n.js.map +1 -1
- package/dist/editing.d.ts +1 -1
- package/dist/editing.js +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -8
- package/dist/index.js.map +1 -1
- package/dist/keys.d.ts +6 -4
- package/dist/keys.d.ts.map +1 -1
- package/dist/keys.js +6 -4
- package/dist/keys.js.map +1 -1
- package/dist/overrides.d.ts +1 -1
- package/dist/overrides.d.ts.map +1 -1
- package/dist/resources/ar-eg/common.d.ts +96 -970
- package/dist/resources/ar-eg/common.d.ts.map +1 -1
- package/dist/resources/ar-eg/common.js +99 -973
- package/dist/resources/ar-eg/common.js.map +1 -1
- package/dist/resources/ar-eg/errors.d.ts +3 -2
- package/dist/resources/ar-eg/errors.d.ts.map +1 -1
- package/dist/resources/ar-eg/errors.js +3 -2
- package/dist/resources/ar-eg/errors.js.map +1 -1
- package/dist/resources/ar-eg/generated.d.ts +3 -2
- package/dist/resources/ar-eg/generated.d.ts.map +1 -1
- package/dist/resources/ar-eg/generated.js +3 -2
- package/dist/resources/ar-eg/generated.js.map +1 -1
- package/dist/resources/ar-eg/studio.d.ts +1282 -2
- package/dist/resources/ar-eg/studio.d.ts.map +1 -1
- package/dist/resources/ar-eg/studio.js +1282 -2
- package/dist/resources/ar-eg/studio.js.map +1 -1
- package/dist/resources/ar-eg/ui.d.ts +60 -2
- package/dist/resources/ar-eg/ui.d.ts.map +1 -1
- package/dist/resources/ar-eg/ui.js +72 -14
- package/dist/resources/ar-eg/ui.js.map +1 -1
- package/dist/resources/cs-cz/common.d.ts +96 -970
- package/dist/resources/cs-cz/common.d.ts.map +1 -1
- package/dist/resources/cs-cz/common.js +99 -973
- package/dist/resources/cs-cz/common.js.map +1 -1
- package/dist/resources/cs-cz/errors.d.ts +3 -2
- package/dist/resources/cs-cz/errors.d.ts.map +1 -1
- package/dist/resources/cs-cz/errors.js +3 -2
- package/dist/resources/cs-cz/errors.js.map +1 -1
- package/dist/resources/cs-cz/generated.d.ts +3 -2
- package/dist/resources/cs-cz/generated.d.ts.map +1 -1
- package/dist/resources/cs-cz/generated.js +3 -2
- package/dist/resources/cs-cz/generated.js.map +1 -1
- package/dist/resources/cs-cz/studio.d.ts +1282 -2
- package/dist/resources/cs-cz/studio.d.ts.map +1 -1
- package/dist/resources/cs-cz/studio.js +1282 -2
- package/dist/resources/cs-cz/studio.js.map +1 -1
- package/dist/resources/cs-cz/ui.d.ts +60 -2
- package/dist/resources/cs-cz/ui.d.ts.map +1 -1
- package/dist/resources/cs-cz/ui.js +72 -14
- package/dist/resources/cs-cz/ui.js.map +1 -1
- package/dist/resources/da-dk/common.d.ts +96 -970
- package/dist/resources/da-dk/common.d.ts.map +1 -1
- package/dist/resources/da-dk/common.js +99 -973
- package/dist/resources/da-dk/common.js.map +1 -1
- package/dist/resources/da-dk/errors.d.ts +3 -2
- package/dist/resources/da-dk/errors.d.ts.map +1 -1
- package/dist/resources/da-dk/errors.js +3 -2
- package/dist/resources/da-dk/errors.js.map +1 -1
- package/dist/resources/da-dk/generated.d.ts +3 -2
- package/dist/resources/da-dk/generated.d.ts.map +1 -1
- package/dist/resources/da-dk/generated.js +3 -2
- package/dist/resources/da-dk/generated.js.map +1 -1
- package/dist/resources/da-dk/studio.d.ts +1282 -2
- package/dist/resources/da-dk/studio.d.ts.map +1 -1
- package/dist/resources/da-dk/studio.js +1282 -2
- package/dist/resources/da-dk/studio.js.map +1 -1
- package/dist/resources/da-dk/ui.d.ts +60 -2
- package/dist/resources/da-dk/ui.d.ts.map +1 -1
- package/dist/resources/da-dk/ui.js +72 -14
- package/dist/resources/da-dk/ui.js.map +1 -1
- package/dist/resources/de-de/common.d.ts +96 -970
- package/dist/resources/de-de/common.d.ts.map +1 -1
- package/dist/resources/de-de/common.js +99 -973
- package/dist/resources/de-de/common.js.map +1 -1
- package/dist/resources/de-de/errors.d.ts +3 -2
- package/dist/resources/de-de/errors.d.ts.map +1 -1
- package/dist/resources/de-de/errors.js +3 -2
- package/dist/resources/de-de/errors.js.map +1 -1
- package/dist/resources/de-de/generated.d.ts +3 -2
- package/dist/resources/de-de/generated.d.ts.map +1 -1
- package/dist/resources/de-de/generated.js +3 -2
- package/dist/resources/de-de/generated.js.map +1 -1
- package/dist/resources/de-de/studio.d.ts +1282 -2
- package/dist/resources/de-de/studio.d.ts.map +1 -1
- package/dist/resources/de-de/studio.js +1282 -2
- package/dist/resources/de-de/studio.js.map +1 -1
- package/dist/resources/de-de/ui.d.ts +60 -2
- package/dist/resources/de-de/ui.d.ts.map +1 -1
- package/dist/resources/de-de/ui.js +72 -14
- package/dist/resources/de-de/ui.js.map +1 -1
- package/dist/resources/eager.d.ts +3 -0
- package/dist/resources/eager.d.ts.map +1 -0
- package/dist/resources/eager.js +25 -0
- package/dist/resources/eager.js.map +1 -0
- package/dist/resources/en-us/common.d.ts +96 -970
- package/dist/resources/en-us/common.d.ts.map +1 -1
- package/dist/resources/en-us/common.js +99 -973
- package/dist/resources/en-us/common.js.map +1 -1
- package/dist/resources/en-us/errors.d.ts +3 -2
- package/dist/resources/en-us/errors.d.ts.map +1 -1
- package/dist/resources/en-us/errors.js +3 -2
- package/dist/resources/en-us/errors.js.map +1 -1
- package/dist/resources/en-us/generated.d.ts +3 -2
- package/dist/resources/en-us/generated.d.ts.map +1 -1
- package/dist/resources/en-us/generated.js +3 -2
- package/dist/resources/en-us/generated.js.map +1 -1
- package/dist/resources/en-us/studio.d.ts +1282 -2
- package/dist/resources/en-us/studio.d.ts.map +1 -1
- package/dist/resources/en-us/studio.js +1282 -2
- package/dist/resources/en-us/studio.js.map +1 -1
- package/dist/resources/en-us/ui.d.ts +60 -2
- package/dist/resources/en-us/ui.d.ts.map +1 -1
- package/dist/resources/en-us/ui.js +72 -14
- package/dist/resources/en-us/ui.js.map +1 -1
- package/dist/resources/fr-fr/common.d.ts +96 -970
- package/dist/resources/fr-fr/common.d.ts.map +1 -1
- package/dist/resources/fr-fr/common.js +99 -973
- package/dist/resources/fr-fr/common.js.map +1 -1
- package/dist/resources/fr-fr/errors.d.ts +3 -2
- package/dist/resources/fr-fr/errors.d.ts.map +1 -1
- package/dist/resources/fr-fr/errors.js +3 -2
- package/dist/resources/fr-fr/errors.js.map +1 -1
- package/dist/resources/fr-fr/generated.d.ts +3 -2
- package/dist/resources/fr-fr/generated.d.ts.map +1 -1
- package/dist/resources/fr-fr/generated.js +3 -2
- package/dist/resources/fr-fr/generated.js.map +1 -1
- package/dist/resources/fr-fr/studio.d.ts +1282 -2
- package/dist/resources/fr-fr/studio.d.ts.map +1 -1
- package/dist/resources/fr-fr/studio.js +1282 -2
- package/dist/resources/fr-fr/studio.js.map +1 -1
- package/dist/resources/fr-fr/ui.d.ts +60 -2
- package/dist/resources/fr-fr/ui.d.ts.map +1 -1
- package/dist/resources/fr-fr/ui.js +72 -14
- package/dist/resources/fr-fr/ui.js.map +1 -1
- package/dist/resources/index.d.ts +3 -6
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +15 -14
- package/dist/resources/index.js.map +1 -1
- package/dist/resources/lazy.d.ts +19 -9
- package/dist/resources/lazy.d.ts.map +1 -1
- package/dist/resources/lazy.js +4 -2
- package/dist/resources/lazy.js.map +1 -1
- package/dist/resources/namespaces.d.ts +43 -0
- package/dist/resources/namespaces.d.ts.map +1 -0
- package/dist/resources/namespaces.js +37 -0
- package/dist/resources/namespaces.js.map +1 -0
- package/dist/resources/zh-cn/common.d.ts +96 -970
- package/dist/resources/zh-cn/common.d.ts.map +1 -1
- package/dist/resources/zh-cn/common.js +99 -973
- package/dist/resources/zh-cn/common.js.map +1 -1
- package/dist/resources/zh-cn/errors.d.ts +3 -2
- package/dist/resources/zh-cn/errors.d.ts.map +1 -1
- package/dist/resources/zh-cn/errors.js +3 -2
- package/dist/resources/zh-cn/errors.js.map +1 -1
- package/dist/resources/zh-cn/generated.d.ts +3 -2
- package/dist/resources/zh-cn/generated.d.ts.map +1 -1
- package/dist/resources/zh-cn/generated.js +3 -2
- package/dist/resources/zh-cn/generated.js.map +1 -1
- package/dist/resources/zh-cn/studio.d.ts +1282 -2
- package/dist/resources/zh-cn/studio.d.ts.map +1 -1
- package/dist/resources/zh-cn/studio.js +1282 -2
- package/dist/resources/zh-cn/studio.js.map +1 -1
- package/dist/resources/zh-cn/ui.d.ts +60 -2
- package/dist/resources/zh-cn/ui.d.ts.map +1 -1
- package/dist/resources/zh-cn/ui.js +72 -14
- package/dist/resources/zh-cn/ui.js.map +1 -1
- package/dist/resources/zh-tw/common.d.ts +96 -970
- package/dist/resources/zh-tw/common.d.ts.map +1 -1
- package/dist/resources/zh-tw/common.js +99 -973
- package/dist/resources/zh-tw/common.js.map +1 -1
- package/dist/resources/zh-tw/errors.d.ts +3 -2
- package/dist/resources/zh-tw/errors.d.ts.map +1 -1
- package/dist/resources/zh-tw/errors.js +3 -2
- package/dist/resources/zh-tw/errors.js.map +1 -1
- package/dist/resources/zh-tw/generated.d.ts +3 -2
- package/dist/resources/zh-tw/generated.d.ts.map +1 -1
- package/dist/resources/zh-tw/generated.js +3 -2
- package/dist/resources/zh-tw/generated.js.map +1 -1
- package/dist/resources/zh-tw/studio.d.ts +1282 -2
- package/dist/resources/zh-tw/studio.d.ts.map +1 -1
- package/dist/resources/zh-tw/studio.js +1282 -2
- package/dist/resources/zh-tw/studio.js.map +1 -1
- package/dist/resources/zh-tw/ui.d.ts +60 -2
- package/dist/resources/zh-tw/ui.d.ts.map +1 -1
- package/dist/resources/zh-tw/ui.js +72 -14
- package/dist/resources/zh-tw/ui.js.map +1 -1
- package/dist/review-status.js +7 -7
- package/locales/ar-EG/.meta.json +3783 -2339
- package/locales/ar-EG/common.json +96 -971
- package/locales/ar-EG/studio.json +1279 -0
- package/locales/ar-EG/ui.json +69 -12
- package/locales/cs-CZ/.meta.json +3849 -2405
- package/locales/cs-CZ/common.json +96 -971
- package/locales/cs-CZ/studio.json +1279 -0
- package/locales/cs-CZ/ui.json +69 -12
- package/locales/da-DK/.meta.json +3935 -2491
- package/locales/da-DK/common.json +96 -971
- package/locales/da-DK/studio.json +1279 -0
- package/locales/da-DK/ui.json +69 -12
- package/locales/de-DE/.meta.json +3895 -2451
- package/locales/de-DE/common.json +96 -971
- package/locales/de-DE/studio.json +1279 -0
- package/locales/de-DE/ui.json +69 -12
- package/locales/en-US/common.json +96 -971
- package/locales/en-US/studio.json +1279 -0
- package/locales/en-US/ui.json +69 -12
- package/locales/fr-FR/.meta.json +3964 -2520
- package/locales/fr-FR/common.json +96 -971
- package/locales/fr-FR/studio.json +1279 -0
- package/locales/fr-FR/ui.json +69 -12
- package/locales/zh-CN/.meta.json +3781 -2337
- package/locales/zh-CN/common.json +96 -971
- package/locales/zh-CN/studio.json +1279 -0
- package/locales/zh-CN/ui.json +69 -12
- package/locales/zh-TW/.meta.json +3785 -2341
- package/locales/zh-TW/common.json +96 -971
- package/locales/zh-TW/studio.json +1279 -0
- package/locales/zh-TW/ui.json +69 -12
- package/package.json +1 -1
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* GENERATED MIRROR of ../../../locales/fr-FR/studio.json — do not edit by hand.
|
|
3
3
|
* The JSON file is the canonical hand-authored bundle (10-i18n-theming.md §3.1);
|
|
4
|
-
* this TS mirror exists so the runtime
|
|
5
|
-
*
|
|
4
|
+
* this TS mirror exists so the runtime can bundle a namespace (en-US's eager
|
|
5
|
+
* ones) or chunk-split it (every other locale, and en-US's deferred `studio`)
|
|
6
|
+
* without JSON import attributes (browser + NodeNext safe).
|
|
6
7
|
* Parity is enforced by src/resources/parity.test.ts. Regenerate with
|
|
7
8
|
* scripts/gen-resources.mjs.
|
|
8
9
|
*/
|
|
@@ -13,6 +14,1285 @@ declare const _default: {
|
|
|
13
14
|
readonly workspaceSection: "Espace de travail";
|
|
14
15
|
readonly globalDefaultsNav: "Valeurs par défaut globales";
|
|
15
16
|
};
|
|
17
|
+
readonly source: {
|
|
18
|
+
readonly engine: {
|
|
19
|
+
readonly label: "Moteur de base de données";
|
|
20
|
+
readonly postgres: "PostgreSQL";
|
|
21
|
+
readonly mysql: "MySQL / MariaDB";
|
|
22
|
+
readonly sqlite: "SQLite";
|
|
23
|
+
};
|
|
24
|
+
readonly format: {
|
|
25
|
+
readonly label: "Format du schéma";
|
|
26
|
+
readonly helper: "Laissez la détection automatique, sauf si elle se trompe.";
|
|
27
|
+
readonly auto: "Détection automatique";
|
|
28
|
+
readonly sql: "DDL SQL / pg_dump";
|
|
29
|
+
readonly prisma: "Schéma Prisma";
|
|
30
|
+
readonly drizzle: "Drizzle ORM";
|
|
31
|
+
readonly typeorm: "Entités TypeORM";
|
|
32
|
+
readonly sequelize: "Modèles Sequelize";
|
|
33
|
+
readonly rails: "schema.rb Rails";
|
|
34
|
+
readonly django: "models.py Django";
|
|
35
|
+
readonly json: "JSON Adminium";
|
|
36
|
+
};
|
|
37
|
+
readonly sqlite: {
|
|
38
|
+
readonly file: "Chemin du fichier de base de données";
|
|
39
|
+
readonly helper: "SQLite est un fichier, pas un serveur — indiquez le chemin absolu sur la machine qui exécute Adminium.";
|
|
40
|
+
};
|
|
41
|
+
readonly file: {
|
|
42
|
+
readonly detectedAs: "Détecté : {format}";
|
|
43
|
+
readonly moreWarnings: "+{count} avertissements supplémentaires — la liste complète apparaît à l’étape d’analyse.";
|
|
44
|
+
readonly dropTitle: "Déposez votre fichier de schéma ici, ou parcourez";
|
|
45
|
+
readonly dropHint: "SQL DDL / pg_dump, Prisma, Drizzle, TypeORM, Sequelize, Rails schema.rb, modèles Django, Adminium JSON";
|
|
46
|
+
readonly pitch: "Aucune connexion à la base requise — nous analysons votre fichier de schéma et construisons les mêmes tableaux de bord.";
|
|
47
|
+
readonly parsing: "Lecture du fichier de schéma téléversé…";
|
|
48
|
+
readonly tables: "tables";
|
|
49
|
+
readonly columns: "colonnes";
|
|
50
|
+
readonly warnings: "avertissements";
|
|
51
|
+
readonly errorTitle: "Impossible d’analyser le fichier";
|
|
52
|
+
readonly parseFailed: "Nous n’avons pas pu analyser ce fichier. Si la détection automatique s’est trompée, choisissez le format explicitement et réessayez.";
|
|
53
|
+
readonly unsupported: "Format non reconnu — SQL DDL, Prisma, Drizzle, TypeORM, Sequelize, Rails schema.rb, modèles Django et Adminium JSON sont pris en charge. Choisissez-en un explicitement et réessayez.";
|
|
54
|
+
readonly requestFailed: "Échec du téléversement — vérifiez votre connexion et réessayez.";
|
|
55
|
+
};
|
|
56
|
+
readonly title: "Connectez votre base de données";
|
|
57
|
+
readonly subtitle: "Pointez Adminium vers une base de données et nous générerons un tableau de bord d’administration à partir de son schéma.";
|
|
58
|
+
readonly name: "Nom de la connexion";
|
|
59
|
+
readonly namePlaceholder: "Postgres de production";
|
|
60
|
+
readonly modeLabel: "Mode de saisie de la source";
|
|
61
|
+
readonly mode: {
|
|
62
|
+
readonly dsn: "Chaîne de connexion";
|
|
63
|
+
readonly fields: "Champs individuels";
|
|
64
|
+
readonly file: "Fichier de schéma";
|
|
65
|
+
};
|
|
66
|
+
readonly dsn: {
|
|
67
|
+
readonly label: "Chaîne de connexion";
|
|
68
|
+
readonly helper: "postgres://utilisateur:motdepasse@hote:5432/base — mysql:// et sqlite: fonctionnent aussi.";
|
|
69
|
+
readonly incomplete: "Ajoutez l’hôte et la base, p. ex. postgres://user@host:5432/db";
|
|
70
|
+
readonly invalidScheme: "Schéma non reconnu — attendu : postgres://, mysql://, mariadb:// ou sqlite:";
|
|
71
|
+
readonly quickFill: "Remplissage rapide :";
|
|
72
|
+
};
|
|
73
|
+
readonly fields: {
|
|
74
|
+
readonly host: "Hôte";
|
|
75
|
+
readonly port: "Port";
|
|
76
|
+
readonly database: "Base de données";
|
|
77
|
+
readonly user: "Utilisateur";
|
|
78
|
+
readonly password: "Mot de passe";
|
|
79
|
+
readonly ssl: "Mode SSL";
|
|
80
|
+
readonly preview: "Aperçu de la chaîne de connexion :";
|
|
81
|
+
};
|
|
82
|
+
readonly readOnlyRole: {
|
|
83
|
+
readonly title: "Utilisez un rôle en lecture seule";
|
|
84
|
+
readonly body: "Adminium n’écrit jamais dans votre base — la configuration n’utilise que les métadonnées du schéma. Nous recommandons un utilisateur dédié avec des droits SELECT uniquement ; vous choisirez où Adminium range ses propres tables à l’étape du stockage méta.";
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
readonly capability: {
|
|
88
|
+
readonly mysqlApproxRows: "Les nombres de lignes MySQL sont des estimations du moteur de stockage (dérive possible jusqu’à ±40 %) — affichés avec ≈.";
|
|
89
|
+
readonly mysqlFkEnum: "Les métadonnées FK/enum de MySQL sont plus limitées : les tables MyISAM ne déclarent pas de clés étrangères, les enums sont des types enum(…) par colonne et les contraintes CHECK requièrent MySQL 8.0.16+ / MariaDB 10.2+.";
|
|
90
|
+
readonly sqliteCheckEnums: "SQLite n’a pas de type enum natif — les enums sont synthétisés à partir des contraintes CHECK (col IN (…)).";
|
|
91
|
+
readonly sqliteNoComments: "SQLite n’a pas de commentaires de colonne — utilisez l’éditeur de remappage du schéma pour ajouter des libellés.";
|
|
92
|
+
readonly importNoRowCounts: "Les fichiers de schéma ne contiennent pas de nombres de lignes — la liste des tables affiche — plutôt que des chiffres inventés.";
|
|
93
|
+
readonly importNoLiveHealth: "Pas de connexion à une base de données réelle — les contrôles de santé et la détection de dérive du schéma sont indisponibles pour cette source.";
|
|
94
|
+
readonly rowsUnavailable: "Les fichiers de schéma n’ont pas de base de données réelle — les nombres de lignes restent inconnus tant que vous n’en connectez pas une.";
|
|
95
|
+
readonly rowsRunAnalyze: "Pas encore d’estimation — exécutez ANALYZE sur la base pour obtenir les nombres de lignes.";
|
|
96
|
+
readonly rowsNoEstimate: "Le moteur n’a communiqué aucune estimation pour cette table.";
|
|
97
|
+
readonly rowsApproximate: "Estimation du moteur de stockage — dérive possible jusqu’à ±40 % avec InnoDB.";
|
|
98
|
+
};
|
|
99
|
+
readonly test: {
|
|
100
|
+
readonly log: {
|
|
101
|
+
readonly moreWarnings: "+{count} avertissements du parseur supplémentaires";
|
|
102
|
+
readonly connecting: "Établissement d’une connexion sécurisée…";
|
|
103
|
+
readonly connected: "Connecté ({latency} ms) · introspection en lecture seule";
|
|
104
|
+
readonly connectFailed: "Échec de la connexion.";
|
|
105
|
+
readonly readingSchema: "Lecture du schéma : public";
|
|
106
|
+
readonly readingFile: "Lecture du fichier de schéma téléversé…";
|
|
107
|
+
readonly parsingFile: "Analyse de {file}…";
|
|
108
|
+
readonly detected: "{tables} tables · {columns} colonnes détectées";
|
|
109
|
+
readonly found: "{tables} tables · {columns} colonnes trouvées";
|
|
110
|
+
readonly mapping: "Correspondance des types de colonnes → widgets de saisie";
|
|
111
|
+
readonly relations: "Détection des relations…";
|
|
112
|
+
readonly piiScan: "Recherche de colonnes PII…";
|
|
113
|
+
readonly piiDone: "Analyse PII terminée — {count} colonnes masquées par défaut";
|
|
114
|
+
readonly piiDoneUnknown: "Analyse PII terminée";
|
|
115
|
+
readonly jobFailed: "Échec de l’introspection.";
|
|
116
|
+
readonly networkFailed: "Échec de la requête — vérifiez votre connexion et réessayez.";
|
|
117
|
+
readonly ready: "Prêt";
|
|
118
|
+
};
|
|
119
|
+
readonly title: "Analyse de votre schéma";
|
|
120
|
+
readonly subtitle: "Introspection des tables, colonnes et relations. Cela prend quelques secondes.";
|
|
121
|
+
readonly trust: "Nous ne faisons que lire votre schéma et vos données. Rien n’est modifié.";
|
|
122
|
+
readonly errorTitle: "Échec de la connexion";
|
|
123
|
+
readonly retry: "Réessayer";
|
|
124
|
+
readonly logLabel: "Journal d’introspection";
|
|
125
|
+
readonly hint: {
|
|
126
|
+
readonly auth: "Échec de l’authentification — vérifiez le nom d’utilisateur et le mot de passe dans votre DSN.";
|
|
127
|
+
readonly hostUnreachable: "Hôte injoignable — vérifiez le nom d’hôte et le port, et que la base accepte les connexions depuis cette machine (ajoutez nos IP à la liste d’autorisation).";
|
|
128
|
+
readonly metaPlacement: "Cette source ne peut pas héberger les tables méta d’Adminium — continuez avec une base méta séparée.";
|
|
129
|
+
readonly permission: "Le rôle s’est connecté mais n’a pas les droits de lecture du schéma — accordez USAGE sur le schéma à votre rôle d’introspection.";
|
|
130
|
+
readonly timeout: "La base n’a pas répondu à temps — vérifiez le chemin réseau et la charge, puis réessayez.";
|
|
131
|
+
readonly tls: "Échec de la négociation TLS — essayez sslmode=require, ou téléversez le certificat CA attendu par votre serveur.";
|
|
132
|
+
readonly unknown: "Échec de la connexion — vérifiez la DSN et réessayez.";
|
|
133
|
+
};
|
|
134
|
+
};
|
|
135
|
+
readonly tables: {
|
|
136
|
+
readonly importNoCounts: "Les fichiers de schéma ne contiennent pas de nombres de lignes — la colonne affiche — tant qu’aucune base réelle n’est connectée.";
|
|
137
|
+
readonly title: "Choisissez vos tables";
|
|
138
|
+
readonly subtitle: "Choisissez lesquelles inclure. Vous pourrez en changer à tout moment.";
|
|
139
|
+
readonly search: "Filtrer les tables…";
|
|
140
|
+
readonly listLabel: "Tables incluables";
|
|
141
|
+
readonly emptyFilter: "Aucune table ne correspond à votre filtre.";
|
|
142
|
+
readonly pii: "PII";
|
|
143
|
+
readonly highVolume: "gros volume";
|
|
144
|
+
readonly highVolumeNote: "Les tables de plus de 100 000 lignes démarrent décochées — les tables techniques ont rarement leur place dans un tableau de bord.";
|
|
145
|
+
readonly joinHidden: "{count} tables de jointure/système sont masquées d’avance — elles alimentent toujours les relations plusieurs-à-plusieurs.";
|
|
146
|
+
};
|
|
147
|
+
readonly hub: {
|
|
148
|
+
readonly title: "Connexions de données";
|
|
149
|
+
readonly subtitle: "{healthy, number} sur {total, plural, one {# connexion} other {# connexions}} en bonne santé";
|
|
150
|
+
readonly connectNew: "Nouvelle connexion";
|
|
151
|
+
readonly stats: {
|
|
152
|
+
readonly connections: "Connexions";
|
|
153
|
+
readonly healthy: "En bonne santé";
|
|
154
|
+
readonly tables: "Tables incluses";
|
|
155
|
+
readonly pages: "Pages générées";
|
|
156
|
+
};
|
|
157
|
+
readonly status: {
|
|
158
|
+
readonly connected: "Connectée";
|
|
159
|
+
readonly error: "Erreur";
|
|
160
|
+
readonly unconfigured: "Brouillon";
|
|
161
|
+
readonly testing: "Test en cours…";
|
|
162
|
+
readonly paused: "En pause";
|
|
163
|
+
};
|
|
164
|
+
readonly card: {
|
|
165
|
+
readonly readOnly: "Lecture seule";
|
|
166
|
+
readonly tables: "Tables";
|
|
167
|
+
readonly pages: "Pages";
|
|
168
|
+
readonly latency: "Latence";
|
|
169
|
+
readonly latencyMs: "{latency, number} ms";
|
|
170
|
+
readonly lastIntrospected: "Dernière introspection";
|
|
171
|
+
readonly never: "Jamais";
|
|
172
|
+
readonly timezone: "Fuseau horaire";
|
|
173
|
+
readonly timezoneGuessed: "depuis ce serveur";
|
|
174
|
+
readonly paused: "Adminium ne se connecte pas à cette base de données. Ses pages se chargeront de nouveau dès que vous la reprendrez.";
|
|
175
|
+
readonly pausedSince: "En pause {when} — Adminium ne se connecte pas à cette base de données. Ses pages se chargeront de nouveau dès que vous la reprendrez.";
|
|
176
|
+
};
|
|
177
|
+
readonly action: {
|
|
178
|
+
readonly test: "Tester";
|
|
179
|
+
readonly reintrospect: "Réintrospecter";
|
|
180
|
+
readonly reintrospectFile: "Les sources de type fichier de schéma n’ont pas de base de données active — téléversez à nouveau le fichier.";
|
|
181
|
+
readonly remap: "Remapper le schéma";
|
|
182
|
+
readonly delete: "Supprimer";
|
|
183
|
+
readonly regional: "Paramètres régionaux";
|
|
184
|
+
readonly pause: "Mettre en pause";
|
|
185
|
+
readonly resume: "Reprendre";
|
|
186
|
+
readonly pausedHint: "Cette connexion est en pause — reprenez-la pour atteindre la base de données.";
|
|
187
|
+
readonly rename: "Renommer";
|
|
188
|
+
};
|
|
189
|
+
readonly regional: {
|
|
190
|
+
readonly title: "Paramètres régionaux";
|
|
191
|
+
readonly intro: "Ils décrivent l'entreprise à laquelle appartient cette base de données, et non la personne qui la consulte. Les applications servies par Adminium les lisent ici.";
|
|
192
|
+
readonly timezone: "Fuseau horaire";
|
|
193
|
+
readonly timezoneHelper: "Les dates et heures s'affichent dans ce fuseau. Sans fuseau, les applications hébergées par Adminium basculent en UTC et l'indiquent à l'écran.";
|
|
194
|
+
readonly guessedTitle: "Ce fuseau vient du serveur";
|
|
195
|
+
readonly guessedBody: "Adminium l'a repris de la machine sur laquelle il tourne ; personne ne l'a choisi ici. Enregistrez pour le confirmer, ou choisissez le fuseau dans lequel cette entreprise travaille réellement.";
|
|
196
|
+
readonly timezonePlaceholder: "Région/Ville";
|
|
197
|
+
readonly currency: "Devise";
|
|
198
|
+
readonly currencyHelper: "Sert à formater les montants. Facultatif : ne pas la définir n'affecte que le formatage.";
|
|
199
|
+
readonly currencyPlaceholder: "Code ISO-4217";
|
|
200
|
+
readonly notSet: "Non défini";
|
|
201
|
+
readonly noMatch: "Aucun fuseau correspondant";
|
|
202
|
+
readonly noMatchCurrency: "Aucune devise correspondante";
|
|
203
|
+
readonly save: "Enregistrer";
|
|
204
|
+
readonly failed: "Impossible d'enregistrer les paramètres régionaux";
|
|
205
|
+
readonly saved: "Paramètres régionaux mis à jour";
|
|
206
|
+
};
|
|
207
|
+
readonly test: {
|
|
208
|
+
readonly ok: "Connexion en bonne santé · {latency, number} ms";
|
|
209
|
+
readonly failed: "Échec du test de connexion";
|
|
210
|
+
};
|
|
211
|
+
readonly introspect: {
|
|
212
|
+
readonly noChanges: "Schéma inchangé — aucun nouvel instantané.";
|
|
213
|
+
readonly updated: "Schéma réintrospecté";
|
|
214
|
+
readonly masksProposed: "{count, plural, one {# colonne proposée} other {# colonnes proposées}} au masquage — à vérifier dans l’éditeur de remappage.";
|
|
215
|
+
readonly failed: "Échec de l’introspection. Réessayez.";
|
|
216
|
+
};
|
|
217
|
+
readonly delete: {
|
|
218
|
+
readonly title: "Supprimer la connexion";
|
|
219
|
+
readonly body: "Cette action supprime « {name} » et les pages générées. Votre base de données n’est jamais touchée.";
|
|
220
|
+
readonly prompt: "Saisissez {name} pour confirmer";
|
|
221
|
+
readonly confirm: "Supprimer la connexion";
|
|
222
|
+
readonly cancel: "Annuler";
|
|
223
|
+
readonly close: "Fermer";
|
|
224
|
+
readonly success: "Connexion « {name} » supprimée";
|
|
225
|
+
readonly failed: "Impossible de supprimer la connexion. Réessayez.";
|
|
226
|
+
};
|
|
227
|
+
readonly empty: {
|
|
228
|
+
readonly title: "Aucune source de données";
|
|
229
|
+
readonly body: "Connectez une base de données : Adminium génère votre panneau d’administration à partir de son schéma.";
|
|
230
|
+
readonly cta: "Connecter une base de données";
|
|
231
|
+
};
|
|
232
|
+
readonly hostedApps: "Apps hébergées";
|
|
233
|
+
readonly subtitlePaused: "{healthy, number} sur {total, plural, one {# connexion} other {# connexions}} en bonne santé · {paused, number} en pause";
|
|
234
|
+
readonly pause: {
|
|
235
|
+
readonly title: "Mettre cette connexion en pause ?";
|
|
236
|
+
readonly body: "Adminium n’ouvre plus aucune connexion vers « {name} ». Ses {pages, plural, one {# page} other {# pages}}, ses rapports planifiés et ses applications hébergées cessent de charger des données jusqu’à ce que vous la repreniez.";
|
|
237
|
+
readonly keeps: "Rien n’est supprimé — la connexion, son schéma et ses {pages, plural, one {# page} other {# pages}} sont conservés, et un clic les ramène.";
|
|
238
|
+
readonly confirm: "Mettre la connexion en pause";
|
|
239
|
+
readonly pausedToast: "Connexion « {name} » mise en pause";
|
|
240
|
+
readonly resumedToast: "Connexion « {name} » reprise";
|
|
241
|
+
readonly pauseFailed: "Impossible de mettre la connexion en pause. Réessayez.";
|
|
242
|
+
readonly resumeFailed: "Impossible de reprendre la connexion. Réessayez.";
|
|
243
|
+
};
|
|
244
|
+
readonly rename: {
|
|
245
|
+
readonly title: "Renommer la connexion";
|
|
246
|
+
readonly label: "Nom";
|
|
247
|
+
readonly helper: "Le nom de cette base partout dans Adminium — la carte, le groupe de la barre latérale au-dessus de ses pages, et chaque sélecteur qui la propose. La base elle-même n'est pas renommée.";
|
|
248
|
+
readonly save: "Renommer";
|
|
249
|
+
readonly saved: "Connexion renommée";
|
|
250
|
+
readonly failed: "La connexion n'a pas pu être renommée";
|
|
251
|
+
};
|
|
252
|
+
};
|
|
253
|
+
readonly settingsHub: {
|
|
254
|
+
readonly title: "Paramètres de l’espace de travail";
|
|
255
|
+
readonly subtitle: "Identité, sécurité et actions destructrices pour cet espace de travail.";
|
|
256
|
+
readonly save: "Enregistrer les modifications";
|
|
257
|
+
readonly saved: "Paramètres de l’espace de travail mis à jour";
|
|
258
|
+
readonly saveFailed: "Impossible d’enregistrer les paramètres de l’espace de travail. Réessayez.";
|
|
259
|
+
readonly superAdminOnlyTitle: "Super administrateur requis";
|
|
260
|
+
readonly superAdminOnly: "Seul un super administrateur peut modifier l’identité et les paramètres de sécurité de l’espace de travail.";
|
|
261
|
+
readonly identity: {
|
|
262
|
+
readonly heading: "Identité de l’espace de travail";
|
|
263
|
+
readonly appName: {
|
|
264
|
+
readonly label: "Nom de l’application";
|
|
265
|
+
readonly helper: "Affiché dans la barre latérale, le titre du navigateur et les e-mails.";
|
|
266
|
+
readonly error: "Saisissez un nom de 60 caractères maximum.";
|
|
267
|
+
};
|
|
268
|
+
readonly logo: {
|
|
269
|
+
readonly label: "Logo";
|
|
270
|
+
readonly drop: "Déposez une image ici";
|
|
271
|
+
readonly helper: "PNG, JPEG, WebP, GIF ou SVG, jusqu’à 1 Mo. Remplace la marque intégrée partout.";
|
|
272
|
+
readonly upload: "Importer un logo";
|
|
273
|
+
readonly replace: "Remplacer le logo";
|
|
274
|
+
readonly remove: "Supprimer";
|
|
275
|
+
readonly uploaded: "Logo mis à jour";
|
|
276
|
+
readonly removed: "Logo supprimé";
|
|
277
|
+
readonly tooLarge: "Cette image dépasse 1 Mo.";
|
|
278
|
+
readonly badType: "Choisissez une image PNG, JPEG, WebP, GIF ou SVG.";
|
|
279
|
+
readonly undo: "Annuler";
|
|
280
|
+
};
|
|
281
|
+
readonly showVersion: {
|
|
282
|
+
readonly label: "Version dans la barre latérale";
|
|
283
|
+
readonly helper: "Le numéro de build à côté du logo. Désactivé, il masque votre version.";
|
|
284
|
+
};
|
|
285
|
+
};
|
|
286
|
+
readonly security: {
|
|
287
|
+
readonly heading: "Sécurité";
|
|
288
|
+
readonly require2fa: {
|
|
289
|
+
readonly label: "Exiger l’authentification à deux facteurs";
|
|
290
|
+
readonly desc: "Chaque membre doit activer la 2FA pour se connecter.";
|
|
291
|
+
readonly note: "Indicatif, pas bloquant : les membres sans 2FA sont dirigés vers sa configuration et ne peuvent plus la désactiver, mais leur connexion n’est jamais bloquée, et les clés API ne sont pas concernées.";
|
|
292
|
+
};
|
|
293
|
+
readonly allowSignup: {
|
|
294
|
+
readonly label: "Autoriser l’auto-inscription";
|
|
295
|
+
readonly desc: "N’importe qui peut créer un compte — désactivé, l’espace de travail reste sur invitation uniquement.";
|
|
296
|
+
};
|
|
297
|
+
readonly sessionTtl: {
|
|
298
|
+
readonly label: "Durée de session (heures)";
|
|
299
|
+
readonly error: "Entre {min, number} et {max, number} heures.";
|
|
300
|
+
};
|
|
301
|
+
readonly passwordMin: {
|
|
302
|
+
readonly label: "Longueur minimale du mot de passe";
|
|
303
|
+
readonly error: "Entre {min, number} et {max, number} caractères.";
|
|
304
|
+
};
|
|
305
|
+
};
|
|
306
|
+
readonly email: {
|
|
307
|
+
readonly heading: "E-mail (SMTP)";
|
|
308
|
+
readonly unconfigured: "Aucun serveur de messagerie n’est configuré, donc Adminium ne peut envoyer ni réinitialisation de mot de passe, ni invitation, ni rapport planifié.";
|
|
309
|
+
readonly host: {
|
|
310
|
+
readonly label: "Hôte SMTP";
|
|
311
|
+
readonly error: "Un nom d’hôte ou une adresse IP uniquement — sans schéma, port ni identifiants.";
|
|
312
|
+
};
|
|
313
|
+
readonly port: {
|
|
314
|
+
readonly label: "Port";
|
|
315
|
+
readonly error: "Entre {min, number} et {max, number}.";
|
|
316
|
+
};
|
|
317
|
+
readonly user: {
|
|
318
|
+
readonly label: "Nom d’utilisateur";
|
|
319
|
+
readonly helper: "Laissez vide si le relais ne demande pas d’authentification.";
|
|
320
|
+
};
|
|
321
|
+
readonly pass: {
|
|
322
|
+
readonly label: "Mot de passe";
|
|
323
|
+
readonly helper: "Chiffré au stockage et jamais réaffiché. Laissez vide pour conserver l’actuel.";
|
|
324
|
+
readonly error: "Ce nom d’utilisateur exige un mot de passe.";
|
|
325
|
+
};
|
|
326
|
+
readonly from: {
|
|
327
|
+
readonly label: "Adresse d’expéditeur";
|
|
328
|
+
readonly helper: "Une adresse seule, ou un nom d’affichage devant.";
|
|
329
|
+
readonly error: "Saisissez une adresse e-mail.";
|
|
330
|
+
};
|
|
331
|
+
readonly secure: {
|
|
332
|
+
readonly label: "TLS implicite";
|
|
333
|
+
readonly helper: "Activé pour le port 465. Désactivé démarre en clair puis passe à STARTTLS, ce qu’attend le port 587.";
|
|
334
|
+
};
|
|
335
|
+
readonly remove: "Supprimer le serveur de messagerie";
|
|
336
|
+
readonly review: {
|
|
337
|
+
readonly removed: "Supprimé";
|
|
338
|
+
readonly password: "Remplacé";
|
|
339
|
+
};
|
|
340
|
+
};
|
|
341
|
+
readonly review: {
|
|
342
|
+
readonly title: "Enregistrer les paramètres de l’espace de travail";
|
|
343
|
+
readonly subtitle: "Vérifiez vos modifications avant d’enregistrer.";
|
|
344
|
+
readonly confirm: "Enregistrer les modifications";
|
|
345
|
+
readonly cancel: "Annuler";
|
|
346
|
+
readonly close: "Fermer";
|
|
347
|
+
readonly on: "Activé";
|
|
348
|
+
readonly off: "Désactivé";
|
|
349
|
+
readonly shown: "Affiché";
|
|
350
|
+
readonly hidden: "Masqué";
|
|
351
|
+
readonly change: "{before} → {after}";
|
|
352
|
+
};
|
|
353
|
+
readonly defaultsCard: {
|
|
354
|
+
readonly heading: "Valeurs par défaut d’apparence et de langue";
|
|
355
|
+
readonly body: "Le thème, la couleur d’accent, la densité et la langue de tout l’espace de travail se trouvent dans les valeurs par défaut globales.";
|
|
356
|
+
readonly cta: "Ouvrir les valeurs par défaut globales";
|
|
357
|
+
};
|
|
358
|
+
readonly danger: {
|
|
359
|
+
readonly heading: "Zone de danger";
|
|
360
|
+
readonly subtitle: "Actions irréversibles.";
|
|
361
|
+
readonly empty: "Rien à supprimer — aucune connexion pour l’instant.";
|
|
362
|
+
readonly deleteDesc: "Supprime la connexion et les pages générées. Votre base de données n’est pas touchée. Irréversible.";
|
|
363
|
+
readonly deleteCta: "Supprimer la connexion";
|
|
364
|
+
};
|
|
365
|
+
readonly aiCard: {
|
|
366
|
+
readonly heading: "Enrichissement par IA";
|
|
367
|
+
readonly body: "Configurez un fournisseur IA (ou l’aller-retour copier-coller) pour enrichir libellés, groupes et relations.";
|
|
368
|
+
readonly cta: "Ouvrir les réglages IA";
|
|
369
|
+
};
|
|
370
|
+
readonly pagesCard: {
|
|
371
|
+
readonly heading: "Pages";
|
|
372
|
+
readonly body: "Ajoutez, modifiez et supprimez des pages, changez leur contenu et réordonnez la barre latérale.";
|
|
373
|
+
readonly cta: "Gérer les pages";
|
|
374
|
+
};
|
|
375
|
+
readonly translationsCard: {
|
|
376
|
+
readonly heading: "Langues et traductions";
|
|
377
|
+
readonly body: "Reformulez n’importe quel texte d’Adminium, choisissez les langues proposées et ajoutez les vôtres.";
|
|
378
|
+
readonly cta: "Ouvrir les traductions";
|
|
379
|
+
};
|
|
380
|
+
};
|
|
381
|
+
readonly settingsAi: {
|
|
382
|
+
readonly title: "Enrichissement par IA";
|
|
383
|
+
readonly subtitle: "Connectez un modèle pour qu’Adminium suggère des libellés, des groupes, des relations et plus encore — toujours revus sous forme de diff avant toute application.";
|
|
384
|
+
readonly saved: "Fournisseur IA enregistré";
|
|
385
|
+
readonly saveFailed: "Impossible d’enregistrer le fournisseur IA. Réessayez.";
|
|
386
|
+
readonly save: "Enregistrer le fournisseur";
|
|
387
|
+
readonly test: "Tester la connexion";
|
|
388
|
+
readonly testHintDirty: "Enregistrez vos modifications avant de tester.";
|
|
389
|
+
readonly testing: "Test du fournisseur en cours…";
|
|
390
|
+
readonly testError: "Échec du test";
|
|
391
|
+
readonly testErrorBody: "Impossible de joindre le fournisseur. Vérifiez la clé et l’URL de base.";
|
|
392
|
+
readonly testOk: "Connecté à {model} en {latency} ms";
|
|
393
|
+
readonly testUnknownModel: "le fournisseur";
|
|
394
|
+
readonly provider: {
|
|
395
|
+
readonly heading: "Fournisseur IA";
|
|
396
|
+
readonly subtitle: "Choisissez comment Adminium atteint un modèle pour enrichir votre schéma. Les clés sont stockées chiffrées et ne sont jamais réaffichées.";
|
|
397
|
+
readonly active: "Actif";
|
|
398
|
+
readonly anthropic: {
|
|
399
|
+
readonly label: "Anthropic";
|
|
400
|
+
readonly desc: "Modèles Claude via l’API Anthropic.";
|
|
401
|
+
};
|
|
402
|
+
readonly openai: {
|
|
403
|
+
readonly label: "OpenAI";
|
|
404
|
+
readonly desc: "Modèles GPT via l’API OpenAI.";
|
|
405
|
+
};
|
|
406
|
+
readonly openaiCompatible: {
|
|
407
|
+
readonly label: "Compatible OpenAI";
|
|
408
|
+
readonly desc: "Tout point de terminaison au format OpenAI — Groq, Together, vLLM, LM Studio.";
|
|
409
|
+
};
|
|
410
|
+
readonly ollama: {
|
|
411
|
+
readonly label: "Ollama (local)";
|
|
412
|
+
readonly desc: "Modèles exécutés localement via Ollama — sans clé, sans cloud.";
|
|
413
|
+
};
|
|
414
|
+
readonly requiresNetwork: "Nécessite Internet et une clé API";
|
|
415
|
+
readonly networkDisabledTitle: "Les fournisseurs IA directs sont désactivés sur cette installation";
|
|
416
|
+
readonly networkDisabledBody: "Cet Adminium est configuré sans accès Internet sortant : il ne peut joindre aucune API de fournisseur. Utilisez l'aller-retour copier-coller ci-dessous — ni clé ni réseau requis.";
|
|
417
|
+
};
|
|
418
|
+
readonly configure: {
|
|
419
|
+
readonly heading: "Configurer {provider}";
|
|
420
|
+
};
|
|
421
|
+
readonly field: {
|
|
422
|
+
readonly baseUrl: "URL de base";
|
|
423
|
+
readonly baseUrlOptional: "Laissez tel quel, sauf si Ollama tourne sur un autre hôte.";
|
|
424
|
+
readonly baseUrlHelper: "La racine du point de terminaison qui sert /chat/completions.";
|
|
425
|
+
readonly model: "Modèle";
|
|
426
|
+
readonly modelFreeText: "Saisissez l’identifiant exact du modèle servi par votre point de terminaison.";
|
|
427
|
+
readonly modelLive: "Chargé en direct depuis le fournisseur.";
|
|
428
|
+
readonly modelStatic: "Une liste éprouvée ; saisissez un identifiant personnalisé après l’enregistrement pour l’actualiser.";
|
|
429
|
+
readonly modelLoading: "Chargement…";
|
|
430
|
+
readonly modelPlaceholder: "Sélectionner un modèle…";
|
|
431
|
+
readonly key: "Clé API";
|
|
432
|
+
readonly keyStored: "Stockée chiffrée. Remplacez-la pour utiliser une autre clé.";
|
|
433
|
+
readonly keyMask: "sk-…{last4}";
|
|
434
|
+
readonly keyReplace: "Remplacer la clé";
|
|
435
|
+
readonly keyOptional: "Facultatif — certains points de terminaison n’exigent aucune clé.";
|
|
436
|
+
readonly keyWriteOnly: "En écriture seule : une fois enregistrée, elle n’est jamais réaffichée.";
|
|
437
|
+
readonly noKeyTitle: "Aucune clé API requise";
|
|
438
|
+
readonly noKeyBody: "Ollama tourne localement, donc rien ne quitte cette machine.";
|
|
439
|
+
};
|
|
440
|
+
readonly runStatus: {
|
|
441
|
+
readonly draft: "Brouillon";
|
|
442
|
+
readonly running: "En cours";
|
|
443
|
+
readonly awaitingResponse: "En attente de réponse";
|
|
444
|
+
readonly validated: "Validé";
|
|
445
|
+
readonly applied: "Appliqué";
|
|
446
|
+
readonly partiallyApplied: "Partiellement appliqué";
|
|
447
|
+
readonly failed: "Échoué";
|
|
448
|
+
readonly discarded: "Abandonné";
|
|
449
|
+
};
|
|
450
|
+
readonly byo: {
|
|
451
|
+
readonly heading: "Pas de clé ? Utilisez votre propre outil IA";
|
|
452
|
+
readonly subtitle: "L’aller-retour copier-coller — rien ne quitte cette machine.";
|
|
453
|
+
readonly body: "Studio peut générer un prompt autonome à partir de votre schéma. Exécutez-le dans Claude Code, ChatGPT ou l’outil de votre choix, puis collez le JSON renvoyé dans l’assistant de connexion. Même validation, même revue, même résultat que la voie directe.";
|
|
454
|
+
readonly guaranteeTitle: "Garantie sans télémétrie";
|
|
455
|
+
readonly guarantee1: "Le prompt ne contient que votre schéma et des statistiques agrégées — jamais de données de lignes par défaut.";
|
|
456
|
+
readonly guarantee2: "Aucun identifiant, URL d’instance ni justificatif n’y est intégré.";
|
|
457
|
+
readonly guarantee3: "Les exécutions BYO ne font aucun appel réseau.";
|
|
458
|
+
readonly promptVersion: "Prompt {version}";
|
|
459
|
+
readonly schemaVersion: "Schéma {version}";
|
|
460
|
+
readonly headingRecommended: "Utilisez votre propre outil IA — aucune clé requise";
|
|
461
|
+
readonly recommended: "Recommandé";
|
|
462
|
+
};
|
|
463
|
+
readonly history: {
|
|
464
|
+
readonly heading: "Historique des exécutions";
|
|
465
|
+
readonly subtitle: "Exécutions d’enrichissement passées. Ouvrez-en une pour revoir ses suggestions.";
|
|
466
|
+
readonly tableLabel: "Exécutions d’enrichissement";
|
|
467
|
+
readonly colDate: "Date";
|
|
468
|
+
readonly colSource: "Source";
|
|
469
|
+
readonly colStatus: "Statut";
|
|
470
|
+
readonly colChunks: "Blocs";
|
|
471
|
+
readonly openReview: "Ouvrir la revue de l’exécution du {date}";
|
|
472
|
+
readonly connection: "Connexion";
|
|
473
|
+
readonly empty: "Aucune exécution d’enrichissement pour l’instant. Enrichissez un schéma depuis l’assistant de connexion pour voir l’historique ici.";
|
|
474
|
+
readonly errorTitle: "Impossible de charger les exécutions";
|
|
475
|
+
readonly errorBody: "Rechargez la page pour réessayer.";
|
|
476
|
+
readonly noConnections: "Connectez d’abord une base de données — les exécutions d’enrichissement sont enregistrées par connexion.";
|
|
477
|
+
readonly byo: "BYO";
|
|
478
|
+
readonly directPath: "Directe";
|
|
479
|
+
};
|
|
480
|
+
};
|
|
481
|
+
readonly enrich: {
|
|
482
|
+
readonly title: "Enrichir avec l’IA";
|
|
483
|
+
readonly subtitle: "Affinez éventuellement les libellés, groupes, énumérations et tableaux de bord générés à l’aide d’un LLM. La base heuristique fonctionne sans cela — ceci ajoute seulement des suggestions que vous vérifiez avant toute application.";
|
|
484
|
+
readonly intentLabel: "Comment souhaitez-vous enrichir ?";
|
|
485
|
+
readonly sectionsLegend: "Que doit décider l’IA ?";
|
|
486
|
+
readonly localesLegend: "Traduire les libellés en";
|
|
487
|
+
readonly localeLocked: "(requis)";
|
|
488
|
+
readonly samplingTitle: "Inclure des valeurs d’exemple";
|
|
489
|
+
readonly samplingHint: "Inclut jusqu’à 20 valeurs réelles par colonne non-PII dans l’invite.";
|
|
490
|
+
readonly samplingPreviewTitle: "Ce qui quitte cette machine";
|
|
491
|
+
readonly samplingPreviewBody: "Jusqu’à 20 valeurs les plus fréquentes par colonne non-PII, plus min/max pour les colonnes numériques et de date. Les colonnes marquées PII ne sont jamais échantillonnées. Tout le reste demeure purement agrégé. Vérifiez l’invite exacte avant de copier (BYO) — rien n’est envoyé sans votre action.";
|
|
492
|
+
readonly noSections: "Sélectionnez au moins un groupe de décisions à enrichir.";
|
|
493
|
+
readonly generatePrompt: "Générer l’invite";
|
|
494
|
+
readonly startProvider: "Démarrer l’enrichissement";
|
|
495
|
+
readonly startOver: "Recommencer";
|
|
496
|
+
readonly copied: "Copié";
|
|
497
|
+
readonly createFailed: "Impossible de construire l’invite d’enrichissement — réessayez.";
|
|
498
|
+
readonly createFailedTitle: "Impossible de démarrer";
|
|
499
|
+
readonly providerFallback: "votre fournisseur d’IA";
|
|
500
|
+
readonly fileTitle: "L’enrichissement par IA nécessite une base de données active";
|
|
501
|
+
readonly fileBody: "Les sources de type fichier de schéma n’ont pas encore d’instantané à enrichir. Connectez une base de données active pour utiliser l’enrichissement par IA, ou continuez — la base heuristique génère tout de même une application complète.";
|
|
502
|
+
readonly section: {
|
|
503
|
+
readonly labels: "Libellés et descriptions";
|
|
504
|
+
readonly groups: "Groupes de navigation";
|
|
505
|
+
readonly enums: "Sémantique des énumérations";
|
|
506
|
+
readonly relations: "Relations";
|
|
507
|
+
readonly keys: "Colonnes clés";
|
|
508
|
+
readonly templates: "Modèles de page";
|
|
509
|
+
readonly widgets: "Widgets de tableau de bord";
|
|
510
|
+
readonly pii: "PII et masquage";
|
|
511
|
+
readonly icons: "Icônes";
|
|
512
|
+
readonly microcopy: "Microcopie";
|
|
513
|
+
};
|
|
514
|
+
readonly provider: {
|
|
515
|
+
readonly title: "Utiliser mon fournisseur d’IA";
|
|
516
|
+
readonly description: "Lancez l’enrichissement maintenant avec votre fournisseur configuré. Vous vérifiez chaque suggestion sous forme de diff.";
|
|
517
|
+
readonly unconfigured: "Aucun fournisseur d’IA n’est encore configuré — copiez une invite dans votre propre outil ci-dessous, ou configurez d’abord un fournisseur.";
|
|
518
|
+
readonly settingsHint: "Vous voulez le lancer directement ?";
|
|
519
|
+
readonly settingsLink: "Configurer un fournisseur dans Paramètres → IA";
|
|
520
|
+
readonly networkDisabled: "Cet Adminium n'a pas d'accès Internet sortant : il ne peut joindre aucune API de fournisseur. Utilisez plutôt l'aller-retour copier-coller — même invite, même revue.";
|
|
521
|
+
};
|
|
522
|
+
readonly byo: {
|
|
523
|
+
readonly cardTitle: "Copier une invite vers mon propre outil d’IA";
|
|
524
|
+
readonly cardDescription: "Copiez une invite autonome dans Claude Code, ChatGPT, n’importe quoi — puis recollez le JSON. Aucune clé nécessaire, rien ne quitte cette machine automatiquement.";
|
|
525
|
+
readonly guidance: "Exécutez ceci dans n’importe quel outil d’IA — Claude Code, ChatGPT, peu importe. Collez le JSON renvoyé ci-dessous.";
|
|
526
|
+
readonly promptLabel: "Invite d’enrichissement";
|
|
527
|
+
readonly promptLabelN: "Invite d’enrichissement {index} sur {total}";
|
|
528
|
+
readonly tokenChip: "≈ {tokens} jetons";
|
|
529
|
+
readonly copyPrompt: "Copier l’invite";
|
|
530
|
+
readonly copyPromptDone: "Invite copiée";
|
|
531
|
+
readonly download: "Télécharger .md";
|
|
532
|
+
readonly chunkTabs: "Segments d’invite";
|
|
533
|
+
readonly chunkTab: "Invite {index}";
|
|
534
|
+
readonly chunkValid: "Segment {index} validé";
|
|
535
|
+
readonly pasteLabel: "Collez la réponse JSON";
|
|
536
|
+
readonly pastePlaceholder: "Collez la réponse JSON ici…";
|
|
537
|
+
readonly validate: "Valider";
|
|
538
|
+
readonly valid: "Réponse validée";
|
|
539
|
+
readonly mergedTitle: "Les {count} segments sont validés et fusionnés";
|
|
540
|
+
readonly mergedTitleSingle: "Réponse validée";
|
|
541
|
+
readonly mergedBody: "Les suggestions sont prêtes à être vérifiées par rapport à la base heuristique.";
|
|
542
|
+
readonly errorsTitle: "La validation a trouvé {count} problèmes";
|
|
543
|
+
readonly copyErrors: "Copier les erreurs pour votre outil d’IA";
|
|
544
|
+
readonly copyErrorsDone: "Erreurs copiées";
|
|
545
|
+
readonly copyErrorsHint: "Recollez ceci dans votre outil d’IA pour obtenir une réponse corrigée.";
|
|
546
|
+
readonly droppedItems: "{count} suggestions ont été écartées lors de la validation — la vérification montre le reste.";
|
|
547
|
+
readonly pendingTitle: "Validez chaque invite pour continuer";
|
|
548
|
+
readonly pendingBody: "Collez la réponse JSON ci-dessus et validez-la pour passer à la vérification.";
|
|
549
|
+
readonly pendingBodyChunked: "Chaque segment doit être validé avant la fusion des suggestions. Collez et validez chaque invite ci-dessus.";
|
|
550
|
+
readonly requestFailed: "Impossible de joindre le serveur pour valider — réessayez.";
|
|
551
|
+
readonly continueReview: "Continuer vers la vérification";
|
|
552
|
+
readonly wholeDocument: "document entier";
|
|
553
|
+
readonly cardTitleRecommended: "Copier une invite vers mon propre outil IA — recommandé";
|
|
554
|
+
};
|
|
555
|
+
readonly direct: {
|
|
556
|
+
readonly title: "Enrichissement par IA";
|
|
557
|
+
readonly subtitle: "Envoi de votre schéma à";
|
|
558
|
+
readonly building: "Construction de l’invite…";
|
|
559
|
+
readonly logLabel: "Journal d’enrichissement";
|
|
560
|
+
readonly cancel: "Annuler";
|
|
561
|
+
readonly back: "Retour aux options";
|
|
562
|
+
readonly retry: "Réessayer";
|
|
563
|
+
readonly done: "Enrichissement terminé — vérifiez les suggestions.";
|
|
564
|
+
readonly continueReview: "Continuer vers la vérification";
|
|
565
|
+
readonly failed: "L’exécution du fournisseur a échoué. Vérifiez vos paramètres d’IA et réessayez.";
|
|
566
|
+
readonly jobFailed: "L’exécution de l’enrichissement ne s’est pas terminée.";
|
|
567
|
+
readonly startFailed: "Impossible de démarrer l’exécution — réessayez.";
|
|
568
|
+
readonly errorTitle: "Échec de l’enrichissement";
|
|
569
|
+
};
|
|
570
|
+
readonly skip: {
|
|
571
|
+
readonly title: "Ignorer — utiliser uniquement l’heuristique";
|
|
572
|
+
readonly description: "Générer à partir de la base heuristique. Vous pourrez enrichir plus tard depuis Paramètres → IA — ignorer n’est jamais pénalisé.";
|
|
573
|
+
readonly confirmTitle: "Poursuite avec l’heuristique";
|
|
574
|
+
readonly confirmBody: "L’application générée utilisera les libellés, groupes et tableaux de bord heuristiques. Continuez la génération — vous pouvez lancer l’enrichissement par IA à tout moment depuis Paramètres → IA.";
|
|
575
|
+
};
|
|
576
|
+
};
|
|
577
|
+
readonly review: {
|
|
578
|
+
readonly unavailableTitle: "Écran de revue indisponible";
|
|
579
|
+
readonly unavailableBody: "Cette version n’inclut pas encore l’écran de revue d’enrichissement (06-T14). Il arrive avec le flux diff-et-application.";
|
|
580
|
+
};
|
|
581
|
+
readonly llmRuns: {
|
|
582
|
+
readonly review: {
|
|
583
|
+
readonly header: {
|
|
584
|
+
readonly title: "Examiner les suggestions de l’IA";
|
|
585
|
+
readonly model: "Modèle";
|
|
586
|
+
readonly snapshot: "Instantané";
|
|
587
|
+
readonly byo: "BYO";
|
|
588
|
+
readonly pathDirect: "API directe";
|
|
589
|
+
readonly pathByo: "Copier-coller";
|
|
590
|
+
readonly agree: "{n} d’accord";
|
|
591
|
+
readonly conflict: "{n} en conflit";
|
|
592
|
+
readonly new: "{n} nouvelles";
|
|
593
|
+
readonly rejects: "{n} rejets";
|
|
594
|
+
readonly countsAria: "Nombre de suggestions";
|
|
595
|
+
};
|
|
596
|
+
readonly bulk: {
|
|
597
|
+
readonly thresholdLabel: "Seuil de confiance";
|
|
598
|
+
readonly thresholdAria: "Seuil de confiance pour « Tout accepter »";
|
|
599
|
+
readonly acceptAll: "Tout accepter ≥ {pct}%";
|
|
600
|
+
readonly clear: "Effacer la sélection";
|
|
601
|
+
};
|
|
602
|
+
readonly section: {
|
|
603
|
+
readonly selectAllAria: "Tout sélectionner dans {group}";
|
|
604
|
+
readonly acceptedCount: "{n} acceptées";
|
|
605
|
+
};
|
|
606
|
+
readonly group: {
|
|
607
|
+
readonly labels: "Libellés et traductions";
|
|
608
|
+
readonly navigation: "Navigation et domaines";
|
|
609
|
+
readonly enums: "Sémantique des énumérations";
|
|
610
|
+
readonly relations: "Relations";
|
|
611
|
+
readonly keys: "Colonnes clés";
|
|
612
|
+
readonly templates: "Modèles de page";
|
|
613
|
+
readonly dashboards: "Tableaux de bord et widgets";
|
|
614
|
+
readonly pii: "DCP et masquage";
|
|
615
|
+
readonly icons: "Icônes";
|
|
616
|
+
readonly microcopy: "Microcopie";
|
|
617
|
+
};
|
|
618
|
+
readonly status: {
|
|
619
|
+
readonly agree: "Concorde";
|
|
620
|
+
readonly conflict: "Conflit";
|
|
621
|
+
readonly new: "Nouveau";
|
|
622
|
+
readonly heuristicOnly: "Heuristique seule";
|
|
623
|
+
readonly rejects: "Rejette l’heuristique";
|
|
624
|
+
readonly locked: "Verrouillé";
|
|
625
|
+
};
|
|
626
|
+
readonly row: {
|
|
627
|
+
readonly acceptAria: "Accepter la suggestion {noun} pour {target}";
|
|
628
|
+
readonly keptEdited: "conservé — modifié par vous";
|
|
629
|
+
readonly rejectsCallout: "L’IA rejette une décision heuristique — confirmez avant d’accepter.";
|
|
630
|
+
readonly showTranslations: "Afficher les traductions";
|
|
631
|
+
readonly hideTranslations: "Masquer les traductions";
|
|
632
|
+
readonly confidenceAria: "Confiance {pct}%";
|
|
633
|
+
readonly noAi: "Aucune suggestion de l’IA";
|
|
634
|
+
};
|
|
635
|
+
readonly value: {
|
|
636
|
+
readonly none: "Aucune valeur";
|
|
637
|
+
readonly absent: "Aucun";
|
|
638
|
+
readonly dash: "—";
|
|
639
|
+
readonly display: "Affichage";
|
|
640
|
+
readonly key: "Clé";
|
|
641
|
+
readonly rank: "rang {n}";
|
|
642
|
+
readonly span: "largeur {n}";
|
|
643
|
+
readonly tableCount: "{n} tables";
|
|
644
|
+
readonly widgetCount: "{n} widgets";
|
|
645
|
+
readonly enumWorkflow: "Flux";
|
|
646
|
+
readonly enumCategory: "Catégorie";
|
|
647
|
+
readonly notPii: "Pas de DCP";
|
|
648
|
+
readonly label: "Libellé";
|
|
649
|
+
readonly description: "Description";
|
|
650
|
+
readonly subtitle: "Sous-titre de page";
|
|
651
|
+
readonly headline: "Titre de l’état vide";
|
|
652
|
+
readonly guidance: "Conseil de l’état vide";
|
|
653
|
+
};
|
|
654
|
+
readonly apply: {
|
|
655
|
+
readonly title: "Appliquer {n} suggestions";
|
|
656
|
+
readonly subtitle: "Ces modifications sont écrites en une seule transaction et peuvent être annulées.";
|
|
657
|
+
readonly empty: "Rien à appliquer.";
|
|
658
|
+
readonly confirm: "Appliquer les modifications";
|
|
659
|
+
};
|
|
660
|
+
readonly footer: {
|
|
661
|
+
readonly count: "{n} suggestions sélectionnées";
|
|
662
|
+
readonly apply: "Appliquer {n} suggestions acceptées";
|
|
663
|
+
readonly failed: "Échec de l’application";
|
|
664
|
+
};
|
|
665
|
+
readonly toast: {
|
|
666
|
+
readonly applied: "{n} suggestions appliquées";
|
|
667
|
+
readonly appliedPartial: "{n} suggestions appliquées (certaines ignorées)";
|
|
668
|
+
readonly applyFailed: "Impossible d’appliquer les suggestions";
|
|
669
|
+
readonly undoFailed: "Impossible d’annuler cette modification";
|
|
670
|
+
};
|
|
671
|
+
readonly error: {
|
|
672
|
+
readonly title: "Impossible de charger cette exécution";
|
|
673
|
+
};
|
|
674
|
+
readonly notReady: {
|
|
675
|
+
readonly title: "Cette exécution n’a pas encore de suggestions à examiner";
|
|
676
|
+
readonly body: "Une exécution doit être validée avant que ses suggestions puissent être examinées. Générez ou collez d’abord une réponse.";
|
|
677
|
+
};
|
|
678
|
+
readonly applied: {
|
|
679
|
+
readonly title: "Cette exécution a été appliquée";
|
|
680
|
+
readonly body: "Les suggestions acceptées ci-dessous sont en lecture seule.";
|
|
681
|
+
};
|
|
682
|
+
readonly empty: {
|
|
683
|
+
readonly title: "Aucune suggestion";
|
|
684
|
+
readonly body: "Cette exécution n’a produit aucune suggestion à examiner.";
|
|
685
|
+
};
|
|
686
|
+
readonly cat: {
|
|
687
|
+
readonly label: "libellé";
|
|
688
|
+
readonly key: "colonnes clés";
|
|
689
|
+
readonly enum: "énumération";
|
|
690
|
+
readonly relation: "relation";
|
|
691
|
+
readonly pii: "DCP";
|
|
692
|
+
readonly template: "modèle de page";
|
|
693
|
+
readonly group: "groupe de navigation";
|
|
694
|
+
readonly dashboard: "tableau de bord";
|
|
695
|
+
readonly widget: "widget";
|
|
696
|
+
readonly copy: "microcopie";
|
|
697
|
+
};
|
|
698
|
+
};
|
|
699
|
+
};
|
|
700
|
+
readonly wizard: {
|
|
701
|
+
readonly title: "Nouvelle connexion";
|
|
702
|
+
readonly back: "Retour";
|
|
703
|
+
readonly continue: "Continuer";
|
|
704
|
+
readonly progress: "Progression de la configuration";
|
|
705
|
+
readonly persistFailed: "Impossible d’enregistrer votre sélection de tables — réessayez.";
|
|
706
|
+
readonly persistFailedTitle: "Échec de l’enregistrement";
|
|
707
|
+
readonly bridgeAppliedTitle: "Chaîne de connexion reçue";
|
|
708
|
+
readonly bridgeAppliedBody: "Transmise depuis adminium.dev par votre navigateur — elle est allée directement à cette machine et n’a jamais été téléversée. Vérifiez-la ci-dessous, puis continuez.";
|
|
709
|
+
readonly bridgeFailedTitle: "Ce transfert n’a pas pu être utilisé";
|
|
710
|
+
readonly bridgeFailedBody: "Il a déjà été utilisé ou a expiré. Collez plutôt votre chaîne de connexion ci-dessous.";
|
|
711
|
+
readonly step: {
|
|
712
|
+
readonly source: "Source";
|
|
713
|
+
readonly test: "Analyser";
|
|
714
|
+
readonly tables: "Tables";
|
|
715
|
+
readonly meta: "Stockage méta";
|
|
716
|
+
readonly intent: "Intention";
|
|
717
|
+
readonly enrich: "Enrichir";
|
|
718
|
+
readonly generate: "Générer";
|
|
719
|
+
};
|
|
720
|
+
};
|
|
721
|
+
readonly meta: {
|
|
722
|
+
readonly title: "Où Adminium doit-il ranger ses propres tables ?";
|
|
723
|
+
readonly subtitle: "Pages, rôles, journal d’audit et paramètres vivent dans des tables préfixées adminium_ — jamais mêlés à vos données.";
|
|
724
|
+
readonly sameDb: {
|
|
725
|
+
readonly title: "Même base de données";
|
|
726
|
+
readonly description: "Les tables adminium_* sont créées à côté de vos tables sources. La configuration la plus simple — nécessite un rôle avec droits d’écriture et CREATE TABLE.";
|
|
727
|
+
readonly disabledReadOnly: "Votre rôle est en lecture seule — Adminium n’écrit jamais dans cette base. Choisissez une base séparée pour les tables d’Adminium.";
|
|
728
|
+
readonly disabledNoDdl: "Ce rôle ne peut pas exécuter de DDL — les migrations d’Adminium exigent CREATE TABLE. Choisissez une base séparée pour les tables d’Adminium.";
|
|
729
|
+
readonly disabledFile: "Un fichier de schéma n’a pas de base active — choisissez une base séparée pour les tables d’Adminium.";
|
|
730
|
+
};
|
|
731
|
+
readonly separate: {
|
|
732
|
+
readonly title: "Base de données séparée";
|
|
733
|
+
readonly description: "Adminium garde ses tables dans une autre base. Votre source reste intacte — requis pour les sources en lecture seule.";
|
|
734
|
+
readonly dsn: "Chaîne de connexion de la base méta";
|
|
735
|
+
readonly helper: "Nécessite des droits d’écriture + DDL — Adminium y exécute ses propres migrations.";
|
|
736
|
+
readonly test: "Tester la connexion";
|
|
737
|
+
readonly ok: "Compatible — écriture ✓ · DDL ✓";
|
|
738
|
+
readonly insufficient: "Ce rôle ne peut pas héberger le magasin méta — Adminium y a besoin des droits d’écriture et CREATE TABLE.";
|
|
739
|
+
readonly errorTitle: "Magasin méta incompatible";
|
|
740
|
+
};
|
|
741
|
+
readonly testFailed: "Échec de la connexion.";
|
|
742
|
+
readonly v1Note: {
|
|
743
|
+
readonly title: "À propos de cette installation";
|
|
744
|
+
readonly body: "Ce serveur garde déjà ses propres tables dans une base configurée, et cette étape ne les déplace pas. Elle vérifie que votre choix est compatible avec cette connexion — le serveur applique la même règle indépendamment (409 META_PLACEMENT_INVALID).";
|
|
745
|
+
};
|
|
746
|
+
readonly move: {
|
|
747
|
+
readonly title: "Déplacement des tables d’Adminium";
|
|
748
|
+
readonly copying: "Déplacement des tables d’Adminium…";
|
|
749
|
+
readonly restarting: "Redémarrage…";
|
|
750
|
+
readonly copyingBody: "Copie de chaque table adminium_ vers la nouvelle base. Vos données sources ne sont pas touchées, et rien n’est basculé tant que la copie n’est pas vérifiée.";
|
|
751
|
+
readonly restartingBody: "La copie est terminée. Adminium redémarre sur la nouvelle base — cette page continuera d’elle-même dans quelques secondes.";
|
|
752
|
+
readonly failed: "Impossible de déplacer les tables d’Adminium — réessayez.";
|
|
753
|
+
readonly timeout: "Adminium a déplacé ses tables mais n’est pas encore revenu. Vos données sont en sécurité dans la nouvelle base — rechargez cette page dans un instant.";
|
|
754
|
+
};
|
|
755
|
+
readonly willMove: {
|
|
756
|
+
readonly title: "Cette étape va déplacer les tables d’Adminium";
|
|
757
|
+
readonly body: "Adminium utilise actuellement son magasin SQLite intégré. « Continuer » copie ce magasin dans la base choisie et redémarre dessus — comptes, pages et paramètres suivent, vous restez connecté.";
|
|
758
|
+
};
|
|
759
|
+
};
|
|
760
|
+
readonly intent: {
|
|
761
|
+
readonly title: "De quoi avez-vous besoin ?";
|
|
762
|
+
readonly subtitle: "L’intention détermine quelles pages sont générées. Vous pourrez la changer plus tard — la changer propose une régénération, jamais une réécriture silencieuse.";
|
|
763
|
+
readonly trust: "Nous ne lisons que votre schéma — jamais vos données de lignes pendant la configuration.";
|
|
764
|
+
readonly fullAdmin: {
|
|
765
|
+
readonly title: "Panneau d’administration complet";
|
|
766
|
+
readonly description: "Tableaux de bord, pages CRUD, recherche, imports et exports — tout ce que votre schéma permet.";
|
|
767
|
+
};
|
|
768
|
+
readonly analytics: {
|
|
769
|
+
readonly title: "Analytique en lecture seule";
|
|
770
|
+
readonly description: "Tableaux de bord, graphiques et grilles en lecture seule. Pas de formulaires, pas d’écritures — chaque rôle plafonné à Lecteur.";
|
|
771
|
+
};
|
|
772
|
+
readonly crud: {
|
|
773
|
+
readonly title: "Tables CRUD";
|
|
774
|
+
readonly description: "Une page d’édition par table plus recherche et import/export — un accueil minimal, sans tableaux de bord.";
|
|
775
|
+
};
|
|
776
|
+
readonly support: {
|
|
777
|
+
readonly title: "Console de support";
|
|
778
|
+
readonly description: "Files d’attente, pages de tickets et de fiches clients d’abord. Suppressions désactivées par défaut. (Les modèles de files arrivent en M7 — l’ensemble de pages v1 correspond à l’admin complet.)";
|
|
779
|
+
};
|
|
780
|
+
};
|
|
781
|
+
readonly generate: {
|
|
782
|
+
readonly title: "Générez votre application";
|
|
783
|
+
readonly subtitle: "Une page par table incluse plus des tableaux de bord par domaine — intention :";
|
|
784
|
+
readonly run: "Générer le tableau de bord";
|
|
785
|
+
readonly openApp: "Ouvrir votre application";
|
|
786
|
+
readonly logLabel: "Journal de génération";
|
|
787
|
+
readonly log: {
|
|
788
|
+
readonly classifying: "Classification du schéma…";
|
|
789
|
+
readonly composing: "Composition des modèles…";
|
|
790
|
+
readonly writing: "Écriture des pages…";
|
|
791
|
+
readonly done: "{pages} pages générées dans {groups} groupes de navigation";
|
|
792
|
+
};
|
|
793
|
+
readonly successTitle: "Votre tableau de bord est prêt";
|
|
794
|
+
readonly successBody: "{pages} pages dans {groups} groupes de navigation — générées depuis votre schéma, modifiables dans le Studio.";
|
|
795
|
+
readonly errorTitle: "Échec de la génération";
|
|
796
|
+
readonly failed: "Échec de la génération — réessayez, ou relancez d’abord l’introspection.";
|
|
797
|
+
readonly fileTitle: "Fichier de schéma analysé — la génération nécessite une base active";
|
|
798
|
+
readonly fileBody: "Votre schéma a été analysé proprement et l’aperçu ci-dessus est réel. Générer une application fonctionnelle directement depuis un fichier de schéma (avec des lignes fictives) n’est pas encore disponible — connectez une base active pour générer dès aujourd’hui.";
|
|
799
|
+
};
|
|
800
|
+
readonly remap: {
|
|
801
|
+
readonly column: {
|
|
802
|
+
readonly nullable: "nullable";
|
|
803
|
+
readonly labelOverride: "Libellé d’affichage";
|
|
804
|
+
readonly labelHelper: "Inféré : {name}";
|
|
805
|
+
readonly logicalType: "Type logique";
|
|
806
|
+
readonly logicalTypeHelper: "Inféré : {type} (depuis {dbType}) — mappé par l’adaptateur ; non remplaçable en v1.";
|
|
807
|
+
readonly semantic: "Type sémantique";
|
|
808
|
+
readonly unclassified: "Pas encore classifié.";
|
|
809
|
+
readonly semanticHelper: "Classificateur : {tag} · confiance {confidence}% · source : {source}";
|
|
810
|
+
readonly semanticInferred: "inféré : {tag}";
|
|
811
|
+
readonly currency: "Devise";
|
|
812
|
+
readonly currencyHelper: "Code ISO 4217 appliqué au formatage monétaire.";
|
|
813
|
+
readonly pii: "Masquer par défaut";
|
|
814
|
+
readonly piiHelper: "Les valeurs masquées s’affichent caviardées ; le démasquage requiert la permission data.unmask_pii et est consigné dans le journal d’audit.";
|
|
815
|
+
readonly enum: "Sémantique de l’énumération";
|
|
816
|
+
readonly enumKind: "Nature de l’énumération";
|
|
817
|
+
readonly enumWorkflow: "Flux";
|
|
818
|
+
readonly enumCategory: "Catégorie";
|
|
819
|
+
readonly enumLabelFor: "Libellé pour {value}";
|
|
820
|
+
readonly enumToneFor: "Tonalité pour {value}";
|
|
821
|
+
readonly enumToneAuto: "auto";
|
|
822
|
+
readonly enumHelper: "Les énumérations de flux pilotent les pastilles de statut et les colonnes de tableau ; les tonalités associent les valeurs à l’échelle de teintes sémantiques.";
|
|
823
|
+
};
|
|
824
|
+
readonly diff: {
|
|
825
|
+
readonly one: "1 modification";
|
|
826
|
+
readonly count: "{count} modifications";
|
|
827
|
+
readonly saved: "Remplacements enregistrés.";
|
|
828
|
+
readonly revertOne: "Annuler {change}";
|
|
829
|
+
readonly regenerate: "Régénérer les pages";
|
|
830
|
+
readonly revertAll: "Tout annuler";
|
|
831
|
+
readonly save: "Enregistrer les remplacements";
|
|
832
|
+
};
|
|
833
|
+
readonly table: {
|
|
834
|
+
readonly iconPicker: "Icône de la table";
|
|
835
|
+
readonly system: "Système";
|
|
836
|
+
readonly labelOverride: "Libellé d’affichage";
|
|
837
|
+
readonly labelHelper: "Inféré : {name}";
|
|
838
|
+
readonly icon: "Icône";
|
|
839
|
+
readonly navGroup: "Groupe de navigation";
|
|
840
|
+
readonly navGroupHelper: "Le placement dans la navigation est décidé par le générateur — un remplacement table.navGroup ne fait pas partie du vocabulaire v1.";
|
|
841
|
+
readonly include: "Inclure dans l’application générée";
|
|
842
|
+
readonly includeHelper: "Les tables exclues n’ont aucune page et disparaissent de la navigation.";
|
|
843
|
+
readonly shape: "Forme de la table (classifiée)";
|
|
844
|
+
readonly role: "Rôle";
|
|
845
|
+
readonly unclassified: "Non classifiée";
|
|
846
|
+
readonly kind: "Nature";
|
|
847
|
+
readonly hierarchy: "Hiérarchie";
|
|
848
|
+
readonly selfFk: "Auto-référence via {column}";
|
|
849
|
+
readonly polymorphic: "Paires polymorphes";
|
|
850
|
+
readonly rows: "Estimation du nombre de lignes";
|
|
851
|
+
readonly shapeHelper: "La classification est recalculée à chaque introspection ; les remplacements se superposent et survivent à la régénération.";
|
|
852
|
+
};
|
|
853
|
+
readonly relations: {
|
|
854
|
+
readonly declared: "Clés étrangères déclarées";
|
|
855
|
+
readonly noneDeclared: "Aucune clé étrangère déclarée ne touche cette table.";
|
|
856
|
+
readonly inferred: "Relations inférées";
|
|
857
|
+
readonly noneInferred: "Rien d’inféré pour cette table.";
|
|
858
|
+
readonly confidence: "inférée · {pct}%";
|
|
859
|
+
readonly accepted: "Acceptée";
|
|
860
|
+
readonly suppressed: "Écartée";
|
|
861
|
+
readonly accept: "Accepter";
|
|
862
|
+
readonly suppress: "Écarter";
|
|
863
|
+
readonly overrides: "Relations de remplacement (appliquées)";
|
|
864
|
+
readonly overrideBadge: "remplacement";
|
|
865
|
+
readonly add: "Ajouter une relation virtuelle";
|
|
866
|
+
readonly fromColumn: "Colonne source";
|
|
867
|
+
readonly noColumns: "Aucune colonne correspondante";
|
|
868
|
+
readonly fromPlaceholder: "customer_id";
|
|
869
|
+
readonly toTable: "Table cible";
|
|
870
|
+
readonly noTables: "Aucune table correspondante";
|
|
871
|
+
readonly toColumn: "Colonne cible";
|
|
872
|
+
readonly cardinality: "Cardinalité";
|
|
873
|
+
readonly addButton: "Ajouter la relation";
|
|
874
|
+
};
|
|
875
|
+
readonly toast: {
|
|
876
|
+
readonly saved: "Remplacements de schéma enregistrés";
|
|
877
|
+
readonly savedDetail: "Le schéma appliqué ci-dessous reflète vos modifications.";
|
|
878
|
+
readonly regenerated: "{created} créées · {updated} mises à jour · {unchanged} inchangées";
|
|
879
|
+
readonly regeneratedDetail: "Les pages que vous avez modifiées à la main sont préservées — seules les pages dont le generated_hash est intact ont été régénérées sur place.";
|
|
880
|
+
readonly regenerateFailed: "Échec de la régénération";
|
|
881
|
+
};
|
|
882
|
+
readonly title: "Remappage du schéma";
|
|
883
|
+
readonly subtitle: "{tables} tables · {applied} remplacements appliqués";
|
|
884
|
+
readonly saveFailed: "Échec de l’enregistrement : {message}";
|
|
885
|
+
readonly loadFailed: "Impossible de charger le schéma de cette connexion.";
|
|
886
|
+
readonly inspector: "Inspecteur";
|
|
887
|
+
readonly empty: {
|
|
888
|
+
readonly title: "Choisissez une table ou une colonne";
|
|
889
|
+
readonly description: "Sélectionnez un élément dans l’arborescence du schéma pour remapper son libellé, son type, ses relations ou son masquage.";
|
|
890
|
+
};
|
|
891
|
+
readonly tabs: {
|
|
892
|
+
readonly details: "Détails";
|
|
893
|
+
readonly relations: "Relations";
|
|
894
|
+
};
|
|
895
|
+
readonly tree: {
|
|
896
|
+
readonly label: "Schéma";
|
|
897
|
+
readonly search: "Rechercher des tables et des colonnes";
|
|
898
|
+
readonly searchPlaceholder: "Rechercher des tables…";
|
|
899
|
+
readonly noMatches: "Aucune table ne correspond à votre recherche.";
|
|
900
|
+
readonly collapse: "Replier la table";
|
|
901
|
+
readonly expand: "Déplier la table";
|
|
902
|
+
readonly unsaved: "Modification non enregistrée";
|
|
903
|
+
readonly excluded: "Exclue";
|
|
904
|
+
};
|
|
905
|
+
readonly badge: {
|
|
906
|
+
readonly pk: "PK";
|
|
907
|
+
readonly fk: "FK";
|
|
908
|
+
readonly unique: "UNIQUE";
|
|
909
|
+
readonly pii: "PII";
|
|
910
|
+
readonly masked: "Masquée";
|
|
911
|
+
};
|
|
912
|
+
readonly unavailableTitle: "Éditeur de remappage du schéma indisponible";
|
|
913
|
+
readonly unavailableBody: "Cette version n’inclut pas encore l’éditeur de remappage (09-T12). Relancez la génération une fois qu’il sera disponible pour remapper les libellés, les types et les relations.";
|
|
914
|
+
};
|
|
915
|
+
readonly publicApi: {
|
|
916
|
+
readonly error: "Something went wrong";
|
|
917
|
+
readonly scopes: {
|
|
918
|
+
readonly deleteTitle: "Delete this scope";
|
|
919
|
+
readonly deleteBody: "Any page using a key bound to this scope stops loading data. Keys are not deleted — revoke them first if that is what you meant.";
|
|
920
|
+
readonly deletePrompt: "Type the scope name to confirm";
|
|
921
|
+
readonly deleteConfirm: "Delete scope";
|
|
922
|
+
readonly issuesTitle: "This scope did not compile";
|
|
923
|
+
readonly title: "Scopes";
|
|
924
|
+
readonly subtitle: "A scope is the whole of what a key may reach — the tables, the exact columns, and a filter the caller can narrow but never remove.";
|
|
925
|
+
readonly emptyTitle: "No scopes yet";
|
|
926
|
+
readonly emptyBody: "Create one below. It is checked against your live schema before it is saved.";
|
|
927
|
+
readonly keyCount: "{count, plural, =0 {no keys} one {# key} other {# keys}}";
|
|
928
|
+
readonly delete: "Delete";
|
|
929
|
+
readonly nameLabel: "Name";
|
|
930
|
+
readonly connectionLabel: "Connection ID";
|
|
931
|
+
readonly documentLabel: "Scope document";
|
|
932
|
+
readonly documentHint: "Compiled against your schema when you save. Every column a caller can reach is listed here and nowhere else.";
|
|
933
|
+
readonly create: "Create scope";
|
|
934
|
+
readonly formLabel: "Create a scope";
|
|
935
|
+
};
|
|
936
|
+
readonly cancel: "Cancel";
|
|
937
|
+
readonly close: "Close";
|
|
938
|
+
readonly title: "Public API";
|
|
939
|
+
readonly subtitle: "Let your own customer- or staff-facing pages read this database, through a scope you define.";
|
|
940
|
+
readonly notRegistered: {
|
|
941
|
+
readonly title: "Not enabled on this server";
|
|
942
|
+
readonly body: "Set ADMINIUM_PUBLIC_API_ORIGINS to the exact origins allowed to call it, then restart. Until then these routes are not served at all.";
|
|
943
|
+
};
|
|
944
|
+
readonly toggle: {
|
|
945
|
+
readonly label: "Serve the public API";
|
|
946
|
+
readonly hint: "Turning this off stops every public request immediately. Nothing is deleted — keys, scopes and data all survive.";
|
|
947
|
+
};
|
|
948
|
+
readonly origins: {
|
|
949
|
+
readonly label: "Origins allowed to call it";
|
|
950
|
+
};
|
|
951
|
+
readonly keys: {
|
|
952
|
+
readonly title: "Keys";
|
|
953
|
+
readonly subtitle: "These go in your page’s JavaScript, so anyone can read them. That is expected — a key can only ever do what its scope allows.";
|
|
954
|
+
readonly emptyTitle: "No keys yet";
|
|
955
|
+
readonly emptyBody: "Create a scope first, then mint a key for it.";
|
|
956
|
+
readonly reveal: "Show key";
|
|
957
|
+
readonly rotate: "Rotate";
|
|
958
|
+
readonly revoke: "Revoke";
|
|
959
|
+
readonly nameLabel: "Name";
|
|
960
|
+
readonly scopeLabel: "Scope";
|
|
961
|
+
readonly scopePlaceholder: "Choose a scope";
|
|
962
|
+
readonly create: "Create key";
|
|
963
|
+
readonly formLabel: "Create a key";
|
|
964
|
+
readonly scopeIsAuthTitle: "The scope is the only permission";
|
|
965
|
+
readonly scopeIsAuthBody: "A key can reach exactly what its scope lists and nothing else. It does not use roles or table permissions, and it cannot read anything through the rest of the API.";
|
|
966
|
+
readonly appLabel: "Lier à une surface d’app hébergée (facultatif)";
|
|
967
|
+
readonly appHint: "La surface client de l’app sert alors cette clé elle-même — la faire tourner n’exige aucune recompilation.";
|
|
968
|
+
readonly appNone: "Non liée";
|
|
969
|
+
};
|
|
970
|
+
readonly status: {
|
|
971
|
+
readonly heading: "Status";
|
|
972
|
+
};
|
|
973
|
+
};
|
|
974
|
+
readonly hostedApps: {
|
|
975
|
+
readonly title: "Apps hébergées";
|
|
976
|
+
readonly subtitle: "Les surfaces d’app que cette instance sert — où chacune apparaît, et les domaines qui pointent vers elles.";
|
|
977
|
+
readonly error: "Un problème est survenu";
|
|
978
|
+
readonly emptyTitle: "Aucune surface d’app n’est servie";
|
|
979
|
+
readonly emptyBody: "Pointez ADMINIUM_SURFACES_DIR vers un répertoire de surfaces compilées — un dossier par app et par côté, chacun avec son index.html — puis redémarrez. Elles sont alors servies sous /apps/ et apparaissent ici.";
|
|
980
|
+
readonly surfaces: {
|
|
981
|
+
readonly title: "Surfaces";
|
|
982
|
+
readonly subtitle: "Une surface équipe peut se fondre dans la barre latérale de ce tableau de bord ou rester autonome ; une surface client est publique et lit via sa clé liée.";
|
|
983
|
+
readonly staff: "Équipe";
|
|
984
|
+
readonly customer: "Client";
|
|
985
|
+
readonly noNav: "Placement interne indisponible — recompilez cette surface avec le toolkit actuel pour qu’elle émette surface.json.";
|
|
986
|
+
readonly noKey: "Aucune clé liée — cette surface ne peut pas lire de données tant qu’une clé n’est pas créée pour elle.";
|
|
987
|
+
readonly mintLink: "En créer une sous API publique";
|
|
988
|
+
readonly boundKey: "Sert la clé";
|
|
989
|
+
readonly placementLabel: "Placement";
|
|
990
|
+
readonly placementInternal: "Dans la barre latérale (fondue)";
|
|
991
|
+
readonly placementExternal: "Externe (URL propre uniquement)";
|
|
992
|
+
readonly connectionLabel: "Lit";
|
|
993
|
+
readonly connectionUnset: "Celle qui est active";
|
|
994
|
+
};
|
|
995
|
+
readonly domains: {
|
|
996
|
+
readonly title: "Domaines";
|
|
997
|
+
readonly subtitle: "Pointez le DNS d’un domaine vers votre proxy, transmettez l’en-tête Host à Adminium, puis attachez-le ici — cet hôte sert alors la surface au lieu de ce tableau de bord. Les certificats restent sur votre proxy.";
|
|
998
|
+
readonly issuesTitle: "La carte des domaines a été refusée";
|
|
999
|
+
readonly savedTitle: "Enregistré";
|
|
1000
|
+
readonly savedBody: "Les attributions prennent effet en quelques secondes. Un hôte ne répond que lorsque son DNS et votre proxy atteignent réellement cette instance.";
|
|
1001
|
+
readonly none: "Aucun domaine attaché.";
|
|
1002
|
+
readonly hostLabel: "Hôte";
|
|
1003
|
+
readonly surfaceLabel: "Surface";
|
|
1004
|
+
readonly remove: "Retirer";
|
|
1005
|
+
readonly add: "Attacher un domaine";
|
|
1006
|
+
readonly save: "Enregistrer les domaines";
|
|
1007
|
+
readonly instanceLabel: "Instance";
|
|
1008
|
+
readonly instanceOwn: "L'application elle-même";
|
|
1009
|
+
};
|
|
1010
|
+
readonly instances: {
|
|
1011
|
+
readonly title: "Instances";
|
|
1012
|
+
readonly body: "Servir la même application sur plusieurs bases. Chaque instance est accessible à /apps/<app>/<segment>/<côté>/ et ne lit que la connexion que vous lui donnez.";
|
|
1013
|
+
readonly appLabel: "Application";
|
|
1014
|
+
readonly slugLabel: "Segment d'URL";
|
|
1015
|
+
readonly readsLabel: "Lit";
|
|
1016
|
+
readonly add: "Ajouter une instance";
|
|
1017
|
+
readonly save: "Enregistrer les instances";
|
|
1018
|
+
readonly remove: "Retirer";
|
|
1019
|
+
readonly empty: "Aucune instance supplémentaire.";
|
|
1020
|
+
readonly failed: "Les instances n'ont pas été enregistrées";
|
|
1021
|
+
};
|
|
1022
|
+
};
|
|
1023
|
+
readonly addOns: {
|
|
1024
|
+
readonly plan: {
|
|
1025
|
+
readonly blocked: "Impossible d’installer ici";
|
|
1026
|
+
readonly needsColumns: "Ce module a besoin de colonnes que vous n’avez pas";
|
|
1027
|
+
readonly needsColumnsBody: "Adminium n’ajoute pas de colonnes aux tables qui vous appartiennent déjà. Ajoutez-les vous-même, puis installez.";
|
|
1028
|
+
readonly willCreate: "Cela créera des tables dans votre base de données";
|
|
1029
|
+
readonly willCreateBody: "L’installation crée ces tables. Une désinstallation ultérieure les laisse intactes, ainsi que leurs données.";
|
|
1030
|
+
readonly noData: "Ce module ne lit ni n’écrit de tables qui lui soient propres.";
|
|
1031
|
+
readonly reuse: "Ce module utilisera des tables que vous avez déjà :";
|
|
1032
|
+
};
|
|
1033
|
+
readonly consent: {
|
|
1034
|
+
readonly title: "Installer {name}";
|
|
1035
|
+
readonly subtitle: "Ce que ce module fera, avant qu’il puisse le faire.";
|
|
1036
|
+
readonly close: "Fermer";
|
|
1037
|
+
readonly loading: "Analyse de ce que cela ferait…";
|
|
1038
|
+
readonly hosts: "Attacher à";
|
|
1039
|
+
readonly cancel: "Annuler";
|
|
1040
|
+
readonly confirm: "Installer";
|
|
1041
|
+
};
|
|
1042
|
+
readonly connect: {
|
|
1043
|
+
readonly apiKey: "Clé API";
|
|
1044
|
+
readonly submit: "Connecter";
|
|
1045
|
+
};
|
|
1046
|
+
readonly title: "Modules";
|
|
1047
|
+
readonly subtitle: "Des capacités supplémentaires pour vos applications — expédition, graphisme, données. Chacune indique ce dont elle a besoin avant l’installation.";
|
|
1048
|
+
readonly error: "Une erreur est survenue";
|
|
1049
|
+
readonly browse: {
|
|
1050
|
+
readonly title: "Disponibles";
|
|
1051
|
+
readonly online: "Inclut les modules du catalogue en ligne. Rechercher des versions plus récentes est une action distincte.";
|
|
1052
|
+
readonly offline: "Affiche les modules livrés avec cette version. La navigation en ligne est désactivée et rien ici n’a contacté Internet.";
|
|
1053
|
+
readonly refresh: "Rechercher des nouveautés";
|
|
1054
|
+
readonly emptyTitle: "Aucun module disponible";
|
|
1055
|
+
readonly emptyBody: "Cette version n’en contient aucun et le catalogue en ligne est désactivé.";
|
|
1056
|
+
readonly bundled: "Inclus";
|
|
1057
|
+
readonly upgrade: "v{version} disponible";
|
|
1058
|
+
readonly download: "Télécharger";
|
|
1059
|
+
readonly install: "Installer";
|
|
1060
|
+
readonly discard: "Supprimer";
|
|
1061
|
+
readonly upgradeAction: "Mettre à jour";
|
|
1062
|
+
readonly toggle: "Parcourir le catalogue en ligne";
|
|
1063
|
+
};
|
|
1064
|
+
readonly installed: {
|
|
1065
|
+
readonly title: "Installés";
|
|
1066
|
+
readonly emptyTitle: "Rien d’installé pour l’instant";
|
|
1067
|
+
readonly emptyBody: "Installez un module ci-dessus et il apparaîtra ici avec ses hôtes et sa connexion.";
|
|
1068
|
+
readonly connected: "Connecté";
|
|
1069
|
+
readonly notConnected: "Non connecté";
|
|
1070
|
+
readonly egress: "Peut contacter : {hosts}";
|
|
1071
|
+
readonly on: "activé";
|
|
1072
|
+
readonly off: "désactivé";
|
|
1073
|
+
readonly disconnect: "Déconnecter";
|
|
1074
|
+
readonly uninstall: "Désinstaller";
|
|
1075
|
+
};
|
|
1076
|
+
readonly confirm: {
|
|
1077
|
+
readonly close: "Fermer";
|
|
1078
|
+
readonly disconnectTitle: "Déconnecter ce module";
|
|
1079
|
+
readonly uninstallTitle: "Désinstaller ce module";
|
|
1080
|
+
readonly discardTitle: "Supprimer ce téléchargement";
|
|
1081
|
+
readonly disconnectBody: "Ses clés sont supprimées et il cesse ses appels. Chaque table et chaque ligne qu’il a créées restent telles quelles, et vous pouvez le reconnecter à tout moment.";
|
|
1082
|
+
readonly uninstallBody: "Ses clés sont supprimées et ses fichiers retirés de ce serveur. Chaque table et chaque ligne qu’il a créées restent telles quelles. Vous pourrez le réinstaller plus tard.";
|
|
1083
|
+
readonly discardBody: "Les fichiers téléchargés sont supprimés. Rien n’a été installé, donc rien d’autre ne change — vous pouvez le retélécharger quand vous voulez.";
|
|
1084
|
+
readonly cancel: "Annuler";
|
|
1085
|
+
readonly disconnect: "Déconnecter";
|
|
1086
|
+
readonly uninstall: "Désinstaller";
|
|
1087
|
+
readonly discard: "Supprimer";
|
|
1088
|
+
};
|
|
1089
|
+
readonly upgradeNote: "La mise à jour conserve les hôtes auxquels un module est attaché ainsi que sa connexion existante.";
|
|
1090
|
+
readonly job: {
|
|
1091
|
+
readonly title: "Téléchargement";
|
|
1092
|
+
readonly body: "Récupération et vérification. Rien n’est installé sans votre accord.";
|
|
1093
|
+
readonly failed: "Le téléchargement ne s’est pas terminé. Rien n’a été installé.";
|
|
1094
|
+
};
|
|
1095
|
+
readonly veto: {
|
|
1096
|
+
readonly title: "Ce déploiement ne peut pas consulter le catalogue en ligne";
|
|
1097
|
+
readonly body: "Le réglage est enregistré, mais les fonctions réseau sont coupées sur ce serveur et cela prime. Les modules déjà téléchargés fonctionnent, et vous pouvez en téléverser un.";
|
|
1098
|
+
};
|
|
1099
|
+
readonly sideload: {
|
|
1100
|
+
readonly title: "Téléverser un paquet";
|
|
1101
|
+
readonly hint: "Pour un serveur sans internet. Vérifié exactement comme un téléchargement, il lui faut donc l’empreinte fournie.";
|
|
1102
|
+
readonly file: "Fichier du paquet (.tgz)";
|
|
1103
|
+
readonly key: "Clé du module";
|
|
1104
|
+
readonly version: "Version";
|
|
1105
|
+
readonly sha: "Intégrité (sha512-…)";
|
|
1106
|
+
readonly shaHint: "La valeur `integrity` affichée par `npm pack --json`. Refusé si les octets n’y correspondent pas.";
|
|
1107
|
+
readonly submit: "Téléverser";
|
|
1108
|
+
};
|
|
1109
|
+
};
|
|
1110
|
+
readonly pages: {
|
|
1111
|
+
readonly title: "Pages";
|
|
1112
|
+
readonly subtitle: "Ajoutez, modifiez et organisez les pages de votre application, ainsi que leur ordre dans la barre latérale.";
|
|
1113
|
+
readonly createButton: "Nouvelle page";
|
|
1114
|
+
readonly loadFailed: {
|
|
1115
|
+
readonly title: "Impossible de charger les pages";
|
|
1116
|
+
readonly body: "La gestion des pages requiert l’autorisation « Gérer les pages ». Demandez à un administrateur de l’attribuer à l’un de vos rôles.";
|
|
1117
|
+
};
|
|
1118
|
+
readonly tab: {
|
|
1119
|
+
readonly pages: "Toutes les pages";
|
|
1120
|
+
readonly sidebar: "Ordre de la barre latérale";
|
|
1121
|
+
};
|
|
1122
|
+
readonly list: {
|
|
1123
|
+
readonly title: "Pages";
|
|
1124
|
+
readonly count: "{count, plural, one {# page} other {# pages}}";
|
|
1125
|
+
};
|
|
1126
|
+
readonly empty: {
|
|
1127
|
+
readonly title: "Aucune page pour l’instant";
|
|
1128
|
+
readonly body: "Connectez une base de données pour générer des pages automatiquement, ou créez-en une à la main.";
|
|
1129
|
+
};
|
|
1130
|
+
readonly status: {
|
|
1131
|
+
readonly live: "Active";
|
|
1132
|
+
readonly hidden: "Masquée";
|
|
1133
|
+
};
|
|
1134
|
+
readonly origin: {
|
|
1135
|
+
readonly generated: "Générée";
|
|
1136
|
+
readonly manifest: "Extension";
|
|
1137
|
+
readonly llm: "Assistant";
|
|
1138
|
+
readonly system: "Système";
|
|
1139
|
+
readonly user: "Personnalisée";
|
|
1140
|
+
};
|
|
1141
|
+
readonly row: {
|
|
1142
|
+
readonly menu: "Actions pour {title}";
|
|
1143
|
+
};
|
|
1144
|
+
readonly action: {
|
|
1145
|
+
readonly edit: "Modifier la page";
|
|
1146
|
+
readonly duplicate: "Dupliquer";
|
|
1147
|
+
readonly hide: "Masquer dans la barre latérale";
|
|
1148
|
+
readonly show: "Afficher dans la barre latérale";
|
|
1149
|
+
readonly delete: "Supprimer la page";
|
|
1150
|
+
};
|
|
1151
|
+
readonly create: {
|
|
1152
|
+
readonly title: "Nouvelle page";
|
|
1153
|
+
readonly failed: "Impossible de créer la page";
|
|
1154
|
+
readonly submit: "Créer la page";
|
|
1155
|
+
readonly subtitle: "Choisissez ce que cette page affiche et son apparence. L’aperçu suit vos choix.";
|
|
1156
|
+
};
|
|
1157
|
+
readonly duplicate: {
|
|
1158
|
+
readonly title: "Dupliquer la page";
|
|
1159
|
+
readonly failed: "Impossible de dupliquer la page";
|
|
1160
|
+
readonly submit: "Dupliquer";
|
|
1161
|
+
};
|
|
1162
|
+
readonly delete: {
|
|
1163
|
+
readonly title: "Supprimer cette page ?";
|
|
1164
|
+
readonly body: "Cette action est irréversible. Les vues enregistrées et les dispositions personnelles de cette page sont supprimées pour tout le monde.";
|
|
1165
|
+
readonly bodyGenerated: "Cette page provient de la génération du schéma : elle réapparaîtra à la prochaine génération. Les vues enregistrées et les dispositions personnelles sont supprimées pour tout le monde.";
|
|
1166
|
+
readonly prompt: "Saisissez {slug} pour confirmer";
|
|
1167
|
+
readonly confirm: "Supprimer la page";
|
|
1168
|
+
};
|
|
1169
|
+
readonly field: {
|
|
1170
|
+
readonly title: "Titre";
|
|
1171
|
+
readonly titleHint: "Affiché dans la barre latérale et dans l’en-tête de la page.";
|
|
1172
|
+
readonly slug: "Adresse de la page";
|
|
1173
|
+
readonly slugHint: "Minuscules, chiffres et tirets. Seulement la dernière partie — le reste de l’adresse est ajouté pour vous.";
|
|
1174
|
+
readonly slugTaken: "Une autre page utilise déjà cette adresse.";
|
|
1175
|
+
readonly slugWarning: "Modifier l’adresse casse les liens et les favoris existants vers cette page.";
|
|
1176
|
+
readonly template: "Modèle";
|
|
1177
|
+
readonly templateHint: "Détermine ce que la page peut contenir. Modifiable par la suite.";
|
|
1178
|
+
readonly group: "Groupe de la barre latérale";
|
|
1179
|
+
readonly groupHint: "La section de la barre latérale où elle apparaît.";
|
|
1180
|
+
readonly icon: "Icône";
|
|
1181
|
+
readonly iconHint: "Affichée à côté du nom de la page dans la barre latérale.";
|
|
1182
|
+
readonly visible: "Afficher dans la barre latérale";
|
|
1183
|
+
readonly visibleHint: "Une page masquée reste accessible à son URL pour qui possède le lien.";
|
|
1184
|
+
readonly table: "Table";
|
|
1185
|
+
readonly tableCreateHint: "La table que cette page lit. Choisissez-en une maintenant et la page est prête à l’emploi ; laissez vide pour la lier plus tard.";
|
|
1186
|
+
readonly tableNone: "Non liée";
|
|
1187
|
+
readonly tableNeedsConnection: "Choisissez d’abord une source de données.";
|
|
1188
|
+
readonly connection: "Source de données";
|
|
1189
|
+
readonly connectionNone: "Aucune";
|
|
1190
|
+
readonly iconPick: "Choisir l’icône de la page";
|
|
1191
|
+
readonly padding: "Marge de la page";
|
|
1192
|
+
readonly width: "Largeur du contenu";
|
|
1193
|
+
readonly widthHint: "Largeur maximale de la colonne de contenu de la page sur un grand écran.";
|
|
1194
|
+
};
|
|
1195
|
+
readonly editor: {
|
|
1196
|
+
readonly title: "Modifier la page";
|
|
1197
|
+
readonly save: "Enregistrer les modifications";
|
|
1198
|
+
readonly saveFailed: "Impossible d’enregistrer les modifications";
|
|
1199
|
+
readonly openPage: "Ouvrir la page";
|
|
1200
|
+
readonly generated: {
|
|
1201
|
+
readonly title: "Cette page a été générée à partir de votre schéma";
|
|
1202
|
+
readonly body: "Vos modifications sont conservées lors d’une nouvelle génération : la page est marquée comme modifiée et laissée intacte. En revanche, une suppression ne tient que jusqu’à ce que la génération suivante la recrée.";
|
|
1203
|
+
};
|
|
1204
|
+
readonly contentUnavailable: "Impossible de charger le contenu de la page";
|
|
1205
|
+
readonly contentUnavailableBody: "Les informations ci-dessus peuvent tout de même être enregistrées.";
|
|
1206
|
+
readonly contentInvalid: "La configuration de cette page est illisible";
|
|
1207
|
+
readonly contentInvalidBody: "Elle provient d’une version plus récente, ou elle est corrompue. Régénérez la page ou supprimez-la.";
|
|
1208
|
+
readonly data: "Données";
|
|
1209
|
+
readonly schemaFailed: "Impossible de lister les tables";
|
|
1210
|
+
readonly schemaFailedBody: "Cette connexion n’a peut-être pas encore été analysée. Lancez l’introspection depuis Studio → Connexions de données.";
|
|
1211
|
+
readonly notBindable: "Ce modèle n’est pas lié à une seule table";
|
|
1212
|
+
readonly notBindableBody: "Son contenu se construit widget par widget. Ouvrez la page et utilisez « Modifier » pour les ajouter.";
|
|
1213
|
+
readonly recompose: "Cette page va être reconstruite";
|
|
1214
|
+
readonly recomposeBody: "L’enregistrement remplace son contenu par une nouvelle disposition pour le modèle et la table ci-dessus. Les ajustements de colonnes et les modifications de widgets de cette page seront perdus.";
|
|
1215
|
+
readonly missing: "Cette page n’existe plus";
|
|
1216
|
+
readonly missingBody: "Elle a peut-être été supprimée, ou retirée par une génération.";
|
|
1217
|
+
readonly details: "Détails";
|
|
1218
|
+
readonly itemsPending: "Enregistrez d’abord la modification ci-dessus — le contenu de la page est reconstruit à partir du nouveau modèle et de la nouvelle table.";
|
|
1219
|
+
readonly columns: "Colonnes";
|
|
1220
|
+
readonly appearance: "Apparence";
|
|
1221
|
+
};
|
|
1222
|
+
readonly sidebar: {
|
|
1223
|
+
readonly help: "Réordonnez les pages au sein d’un groupe, ou déplacez-en une vers un autre groupe. Les changements s’appliquent à tout le monde.";
|
|
1224
|
+
readonly discard: "Abandonner";
|
|
1225
|
+
readonly save: "Enregistrer l’ordre";
|
|
1226
|
+
readonly saveFailed: "Impossible d’enregistrer le nouvel ordre";
|
|
1227
|
+
readonly emptyGroup: "Aucune page dans ce groupe.";
|
|
1228
|
+
readonly moveUp: "Monter {title}";
|
|
1229
|
+
readonly moveDown: "Descendre {title}";
|
|
1230
|
+
readonly moveTo: "Déplacer {title} vers un groupe";
|
|
1231
|
+
readonly ungrouped: {
|
|
1232
|
+
readonly title: "Certaines pages n’appartiennent à aucun groupe";
|
|
1233
|
+
readonly body: "Ces pages fonctionnent à leur URL mais n’apparaissent nulle part dans la barre latérale. Ouvrez chacune d’elles et choisissez un groupe.";
|
|
1234
|
+
};
|
|
1235
|
+
};
|
|
1236
|
+
readonly columns: {
|
|
1237
|
+
readonly help: "Glissez pour réordonner les colonnes, renommez leurs en-têtes et choisissez celles qui apparaissent dans le tableau.";
|
|
1238
|
+
readonly empty: "Pas encore de colonnes — ajoutez-en ci-dessous.";
|
|
1239
|
+
readonly pk: "Clé";
|
|
1240
|
+
readonly pii: "PII";
|
|
1241
|
+
readonly header: "En-tête de {name}";
|
|
1242
|
+
readonly shown: "Affichée";
|
|
1243
|
+
readonly toggle: "Afficher {name} dans le tableau";
|
|
1244
|
+
readonly dragHandle: "Réordonner {name}";
|
|
1245
|
+
readonly remove: "Retirer {name}";
|
|
1246
|
+
readonly addOpen: "Ajouter une colonne";
|
|
1247
|
+
readonly addTitle: "Ajouter une colonne";
|
|
1248
|
+
readonly addSearch: "Rechercher des colonnes…";
|
|
1249
|
+
readonly addFromTable: "Depuis {table}";
|
|
1250
|
+
readonly addFromLinked: "Depuis les tables liées";
|
|
1251
|
+
readonly addLinkedHelp: "Affiche une valeur de la table vers laquelle pointe une colonne de liaison.";
|
|
1252
|
+
readonly addVia: "via {column}";
|
|
1253
|
+
readonly addNoMatches: "Aucune colonne ne correspond à « {query} ».";
|
|
1254
|
+
readonly followColumn: "Suivre {name}";
|
|
1255
|
+
readonly addLinkedFrom: "Tables qui pointent ici";
|
|
1256
|
+
readonly addLinkedFromHelp: "Ajoute le nombre de lignes qui pointent vers chaque enregistrement.";
|
|
1257
|
+
readonly countBadge: "Nombre";
|
|
1258
|
+
readonly lookupBadge: "Liée";
|
|
1259
|
+
readonly lookupBack: "Retour";
|
|
1260
|
+
readonly lookupBrowse: "Choisissez quoi afficher depuis {table}";
|
|
1261
|
+
readonly lookupBroken: "Ce lien ne se résout plus";
|
|
1262
|
+
readonly lookupBrokenBody: "Le schéma a changé pendant votre navigation. Recommencez le lien.";
|
|
1263
|
+
readonly schemaUnavailable: "Les colonnes de la base n’ont pas pu être listées ; impossible d’ajouter des colonnes ici.";
|
|
1264
|
+
readonly none: {
|
|
1265
|
+
readonly title: "Cette page n’a pas encore de colonnes";
|
|
1266
|
+
readonly body: "Les colonnes sont lues dans la table lors de la génération de la page. Liez cette page à une table puis régénérez pour les renseigner.";
|
|
1267
|
+
};
|
|
1268
|
+
};
|
|
1269
|
+
readonly icon: {
|
|
1270
|
+
readonly none: "Choisir une icône";
|
|
1271
|
+
readonly search: "Rechercher des icônes";
|
|
1272
|
+
readonly noMatches: "Aucune icône ne correspond à cette recherche.";
|
|
1273
|
+
};
|
|
1274
|
+
readonly preview: {
|
|
1275
|
+
readonly untitled: "Page sans titre";
|
|
1276
|
+
readonly note: "Une illustration de la disposition, pas de vos données. La vraie page se remplit une fois enregistrée.";
|
|
1277
|
+
};
|
|
1278
|
+
readonly padding: {
|
|
1279
|
+
readonly default: "Par défaut pour ce modèle";
|
|
1280
|
+
readonly none: "Aucune";
|
|
1281
|
+
readonly standard: "Standard (28 × 24)";
|
|
1282
|
+
readonly custom: "Personnalisée…";
|
|
1283
|
+
readonly x: "Côtés (px)";
|
|
1284
|
+
readonly y: "Haut et bas (px)";
|
|
1285
|
+
};
|
|
1286
|
+
readonly width: {
|
|
1287
|
+
readonly default: "Valeur par défaut de ce modèle";
|
|
1288
|
+
readonly narrow: "Étroite (720 px)";
|
|
1289
|
+
readonly content: "Contenu (900 px)";
|
|
1290
|
+
readonly page: "Page (1080 px)";
|
|
1291
|
+
readonly dash: "Tableau de bord (1320 px)";
|
|
1292
|
+
readonly wide: "Large (1800 px)";
|
|
1293
|
+
readonly full: "Pleine largeur (sans limite)";
|
|
1294
|
+
};
|
|
1295
|
+
};
|
|
16
1296
|
};
|
|
17
1297
|
export default _default;
|
|
18
1298
|
//# sourceMappingURL=studio.d.ts.map
|