@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.
Files changed (229) hide show
  1. package/dist/a11y-keys.d.ts +1 -1
  2. package/dist/a11y-keys.d.ts.map +1 -1
  3. package/dist/a11y-keys.js +481 -172
  4. package/dist/a11y-keys.js.map +1 -1
  5. package/dist/create-i18n.d.ts +16 -6
  6. package/dist/create-i18n.d.ts.map +1 -1
  7. package/dist/create-i18n.js +23 -9
  8. package/dist/create-i18n.js.map +1 -1
  9. package/dist/editing.d.ts +1 -1
  10. package/dist/editing.js +1 -1
  11. package/dist/index.d.ts +2 -2
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +19 -8
  14. package/dist/index.js.map +1 -1
  15. package/dist/keys.d.ts +6 -4
  16. package/dist/keys.d.ts.map +1 -1
  17. package/dist/keys.js +6 -4
  18. package/dist/keys.js.map +1 -1
  19. package/dist/overrides.d.ts +1 -1
  20. package/dist/overrides.d.ts.map +1 -1
  21. package/dist/resources/ar-eg/common.d.ts +96 -970
  22. package/dist/resources/ar-eg/common.d.ts.map +1 -1
  23. package/dist/resources/ar-eg/common.js +99 -973
  24. package/dist/resources/ar-eg/common.js.map +1 -1
  25. package/dist/resources/ar-eg/errors.d.ts +3 -2
  26. package/dist/resources/ar-eg/errors.d.ts.map +1 -1
  27. package/dist/resources/ar-eg/errors.js +3 -2
  28. package/dist/resources/ar-eg/errors.js.map +1 -1
  29. package/dist/resources/ar-eg/generated.d.ts +3 -2
  30. package/dist/resources/ar-eg/generated.d.ts.map +1 -1
  31. package/dist/resources/ar-eg/generated.js +3 -2
  32. package/dist/resources/ar-eg/generated.js.map +1 -1
  33. package/dist/resources/ar-eg/studio.d.ts +1282 -2
  34. package/dist/resources/ar-eg/studio.d.ts.map +1 -1
  35. package/dist/resources/ar-eg/studio.js +1282 -2
  36. package/dist/resources/ar-eg/studio.js.map +1 -1
  37. package/dist/resources/ar-eg/ui.d.ts +60 -2
  38. package/dist/resources/ar-eg/ui.d.ts.map +1 -1
  39. package/dist/resources/ar-eg/ui.js +72 -14
  40. package/dist/resources/ar-eg/ui.js.map +1 -1
  41. package/dist/resources/cs-cz/common.d.ts +96 -970
  42. package/dist/resources/cs-cz/common.d.ts.map +1 -1
  43. package/dist/resources/cs-cz/common.js +99 -973
  44. package/dist/resources/cs-cz/common.js.map +1 -1
  45. package/dist/resources/cs-cz/errors.d.ts +3 -2
  46. package/dist/resources/cs-cz/errors.d.ts.map +1 -1
  47. package/dist/resources/cs-cz/errors.js +3 -2
  48. package/dist/resources/cs-cz/errors.js.map +1 -1
  49. package/dist/resources/cs-cz/generated.d.ts +3 -2
  50. package/dist/resources/cs-cz/generated.d.ts.map +1 -1
  51. package/dist/resources/cs-cz/generated.js +3 -2
  52. package/dist/resources/cs-cz/generated.js.map +1 -1
  53. package/dist/resources/cs-cz/studio.d.ts +1282 -2
  54. package/dist/resources/cs-cz/studio.d.ts.map +1 -1
  55. package/dist/resources/cs-cz/studio.js +1282 -2
  56. package/dist/resources/cs-cz/studio.js.map +1 -1
  57. package/dist/resources/cs-cz/ui.d.ts +60 -2
  58. package/dist/resources/cs-cz/ui.d.ts.map +1 -1
  59. package/dist/resources/cs-cz/ui.js +72 -14
  60. package/dist/resources/cs-cz/ui.js.map +1 -1
  61. package/dist/resources/da-dk/common.d.ts +96 -970
  62. package/dist/resources/da-dk/common.d.ts.map +1 -1
  63. package/dist/resources/da-dk/common.js +99 -973
  64. package/dist/resources/da-dk/common.js.map +1 -1
  65. package/dist/resources/da-dk/errors.d.ts +3 -2
  66. package/dist/resources/da-dk/errors.d.ts.map +1 -1
  67. package/dist/resources/da-dk/errors.js +3 -2
  68. package/dist/resources/da-dk/errors.js.map +1 -1
  69. package/dist/resources/da-dk/generated.d.ts +3 -2
  70. package/dist/resources/da-dk/generated.d.ts.map +1 -1
  71. package/dist/resources/da-dk/generated.js +3 -2
  72. package/dist/resources/da-dk/generated.js.map +1 -1
  73. package/dist/resources/da-dk/studio.d.ts +1282 -2
  74. package/dist/resources/da-dk/studio.d.ts.map +1 -1
  75. package/dist/resources/da-dk/studio.js +1282 -2
  76. package/dist/resources/da-dk/studio.js.map +1 -1
  77. package/dist/resources/da-dk/ui.d.ts +60 -2
  78. package/dist/resources/da-dk/ui.d.ts.map +1 -1
  79. package/dist/resources/da-dk/ui.js +72 -14
  80. package/dist/resources/da-dk/ui.js.map +1 -1
  81. package/dist/resources/de-de/common.d.ts +96 -970
  82. package/dist/resources/de-de/common.d.ts.map +1 -1
  83. package/dist/resources/de-de/common.js +99 -973
  84. package/dist/resources/de-de/common.js.map +1 -1
  85. package/dist/resources/de-de/errors.d.ts +3 -2
  86. package/dist/resources/de-de/errors.d.ts.map +1 -1
  87. package/dist/resources/de-de/errors.js +3 -2
  88. package/dist/resources/de-de/errors.js.map +1 -1
  89. package/dist/resources/de-de/generated.d.ts +3 -2
  90. package/dist/resources/de-de/generated.d.ts.map +1 -1
  91. package/dist/resources/de-de/generated.js +3 -2
  92. package/dist/resources/de-de/generated.js.map +1 -1
  93. package/dist/resources/de-de/studio.d.ts +1282 -2
  94. package/dist/resources/de-de/studio.d.ts.map +1 -1
  95. package/dist/resources/de-de/studio.js +1282 -2
  96. package/dist/resources/de-de/studio.js.map +1 -1
  97. package/dist/resources/de-de/ui.d.ts +60 -2
  98. package/dist/resources/de-de/ui.d.ts.map +1 -1
  99. package/dist/resources/de-de/ui.js +72 -14
  100. package/dist/resources/de-de/ui.js.map +1 -1
  101. package/dist/resources/eager.d.ts +3 -0
  102. package/dist/resources/eager.d.ts.map +1 -0
  103. package/dist/resources/eager.js +25 -0
  104. package/dist/resources/eager.js.map +1 -0
  105. package/dist/resources/en-us/common.d.ts +96 -970
  106. package/dist/resources/en-us/common.d.ts.map +1 -1
  107. package/dist/resources/en-us/common.js +99 -973
  108. package/dist/resources/en-us/common.js.map +1 -1
  109. package/dist/resources/en-us/errors.d.ts +3 -2
  110. package/dist/resources/en-us/errors.d.ts.map +1 -1
  111. package/dist/resources/en-us/errors.js +3 -2
  112. package/dist/resources/en-us/errors.js.map +1 -1
  113. package/dist/resources/en-us/generated.d.ts +3 -2
  114. package/dist/resources/en-us/generated.d.ts.map +1 -1
  115. package/dist/resources/en-us/generated.js +3 -2
  116. package/dist/resources/en-us/generated.js.map +1 -1
  117. package/dist/resources/en-us/studio.d.ts +1282 -2
  118. package/dist/resources/en-us/studio.d.ts.map +1 -1
  119. package/dist/resources/en-us/studio.js +1282 -2
  120. package/dist/resources/en-us/studio.js.map +1 -1
  121. package/dist/resources/en-us/ui.d.ts +60 -2
  122. package/dist/resources/en-us/ui.d.ts.map +1 -1
  123. package/dist/resources/en-us/ui.js +72 -14
  124. package/dist/resources/en-us/ui.js.map +1 -1
  125. package/dist/resources/fr-fr/common.d.ts +96 -970
  126. package/dist/resources/fr-fr/common.d.ts.map +1 -1
  127. package/dist/resources/fr-fr/common.js +99 -973
  128. package/dist/resources/fr-fr/common.js.map +1 -1
  129. package/dist/resources/fr-fr/errors.d.ts +3 -2
  130. package/dist/resources/fr-fr/errors.d.ts.map +1 -1
  131. package/dist/resources/fr-fr/errors.js +3 -2
  132. package/dist/resources/fr-fr/errors.js.map +1 -1
  133. package/dist/resources/fr-fr/generated.d.ts +3 -2
  134. package/dist/resources/fr-fr/generated.d.ts.map +1 -1
  135. package/dist/resources/fr-fr/generated.js +3 -2
  136. package/dist/resources/fr-fr/generated.js.map +1 -1
  137. package/dist/resources/fr-fr/studio.d.ts +1282 -2
  138. package/dist/resources/fr-fr/studio.d.ts.map +1 -1
  139. package/dist/resources/fr-fr/studio.js +1282 -2
  140. package/dist/resources/fr-fr/studio.js.map +1 -1
  141. package/dist/resources/fr-fr/ui.d.ts +60 -2
  142. package/dist/resources/fr-fr/ui.d.ts.map +1 -1
  143. package/dist/resources/fr-fr/ui.js +72 -14
  144. package/dist/resources/fr-fr/ui.js.map +1 -1
  145. package/dist/resources/index.d.ts +3 -6
  146. package/dist/resources/index.d.ts.map +1 -1
  147. package/dist/resources/index.js +15 -14
  148. package/dist/resources/index.js.map +1 -1
  149. package/dist/resources/lazy.d.ts +19 -9
  150. package/dist/resources/lazy.d.ts.map +1 -1
  151. package/dist/resources/lazy.js +4 -2
  152. package/dist/resources/lazy.js.map +1 -1
  153. package/dist/resources/namespaces.d.ts +43 -0
  154. package/dist/resources/namespaces.d.ts.map +1 -0
  155. package/dist/resources/namespaces.js +37 -0
  156. package/dist/resources/namespaces.js.map +1 -0
  157. package/dist/resources/zh-cn/common.d.ts +96 -970
  158. package/dist/resources/zh-cn/common.d.ts.map +1 -1
  159. package/dist/resources/zh-cn/common.js +99 -973
  160. package/dist/resources/zh-cn/common.js.map +1 -1
  161. package/dist/resources/zh-cn/errors.d.ts +3 -2
  162. package/dist/resources/zh-cn/errors.d.ts.map +1 -1
  163. package/dist/resources/zh-cn/errors.js +3 -2
  164. package/dist/resources/zh-cn/errors.js.map +1 -1
  165. package/dist/resources/zh-cn/generated.d.ts +3 -2
  166. package/dist/resources/zh-cn/generated.d.ts.map +1 -1
  167. package/dist/resources/zh-cn/generated.js +3 -2
  168. package/dist/resources/zh-cn/generated.js.map +1 -1
  169. package/dist/resources/zh-cn/studio.d.ts +1282 -2
  170. package/dist/resources/zh-cn/studio.d.ts.map +1 -1
  171. package/dist/resources/zh-cn/studio.js +1282 -2
  172. package/dist/resources/zh-cn/studio.js.map +1 -1
  173. package/dist/resources/zh-cn/ui.d.ts +60 -2
  174. package/dist/resources/zh-cn/ui.d.ts.map +1 -1
  175. package/dist/resources/zh-cn/ui.js +72 -14
  176. package/dist/resources/zh-cn/ui.js.map +1 -1
  177. package/dist/resources/zh-tw/common.d.ts +96 -970
  178. package/dist/resources/zh-tw/common.d.ts.map +1 -1
  179. package/dist/resources/zh-tw/common.js +99 -973
  180. package/dist/resources/zh-tw/common.js.map +1 -1
  181. package/dist/resources/zh-tw/errors.d.ts +3 -2
  182. package/dist/resources/zh-tw/errors.d.ts.map +1 -1
  183. package/dist/resources/zh-tw/errors.js +3 -2
  184. package/dist/resources/zh-tw/errors.js.map +1 -1
  185. package/dist/resources/zh-tw/generated.d.ts +3 -2
  186. package/dist/resources/zh-tw/generated.d.ts.map +1 -1
  187. package/dist/resources/zh-tw/generated.js +3 -2
  188. package/dist/resources/zh-tw/generated.js.map +1 -1
  189. package/dist/resources/zh-tw/studio.d.ts +1282 -2
  190. package/dist/resources/zh-tw/studio.d.ts.map +1 -1
  191. package/dist/resources/zh-tw/studio.js +1282 -2
  192. package/dist/resources/zh-tw/studio.js.map +1 -1
  193. package/dist/resources/zh-tw/ui.d.ts +60 -2
  194. package/dist/resources/zh-tw/ui.d.ts.map +1 -1
  195. package/dist/resources/zh-tw/ui.js +72 -14
  196. package/dist/resources/zh-tw/ui.js.map +1 -1
  197. package/dist/review-status.js +7 -7
  198. package/locales/ar-EG/.meta.json +3783 -2339
  199. package/locales/ar-EG/common.json +96 -971
  200. package/locales/ar-EG/studio.json +1279 -0
  201. package/locales/ar-EG/ui.json +69 -12
  202. package/locales/cs-CZ/.meta.json +3849 -2405
  203. package/locales/cs-CZ/common.json +96 -971
  204. package/locales/cs-CZ/studio.json +1279 -0
  205. package/locales/cs-CZ/ui.json +69 -12
  206. package/locales/da-DK/.meta.json +3935 -2491
  207. package/locales/da-DK/common.json +96 -971
  208. package/locales/da-DK/studio.json +1279 -0
  209. package/locales/da-DK/ui.json +69 -12
  210. package/locales/de-DE/.meta.json +3895 -2451
  211. package/locales/de-DE/common.json +96 -971
  212. package/locales/de-DE/studio.json +1279 -0
  213. package/locales/de-DE/ui.json +69 -12
  214. package/locales/en-US/common.json +96 -971
  215. package/locales/en-US/studio.json +1279 -0
  216. package/locales/en-US/ui.json +69 -12
  217. package/locales/fr-FR/.meta.json +3964 -2520
  218. package/locales/fr-FR/common.json +96 -971
  219. package/locales/fr-FR/studio.json +1279 -0
  220. package/locales/fr-FR/ui.json +69 -12
  221. package/locales/zh-CN/.meta.json +3781 -2337
  222. package/locales/zh-CN/common.json +96 -971
  223. package/locales/zh-CN/studio.json +1279 -0
  224. package/locales/zh-CN/ui.json +69 -12
  225. package/locales/zh-TW/.meta.json +3785 -2341
  226. package/locales/zh-TW/common.json +96 -971
  227. package/locales/zh-TW/studio.json +1279 -0
  228. package/locales/zh-TW/ui.json +69 -12
  229. package/package.json +1 -1
@@ -2,8 +2,9 @@
2
2
  /**
3
3
  * GENERATED MIRROR of ../../../locales/da-DK/studio.json — do not edit by hand.
4
4
  * The JSON file is the canonical hand-authored bundle (10-i18n-theming.md §3.1);
5
- * this TS mirror exists so the runtime bundles en-US resources (and chunk-splits
6
- * the other locales) without JSON import attributes (browser + NodeNext safe).
5
+ * this TS mirror exists so the runtime can bundle a namespace (en-US's eager
6
+ * ones) or chunk-split it (every other locale, and en-US's deferred `studio`)
7
+ * without JSON import attributes (browser + NodeNext safe).
7
8
  * Parity is enforced by src/resources/parity.test.ts. Regenerate with
8
9
  * scripts/gen-resources.mjs.
9
10
  */
@@ -13,6 +14,1285 @@ export default {
13
14
  "title": "Indstillinger",
14
15
  "workspaceSection": "Arbejdsområde",
15
16
  "globalDefaultsNav": "Globale standarder"
17
+ },
18
+ "source": {
19
+ "engine": {
20
+ "label": "Databasemotor",
21
+ "postgres": "PostgreSQL",
22
+ "mysql": "MySQL / MariaDB",
23
+ "sqlite": "SQLite"
24
+ },
25
+ "format": {
26
+ "label": "Skemaformat",
27
+ "helper": "Lad automatisk registrering være slået til, medmindre den tager fejl.",
28
+ "auto": "Registrér automatisk",
29
+ "sql": "SQL DDL / pg_dump",
30
+ "prisma": "Prisma-skema",
31
+ "drizzle": "Drizzle ORM",
32
+ "typeorm": "TypeORM-entiteter",
33
+ "sequelize": "Sequelize-modeller",
34
+ "rails": "Rails schema.rb",
35
+ "django": "Django models.py",
36
+ "json": "Adminium JSON"
37
+ },
38
+ "sqlite": {
39
+ "file": "Sti til databasefil",
40
+ "helper": "SQLite er en fil, ikke en server — angiv den absolutte sti på den maskine, der kører Adminium."
41
+ },
42
+ "file": {
43
+ "detectedAs": "Registreret: {format}",
44
+ "moreWarnings": "+{count} flere advarsler — den fulde liste vises i analysetrinnet.",
45
+ "dropTitle": "Slip din skemafil her, eller gennemse",
46
+ "dropHint": "SQL DDL / pg_dump, Prisma, Drizzle, TypeORM, Sequelize, Rails schema.rb, Django-modeller, Adminium JSON",
47
+ "pitch": "Ingen databaseforbindelse påkrævet — vi fortolker din skemafil og bygger de samme dashboards.",
48
+ "parsing": "Læser den uploadede skemafil…",
49
+ "tables": "tabeller",
50
+ "columns": "kolonner",
51
+ "warnings": "advarsler",
52
+ "errorTitle": "Kunne ikke fortolke filen",
53
+ "parseFailed": "Vi kunne ikke fortolke den fil. Hvis auto-genkendelsen gættede forkert, så vælg formatet eksplicit og prøv igen.",
54
+ "unsupported": "Formatet blev ikke genkendt — SQL DDL, Prisma, Drizzle, TypeORM, Sequelize, Rails schema.rb, Django-modeller og Adminium JSON understøttes. Vælg ét eksplicit og prøv igen.",
55
+ "requestFailed": "Upload mislykkedes — tjek din forbindelse og prøv igen."
56
+ },
57
+ "title": "Forbind din database",
58
+ "subtitle": "Peg Adminium mod en database, så genererer vi et admin-dashboard ud fra dens skema.",
59
+ "name": "Forbindelsesnavn",
60
+ "namePlaceholder": "Produktions-Postgres",
61
+ "modeLabel": "Kildeinputtilstand",
62
+ "mode": {
63
+ "dsn": "Forbindelsesstreng",
64
+ "fields": "Enkelte felter",
65
+ "file": "Skemafil"
66
+ },
67
+ "dsn": {
68
+ "label": "Forbindelsesstreng",
69
+ "helper": "postgres://bruger:kodeord@vaert:5432/database — mysql:// og sqlite: virker også.",
70
+ "incomplete": "Tilføj vært og database, f.eks. postgres://user@host:5432/db",
71
+ "invalidScheme": "Ukendt skema — forventede postgres://, mysql://, mariadb:// eller sqlite:",
72
+ "quickFill": "Hurtig udfyldning:"
73
+ },
74
+ "fields": {
75
+ "host": "Vært",
76
+ "port": "Port",
77
+ "database": "Database",
78
+ "user": "Bruger",
79
+ "password": "Adgangskode",
80
+ "ssl": "SSL-tilstand",
81
+ "preview": "Forhåndsvisning af forbindelsesstreng:"
82
+ },
83
+ "readOnlyRole": {
84
+ "title": "Brug en skrivebeskyttet rolle",
85
+ "body": "Adminium skriver aldrig til din database — opsætningen bruger kun skema-metadata. Vi anbefaler en dedikeret bruger med rene SELECT-rettigheder; hvor Adminium gemmer sine egne tabeller, beslutter du i metalagringstrinnet."
86
+ }
87
+ },
88
+ "capability": {
89
+ "mysqlApproxRows": "MySQL-rækkeantal er estimater fra lagringsmotoren (kan afvige op til ±40 %) — vises med ≈.",
90
+ "mysqlFkEnum": "MySQL’s FK-/enum-metadata er svagere: MyISAM-tabeller deklarerer ingen fremmednøgler, enums er kolonnetyper som enum(…), og CHECK-begrænsninger kræver MySQL 8.0.16+ / MariaDB 10.2+.",
91
+ "sqliteCheckEnums": "SQLite har ingen indbygget enum-type — enums syntetiseres fra CHECK (col IN (…))-begrænsninger.",
92
+ "sqliteNoComments": "SQLite har ingen kolonnekommentarer — brug skema-remap-editoren til at tilføje etiketter.",
93
+ "importNoRowCounts": "Skemafiler indeholder ingen rækkeantal — tabellisten viser — i stedet for opdigtede tal.",
94
+ "importNoLiveHealth": "Ingen live databaseforbindelse — sundhedstjek og registrering af skemadrift er ikke tilgængelige for denne kilde.",
95
+ "rowsUnavailable": "Skemafiler har ingen live database — rækkeantal er ukendte, indtil du forbinder en.",
96
+ "rowsRunAnalyze": "Intet estimat endnu — kør ANALYZE på databasen for at få rækkeantal.",
97
+ "rowsNoEstimate": "Motoren rapporterede intet estimat for denne tabel.",
98
+ "rowsApproximate": "Estimat fra lagringsmotoren — kan afvige op til ±40 % på InnoDB."
99
+ },
100
+ "test": {
101
+ "log": {
102
+ "moreWarnings": "+{count} flere parser-advarsler",
103
+ "connecting": "Etablerer sikker forbindelse…",
104
+ "connected": "Forbundet ({latency} ms) · skrivebeskyttet introspektion",
105
+ "connectFailed": "Forbindelsen mislykkedes.",
106
+ "readingSchema": "Læser skema: public",
107
+ "readingFile": "Læser den uploadede skemafil…",
108
+ "parsingFile": "Fortolker {file}…",
109
+ "detected": "Registrerede {tables} tabeller · {columns} kolonner",
110
+ "found": "Fandt {tables} tabeller · {columns} kolonner",
111
+ "mapping": "Kortlægger kolonnetyper → inputwidgets",
112
+ "relations": "Registrerer relationer…",
113
+ "piiScan": "Scanner efter PII-kolonner…",
114
+ "piiDone": "PII-scanning fuldført — {count} kolonner maskeret som standard",
115
+ "piiDoneUnknown": "PII-scanning fuldført",
116
+ "jobFailed": "Introspektion mislykkedes.",
117
+ "networkFailed": "Anmodningen mislykkedes — tjek din forbindelse og prøv igen.",
118
+ "ready": "Klar"
119
+ },
120
+ "title": "Analyserer dit skema",
121
+ "subtitle": "Introspekterer tabeller, kolonner og relationer. Det tager et par sekunder.",
122
+ "trust": "Vi læser kun dit skema og dine data. Intet ændres.",
123
+ "errorTitle": "Forbindelsen mislykkedes",
124
+ "retry": "Prøv igen",
125
+ "logLabel": "Introspektionslog",
126
+ "hint": {
127
+ "auth": "Godkendelse mislykkedes — tjek brugernavn og adgangskode i din DSN.",
128
+ "hostUnreachable": "Vært utilgængelig — tjek værtsnavn og port, og at databasen accepterer forbindelser fra denne maskine (tilføj vores IP'er til tilladelseslisten).",
129
+ "metaPlacement": "Denne kilde kan ikke huse Adminiums metatabeller — fortsæt med en separat metadatabase.",
130
+ "permission": "Rollen fik forbindelse, men mangler skema-læserettigheder — giv USAGE på skemaet til din introspektionsrolle.",
131
+ "timeout": "Databasen svarede ikke i tide — tjek netværkssti og belastning, og prøv igen.",
132
+ "tls": "TLS-forhandling mislykkedes — prøv sslmode=require, eller upload det CA-certifikat din server forventer.",
133
+ "unknown": "Forbindelsen mislykkedes — kontrollér DSN'en og prøv igen."
134
+ }
135
+ },
136
+ "tables": {
137
+ "importNoCounts": "Skemafiler indeholder ingen rækkeantal — kolonnen viser —, indtil en live database er forbundet.",
138
+ "title": "Vælg dine tabeller",
139
+ "subtitle": "Vælg hvilke der skal med. Du kan altid ændre det.",
140
+ "search": "Filtrér tabeller…",
141
+ "listLabel": "Tabeller der kan medtages",
142
+ "emptyFilter": "Ingen tabeller matcher dit filter.",
143
+ "pii": "PII",
144
+ "highVolume": "stor volumen",
145
+ "highVolumeNote": "Tabeller med over 100.000 rækker starter fravalgt — driftstabeller hører sjældent hjemme i et dashboard.",
146
+ "joinHidden": "{count} join-/systemtabeller er skjult på forhånd — de driver stadig mange-til-mange-relationer."
147
+ },
148
+ "hub": {
149
+ "title": "Dataforbindelser",
150
+ "subtitle": "{healthy, number} af {total, plural, one {# forbindelse} other {# forbindelser}} sunde",
151
+ "connectNew": "Ny forbindelse",
152
+ "stats": {
153
+ "connections": "Forbindelser",
154
+ "healthy": "Sunde",
155
+ "tables": "Inkluderede tabeller",
156
+ "pages": "Genererede sider"
157
+ },
158
+ "status": {
159
+ "connected": "Forbundet",
160
+ "error": "Fejl",
161
+ "unconfigured": "Kladde",
162
+ "testing": "Tester…",
163
+ "paused": "Sat på pause"
164
+ },
165
+ "card": {
166
+ "readOnly": "Skrivebeskyttet",
167
+ "tables": "Tabeller",
168
+ "pages": "Sider",
169
+ "latency": "Latenstid",
170
+ "latencyMs": "{latency, number} ms",
171
+ "lastIntrospected": "Senest introspiceret",
172
+ "never": "Aldrig",
173
+ "timezone": "Tidszone",
174
+ "timezoneGuessed": "fra denne server",
175
+ "paused": "Adminium opretter ikke forbindelse til denne database. Dens sider indlæses igen, når du genoptager den.",
176
+ "pausedSince": "Sat på pause {when} – Adminium opretter ikke forbindelse til denne database. Dens sider indlæses igen, når du genoptager den."
177
+ },
178
+ "action": {
179
+ "test": "Test",
180
+ "reintrospect": "Introspicer igen",
181
+ "reintrospectFile": "Skemafil-kilder har ingen aktiv database — upload filen igen i stedet.",
182
+ "remap": "Ommap skema",
183
+ "delete": "Slet",
184
+ "regional": "Regionale indstillinger",
185
+ "pause": "Sæt på pause",
186
+ "resume": "Genoptag",
187
+ "pausedHint": "Denne forbindelse er sat på pause – genoptag den for at nå databasen.",
188
+ "rename": "Omdøb"
189
+ },
190
+ "regional": {
191
+ "title": "Regionale indstillinger",
192
+ "intro": "De beskriver den virksomhed, databasen tilhører — ikke den, der læser. Apps, der leveres af Adminium, henter dem her.",
193
+ "timezone": "Tidszone",
194
+ "timezoneHelper": "Datoer og klokkeslæt vises i denne tidszone. Uden en falder Adminium-hostede apps tilbage til UTC og skriver det på skærmen.",
195
+ "guessedTitle": "Denne tidszone kom fra serveren",
196
+ "guessedBody": "Adminium hentede den fra den maskine, det kører på — ingen her har valgt den. Gem for at bekræfte den, eller vælg den tidszone, virksomheden faktisk arbejder i.",
197
+ "timezonePlaceholder": "Region/By",
198
+ "currency": "Valuta",
199
+ "currencyHelper": "Bruges til at formatere beløb. Valgfri — undlader du den, påvirker det kun formateringen.",
200
+ "currencyPlaceholder": "ISO-4217-kode",
201
+ "notSet": "Ikke angivet",
202
+ "noMatch": "Ingen matchende zone",
203
+ "noMatchCurrency": "Ingen matchende valuta",
204
+ "save": "Gem",
205
+ "failed": "De regionale indstillinger kunne ikke gemmes",
206
+ "saved": "Regionale indstillinger opdateret"
207
+ },
208
+ "test": {
209
+ "ok": "Forbindelsen er sund · {latency, number} ms",
210
+ "failed": "Forbindelsestest mislykkedes"
211
+ },
212
+ "introspect": {
213
+ "noChanges": "Skemaet er uændret — intet nyt snapshot.",
214
+ "updated": "Skemaet er introspiceret igen",
215
+ "masksProposed": "{count, plural, one {# kolonne} other {# kolonner}} foreslået til maskering — gennemgå i ommapnings-editoren.",
216
+ "failed": "Introspektion mislykkedes. Prøv igen."
217
+ },
218
+ "delete": {
219
+ "title": "Slet forbindelse",
220
+ "body": "Dette sletter “{name}” og de genererede sider. Selve din database røres aldrig.",
221
+ "prompt": "Skriv {name} for at bekræfte",
222
+ "confirm": "Slet forbindelse",
223
+ "cancel": "Annuller",
224
+ "close": "Luk",
225
+ "success": "Forbindelsen “{name}” er slettet",
226
+ "failed": "Forbindelsen kunne ikke slettes. Prøv igen."
227
+ },
228
+ "empty": {
229
+ "title": "Ingen datakilder endnu",
230
+ "body": "Forbind en database, så genererer Adminium dit adminpanel ud fra dens skema.",
231
+ "cta": "Forbind en database"
232
+ },
233
+ "hostedApps": "Hostede apps",
234
+ "subtitlePaused": "{healthy, number} af {total, plural, one {# forbindelse} other {# forbindelser}} sunde · {paused, number} sat på pause",
235
+ "pause": {
236
+ "title": "Sæt denne forbindelse på pause?",
237
+ "body": "Adminium åbner ikke længere nogen forbindelse til “{name}”. {pages, plural, one {# side} other {# sider}}, planlagte rapporter og hostede apps holder op med at indlæse data, indtil du genoptager den.",
238
+ "keeps": "Intet slettes – forbindelsen, dens skema og {pages, plural, one {dens # side} other {dens # sider}} bevares alle, og ét klik henter dem tilbage.",
239
+ "confirm": "Sæt forbindelsen på pause",
240
+ "pausedToast": "Forbindelsen “{name}” er sat på pause",
241
+ "resumedToast": "Forbindelsen “{name}” er genoptaget",
242
+ "pauseFailed": "Forbindelsen kunne ikke sættes på pause. Prøv igen.",
243
+ "resumeFailed": "Forbindelsen kunne ikke genoptages. Prøv igen."
244
+ },
245
+ "rename": {
246
+ "title": "Omdøb forbindelse",
247
+ "label": "Navn",
248
+ "helper": "Hvad denne database hedder i hele Adminium — kortet, sidepanelgruppen over dens sider og hver vælger, der tilbyder den. Selve databasen omdøbes ikke.",
249
+ "save": "Omdøb",
250
+ "saved": "Forbindelse omdøbt",
251
+ "failed": "Forbindelsen kunne ikke omdøbes"
252
+ }
253
+ },
254
+ "settingsHub": {
255
+ "title": "Arbejdsområdeindstillinger",
256
+ "subtitle": "Identitet, sikkerhed og destruktive handlinger for dette arbejdsområde.",
257
+ "save": "Gem ændringer",
258
+ "saved": "Arbejdsområdeindstillinger opdateret",
259
+ "saveFailed": "Arbejdsområdeindstillingerne kunne ikke gemmes. Prøv igen.",
260
+ "superAdminOnlyTitle": "Superadmin påkrævet",
261
+ "superAdminOnly": "Kun en superadmin kan ændre arbejdsområdets identitet og sikkerhedsindstillinger.",
262
+ "identity": {
263
+ "heading": "Arbejdsområdets identitet",
264
+ "appName": {
265
+ "label": "Applikationsnavn",
266
+ "helper": "Vises i sidepanelet, browsertitlen og e-mails.",
267
+ "error": "Angiv et navn på højst 60 tegn."
268
+ },
269
+ "logo": {
270
+ "label": "Logo",
271
+ "drop": "Slip et billede her",
272
+ "helper": "PNG, JPEG, WebP, GIF eller SVG på op til 1 MB. Erstatter det indbyggede mærke overalt.",
273
+ "upload": "Upload logo",
274
+ "replace": "Erstat logo",
275
+ "remove": "Fjern",
276
+ "uploaded": "Logo opdateret",
277
+ "removed": "Logo fjernet",
278
+ "tooLarge": "Billedet er større end 1 MB.",
279
+ "badType": "Vælg et PNG-, JPEG-, WebP-, GIF- eller SVG-billede.",
280
+ "undo": "Fortryd"
281
+ },
282
+ "showVersion": {
283
+ "label": "Version i sidepanelet",
284
+ "helper": "Buildnummeret ved siden af logoet. Slået fra skjuler, hvilken version du kører."
285
+ }
286
+ },
287
+ "security": {
288
+ "heading": "Sikkerhed",
289
+ "require2fa": {
290
+ "label": "Kræv tofaktorgodkendelse",
291
+ "desc": "Alle medlemmer skal aktivere 2FA for at logge ind.",
292
+ "note": "Vejledende, ikke en spærring: medlemmer uden 2FA sendes til opsætningen og kan ikke slå den fra igen, men deres login blokeres aldrig, og API-nøgler er ikke omfattet."
293
+ },
294
+ "allowSignup": {
295
+ "label": "Tillad selvregistrering",
296
+ "desc": "Alle kan oprette en konto — slået fra er arbejdsområdet kun på invitation."
297
+ },
298
+ "sessionTtl": {
299
+ "label": "Sessionslevetid (timer)",
300
+ "error": "Mellem {min, number} og {max, number} timer."
301
+ },
302
+ "passwordMin": {
303
+ "label": "Minimal adgangskodelængde",
304
+ "error": "Mellem {min, number} og {max, number} tegn."
305
+ }
306
+ },
307
+ "email": {
308
+ "heading": "E-mail (SMTP)",
309
+ "unconfigured": "Der er ikke opsat nogen mailserver, så Adminium kan ikke sende nulstilling af adgangskode, invitationer eller planlagte rapporter.",
310
+ "host": {
311
+ "label": "SMTP-vært",
312
+ "error": "Kun et værtsnavn eller en IP-adresse — uden skema, port eller loginoplysninger."
313
+ },
314
+ "port": {
315
+ "label": "Port",
316
+ "error": "Mellem {min, number} og {max, number}."
317
+ },
318
+ "user": {
319
+ "label": "Brugernavn",
320
+ "helper": "Lad feltet stå tomt, hvis relayet ikke kræver login."
321
+ },
322
+ "pass": {
323
+ "label": "Adgangskode",
324
+ "helper": "Gemmes krypteret og vises aldrig igen. Lad feltet stå tomt for at beholde den nuværende.",
325
+ "error": "Dette brugernavn kræver en adgangskode."
326
+ },
327
+ "from": {
328
+ "label": "Afsenderadresse",
329
+ "helper": "Kun adressen, eller et visningsnavn foran den.",
330
+ "error": "Indtast en e-mailadresse."
331
+ },
332
+ "secure": {
333
+ "label": "Implicit TLS",
334
+ "helper": "Til på port 465. Fra starter i klartekst og skifter med STARTTLS, som port 587 forventer."
335
+ },
336
+ "remove": "Fjern mailserver",
337
+ "review": {
338
+ "removed": "Fjernet",
339
+ "password": "Erstattet"
340
+ }
341
+ },
342
+ "review": {
343
+ "title": "Gem arbejdsområdeindstillinger",
344
+ "subtitle": "Gennemgå dine ændringer, før du gemmer.",
345
+ "confirm": "Gem ændringer",
346
+ "cancel": "Annuller",
347
+ "close": "Luk",
348
+ "on": "Til",
349
+ "off": "Fra",
350
+ "shown": "Vist",
351
+ "hidden": "Skjult",
352
+ "change": "{before} → {after}"
353
+ },
354
+ "defaultsCard": {
355
+ "heading": "Standarder for udseende og sprog",
356
+ "body": "Tema, accentfarve, tæthed og sprog for hele arbejdsområdet findes under globale standarder.",
357
+ "cta": "Åbn globale standarder"
358
+ },
359
+ "danger": {
360
+ "heading": "Farezone",
361
+ "subtitle": "Uigenkaldelige handlinger.",
362
+ "empty": "Intet at slette — ingen forbindelser endnu.",
363
+ "deleteDesc": "Sletter forbindelsen og de genererede sider. Din database røres ikke. Kan ikke fortrydes.",
364
+ "deleteCta": "Slet forbindelse"
365
+ },
366
+ "aiCard": {
367
+ "heading": "AI-berigelse",
368
+ "body": "Konfigurér en AI-udbyder (eller kopiér-indsæt-turen) for at berige etiketter, grupper og relationer.",
369
+ "cta": "Åbn AI-indstillinger"
370
+ },
371
+ "pagesCard": {
372
+ "heading": "Sider",
373
+ "body": "Tilføj, rediger og slet sider, skift hvad hver enkelt viser, og omarranger sidepanelet.",
374
+ "cta": "Administrer sider"
375
+ },
376
+ "translationsCard": {
377
+ "heading": "Sprog og oversættelser",
378
+ "body": "Omformulér hvad som helst i Adminium, vælg hvilke sprog folk kan vælge, og tilføj dine egne.",
379
+ "cta": "Åbn oversættelser"
380
+ }
381
+ },
382
+ "settingsAi": {
383
+ "title": "AI-berigelse",
384
+ "subtitle": "Forbind en model, så Adminium kan foreslå etiketter, grupper, relationer og mere — altid gennemgået som en diff, før noget anvendes.",
385
+ "saved": "AI-udbyder gemt",
386
+ "saveFailed": "AI-udbyderen kunne ikke gemmes. Prøv igen.",
387
+ "save": "Gem udbyder",
388
+ "test": "Test forbindelse",
389
+ "testHintDirty": "Gem dine ændringer, før du tester.",
390
+ "testing": "Kontakter udbyderen…",
391
+ "testError": "Testen mislykkedes",
392
+ "testErrorBody": "Kunne ikke nå udbyderen. Tjek nøglen og basis-URL.",
393
+ "testOk": "Forbundet til {model} på {latency} ms",
394
+ "testUnknownModel": "udbyderen",
395
+ "provider": {
396
+ "heading": "AI-udbyder",
397
+ "subtitle": "Vælg, hvordan Adminium når en model til at berige dit skema. Nøgler gemmes krypteret og vises aldrig igen.",
398
+ "active": "Aktiv",
399
+ "anthropic": {
400
+ "label": "Anthropic",
401
+ "desc": "Claude-modeller via Anthropic-API’en."
402
+ },
403
+ "openai": {
404
+ "label": "OpenAI",
405
+ "desc": "GPT-modeller via OpenAI-API’en."
406
+ },
407
+ "openaiCompatible": {
408
+ "label": "OpenAI-kompatibel",
409
+ "desc": "Ethvert endpoint, der taler OpenAI-formatet — Groq, Together, vLLM, LM Studio."
410
+ },
411
+ "ollama": {
412
+ "label": "Ollama (lokal)",
413
+ "desc": "Modeller kører lokalt via Ollama — ingen nøgle, ingen sky."
414
+ },
415
+ "requiresNetwork": "Kræver internet og en API-nøgle",
416
+ "networkDisabledTitle": "Direkte AI-udbydere er slået fra i denne installation",
417
+ "networkDisabledBody": "Dette Adminium er konfigureret uden udgående internetadgang og kan ikke nå en udbyder-API. Brug kopier-indsæt-turen nedenfor — den kræver hverken nøgle eller netværk."
418
+ },
419
+ "configure": {
420
+ "heading": "Konfigurér {provider}"
421
+ },
422
+ "field": {
423
+ "baseUrl": "Basis-URL",
424
+ "baseUrlOptional": "Lad stå, medmindre Ollama kører på en anden vært.",
425
+ "baseUrlHelper": "Endpoint-roden, der leverer /chat/completions.",
426
+ "model": "Model",
427
+ "modelFreeText": "Indtast det præcise model-id, dit endpoint leverer.",
428
+ "modelLive": "Indlæst live fra udbyderen.",
429
+ "modelStatic": "En gennemprøvet liste; skriv et brugerdefineret id efter at have gemt for at opdatere den.",
430
+ "modelLoading": "Indlæser…",
431
+ "modelPlaceholder": "Vælg en model…",
432
+ "key": "API-nøgle",
433
+ "keyStored": "Gemt krypteret. Erstat den for at bruge en anden nøgle.",
434
+ "keyMask": "sk-…{last4}",
435
+ "keyReplace": "Erstat nøgle",
436
+ "keyOptional": "Valgfri — nogle endpoints kræver ingen nøgle.",
437
+ "keyWriteOnly": "Kun skrivning: når den er gemt, vises den aldrig igen.",
438
+ "noKeyTitle": "Ingen API-nøgle nødvendig",
439
+ "noKeyBody": "Ollama kører lokalt, så intet forlader denne maskine."
440
+ },
441
+ "runStatus": {
442
+ "draft": "Kladde",
443
+ "running": "Kører",
444
+ "awaitingResponse": "Afventer svar",
445
+ "validated": "Valideret",
446
+ "applied": "Anvendt",
447
+ "partiallyApplied": "Delvist anvendt",
448
+ "failed": "Mislykkedes",
449
+ "discarded": "Kasseret"
450
+ },
451
+ "byo": {
452
+ "heading": "Ingen nøgle? Brug dit eget AI-værktøj",
453
+ "subtitle": "Kopiér-indsæt-turen — intet forlader denne maskine.",
454
+ "body": "Studio kan generere en selvstændig prompt ud fra dit skema. Kør den i Claude Code, ChatGPT eller et hvilket som helst værktøj, og indsæt derefter den returnerede JSON tilbage i forbindelsesguiden. Samme validering, samme gennemgang, samme resultat som den direkte vej.",
455
+ "guaranteeTitle": "Telemetrifri garanti",
456
+ "guarantee1": "Prompten indeholder kun dit skema og aggregeret statistik — aldrig rækkedata som standard.",
457
+ "guarantee2": "Ingen legitimationsoplysninger, instans-URL eller identifikatorer er indlejret.",
458
+ "guarantee3": "BYO-kørsler foretager ingen netværkskald.",
459
+ "promptVersion": "Prompt {version}",
460
+ "schemaVersion": "Skema {version}",
461
+ "headingRecommended": "Brug dit eget AI-værktøj — ingen nøgle nødvendig",
462
+ "recommended": "Anbefalet"
463
+ },
464
+ "history": {
465
+ "heading": "Kørselshistorik",
466
+ "subtitle": "Tidligere berigelseskørsler. Åbn en for at gennemgå dens forslag.",
467
+ "tableLabel": "Berigelseskørsler",
468
+ "colDate": "Dato",
469
+ "colSource": "Kilde",
470
+ "colStatus": "Status",
471
+ "colChunks": "Blokke",
472
+ "openReview": "Åbn gennemgang for kørslen fra {date}",
473
+ "connection": "Forbindelse",
474
+ "empty": "Ingen berigelseskørsler endnu. Berig et skema fra forbindelsesguiden for at se historik her.",
475
+ "errorTitle": "Kunne ikke indlæse kørsler",
476
+ "errorBody": "Genindlæs siden for at prøve igen.",
477
+ "noConnections": "Forbind først en database — berigelseskørsler registreres pr. forbindelse.",
478
+ "byo": "BYO",
479
+ "directPath": "Direkte"
480
+ }
481
+ },
482
+ "enrich": {
483
+ "title": "Berig med AI",
484
+ "subtitle": "Forfin eventuelt de genererede etiketter, grupper, enums og dashboards med en LLM. Det heuristiske grundlag fungerer uden — dette tilføjer kun forslag, som du gennemgår, før noget anvendes.",
485
+ "intentLabel": "Hvordan vil du berige?",
486
+ "sectionsLegend": "Hvad skal AI’en beslutte?",
487
+ "localesLegend": "Oversæt etiketter til",
488
+ "localeLocked": "(påkrævet)",
489
+ "samplingTitle": "Inkludér eksempelværdier",
490
+ "samplingHint": "Inkluderer op til 20 rigtige værdier pr. ikke-PII-kolonne i prompten.",
491
+ "samplingPreviewTitle": "Hvad forlader denne maskine",
492
+ "samplingPreviewBody": "Op til 20 hyppigste værdier pr. ikke-PII-kolonne, plus min/maks for numeriske og datokolonner. PII-markerede kolonner udtages aldrig. Alt andet forbliver kun aggregeret. Gennemgå den præcise prompt før kopiering (BYO) — intet sendes uden din handling.",
493
+ "noSections": "Vælg mindst én beslutningsgruppe at berige.",
494
+ "generatePrompt": "Generér prompt",
495
+ "startProvider": "Start berigelse",
496
+ "startOver": "Start forfra",
497
+ "copied": "Kopieret",
498
+ "createFailed": "Berigelsesprompten kunne ikke bygges — prøv igen.",
499
+ "createFailedTitle": "Kunne ikke starte",
500
+ "providerFallback": "din AI-udbyder",
501
+ "fileTitle": "AI-berigelse kræver en live-database",
502
+ "fileBody": "Skemafil-kilder har endnu ikke et snapshot at berige. Forbind en live-database for at bruge AI-berigelse, eller fortsæt — det heuristiske grundlag genererer stadig en komplet app.",
503
+ "section": {
504
+ "labels": "Etiketter og beskrivelser",
505
+ "groups": "Navigationsgrupper",
506
+ "enums": "Enum-semantik",
507
+ "relations": "Relationer",
508
+ "keys": "Nøglekolonner",
509
+ "templates": "Sideskabeloner",
510
+ "widgets": "Dashboard-widgets",
511
+ "pii": "PII og maskering",
512
+ "icons": "Ikoner",
513
+ "microcopy": "Mikrotekst"
514
+ },
515
+ "provider": {
516
+ "title": "Brug min AI-udbyder",
517
+ "description": "Kør berigelsen nu mod din konfigurerede udbyder. Du gennemgår hvert forslag som en diff.",
518
+ "unconfigured": "Der er endnu ikke konfigureret nogen AI-udbyder — kopiér en prompt til dit eget værktøj nedenfor, eller konfigurér først en udbyder.",
519
+ "settingsHint": "Vil du køre den direkte?",
520
+ "settingsLink": "Konfigurér en udbyder i Indstillinger → AI",
521
+ "networkDisabled": "Dette Adminium har ingen udgående internetadgang og kan ikke nå en udbyder-API. Brug kopier-indsæt-turen i stedet — samme prompt, samme gennemgang."
522
+ },
523
+ "byo": {
524
+ "cardTitle": "Kopiér en prompt til mit eget AI-værktøj",
525
+ "cardDescription": "Kopiér en selvstændig prompt ind i Claude Code, ChatGPT, hvad som helst — og indsæt så JSON’en tilbage. Ingen nøgle nødvendig, intet forlader denne maskine automatisk.",
526
+ "guidance": "Kør dette i et hvilket som helst AI-værktøj — Claude Code, ChatGPT, hvad som helst. Indsæt den returnerede JSON nedenfor.",
527
+ "promptLabel": "Berigelsesprompt",
528
+ "promptLabelN": "Berigelsesprompt {index} af {total}",
529
+ "tokenChip": "≈ {tokens} tokens",
530
+ "copyPrompt": "Kopiér prompt",
531
+ "copyPromptDone": "Prompt kopieret",
532
+ "download": "Download .md",
533
+ "chunkTabs": "Prompt-dele",
534
+ "chunkTab": "Prompt {index}",
535
+ "chunkValid": "Del {index} valideret",
536
+ "pasteLabel": "Indsæt JSON-svaret",
537
+ "pastePlaceholder": "Indsæt JSON-svaret her…",
538
+ "validate": "Validér",
539
+ "valid": "Svar valideret",
540
+ "mergedTitle": "Alle {count} dele valideret og flettet",
541
+ "mergedTitleSingle": "Svar valideret",
542
+ "mergedBody": "Forslagene er klar til gennemgang mod det heuristiske grundlag.",
543
+ "errorsTitle": "Valideringen fandt {count} problemer",
544
+ "copyErrors": "Kopiér fejl til dit AI-værktøj",
545
+ "copyErrorsDone": "Fejl kopieret",
546
+ "copyErrorsHint": "Indsæt dette tilbage i dit AI-værktøj for at få et rettet svar.",
547
+ "droppedItems": "{count} forslag blev frasorteret under valideringen — gennemgangen viser resten.",
548
+ "pendingTitle": "Validér hver prompt for at fortsætte",
549
+ "pendingBody": "Indsæt JSON-svaret ovenfor og validér det for at fortsætte til gennemgang.",
550
+ "pendingBodyChunked": "Hver del skal valideres, før forslagene flettes. Indsæt og validér hver prompt ovenfor.",
551
+ "requestFailed": "Kunne ikke nå serveren for at validere — prøv igen.",
552
+ "continueReview": "Fortsæt til gennemgang",
553
+ "wholeDocument": "hele dokumentet",
554
+ "cardTitleRecommended": "Kopiér en prompt til mit eget AI-værktøj — anbefalet"
555
+ },
556
+ "direct": {
557
+ "title": "Beriger med AI",
558
+ "subtitle": "Sender dit skema til",
559
+ "building": "Bygger prompt…",
560
+ "logLabel": "Berigelseslog",
561
+ "cancel": "Annullér",
562
+ "back": "Tilbage til valg",
563
+ "retry": "Prøv igen",
564
+ "done": "Berigelse fuldført — gennemgå forslagene.",
565
+ "continueReview": "Fortsæt til gennemgang",
566
+ "failed": "Udbyderkørslen mislykkedes. Tjek dine AI-indstillinger, og prøv igen.",
567
+ "jobFailed": "Berigelseskørslen blev ikke fuldført.",
568
+ "startFailed": "Kunne ikke starte kørslen — prøv igen.",
569
+ "errorTitle": "Berigelse mislykkedes"
570
+ },
571
+ "skip": {
572
+ "title": "Spring over — brug kun heuristik",
573
+ "description": "Generér fra det heuristiske grundlag. Du kan berige senere fra Indstillinger → AI — at springe over straffes aldrig.",
574
+ "confirmTitle": "Fortsætter med heuristik",
575
+ "confirmBody": "Den genererede app vil bruge de heuristiske etiketter, grupper og dashboards. Fortsæt for at generere — du kan køre AI-berigelse når som helst fra Indstillinger → AI."
576
+ }
577
+ },
578
+ "review": {
579
+ "unavailableTitle": "Gennemgangsskærm ikke tilgængelig",
580
+ "unavailableBody": "Denne build indeholder endnu ikke berigelsens gennemgangsskærm (06-T14). Den kommer med diff-og-anvend-flowet."
581
+ },
582
+ "llmRuns": {
583
+ "review": {
584
+ "header": {
585
+ "title": "Gennemgå AI-forslag",
586
+ "model": "Model",
587
+ "snapshot": "Øjebliksbillede",
588
+ "byo": "BYO",
589
+ "pathDirect": "Direkte API",
590
+ "pathByo": "Kopiér-indsæt",
591
+ "agree": "{n} enige",
592
+ "conflict": "{n} konflikt",
593
+ "new": "{n} nye",
594
+ "rejects": "{n} afvisninger",
595
+ "countsAria": "Antal forslag"
596
+ },
597
+ "bulk": {
598
+ "thresholdLabel": "Tillidstærskel",
599
+ "thresholdAria": "Tillidstærskel for “Accepter alle”",
600
+ "acceptAll": "Accepter alle ≥ {pct}%",
601
+ "clear": "Ryd markering"
602
+ },
603
+ "section": {
604
+ "selectAllAria": "Vælg alle i {group}",
605
+ "acceptedCount": "{n} accepteret"
606
+ },
607
+ "group": {
608
+ "labels": "Etiketter og oversættelser",
609
+ "navigation": "Navigation og domæner",
610
+ "enums": "Enum-semantik",
611
+ "relations": "Relationer",
612
+ "keys": "Nøglekolonner",
613
+ "templates": "Sideskabeloner",
614
+ "dashboards": "Dashboards og widgets",
615
+ "pii": "Personoplysninger og maskering",
616
+ "icons": "Ikoner",
617
+ "microcopy": "Mikrotekst"
618
+ },
619
+ "status": {
620
+ "agree": "Stemmer overens",
621
+ "conflict": "Konflikt",
622
+ "new": "Ny",
623
+ "heuristicOnly": "Kun heuristik",
624
+ "rejects": "Afviser heuristik",
625
+ "locked": "Låst"
626
+ },
627
+ "row": {
628
+ "acceptAria": "Accepter {noun}-forslag for {target}",
629
+ "keptEdited": "bevaret – redigeret af dig",
630
+ "rejectsCallout": "AI’en afviser en heuristisk beslutning – bekræft før accept.",
631
+ "showTranslations": "Vis oversættelser",
632
+ "hideTranslations": "Skjul oversættelser",
633
+ "confidenceAria": "Tillid {pct}%",
634
+ "noAi": "Intet AI-forslag"
635
+ },
636
+ "value": {
637
+ "none": "Ingen værdi",
638
+ "absent": "Ingen",
639
+ "dash": "—",
640
+ "display": "Visning",
641
+ "key": "Nøgle",
642
+ "rank": "rang {n}",
643
+ "span": "bredde {n}",
644
+ "tableCount": "{n} tabeller",
645
+ "widgetCount": "{n} widgets",
646
+ "enumWorkflow": "Arbejdsgang",
647
+ "enumCategory": "Kategori",
648
+ "notPii": "Ikke personoplysninger",
649
+ "label": "Etiket",
650
+ "description": "Beskrivelse",
651
+ "subtitle": "Sideundertekst",
652
+ "headline": "Overskrift for tom tilstand",
653
+ "guidance": "Vejledning for tom tilstand"
654
+ },
655
+ "apply": {
656
+ "title": "Anvend {n} forslag",
657
+ "subtitle": "Disse ændringer skrives i én transaktion og kan fortrydes.",
658
+ "empty": "Intet valgt at anvende.",
659
+ "confirm": "Anvend ændringer"
660
+ },
661
+ "footer": {
662
+ "count": "{n} forslag valgt",
663
+ "apply": "Anvend {n} accepterede forslag",
664
+ "failed": "Anvendelse mislykkedes"
665
+ },
666
+ "toast": {
667
+ "applied": "Anvendte {n} forslag",
668
+ "appliedPartial": "Anvendte {n} forslag (nogle sprunget over)",
669
+ "applyFailed": "Kunne ikke anvende forslag",
670
+ "undoFailed": "Kunne ikke fortryde denne ændring"
671
+ },
672
+ "error": {
673
+ "title": "Kunne ikke indlæse denne kørsel"
674
+ },
675
+ "notReady": {
676
+ "title": "Denne kørsel har endnu ingen forslag til gennemgang",
677
+ "body": "En kørsel skal være valideret, før dens forslag kan gennemgås. Generér eller indsæt et svar først."
678
+ },
679
+ "applied": {
680
+ "title": "Denne kørsel er blevet anvendt",
681
+ "body": "De accepterede forslag nedenfor er skrivebeskyttede."
682
+ },
683
+ "empty": {
684
+ "title": "Ingen forslag",
685
+ "body": "Denne kørsel gav ingen forslag til gennemgang."
686
+ },
687
+ "cat": {
688
+ "label": "etiket",
689
+ "key": "nøglekolonner",
690
+ "enum": "enum",
691
+ "relation": "relation",
692
+ "pii": "personoplysninger",
693
+ "template": "sideskabelon",
694
+ "group": "navigationsgruppe",
695
+ "dashboard": "dashboard",
696
+ "widget": "widget",
697
+ "copy": "mikrotekst"
698
+ }
699
+ }
700
+ },
701
+ "wizard": {
702
+ "title": "Ny forbindelse",
703
+ "back": "Tilbage",
704
+ "continue": "Fortsæt",
705
+ "progress": "Opsætningsforløb",
706
+ "persistFailed": "Dit tabelvalg kunne ikke gemmes — prøv igen.",
707
+ "persistFailedTitle": "Kunne ikke gemme",
708
+ "bridgeAppliedTitle": "Forbindelsesstreng modtaget",
709
+ "bridgeAppliedBody": "Overdraget fra adminium.dev af din browser — den gik direkte til denne maskine og blev aldrig uploadet. Tjek den nedenfor, og fortsæt.",
710
+ "bridgeFailedTitle": "Denne overdragelse kunne ikke bruges",
711
+ "bridgeFailedBody": "Den er allerede brugt eller udløbet. Indsæt i stedet din forbindelsesstreng nedenfor.",
712
+ "step": {
713
+ "source": "Kilde",
714
+ "test": "Analysér",
715
+ "tables": "Tabeller",
716
+ "meta": "Metalagring",
717
+ "intent": "Formål",
718
+ "enrich": "Berig",
719
+ "generate": "Generér"
720
+ }
721
+ },
722
+ "meta": {
723
+ "title": "Hvor skal Adminium gemme sine egne tabeller?",
724
+ "subtitle": "Sider, roller, auditlog og indstillinger bor i tabeller med adminium_-præfiks — aldrig blandet med dine data.",
725
+ "sameDb": {
726
+ "title": "Samme database",
727
+ "description": "adminium_*-tabeller oprettes ved siden af dine kildetabeller. Enkleste opsætning — kræver en rolle med skrive- og CREATE TABLE-rettigheder.",
728
+ "disabledReadOnly": "Din rolle er skrivebeskyttet — Adminium skriver aldrig til denne database. Vælg en separat database til Adminiums egne tabeller.",
729
+ "disabledNoDdl": "Denne rolle kan ikke køre DDL — Adminium-migreringer kræver CREATE TABLE. Vælg en separat database til Adminiums egne tabeller.",
730
+ "disabledFile": "En skemafil har ingen live database — vælg en separat database til Adminiums egne tabeller."
731
+ },
732
+ "separate": {
733
+ "title": "Separat database",
734
+ "description": "Adminium holder sine tabeller i en anden database. Din kilde forbliver urørt — påkrævet for skrivebeskyttede kilder.",
735
+ "dsn": "Forbindelsesstreng til metadatabasen",
736
+ "helper": "Kræver skrive- + DDL-rettigheder — Adminium kører sine egne migreringer dér.",
737
+ "test": "Test forbindelse",
738
+ "ok": "Kompatibel — skrivning ✓ · DDL ✓",
739
+ "insufficient": "Denne rolle kan ikke huse metalageret — Adminium behøver skrive- og CREATE TABLE-rettigheder dér.",
740
+ "errorTitle": "Metalager ikke kompatibelt"
741
+ },
742
+ "testFailed": "Forbindelsen mislykkedes.",
743
+ "v1Note": {
744
+ "title": "Om denne installation",
745
+ "body": "Denne server gemmer allerede sine egne tabeller i en konfigureret database, og dette trin flytter dem ikke. Det validerer, at dit valg er kompatibelt med denne forbindelse — serveren håndhæver den samme regel uafhængigt (409 META_PLACEMENT_INVALID)."
746
+ },
747
+ "move": {
748
+ "title": "Flytter Adminiums tabeller",
749
+ "copying": "Flytter Adminiums tabeller …",
750
+ "restarting": "Genstarter …",
751
+ "copyingBody": "Kopierer hver adminium_-tabel til den nye database. Dine kildedata røres ikke, og der skiftes først over, når kopien er verificeret.",
752
+ "restartingBody": "Kopien er færdig. Adminium genstarter på den nye database — denne side fortsætter af sig selv om få sekunder.",
753
+ "failed": "Kunne ikke flytte Adminiums tabeller — prøv igen.",
754
+ "timeout": "Adminium flyttede sine tabeller, men er ikke kommet tilbage endnu. Dine data er sikre i den nye database — genindlæs siden om et øjeblik."
755
+ },
756
+ "willMove": {
757
+ "title": "Dette flytter Adminiums tabeller",
758
+ "body": "Adminium bruger i øjeblikket sit indbyggede SQLite-lager. Fortsæt kopierer det lager til den valgte database og genstarter på den — konti, sider og indstillinger følger med, så du forbliver logget ind."
759
+ }
760
+ },
761
+ "intent": {
762
+ "title": "Hvad har du brug for?",
763
+ "subtitle": "Formålet afgør, hvilke sider der genereres. Du kan ændre det senere — en ændring foreslår en regenerering, aldrig en stille omskrivning.",
764
+ "trust": "Vi læser kun dit skema — aldrig dine rækkedata under opsætningen.",
765
+ "fullAdmin": {
766
+ "title": "Fuldt adminpanel",
767
+ "description": "Dashboards, CRUD-sider, søgning, import og eksport — alt hvad dit skema understøtter."
768
+ },
769
+ "analytics": {
770
+ "title": "Skrivebeskyttet analyse",
771
+ "description": "Dashboards, diagrammer og skrivebeskyttede tabeller. Ingen formularer, ingen skrivninger — hver rolle begrænset til Fremviser."
772
+ },
773
+ "crud": {
774
+ "title": "CRUD-tabeller",
775
+ "description": "Én redigeringsside pr. tabel plus søgning og import/eksport — et minimalt hjem, ingen dashboards."
776
+ },
777
+ "support": {
778
+ "title": "Supportkonsol",
779
+ "description": "Køer, ticket- og kundedetaljesider først. Sletning slået fra som standard. (Kø-skabeloner lander i M7 — v1-sidesættet svarer til fuldt admin.)"
780
+ }
781
+ },
782
+ "generate": {
783
+ "title": "Generér din app",
784
+ "subtitle": "Én side pr. medtaget tabel plus dashboards pr. domæne — formål:",
785
+ "run": "Generér dashboard",
786
+ "openApp": "Åbn din app",
787
+ "logLabel": "Genereringslog",
788
+ "log": {
789
+ "classifying": "Klassificerer skema…",
790
+ "composing": "Sammensætter skabeloner…",
791
+ "writing": "Skriver sider…",
792
+ "done": "{pages} sider genereret på tværs af {groups} navigationsgrupper"
793
+ },
794
+ "successTitle": "Dit dashboard er klar",
795
+ "successBody": "{pages} sider i {groups} navigationsgrupper — genereret fra dit skema, redigerbare i Studio.",
796
+ "errorTitle": "Generering mislykkedes",
797
+ "failed": "Generering mislykkedes — prøv igen, eller kør introspektionen igen først.",
798
+ "fileTitle": "Skemafil fortolket — generering kræver en live database",
799
+ "fileBody": "Dit skema blev fortolket rent, og forhåndsvisningen ovenfor er ægte. Generering af en kørende app direkte fra en skemafil (med pladsholderrækker) er ikke tilgængelig endnu — forbind en live database for at generere i dag."
800
+ },
801
+ "remap": {
802
+ "column": {
803
+ "nullable": "kan være NULL",
804
+ "labelOverride": "Visningsetiket",
805
+ "labelHelper": "Udledt: {name}",
806
+ "logicalType": "Logisk type",
807
+ "logicalTypeHelper": "Udledt: {type} (fra {dbType}) — kortlagt af adapteren; kan ikke tilsidesættes i v1.",
808
+ "semantic": "Semantisk type",
809
+ "unclassified": "Endnu ikke klassificeret.",
810
+ "semanticHelper": "Klassifikator: {tag} · {confidence}% tillid · kilde: {source}",
811
+ "semanticInferred": "udledt: {tag}",
812
+ "currency": "Valuta",
813
+ "currencyHelper": "ISO 4217-kode anvendt på beløbsformatering.",
814
+ "pii": "Maskér som standard",
815
+ "piiHelper": "Maskerede værdier vises slørede; afmaskering kræver tilladelsen data.unmask_pii og logges i auditloggen.",
816
+ "enum": "Enum-semantik",
817
+ "enumKind": "Enum-art",
818
+ "enumWorkflow": "Arbejdsgang",
819
+ "enumCategory": "Kategori",
820
+ "enumLabelFor": "Etiket for {value}",
821
+ "enumToneFor": "Tone for {value}",
822
+ "enumToneAuto": "auto",
823
+ "enumHelper": "Arbejdsgangs-enums driver statusmærker og tavlekolonner; toner knytter værdierne til den semantiske farvetoneskala."
824
+ },
825
+ "diff": {
826
+ "one": "1 ændring",
827
+ "count": "{count} ændringer",
828
+ "saved": "Tilsidesættelser gemt.",
829
+ "revertOne": "Fortryd {change}",
830
+ "regenerate": "Regenerér sider",
831
+ "revertAll": "Fortryd alle",
832
+ "save": "Gem tilsidesættelser"
833
+ },
834
+ "table": {
835
+ "iconPicker": "Tabelikon",
836
+ "system": "System",
837
+ "labelOverride": "Visningsetiket",
838
+ "labelHelper": "Udledt: {name}",
839
+ "icon": "Ikon",
840
+ "navGroup": "Navigationsgruppe",
841
+ "navGroupHelper": "Navigationsplaceringen bestemmes af generatoren — en table.navGroup-tilsidesættelse er ikke en del af v1-vokabularet.",
842
+ "include": "Medtag i den genererede app",
843
+ "includeHelper": "Udeladte tabeller får ingen sider og forsvinder fra navigationen.",
844
+ "shape": "Tabelform (klassificeret)",
845
+ "role": "Rolle",
846
+ "unclassified": "Ikke klassificeret",
847
+ "kind": "Art",
848
+ "hierarchy": "Hierarki",
849
+ "selfFk": "Selvreference via {column}",
850
+ "polymorphic": "Polymorfe par",
851
+ "rows": "Rækkeestimat",
852
+ "shapeHelper": "Klassificeringen genberegnes ved hver introspektion; tilsidesættelser lægges ovenpå og overlever regenerering."
853
+ },
854
+ "relations": {
855
+ "declared": "Deklarerede fremmednøgler",
856
+ "noneDeclared": "Ingen deklarerede fremmednøgler berører denne tabel.",
857
+ "inferred": "Udledte relationer",
858
+ "noneInferred": "Intet udledt for denne tabel.",
859
+ "confidence": "udledt · {pct}%",
860
+ "accepted": "Accepteret",
861
+ "suppressed": "Undertrykt",
862
+ "accept": "Accepter",
863
+ "suppress": "Undertryk",
864
+ "overrides": "Relationer fra tilsidesættelser (anvendt)",
865
+ "overrideBadge": "tilsidesættelse",
866
+ "add": "Tilføj virtuel relation",
867
+ "fromColumn": "Fra kolonne",
868
+ "noColumns": "Ingen matchende kolonne",
869
+ "fromPlaceholder": "customer_id",
870
+ "toTable": "Til tabel",
871
+ "noTables": "Ingen matchende tabel",
872
+ "toColumn": "Til kolonne",
873
+ "cardinality": "Kardinalitet",
874
+ "addButton": "Tilføj relation"
875
+ },
876
+ "toast": {
877
+ "saved": "Skema-tilsidesættelser gemt",
878
+ "savedDetail": "Det anvendte skema nedenfor afspejler dine ændringer.",
879
+ "regenerated": "{created} oprettet · {updated} opdateret · {unchanged} uændret",
880
+ "regeneratedDetail": "Sider, du har redigeret i hånden, bevares — kun sider med en urørt generated_hash blev regenereret på stedet.",
881
+ "regenerateFailed": "Regenerering mislykkedes"
882
+ },
883
+ "title": "Skema-ommapning",
884
+ "subtitle": "{tables} tabeller · {applied} tilsidesættelser anvendt",
885
+ "saveFailed": "Lagring mislykkedes: {message}",
886
+ "loadFailed": "Kunne ikke indlæse skemaet for denne forbindelse.",
887
+ "inspector": "Inspektør",
888
+ "empty": {
889
+ "title": "Vælg en tabel eller kolonne",
890
+ "description": "Vælg noget i skematræet for at ommappe dets etiket, type, relationer eller maskering."
891
+ },
892
+ "tabs": {
893
+ "details": "Detaljer",
894
+ "relations": "Relationer"
895
+ },
896
+ "tree": {
897
+ "label": "Skema",
898
+ "search": "Søg i tabeller og kolonner",
899
+ "searchPlaceholder": "Søg i tabeller…",
900
+ "noMatches": "Ingen tabeller matcher din søgning.",
901
+ "collapse": "Fold tabel sammen",
902
+ "expand": "Fold tabel ud",
903
+ "unsaved": "Ugemt ændring",
904
+ "excluded": "Udeladt"
905
+ },
906
+ "badge": {
907
+ "pk": "PK",
908
+ "fk": "FK",
909
+ "unique": "UNIK",
910
+ "pii": "PII",
911
+ "masked": "Maskeret"
912
+ },
913
+ "unavailableTitle": "Editor til skema-ommapning ikke tilgængelig",
914
+ "unavailableBody": "Dette build indeholder endnu ikke ommapnings-editoren (09-T12). Kør genereringen igen, når den er kommet, for at ommappe etiketter, typer og relationer."
915
+ },
916
+ "publicApi": {
917
+ "error": "Something went wrong",
918
+ "scopes": {
919
+ "deleteTitle": "Delete this scope",
920
+ "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.",
921
+ "deletePrompt": "Type the scope name to confirm",
922
+ "deleteConfirm": "Delete scope",
923
+ "issuesTitle": "This scope did not compile",
924
+ "title": "Scopes",
925
+ "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.",
926
+ "emptyTitle": "No scopes yet",
927
+ "emptyBody": "Create one below. It is checked against your live schema before it is saved.",
928
+ "keyCount": "{count, plural, =0 {no keys} one {# key} other {# keys}}",
929
+ "delete": "Delete",
930
+ "nameLabel": "Name",
931
+ "connectionLabel": "Connection ID",
932
+ "documentLabel": "Scope document",
933
+ "documentHint": "Compiled against your schema when you save. Every column a caller can reach is listed here and nowhere else.",
934
+ "create": "Create scope",
935
+ "formLabel": "Create a scope"
936
+ },
937
+ "cancel": "Cancel",
938
+ "close": "Close",
939
+ "title": "Public API",
940
+ "subtitle": "Let your own customer- or staff-facing pages read this database, through a scope you define.",
941
+ "notRegistered": {
942
+ "title": "Not enabled on this server",
943
+ "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."
944
+ },
945
+ "toggle": {
946
+ "label": "Serve the public API",
947
+ "hint": "Turning this off stops every public request immediately. Nothing is deleted — keys, scopes and data all survive."
948
+ },
949
+ "origins": {
950
+ "label": "Origins allowed to call it"
951
+ },
952
+ "keys": {
953
+ "title": "Keys",
954
+ "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.",
955
+ "emptyTitle": "No keys yet",
956
+ "emptyBody": "Create a scope first, then mint a key for it.",
957
+ "reveal": "Show key",
958
+ "rotate": "Rotate",
959
+ "revoke": "Revoke",
960
+ "nameLabel": "Name",
961
+ "scopeLabel": "Scope",
962
+ "scopePlaceholder": "Choose a scope",
963
+ "create": "Create key",
964
+ "formLabel": "Create a key",
965
+ "scopeIsAuthTitle": "The scope is the only permission",
966
+ "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.",
967
+ "appLabel": "Tilknyt en hostet app-flade (valgfrit)",
968
+ "appHint": "Appens kundeflade serverer så selv denne nøgle — rotation kræver ingen ny build.",
969
+ "appNone": "Ikke tilknyttet"
970
+ },
971
+ "status": {
972
+ "heading": "Status"
973
+ }
974
+ },
975
+ "hostedApps": {
976
+ "title": "Hostede apps",
977
+ "subtitle": "De app-flader denne instans serverer — hvor hver enkelt vises, og hvilke domæner der peger på dem.",
978
+ "error": "Noget gik galt",
979
+ "emptyTitle": "Der serveres ingen app-flader",
980
+ "emptyBody": "Peg ADMINIUM_SURFACES_DIR på en mappe med byggede flader — én mappe pr. app og side, hver med sin index.html — og genstart. De serveres derefter under /apps/ og vises her.",
981
+ "surfaces": {
982
+ "title": "Flader",
983
+ "subtitle": "En medarbejderflade kan glide ind i dette dashboards sidepanel eller stå for sig selv; en kundeflade er offentlig og læser gennem sin tilknyttede nøgle.",
984
+ "staff": "Medarbejder",
985
+ "customer": "Kunde",
986
+ "noNav": "Intern placering utilgængelig — byg denne flade igen med det aktuelle toolkit, så den udsender surface.json.",
987
+ "noKey": "Ingen nøgle tilknyttet — denne flade kan ikke læse data, før der oprettes en til den.",
988
+ "mintLink": "Opret en under Offentligt API",
989
+ "boundKey": "Serverer nøgle",
990
+ "placementLabel": "Placering",
991
+ "placementInternal": "I sidepanelet (indlejret)",
992
+ "placementExternal": "Ekstern (kun egen URL)",
993
+ "connectionLabel": "Læser",
994
+ "connectionUnset": "Den der kører"
995
+ },
996
+ "domains": {
997
+ "title": "Domæner",
998
+ "subtitle": "Peg et domænes DNS på din proxy, send Host-headeren videre til Adminium, og tilknyt det her — værten serverer så fladen i stedet for dette dashboard. Certifikater bliver på din proxy.",
999
+ "issuesTitle": "Domænekortet blev afvist",
1000
+ "savedTitle": "Gemt",
1001
+ "savedBody": "Tilknytninger træder i kraft inden for få sekunder. En vært svarer først, når dens DNS og din proxy faktisk når denne instans.",
1002
+ "none": "Ingen domæner er tilknyttet.",
1003
+ "hostLabel": "Vært",
1004
+ "surfaceLabel": "Flade",
1005
+ "remove": "Fjern",
1006
+ "add": "Tilknyt et domæne",
1007
+ "save": "Gem domæner",
1008
+ "instanceLabel": "Instans",
1009
+ "instanceOwn": "Appens egen"
1010
+ },
1011
+ "instances": {
1012
+ "title": "Instanser",
1013
+ "body": "Server den samme app over flere databaser. Hver instans er tilgængelig på /apps/<app>/<segment>/<side>/ og læser kun den forbindelse, du giver den.",
1014
+ "appLabel": "App",
1015
+ "slugLabel": "URL-segment",
1016
+ "readsLabel": "Læser",
1017
+ "add": "Tilføj en instans",
1018
+ "save": "Gem instanser",
1019
+ "remove": "Fjern",
1020
+ "empty": "Ingen ekstra instanser.",
1021
+ "failed": "Instanserne blev ikke gemt"
1022
+ }
1023
+ },
1024
+ "addOns": {
1025
+ "plan": {
1026
+ "blocked": "This cannot be installed here",
1027
+ "needsColumns": "This add-on needs columns you do not have",
1028
+ "needsColumnsBody": "Adminium will not add columns to tables you already own. Add them yourself, then install.",
1029
+ "willCreate": "This will create tables in your database",
1030
+ "willCreateBody": "Installing creates these tables. Uninstalling later leaves them, and their data, alone.",
1031
+ "noData": "This add-on reads and writes no tables of its own.",
1032
+ "reuse": "This add-on will use tables you already have:"
1033
+ },
1034
+ "consent": {
1035
+ "title": "Install {name}",
1036
+ "subtitle": "What this add-on will do, before it can do it.",
1037
+ "close": "Close",
1038
+ "loading": "Working out what this would do…",
1039
+ "hosts": "Attach to",
1040
+ "cancel": "Cancel",
1041
+ "confirm": "Install"
1042
+ },
1043
+ "connect": {
1044
+ "apiKey": "API key",
1045
+ "submit": "Connect"
1046
+ },
1047
+ "title": "Add-ons",
1048
+ "subtitle": "Extra capabilities you can add to your apps — shipping, artwork, data. Each one says what it needs before you install it.",
1049
+ "error": "Something went wrong",
1050
+ "browse": {
1051
+ "title": "Available",
1052
+ "online": "Includes add-ons from the online catalogue. Checking for newer versions is a separate action.",
1053
+ "offline": "Showing the add-ons that came with this build. Browsing online is switched off, and nothing here has contacted the internet.",
1054
+ "refresh": "Check for newer",
1055
+ "emptyTitle": "No add-ons available",
1056
+ "emptyBody": "This build shipped none, and the online catalogue is off.",
1057
+ "bundled": "Included",
1058
+ "upgrade": "v{version} available",
1059
+ "download": "Download",
1060
+ "install": "Install",
1061
+ "discard": "Discard",
1062
+ "upgradeAction": "Upgrade",
1063
+ "toggle": "Browse the online catalogue"
1064
+ },
1065
+ "installed": {
1066
+ "title": "Installed",
1067
+ "emptyTitle": "Nothing installed yet",
1068
+ "emptyBody": "Install an add-on above and it will appear here with its hosts and connection.",
1069
+ "connected": "Connected",
1070
+ "notConnected": "Not connected",
1071
+ "egress": "May contact: {hosts}",
1072
+ "on": "on",
1073
+ "off": "off",
1074
+ "disconnect": "Disconnect",
1075
+ "uninstall": "Uninstall"
1076
+ },
1077
+ "confirm": {
1078
+ "close": "Close",
1079
+ "disconnectTitle": "Disconnect this add-on",
1080
+ "uninstallTitle": "Uninstall this add-on",
1081
+ "discardTitle": "Discard this download",
1082
+ "disconnectBody": "Its keys are deleted and it stops making calls. Every table and every row it created stays exactly as it is, and you can reconnect at any time.",
1083
+ "uninstallBody": "Its keys are deleted and its files are removed from this server. Every table and every row it created stays exactly as it is. You can install it again later.",
1084
+ "discardBody": "The downloaded files are deleted. Nothing was installed, so nothing else changes — you can download it again whenever you like.",
1085
+ "cancel": "Cancel",
1086
+ "disconnect": "Disconnect",
1087
+ "uninstall": "Uninstall",
1088
+ "discard": "Discard"
1089
+ },
1090
+ "upgradeNote": "Upgrading keeps the hosts an add-on is attached to and the connection it already has.",
1091
+ "job": {
1092
+ "title": "Downloading",
1093
+ "body": "Fetching and verifying. Nothing is installed until you say so.",
1094
+ "failed": "The download did not finish. Nothing was installed."
1095
+ },
1096
+ "veto": {
1097
+ "title": "This deployment cannot browse online",
1098
+ "body": "The setting is saved, but network features are off for this server and that wins. Downloaded add-ons still work, and you can still upload one yourself."
1099
+ },
1100
+ "sideload": {
1101
+ "title": "Upload a package",
1102
+ "hint": "For a server with no internet. It is checked exactly as a download would be, so it needs the hash that came with it.",
1103
+ "file": "Package file (.tgz)",
1104
+ "key": "Add-on key",
1105
+ "version": "Version",
1106
+ "sha": "Integrity (sha512-…)",
1107
+ "shaHint": "The `integrity` value `npm pack --json` printed. The upload is refused if the bytes do not match.",
1108
+ "submit": "Upload"
1109
+ }
1110
+ },
1111
+ "pages": {
1112
+ "title": "Sider",
1113
+ "subtitle": "Tilføj, rediger og organiser din apps sider — og den rækkefølge de vises i sidepanelet.",
1114
+ "createButton": "Ny side",
1115
+ "loadFailed": {
1116
+ "title": "Siderne kunne ikke indlæses",
1117
+ "body": "Sidestyring kræver tilladelsen “Administrer sider”. Bed en administrator om at give den til en af dine roller."
1118
+ },
1119
+ "tab": {
1120
+ "pages": "Alle sider",
1121
+ "sidebar": "Rækkefølge i sidepanelet"
1122
+ },
1123
+ "list": {
1124
+ "title": "Sider",
1125
+ "count": "{count, plural, one {# side} other {# sider}}"
1126
+ },
1127
+ "empty": {
1128
+ "title": "Ingen sider endnu",
1129
+ "body": "Forbind en database for at generere sider automatisk, eller opret en i hånden."
1130
+ },
1131
+ "status": {
1132
+ "live": "Aktiv",
1133
+ "hidden": "Skjult"
1134
+ },
1135
+ "origin": {
1136
+ "generated": "Genereret",
1137
+ "manifest": "Tilføjelse",
1138
+ "llm": "Assistent",
1139
+ "system": "System",
1140
+ "user": "Egen"
1141
+ },
1142
+ "row": {
1143
+ "menu": "Handlinger for {title}"
1144
+ },
1145
+ "action": {
1146
+ "edit": "Rediger side",
1147
+ "duplicate": "Dupliker",
1148
+ "hide": "Skjul fra sidepanelet",
1149
+ "show": "Vis i sidepanelet",
1150
+ "delete": "Slet side"
1151
+ },
1152
+ "create": {
1153
+ "title": "Ny side",
1154
+ "failed": "Siden kunne ikke oprettes",
1155
+ "submit": "Opret side",
1156
+ "subtitle": "Vælg hvad siden viser, og hvordan den ser ud. Forhåndsvisningen følger dine valg."
1157
+ },
1158
+ "duplicate": {
1159
+ "title": "Dupliker side",
1160
+ "failed": "Siden kunne ikke duplikeres",
1161
+ "submit": "Dupliker"
1162
+ },
1163
+ "delete": {
1164
+ "title": "Slet denne side?",
1165
+ "body": "Dette kan ikke fortrydes. Gemte visninger og personlige layouts på denne side slettes for alle.",
1166
+ "bodyGenerated": "Denne side stammer fra skemagenerering, så den kommer igen næste gang du genererer. Gemte visninger og personlige layouts slettes for alle.",
1167
+ "prompt": "Skriv {slug} for at bekræfte",
1168
+ "confirm": "Slet side"
1169
+ },
1170
+ "field": {
1171
+ "title": "Titel",
1172
+ "titleHint": "Vises i sidepanelet og i sidens overskrift.",
1173
+ "slug": "Sideadresse",
1174
+ "slugHint": "Små bogstaver, tal og bindestreger. Kun den sidste del — resten af adressen tilføjer vi.",
1175
+ "slugTaken": "En anden side bruger allerede denne adresse.",
1176
+ "slugWarning": "Ændrer du adressen, går eksisterende links og bogmærker til siden i stykker.",
1177
+ "template": "Skabelon",
1178
+ "templateHint": "Afgør hvad siden kan indeholde. Kan ændres senere.",
1179
+ "group": "Gruppe i sidepanelet",
1180
+ "groupHint": "Hvilken del af sidepanelet den vises i.",
1181
+ "icon": "Ikon",
1182
+ "iconHint": "Vises ved siden af sidens navn i sidepanelet.",
1183
+ "visible": "Vis i sidepanelet",
1184
+ "visibleHint": "En skjult side kan stadig tilgås på sin URL af alle med linket.",
1185
+ "table": "Tabel",
1186
+ "tableCreateHint": "Tabellen som denne side læser fra. Vælg en nu, så er siden klar til brug; lad den stå tom, og du kan knytte den senere.",
1187
+ "tableNone": "Ikke knyttet",
1188
+ "tableNeedsConnection": "Vælg en datakilde først.",
1189
+ "connection": "Datakilde",
1190
+ "connectionNone": "Ingen",
1191
+ "iconPick": "Vælg sidens ikon",
1192
+ "padding": "Sidemargen",
1193
+ "width": "Indholdsbredde",
1194
+ "widthHint": "Hvor bred sidens indholdskolonne må blive på en stor skærm."
1195
+ },
1196
+ "editor": {
1197
+ "title": "Rediger side",
1198
+ "save": "Gem ændringer",
1199
+ "saveFailed": "Ændringerne kunne ikke gemmes",
1200
+ "openPage": "Åbn side",
1201
+ "generated": {
1202
+ "title": "Denne side blev genereret ud fra dit skema",
1203
+ "body": "Dine ændringer bevares, når du genererer igen — siden markeres som redigeret og røres ikke. En sletning holder derimod kun, indtil næste generering opretter den på ny."
1204
+ },
1205
+ "contentUnavailable": "Sidens indhold kunne ikke indlæses",
1206
+ "contentUnavailableBody": "Oplysningerne ovenfor kan stadig gemmes.",
1207
+ "contentInvalid": "Denne sides konfiguration kan ikke læses",
1208
+ "contentInvalidBody": "Den er skrevet af en nyere version, eller den er ugyldig. Generer siden igen, eller slet den.",
1209
+ "data": "Data",
1210
+ "schemaFailed": "Tabellerne kunne ikke vises",
1211
+ "schemaFailedBody": "Denne forbindelse er måske ikke analyseret endnu. Kør introspektion fra Studio → Dataforbindelser.",
1212
+ "notBindable": "Denne skabelon er ikke knyttet til én tabel",
1213
+ "notBindableBody": "Dens indhold bygges widget for widget i stedet. Åbn siden, og brug “Rediger” til at tilføje dem.",
1214
+ "recompose": "Denne side bliver bygget om",
1215
+ "recomposeBody": "Når du gemmer, erstattes indholdet af et nyt layout for skabelonen og tabellen ovenfor. Kolonnetilpasninger og widget-ændringer på siden går tabt.",
1216
+ "missing": "Denne side findes ikke længere",
1217
+ "missingBody": "Den er måske slettet eller fjernet af en generering.",
1218
+ "details": "Detaljer",
1219
+ "itemsPending": "Gem først ændringen ovenfor — sidens indhold bygges op igen ud fra den nye skabelon og tabel.",
1220
+ "columns": "Kolonner",
1221
+ "appearance": "Udseende"
1222
+ },
1223
+ "sidebar": {
1224
+ "help": "Omarranger sider inden for en gruppe, eller flyt en til en anden gruppe. Ændringerne gælder for alle.",
1225
+ "discard": "Kassér",
1226
+ "save": "Gem rækkefølge",
1227
+ "saveFailed": "Den nye rækkefølge kunne ikke gemmes",
1228
+ "emptyGroup": "Ingen sider i denne gruppe.",
1229
+ "moveUp": "Flyt {title} op",
1230
+ "moveDown": "Flyt {title} ned",
1231
+ "moveTo": "Flyt {title} til en gruppe",
1232
+ "ungrouped": {
1233
+ "title": "Nogle sider hører ikke til nogen gruppe",
1234
+ "body": "Siderne virker på deres URL, men vises ingen steder i sidepanelet. Åbn hver enkelt og vælg en gruppe."
1235
+ }
1236
+ },
1237
+ "columns": {
1238
+ "help": "Træk for at omarrangere kolonner, omdøb deres overskrifter, og vælg hvilke der vises i tabellen.",
1239
+ "empty": "Ingen kolonner endnu — tilføj dem nedenfor.",
1240
+ "pk": "Nøgle",
1241
+ "pii": "PII",
1242
+ "header": "Overskrift for {name}",
1243
+ "shown": "Vist",
1244
+ "toggle": "Vis {name} i tabellen",
1245
+ "dragHandle": "Flyt {name}",
1246
+ "remove": "Fjern {name}",
1247
+ "addOpen": "Tilføj kolonne",
1248
+ "addTitle": "Tilføj en kolonne",
1249
+ "addSearch": "Søg i kolonner…",
1250
+ "addFromTable": "Fra {table}",
1251
+ "addFromLinked": "Fra linkede tabeller",
1252
+ "addLinkedHelp": "Vis en værdi fra den tabel, som en linkkolonne peger på.",
1253
+ "addVia": "via {column}",
1254
+ "addNoMatches": "Ingen kolonner matcher “{query}”.",
1255
+ "followColumn": "Følg {name}",
1256
+ "addLinkedFrom": "Tabeller, der linker hertil",
1257
+ "addLinkedFromHelp": "Tilføj et antal af de rækker, der peger på hver post.",
1258
+ "countBadge": "Antal",
1259
+ "lookupBadge": "Sammenkædet",
1260
+ "lookupBack": "Tilbage",
1261
+ "lookupBrowse": "Vælg hvad der skal vises fra {table}",
1262
+ "lookupBroken": "Kæden kan ikke længere følges",
1263
+ "lookupBrokenBody": "Skemaet ændrede sig undervejs. Start kæden forfra.",
1264
+ "schemaUnavailable": "Databasens kolonner kunne ikke hentes, så kolonner kan ikke tilføjes her.",
1265
+ "none": {
1266
+ "title": "Denne side har ingen kolonner endnu",
1267
+ "body": "Kolonner læses fra tabellen, når siden genereres. Knyt siden til en tabel og generer igen for at udfylde dem."
1268
+ }
1269
+ },
1270
+ "icon": {
1271
+ "none": "Vælg et ikon",
1272
+ "search": "Søg efter ikoner",
1273
+ "noMatches": "Ingen ikoner matcher den søgning."
1274
+ },
1275
+ "preview": {
1276
+ "untitled": "Side uden titel",
1277
+ "note": "En illustration af layoutet, ikke dine data. Den rigtige side fyldes ud, når den er gemt."
1278
+ },
1279
+ "padding": {
1280
+ "default": "Standard for denne skabelon",
1281
+ "none": "Ingen",
1282
+ "standard": "Standard (28 × 24)",
1283
+ "custom": "Tilpasset…",
1284
+ "x": "Sider (px)",
1285
+ "y": "Top og bund (px)"
1286
+ },
1287
+ "width": {
1288
+ "default": "Standard for denne skabelon",
1289
+ "narrow": "Smal (720 px)",
1290
+ "content": "Indhold (900 px)",
1291
+ "page": "Side (1080 px)",
1292
+ "dash": "Dashboard (1320 px)",
1293
+ "wide": "Bred (1800 px)",
1294
+ "full": "Fuld bredde (ingen grænse)"
1295
+ }
16
1296
  }
17
1297
  };
18
1298
  //# sourceMappingURL=studio.js.map