@morphemecms/cms 0.5.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (396) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/astro.mjs +3 -0
  3. package/bin/morpheme.mjs +3 -1
  4. package/defaults/blockTexts.ts +2 -2
  5. package/defaults/collections.ts +10 -0
  6. package/defaults/editor.ts +57 -53
  7. package/defaults/privacy.ts +4 -1
  8. package/defaults/rules.ts +36 -38
  9. package/defaults/standardPages.ts +0 -3
  10. package/defaults/texts.ts +11 -2
  11. package/demo/src/content/pages/about.md +2 -0
  12. package/icons/lucide/browser-fill.svg +1 -0
  13. package/icons/lucide/buildings-fill.svg +1 -0
  14. package/icons/lucide/certificate-fill.svg +1 -0
  15. package/icons/lucide/chart-line-up-fill.svg +1 -0
  16. package/icons/lucide/chats-fill.svg +1 -0
  17. package/icons/lucide/envelope-simple-fill.svg +1 -0
  18. package/icons/lucide/file-text-fill.svg +1 -0
  19. package/icons/lucide/folder-simple-fill.svg +1 -0
  20. package/icons/lucide/gauge.svg +1 -1
  21. package/icons/lucide/gear-six.svg +1 -0
  22. package/icons/lucide/globe-simple.svg +1 -0
  23. package/icons/lucide/heart-fill.svg +1 -0
  24. package/icons/lucide/layout.svg +1 -0
  25. package/icons/lucide/list-checks-fill.svg +1 -0
  26. package/icons/lucide/magnifying-glass-fill.svg +1 -0
  27. package/icons/lucide/megaphone-fill.svg +1 -0
  28. package/icons/lucide/newspaper-fill.svg +1 -0
  29. package/icons/lucide/paint-brush-broad-fill.svg +1 -0
  30. package/icons/lucide/puzzle-piece-fill.svg +1 -0
  31. package/icons/lucide/shield-check-fill.svg +1 -0
  32. package/icons/lucide/sidebar-simple.svg +1 -1
  33. package/icons/lucide/sidebar.svg +1 -0
  34. package/icons/lucide/square-half-bottom-fill.svg +1 -0
  35. package/icons/lucide/square-half.svg +1 -0
  36. package/icons/lucide/squares-four-fill.svg +1 -0
  37. package/icons/lucide/storefront-fill.svg +1 -0
  38. package/icons/lucide/tag-fill.svg +1 -0
  39. package/icons/lucide/toggle-right-fill.svg +1 -0
  40. package/icons/lucide/trash-fill.svg +1 -0
  41. package/icons/lucide/user-fill.svg +1 -0
  42. package/icons/lucide/wrench-fill.svg +1 -0
  43. package/icons/material-symbols/browser-fill.svg +1 -0
  44. package/icons/material-symbols/buildings-fill.svg +1 -0
  45. package/icons/material-symbols/certificate-fill.svg +1 -0
  46. package/icons/material-symbols/chart-line-up-fill.svg +1 -0
  47. package/icons/material-symbols/chats-fill.svg +1 -0
  48. package/icons/material-symbols/envelope-simple-fill.svg +1 -0
  49. package/icons/material-symbols/file-text-fill.svg +1 -0
  50. package/icons/material-symbols/folder-simple-fill.svg +1 -0
  51. package/icons/material-symbols/gauge.svg +1 -1
  52. package/icons/material-symbols/gear-six.svg +1 -0
  53. package/icons/material-symbols/globe-simple.svg +1 -0
  54. package/icons/material-symbols/heart-fill.svg +1 -0
  55. package/icons/material-symbols/layout.svg +1 -0
  56. package/icons/material-symbols/list-checks-fill.svg +1 -0
  57. package/icons/material-symbols/magnifying-glass-fill.svg +1 -0
  58. package/icons/material-symbols/megaphone-fill.svg +1 -0
  59. package/icons/material-symbols/newspaper-fill.svg +1 -0
  60. package/icons/material-symbols/paint-brush-broad-fill.svg +1 -0
  61. package/icons/material-symbols/puzzle-piece-fill.svg +1 -0
  62. package/icons/material-symbols/shield-check-fill.svg +1 -0
  63. package/icons/material-symbols/sidebar-simple.svg +1 -1
  64. package/icons/material-symbols/sidebar.svg +1 -0
  65. package/icons/material-symbols/square-half-bottom-fill.svg +1 -0
  66. package/icons/material-symbols/square-half.svg +1 -0
  67. package/icons/material-symbols/squares-four-fill.svg +1 -0
  68. package/icons/material-symbols/storefront-fill.svg +1 -0
  69. package/icons/material-symbols/tag-fill.svg +1 -0
  70. package/icons/material-symbols/toggle-right-fill.svg +1 -0
  71. package/icons/material-symbols/trash-fill.svg +1 -0
  72. package/icons/material-symbols/user-fill.svg +1 -0
  73. package/icons/material-symbols/wrench-fill.svg +1 -0
  74. package/icons/phosphor/browser-fill.svg +1 -0
  75. package/icons/phosphor/buildings-fill.svg +1 -0
  76. package/icons/phosphor/certificate-fill.svg +1 -0
  77. package/icons/phosphor/chart-line-up-fill.svg +1 -0
  78. package/icons/phosphor/chats-fill.svg +1 -0
  79. package/icons/phosphor/envelope-simple-fill.svg +1 -0
  80. package/icons/phosphor/file-text-fill.svg +1 -0
  81. package/icons/phosphor/folder-simple-fill.svg +1 -0
  82. package/icons/phosphor/gear-six.svg +1 -0
  83. package/icons/phosphor/globe-simple.svg +1 -0
  84. package/icons/phosphor/heart-fill.svg +1 -0
  85. package/icons/phosphor/layout.svg +1 -0
  86. package/icons/phosphor/list-checks-fill.svg +1 -0
  87. package/icons/phosphor/magnifying-glass-fill.svg +1 -0
  88. package/icons/phosphor/megaphone-fill.svg +1 -0
  89. package/icons/phosphor/newspaper-fill.svg +1 -0
  90. package/icons/phosphor/paint-brush-broad-fill.svg +1 -0
  91. package/icons/phosphor/puzzle-piece-fill.svg +1 -0
  92. package/icons/phosphor/shield-check-fill.svg +1 -0
  93. package/icons/phosphor/sidebar.svg +1 -0
  94. package/icons/phosphor/square-half-bottom-fill.svg +1 -0
  95. package/icons/phosphor/square-half.svg +1 -0
  96. package/icons/phosphor/squares-four-fill.svg +1 -0
  97. package/icons/phosphor/storefront-fill.svg +1 -0
  98. package/icons/phosphor/tag-fill.svg +1 -0
  99. package/icons/phosphor/toggle-right-fill.svg +1 -0
  100. package/icons/phosphor/trash-fill.svg +1 -0
  101. package/icons/phosphor/user-fill.svg +1 -0
  102. package/icons/phosphor/wrench-fill.svg +1 -0
  103. package/lib/breakpoints.d.mts +13 -0
  104. package/lib/breakpoints.mjs +20 -0
  105. package/lib/breakpoints.test.mjs +39 -0
  106. package/lib/build-lane.d.mts +15 -0
  107. package/lib/build-lane.mjs +23 -0
  108. package/lib/build-lane.test.mjs +74 -0
  109. package/lib/build-settings.d.mts +16 -0
  110. package/lib/build-settings.mjs +39 -0
  111. package/lib/build-settings.test.mjs +41 -0
  112. package/lib/contracts.d.mts +3 -2
  113. package/lib/contracts.mjs +3 -2
  114. package/lib/drawer-swipe.d.mts +10 -0
  115. package/lib/drawer-swipe.mjs +17 -0
  116. package/lib/drawer-swipe.test.mjs +33 -0
  117. package/lib/drawerKeys.d.mts +9 -0
  118. package/lib/drawerKeys.mjs +26 -0
  119. package/lib/drawerKeys.test.mjs +21 -0
  120. package/lib/eyebrow.d.mts +6 -0
  121. package/lib/eyebrow.mjs +24 -0
  122. package/lib/eyebrow.test.mjs +20 -0
  123. package/lib/front-sections.test.mjs +82 -0
  124. package/lib/heading-levels.d.mts +7 -0
  125. package/lib/heading-levels.mjs +16 -0
  126. package/lib/heading-levels.test.mjs +37 -0
  127. package/lib/inline.ts +3 -2
  128. package/lib/markdown.ts +2 -0
  129. package/lib/materialIcon.d.mts +21 -0
  130. package/lib/materialIcon.mjs +29 -0
  131. package/lib/materialIcon.test.mjs +45 -0
  132. package/lib/menu-layout.d.mts +11 -0
  133. package/lib/menu-layout.mjs +14 -0
  134. package/lib/menu-layout.test.mjs +23 -0
  135. package/lib/menu.d.mts +59 -0
  136. package/lib/menu.mjs +129 -0
  137. package/lib/menu.test.mjs +291 -0
  138. package/lib/rehype-emphasize.d.mts +4 -0
  139. package/lib/rehype-emphasize.mjs +20 -0
  140. package/lib/rehype-emphasize.test.mjs +39 -0
  141. package/lib/section-in-view.d.mts +8 -0
  142. package/lib/section-in-view.mjs +25 -0
  143. package/lib/section-in-view.test.mjs +35 -0
  144. package/lib/section-marker.d.mts +5 -0
  145. package/lib/section-marker.mjs +18 -0
  146. package/lib/section-marker.test.mjs +22 -0
  147. package/lib/section-ranges.d.mts +12 -0
  148. package/lib/section-ranges.mjs +43 -0
  149. package/lib/section-ranges.test.mjs +61 -0
  150. package/lib/sheet-stops.d.mts +68 -0
  151. package/lib/sheet-stops.mjs +198 -0
  152. package/lib/sheet-stops.test.mjs +155 -0
  153. package/lib/still-timer.d.mts +5 -0
  154. package/lib/still-timer.mjs +17 -0
  155. package/lib/still-timer.test.mjs +42 -0
  156. package/lib/text-sections.d.mts +10 -0
  157. package/lib/text-sections.mjs +45 -0
  158. package/lib/text-sections.test.mjs +78 -0
  159. package/lib/video.mjs +2 -1
  160. package/lib/without-h1.d.mts +1 -0
  161. package/lib/without-h1.mjs +7 -0
  162. package/lib/without-h1.test.mjs +26 -0
  163. package/lib/word-at.d.mts +6 -0
  164. package/lib/word-at.mjs +20 -0
  165. package/lib/word-at.test.mjs +19 -0
  166. package/package.json +3 -1
  167. package/pages/editor/version.json.js +22 -2
  168. package/scripts/already-checked.mjs +11 -0
  169. package/scripts/already-checked.test.mjs +18 -0
  170. package/scripts/build-settings-problems.mjs +27 -0
  171. package/scripts/build-settings-problems.test.mjs +35 -0
  172. package/scripts/check-content.mjs +42 -4
  173. package/scripts/check-worker.mjs +96 -4
  174. package/scripts/ci-build.mjs +85 -0
  175. package/scripts/ci-build.test.mjs +137 -0
  176. package/scripts/editor-roundtrip.mjs +62 -3
  177. package/scripts/editor-screens.mjs +21 -7
  178. package/scripts/git-env.mjs +6 -0
  179. package/scripts/step-command.mjs +34 -0
  180. package/scripts/step-command.test.mjs +50 -0
  181. package/scripts/text-problems.mjs +83 -0
  182. package/scripts/text-problems.test.mjs +74 -0
  183. package/scripts/worker-modules.mjs +11 -1
  184. package/site/breakpoints.d.mts +6 -0
  185. package/site/breakpoints.mjs +52 -0
  186. package/site/breakpoints.test.mjs +36 -0
  187. package/site/casing.d.mts +3 -0
  188. package/site/casing.mjs +26 -0
  189. package/site/content.config.ts +2 -0
  190. package/site/content.ts +2 -4
  191. package/site/defineSite.d.mts +1 -0
  192. package/site/defineSite.mjs +3 -0
  193. package/site/home.ts +3 -2
  194. package/site/icons.d.mts +116 -4
  195. package/site/icons.mjs +62 -6
  196. package/site/images.mjs +1 -1
  197. package/site/live-diff.d.mts +22 -0
  198. package/site/live-diff.mjs +98 -0
  199. package/site/live-diff.test.mjs +235 -0
  200. package/site/materialSymbols.d.mts +5 -0
  201. package/site/materialSymbols.mjs +19 -0
  202. package/site/sections.ts +1 -1
  203. package/site/theme.d.mts +1 -1
  204. package/site/theme.mjs +7 -1
  205. package/src/ActionParts.tsx +1 -1
  206. package/src/Advanced.tsx +101 -20
  207. package/src/App.tsx +47 -121
  208. package/src/AppList.tsx +1 -1
  209. package/src/BlockParts.tsx +3 -3
  210. package/src/Colors.tsx +1 -1
  211. package/src/CommunicationParts.tsx +1 -1
  212. package/src/ContainmentParts.tsx +80 -28
  213. package/src/Deleted.tsx +18 -4
  214. package/src/EditorFooter.tsx +14 -0
  215. package/src/EntryForm.tsx +75 -39
  216. package/src/FormFrame.tsx +3 -8
  217. package/src/Library.tsx +46 -51
  218. package/src/Licenses.tsx +27 -11
  219. package/src/MainDrawerParts.tsx +60 -0
  220. package/src/MainMenu.tsx +136 -0
  221. package/src/MarkdownEditor.tsx +175 -32
  222. package/src/Media.tsx +69 -16
  223. package/src/MediaTags.tsx +91 -0
  224. package/src/ModalSheetSample.tsx +47 -0
  225. package/src/NavigationParts.tsx +67 -21
  226. package/src/NavigationRestParts.tsx +1 -1
  227. package/src/Parts.tsx +71 -0
  228. package/src/PartsShown.tsx +1 -1
  229. package/src/PickerParts.tsx +2 -2
  230. package/src/Redirects.tsx +3 -2
  231. package/src/Screen.tsx +93 -90
  232. package/src/SelectionParts.tsx +22 -6
  233. package/src/SiteLogoLink.tsx +14 -0
  234. package/src/StartFab.tsx +22 -0
  235. package/src/StartStatus.tsx +1 -1
  236. package/src/autoTags.d.mts +28 -0
  237. package/src/autoTags.mjs +68 -0
  238. package/src/autoTags.test.mjs +109 -0
  239. package/src/buildSettings.test.mjs +20 -0
  240. package/src/buildSettings.ts +20 -0
  241. package/src/checkSite.ts +14 -1
  242. package/src/deploy.ts +7 -9
  243. package/src/editor.css +150 -17
  244. package/src/eyebrow.d.mts +5 -0
  245. package/src/eyebrow.mjs +53 -0
  246. package/src/eyebrowState.d.mts +21 -0
  247. package/src/eyebrowState.mjs +62 -0
  248. package/src/eyebrowState.test.mjs +78 -0
  249. package/src/fileRecords.d.mts +115 -0
  250. package/src/fileRecords.mjs +224 -0
  251. package/src/fileRecords.test.mjs +224 -0
  252. package/src/fileTagFilter.d.mts +30 -0
  253. package/src/fileTagFilter.mjs +44 -0
  254. package/src/fileTagFilter.test.mjs +57 -0
  255. package/src/fileTags.d.mts +56 -0
  256. package/src/fileTags.mjs +100 -0
  257. package/src/fileTags.test.mjs +127 -0
  258. package/src/firstHeading.d.mts +6 -0
  259. package/src/firstHeading.mjs +37 -0
  260. package/src/i18n/da-DK/advanced.ts +27 -12
  261. package/src/i18n/da-DK/app.ts +9 -7
  262. package/src/i18n/da-DK/apps.ts +16 -16
  263. package/src/i18n/da-DK/blockSettings.ts +9 -9
  264. package/src/i18n/da-DK/blocks.ts +2 -2
  265. package/src/i18n/da-DK/check.ts +5 -2
  266. package/src/i18n/da-DK/cms.ts +14 -12
  267. package/src/i18n/da-DK/colors.ts +5 -5
  268. package/src/i18n/da-DK/common.ts +2 -2
  269. package/src/i18n/da-DK/company.ts +3 -3
  270. package/src/i18n/da-DK/consents.ts +6 -6
  271. package/src/i18n/da-DK/forms.ts +6 -6
  272. package/src/i18n/da-DK/history.ts +6 -6
  273. package/src/i18n/da-DK/keywords.ts +2 -2
  274. package/src/i18n/da-DK/library.ts +17 -15
  275. package/src/i18n/da-DK/licenses.ts +4 -4
  276. package/src/i18n/da-DK/media.ts +10 -4
  277. package/src/i18n/da-DK/parts.ts +62 -25
  278. package/src/i18n/da-DK/preview.ts +5 -6
  279. package/src/i18n/da-DK/redirects.ts +7 -7
  280. package/src/i18n/da-DK/seo.ts +1 -1
  281. package/src/i18n/da-DK/text.ts +2 -0
  282. package/src/i18n/da-DK/theme.ts +5 -5
  283. package/src/i18n/en-US/advanced.ts +34 -18
  284. package/src/i18n/en-US/app.ts +7 -5
  285. package/src/i18n/en-US/apps.ts +9 -9
  286. package/src/i18n/en-US/blockSettings.ts +4 -4
  287. package/src/i18n/en-US/blocks.ts +6 -6
  288. package/src/i18n/en-US/check.ts +6 -3
  289. package/src/i18n/en-US/cms.ts +15 -14
  290. package/src/i18n/en-US/colors.ts +18 -18
  291. package/src/i18n/en-US/common.ts +3 -3
  292. package/src/i18n/en-US/consents.ts +4 -4
  293. package/src/i18n/en-US/forms.ts +5 -5
  294. package/src/i18n/en-US/history.ts +2 -2
  295. package/src/i18n/en-US/library.ts +21 -15
  296. package/src/i18n/en-US/licenses.ts +6 -6
  297. package/src/i18n/en-US/media.ts +7 -1
  298. package/src/i18n/en-US/parts.ts +60 -21
  299. package/src/i18n/en-US/preview.ts +5 -6
  300. package/src/i18n/en-US/redirects.ts +3 -3
  301. package/src/i18n/en-US/seo.ts +1 -1
  302. package/src/i18n/en-US/text.ts +3 -0
  303. package/src/i18n/en-US/theme.ts +6 -6
  304. package/src/icon.tsx +90 -27
  305. package/src/licenseData.test.mjs +28 -0
  306. package/src/licenseData.ts +12 -1
  307. package/src/markdown.d.mts +2 -0
  308. package/src/markdown.mjs +73 -5
  309. package/src/markdown.test.mjs +74 -0
  310. package/src/materialIcons.ts +8 -0
  311. package/src/menuChildren.ts +36 -0
  312. package/src/menuOpen.ts +34 -0
  313. package/src/pagePreview.tsx +23 -19
  314. package/src/r2Caching.ts +14 -0
  315. package/src/sectionFrame.ts +39 -0
  316. package/src/sectionState.d.mts +19 -0
  317. package/src/sectionState.mjs +31 -0
  318. package/src/sectionState.test.mjs +59 -0
  319. package/src/sections.d.mts +9 -7
  320. package/src/sections.mjs +74 -27
  321. package/src/sections.test.mjs +59 -0
  322. package/src/sidebar.ts +2 -2
  323. package/src/site.ts +27 -17
  324. package/src/stillCursor.d.mts +8 -0
  325. package/src/stillCursor.mjs +19 -0
  326. package/src/stillCursor.test.mjs +26 -0
  327. package/src/tagUses.d.mts +47 -0
  328. package/src/tagUses.mjs +121 -0
  329. package/src/tagUses.test.mjs +141 -0
  330. package/src/themeUi.ts +10 -0
  331. package/src/topBarSlot.tsx +37 -0
  332. package/src/ui.tsx +654 -150
  333. package/src/virtual.d.ts +5 -0
  334. package/starter/README.md +2 -1
  335. package/starter/package.json +2 -1
  336. package/starter/wrangler.jsonc +3 -2
  337. package/theme/blocks/cards/LinkCards.tsx +2 -1
  338. package/theme/blocks/hero/View.tsx +2 -1
  339. package/theme/blocks/video/View.tsx +2 -1
  340. package/theme/components/BlogIndex.astro +2 -2
  341. package/theme/components/BlogPosts.astro +1 -1
  342. package/theme/components/BlogPosts.tsx +9 -6
  343. package/theme/components/Container.astro +1 -1
  344. package/theme/components/CookieConsent.astro +1 -1
  345. package/theme/components/EndBlock.astro +1 -1
  346. package/theme/components/Footer.astro +5 -5
  347. package/theme/components/Header.astro +3 -3
  348. package/theme/components/Icon.astro +2 -2
  349. package/theme/components/MobileMenu.tsx +72 -61
  350. package/theme/components/MobileNav.astro +2 -2
  351. package/theme/components/PageHeader.astro +2 -2
  352. package/theme/components/PageSection.astro +1 -1
  353. package/theme/components/PopupButton.tsx +2 -2
  354. package/theme/components/PopupView.tsx +2 -2
  355. package/theme/components/PostList.tsx +7 -3
  356. package/theme/components/RichText.astro +22 -7
  357. package/theme/components/Section.astro +17 -10
  358. package/theme/components/SectionHeading.tsx +1 -1
  359. package/theme/components/home/PageBlock.astro +4 -4
  360. package/theme/components/home/Text.astro +3 -3
  361. package/theme/layouts/PageLayout.astro +3 -3
  362. package/theme/layouts/PostLayout.astro +9 -8
  363. package/theme/styles/base.css +13 -3
  364. package/theme/styles/blocks.css +97 -10
  365. package/theme/styles/components.css +9 -9
  366. package/theme/styles/elevation.test.mjs +168 -0
  367. package/theme/styles/global.css +65 -59
  368. package/theme/styles/ui.css +460 -131
  369. package/theme/templates/Home.astro +1 -1
  370. package/theme/templates/New.astro +5 -5
  371. package/theme/templates/NotFound.astro +2 -2
  372. package/theme/ui/BottomSheet.tsx +118 -21
  373. package/theme/ui/BottomSheetResizeIcon.tsx +13 -0
  374. package/theme/ui/Button.tsx +4 -3
  375. package/theme/ui/Dialog.tsx +1 -1
  376. package/theme/ui/FabMenu.tsx +13 -12
  377. package/theme/ui/LoadingIndicator.tsx +1 -1
  378. package/theme/ui/NavigationDrawer.tsx +116 -15
  379. package/theme/ui/NavigationRail.tsx +22 -13
  380. package/theme/ui/Search.tsx +1 -1
  381. package/theme/ui/SettingRow.tsx +31 -0
  382. package/theme/ui/Switch.tsx +11 -11
  383. package/theme/ui/TextField.tsx +17 -6
  384. package/theme/ui/bottomSheet.script.ts +3 -2
  385. package/theme/ui/bottomSheetControl.ts +131 -46
  386. package/theme/ui/fabMenu.script.ts +69 -53
  387. package/theme/ui/modalSheetSize.ts +214 -0
  388. package/theme/ui/navigationDrawerControl.ts +35 -0
  389. package/theme/ui/search.script.ts +4 -2
  390. package/worker/index.js +3 -0
  391. package/worker/plan-status.js +46 -0
  392. package/worker/push.js +7 -5
  393. package/worker/r2-status.js +2 -1
  394. package/icons/lucide/desktop.svg +0 -1
  395. package/icons/material-symbols/desktop.svg +0 -1
  396. package/icons/phosphor/desktop.svg +0 -1
@@ -6,29 +6,29 @@ export const blockSettings: Messages['blockSettings'] = {
6
6
  off: 'Fra',
7
7
  inactive: 'Deaktiveret',
8
8
  standard: 'Standardblokke',
9
- noBlocks: 'Appen har ingen blokke.',
9
+ noBlocks: 'Appen har ingen blokke',
10
10
  isStandard: 'En standardblok.',
11
11
  isApp: (app) => `En appblok fra ${app}.`,
12
12
  isKind: (one, app) => `En ${one}sblok fra ${app}.`,
13
- stuck: 'Blokken bruges på sider og kan ikke slås fra.',
13
+ stuck: 'Blokken bruges på sider og kan ikke slås fra',
14
14
  onHint: 'Vises under Indsæt.',
15
15
  offHint: 'Vises ikke under Indsæt.',
16
16
  active: 'Aktiveret',
17
- kindStuck: (more) => `Blokken bruges i ${more} og kan ikke slås fra.`,
17
+ kindStuck: (more) => `Blokken bruges i ${more} og kan ikke slås fra`,
18
18
  kindStillOn: (n, what) => `Blokken bruges i ${n} ${what}. Slet ${n === 1 ? 'den' : 'dem'} først.`,
19
19
  kindOnHint: (create) => `Vises under ${create}.`,
20
20
  kindOffHint: (create) => `Vises ikke under ${create}.`,
21
21
  looks: 'Eksempel',
22
- asOn: (page) => `Som den vises på ${page}.`,
22
+ asOn: (page) => `Som den vises på ${page}`,
23
23
  empty: 'Et eksempel. Blokken bruges endnu ikke på nogen side.',
24
- nothing: 'Blokken bruges endnu ikke på nogen side, så der er intet at vise.',
25
- asIn: (entry) => `Som den vises i ${entry}.`,
24
+ nothing: 'Blokken bruges endnu ikke på nogen side, så der er intet at vise',
25
+ asIn: (entry) => `Som den vises i ${entry}`,
26
26
  kindEmpty: 'Et eksempel. Blokken bruges endnu ikke.',
27
- kindNothing: 'Blokken bruges endnu ikke, så der er intet at vise.',
27
+ kindNothing: 'Blokken bruges endnu ikke, så der er intet at vise',
28
28
  pages: 'Bruges på',
29
- noPages: 'Ingen sider.',
29
+ noPages: 'Ingen sider',
30
30
  usedIn: 'Bruges i',
31
- noEntries: (more) => `Ingen ${more}.`,
31
+ noEntries: (more) => `Ingen ${more}`,
32
32
  commit: {
33
33
  on: (block) => `Editor: slå blokken til: ${block}`,
34
34
  off: (block) => `Editor: slå blokken fra: ${block}`,
@@ -105,7 +105,7 @@ export const blocks: Messages['blocks'] = {
105
105
  label: 'Banner',
106
106
  hint: 'Sidens top med tekst, billede og knapper.',
107
107
  text: 'Tekst',
108
- textHint: 'Det første afsnit er undertitlen, og billede og knapper sættes ind med +.',
108
+ textHint: 'Det første afsnit er undertitlen. Tilføj billede og knapper med +.',
109
109
  placement: 'Placering (billede)',
110
110
  placementBeside: 'Ved siden af',
111
111
  placementBehind: 'Bag teksten',
@@ -182,7 +182,7 @@ export const blocks: Messages['blocks'] = {
182
182
  fresh: 'Nye',
183
183
  freshLabel: 'Ny',
184
184
  noPurpose: 'Mangler formål',
185
- freshNotice: 'Føjet til listen af sig selv. Se den igennem, og godkend den.',
185
+ freshNotice: 'Føjet til listen automatisk. Gennemgå den, og godkend den.',
186
186
  approve: 'Godkend',
187
187
  },
188
188
  nameHead: 'Overskrift (navn)',
@@ -6,11 +6,11 @@ export const check: Messages['check'] = {
6
6
  object: 'skal være en gruppe af felter',
7
7
  number: 'skal være et tal',
8
8
  boolean: 'skal være til eller fra',
9
- text: 'skal være en tekst',
9
+ text: 'skal være tekst',
10
10
  },
11
11
  address: 'Skriv adressen med bogstaver eller tal',
12
12
  onlyDigits: 'Skriv kun tal',
13
- digits: (n) => `Skriv ${n} cifre`,
13
+ digits: (n) => (n === 1 ? 'Skriv 1 ciffer' : `Skriv ${n} cifre`),
14
14
  fillIn: (label) => `Udfyld "${label}".`,
15
15
  wrong: (label, problem) => `${label}: ${problem}.`,
16
16
  notAnOption: (label, value) => `${label}: "${value}" er ikke et af valgene.`,
@@ -22,4 +22,7 @@ export const check: Messages['check'] = {
22
22
  atMostItems: (label, max) => `Der kan højst være ${max} i "${label}".`,
23
23
  mustBeOnPage: (name) => `"${name}" skal stå på siden.`,
24
24
  mustBeShown: (name) => `"${name}" skal vises på siden.`,
25
+ recordShape: 'En fils tags skal have "src" (filens adresse) og listerne "categories" og "removed".',
26
+ recordOverlap: (tag) => `Tagget "${tag}" er både valgt og fjernet.`,
27
+ recordDuplicate: (src) => `En anden fil med tags gælder også ${src}.`,
25
28
  };
@@ -8,24 +8,26 @@ export const cms: Messages['cms'] = {
8
8
  available: (v) => `Version ${v} er klar`,
9
9
  whatsNew: 'Nyheder',
10
10
  major: 'En ny hovedversion installeres ikke af sig selv.',
11
- skipped: (v) => `${v} blev fortrudt, fordi siden ikke kunne bygges.`,
12
- needsNpm: 'Den kræver npm. Kør dette i sitets repo:',
11
+ skipped: (v) => `Version ${v} blev fortrudt, fordi hjemmesiden ikke kunne opdateres med den.`,
12
+ needsNpm: 'Opdatering kræver npm. Kør dette i hjemmesidens repo:',
13
13
  update: 'Opdater',
14
14
  tryAgain: 'Prøv igen',
15
- waiting: (v) => `Opdaterer til ${v}. Venter på, at siden bygges.`,
15
+ waiting: (v) => `Opdaterer til ${v}. Det tager et par minutter.`,
16
16
  undoing: (v) => `Fortryder opdateringen til ${v}.`,
17
17
  done: (v) => `Opdateret til ${v}`,
18
- undone: (v) => `Opdateringen til ${v} blev fortrudt, fordi siden ikke kunne bygges.`,
19
- stuck: (v) => `Hverken opdateringen til ${v} eller fortrydelsen kunne bygges. Siden skal rettes i hånden.`,
18
+ undone: (v) => `Opdateringen til ${v} blev fortrudt, fordi hjemmesiden ikke kunne opdateres med den.`,
19
+ stuck: (v) =>
20
+ `Hjemmesiden kunne ikke opdateres med ${v}, og det mislykkedes også at gå tilbage til den tidligere version. Ret hjemmesiden i hånden.`,
20
21
  unreachable: 'npm eller GitHub kunne ikke nås.',
21
- cannotWrite: 'Sitets GitHub-nøgle kan ikke gemme. Giv den Contents: Read and write.',
22
- noToken: 'Sitet har ingen GitHub-nøgle (GITHUB_PUBLISH_TOKEN).',
23
- noKv: 'Sitet har intet KV-lager (PUSH), så det kan ikke se efter nye versioner.',
24
- notManaged: 'Sitets package.json bestemmer versionen.',
25
- slowUndo: 'Nøglen kan ikke læse check runs, så en fejlet opdatering fortrydes først efter 20 minutter.',
22
+ cannotWrite: 'Hjemmesidens GitHub-nøgle kan ikke gemme ændringer. Giv den Contents: Read and write i GitHub.',
23
+ noToken: 'Hjemmesiden har ingen GitHub-nøgle (GITHUB_PUBLISH_TOKEN).',
24
+ noKv: 'Hjemmesiden har intet KV-lager (PUSH), så den kan ikke se efter nye versioner.',
25
+ notManaged: 'Versionen er fastlagt i hjemmesidens package.json, så den kan ikke opdateres her.',
26
+ slowUndo: 'GitHub-nøglen kan ikke se, om opdateringen lykkedes, så en mislykket opdatering fortrydes først efter 20 minutter.',
26
27
  notifyDone: (v) => `Morpheme er opdateret til ${v}`,
27
- notifyUndone: (v) => `Opdateringen af Morpheme til ${v} er fortrudt, fordi siden ikke kunne bygges`,
28
- notifyStuck: (v) => `Morpheme ${v} kunne ikke bygges, og det kunne fortrydelsen heller ikke. Ret siden i hånden.`,
28
+ notifyUndone: (v) => `Opdateringen af Morpheme til ${v} er fortrudt, fordi hjemmesiden ikke kunne opdateres med den`,
29
+ notifyStuck: (v) =>
30
+ `Hjemmesiden kunne ikke opdateres med Morpheme ${v}, og det mislykkedes også at gå tilbage. Ret hjemmesiden i hånden.`,
29
31
  commitUpdate: (v) => `Opdater Morpheme til ${v}`,
30
32
  commitUndo: (v) => `Fortryd opdateringen af Morpheme til ${v}`,
31
33
  };
@@ -44,21 +44,21 @@ export const colors: Messages['colors'] = {
44
44
  wrongAt: (where) => `Forkert værdi: ${where}`,
45
45
  },
46
46
  pages: {
47
- intro: 'Hver sides farver, som de var, da hjemmesiden sidst blev bygget.',
47
+ intro: 'Hver sides farver, som de var, da hjemmesiden sidst blev opdateret.',
48
48
  title: 'Farver fra sidernes billeder',
49
49
  byApps: (apps) => `${apps} giver siderne farver fra deres billeder. Hvor den ikke gør, bruges reservefarverne.`,
50
50
  showFallback: 'Vis reservefarver',
51
51
  fallback: 'Reservefarver',
52
- fallbackIntro: (apps) => `Farverne bruges på de sider, ${apps} ikke giver farver.`,
52
+ fallbackIntro: (apps) => `Hjemmesidens egne farver bruges på de sider, hvor ${apps} ikke giver farver.`,
53
53
  apps: 'Apps',
54
54
  fromApp: 'Farver fra et billede',
55
55
  own: 'Hjemmesidens farver',
56
- loading: 'Henter sidernes farver',
57
- missing: 'Sidernes farver kan ses, når hjemmesiden er bygget.',
56
+ loading: 'Henter sidernes farver…',
57
+ missing: 'Sidernes farver kan ses om et par minutter',
58
58
  swatches: (mode) => `Farverne i ${mode.toLowerCase()}`,
59
59
  },
60
60
  standard: 'Nulstil til standardfarver',
61
61
  standardHint: 'Gælder, når du gemmer.',
62
- icons: 'Logo og ikon ændres under Udseende › Logo og ikon.',
62
+ icons: 'Rediger logo og ikon under Udseende › Logo og ikon.',
63
63
  commit: 'Editor: nye farver',
64
64
  };
@@ -20,7 +20,7 @@ export const common: Messages['common'] = {
20
20
  moveUp: 'Flyt op',
21
21
  moveDown: 'Flyt ned',
22
22
  notInUse: 'Ikke i brug',
23
- noMatch: 'Ingen resultater.',
23
+ noMatch: 'Ingen resultater',
24
24
  notSaved: (error) => `Kunne ikke gemme: ${error}`,
25
25
  backTo: (to) => `Tilbage til ${to}`,
26
26
  pickColor: (name) => `${name}: vælg farve`,
@@ -91,7 +91,7 @@ export const common: Messages['common'] = {
91
91
  company: 'Virksomheden',
92
92
  header: 'Header',
93
93
  lists: 'Lister',
94
- blocks: 'Standardblokke',
94
+ blocks: 'Blokskabeloner',
95
95
  media: 'Filer',
96
96
  appearance: 'Udseende',
97
97
  themes: 'Temaer',
@@ -1,7 +1,7 @@
1
1
  import type { Messages } from '../en-US';
2
2
 
3
3
  export const company: Messages['company'] = {
4
- noChanges: 'Der er ingen ændringer at gemme.',
4
+ noChanges: 'Der er ingen ændringer at gemme',
5
5
  preview: 'Forhåndsvisning',
6
6
  brand: {
7
7
  notLoaded: (error) => `Kunne ikke hente logoet: ${error}`,
@@ -13,9 +13,9 @@ export const company: Messages['company'] = {
13
13
  icon: 'Ikon',
14
14
  newIcon: 'Vælg et nyt ikon',
15
15
  iconFromLogo: 'Opret ikonet ud fra logoet',
16
- svgUnreadable: 'SVG-filen kunne ikke læses.',
16
+ svgUnreadable: 'SVG-filen kunne ikke læses',
17
17
  cannotOpen: 'Billedet kunne ikke åbnes. Brug et SVG-, PNG-, JPEG- eller WebP-billede.',
18
- notReady: 'Billedet kunne ikke klargøres.',
18
+ notReady: 'Billedet kunne ikke klargøres',
19
19
  },
20
20
  commit: {
21
21
  edit: (part) => `Editor: ret ${part}`,
@@ -3,19 +3,19 @@ import type { Messages } from '../en-US';
3
3
 
4
4
  export const consents: Messages['consents'] = {
5
5
  title: 'Samtykker',
6
- intro: 'De besøgendes svar i cookiebanneret, med det samtykke-id, banneret viser dem. De slettes efter 2 år.',
6
+ intro: 'De besøgendes svar i cookiebanneret, med det samtykke-id, banneret viser dem. Svarene gemmes i 2 år.',
7
7
  count: (n) => `${n} svar`,
8
8
  searchLabel: 'Søg efter samtykke-id',
9
9
  sorts: { newest: 'Nyeste først', oldest: 'Ældste først' },
10
10
  download: 'Hent som CSV',
11
- loading: 'Henter samtykkerne',
11
+ loading: 'Henter samtykkerne…',
12
12
  notLoaded: (error) => `Kunne ikke hente samtykkerne: ${error}`,
13
- notKept: 'Samtykkerne gemmes kun på det udgivne site.',
14
- none: (query) => (query ? `Intet samtykke-id begynder med "${query}".` : 'Ingen har svaret endnu.'),
13
+ notKept: 'Samtykkerne gemmes kun på den udgivne hjemmeside',
14
+ none: (query) => (query ? `Intet samtykke-id begynder med "${query}"` : 'Ingen har svaret endnu'),
15
15
  yes: 'Ja',
16
16
  no: 'Nej',
17
- answered: (when) => `Svarede ${when}.`,
18
- version: (commit) => `Cookiebanneret fra version ${commit}.`,
17
+ answered: (when) => `Svarede ${when}`,
18
+ version: (commit) => `Cookiebanneret fra version ${commit}`,
19
19
  deleteAll: 'Slet svarene med dette id',
20
20
  deleteAsk: (id) => `Slet alle svar med samtykke-id ${id}? Det kan ikke fortrydes.`,
21
21
  deleted: 'Svarene er slettet',
@@ -32,16 +32,16 @@ export const forms: Messages['forms'] = {
32
32
  keywordInH1: (word, post, found) => `Søgeordet "${word}" står ${found ? '' : 'ikke '}i ${post ? 'titlen' : 'overskriften (H1)'}.`,
33
33
  keywordInText: (word, found) => `Søgeordet "${word}" står ${found ? '' : 'ikke '}i første afsnit.`,
34
34
  noindex: (post) => `${post ? 'Indlægget' : 'Siden'} er skjult for Google.`,
35
- noCanonical: 'Canonical URL peger på en side, der ikke findes.',
35
+ noCanonical: 'Canonical URL (den side, Google skal vise) peger på en side, der ikke findes.',
36
36
  allAlt: 'Alle billeder har en alternativ tekst.',
37
37
  noAlt: (n) => `${n} ${n === 1 ? 'billede' : 'billeder'} har ingen alternativ tekst.`,
38
38
  goodLinks: (n) => (n === 1 ? 'Linket har en beskrivende tekst.' : 'Linkene har beskrivende tekst.'),
39
39
  vagueLink: (text) => `Linket "${text}" siger ikke, hvor det fører hen.`,
40
- fixNoH1: 'Skriv sidens overskrift øverst i teksten, og gør den til Overskrift (H1).',
40
+ fixNoH1: 'Skriv sidens overskrift øverst i teksten som en Overskrift.',
41
41
  fixManyH1: 'Gør de andre til Overskrift eller Underoverskrift.',
42
42
  fixH1First: 'Flyt overskriften (H1) op, så den står først i teksten.',
43
43
  fixTitle: 'Skriv en Google-titel på højst ca. 60 tegn.',
44
- fixDescription: 'Skriv en Google-beskrivelse på ca. 140-155 tegn.',
44
+ fixDescription: 'Skriv en Google-beskrivelse på ca. 140–155 tegn.',
45
45
  fixKeywordInH1: (post) => `Brug søgeordet i ${post ? 'titlen' : 'overskriften (H1)'}.`,
46
46
  fixKeywordInText: 'Brug søgeordet i første afsnit.',
47
47
  fixNoindex: (post) => `Fjern fluebenet ved Skjul for søgemaskiner (noindex), hvis ${post ? 'indlægget' : 'siden'} skal kunne findes.`,
@@ -73,14 +73,14 @@ export const forms: Messages['forms'] = {
73
73
  taken: (reason, typed, post) => `${reason} ${typed ? 'Vælg en anden adresse' : `Giv ${post ? 'indlægget' : 'siden'} en anden titel`}.`,
74
74
  fileExists: (name) => `Der findes allerede en fil med navnet ${name}.md. Vælg en anden adresse.`,
75
75
  empty: (post) => `${post ? 'Et tomt blogindlæg' : 'En tom side'} kan ikke gemmes.`,
76
- movedTitle: 'Der er oprettet en videresendelse',
76
+ movedTitle: 'Videresendelse oprettet',
77
77
  movedText: (address, old, post, where) =>
78
78
  `${post ? 'Indlægget' : 'Siden'} har fået adressen ${address}. Den gamle adresse, ${old}, sender nu videre hertil.`,
79
79
  ok: 'OK',
80
80
  seeRedirects: 'Se videresendelser',
81
81
  },
82
82
  nameNeedsLetters: 'Navnet skal have bogstaver eller tal.',
83
- fromTitle: 'Dannes ud fra titlen, første gang siden gemmes.',
83
+ fromTitle: 'Oprettes ud fra titlen, første gang du gemmer siden.',
84
84
  noIcon: 'Intet ikon',
85
85
  pickIcon: 'Vælg et ikon',
86
86
  noIconYet: 'Intet ikon endnu',
@@ -102,7 +102,7 @@ export const forms: Messages['forms'] = {
102
102
  itemTitle: 'Punkt',
103
103
  empty: '(tom)',
104
104
  removeQuestion: (what) => `Fjern ${what}?`,
105
- removeWithChildren: (what, n) => `Fjern ${what}? Punkterne under det (${n}) fjernes også.`,
105
+ removeWithChildren: (what, n) => `Fjern ${what}? ${n === 1 ? 'Punktet' : `De ${n} punkter`} under det fjernes også.`,
106
106
  showChildrenOf: (name) => `Vis punkterne under ${name}`,
107
107
  hideChildrenOf: (name) => `Skjul punkterne under ${name}`,
108
108
  editOne: (name) => `Rediger ${name}`,
@@ -2,25 +2,25 @@ import type { Messages } from '../en-US';
2
2
 
3
3
  export const history: Messages['history'] = {
4
4
  versions: 'Tidligere versioner',
5
- loading: 'Henter versionerne',
5
+ loading: 'Henter versionerne…',
6
6
  notLoaded: (error) => `Kunne ikke hente versionerne: ${error}`,
7
- none: 'Der er ingen tidligere versioner.',
7
+ none: 'Der er ingen tidligere versioner',
8
8
  by: (name) => `Gemt af ${name}`,
9
9
  current: 'Nuværende version',
10
10
  more: 'Vis ældre versioner',
11
11
  opening: 'Henter versionen…',
12
- notThere: 'Filen fandtes ikke i den version.',
12
+ notThere: 'Filen fandtes ikke i den version',
13
13
  notOpened: (error) => `Kunne ikke åbne versionen: ${error}`,
14
14
  shownTitle: (when) => `Versionen fra ${when}`,
15
- shownText: 'Tryk Gem ændringer for at gendanne den.',
15
+ shownText: 'Tryk Gem ændringer for at gendanne den',
16
16
  cannotShow: 'Versionen kan ikke vises. Du ser den nuværende.',
17
17
  showCurrent: 'Vis den nuværende version',
18
18
  deletedOf: (label) => `Slettede ${label.charAt(0).toLowerCase()}${label.slice(1)}`,
19
19
  deletedNote: 'Slettede elementer kan gendannes.',
20
20
  files: 'filer',
21
- loadingDeleted: 'Henter slettede elementer',
21
+ loadingDeleted: 'Henter slettede elementer…',
22
22
  deletedNotLoaded: (error) => `Kunne ikke hente slettede elementer: ${error}`,
23
- noneDeleted: 'Der er ikke slettet noget for nylig.',
23
+ noneDeleted: 'Der er ikke slettet noget for nylig',
24
24
  deletedAt: (when, by) => (by ? `Slettet ${when} af ${by}` : `Slettet ${when}`),
25
25
  restore: 'Gendan',
26
26
  restoreAsk: (name) => `Gendan ${name}?`,
@@ -4,8 +4,8 @@ export const keywords: Messages['keywords'] = {
4
4
  title: 'Søgeord',
5
5
  searchLabel: 'Søg i søgeordene',
6
6
  on: (page, primary) => `${page} · ${primary ? 'Primært søgeord' : 'Sekundært søgeord'}`,
7
- noMatch: 'Ingen søgeord passer.',
8
- none: 'Ingen sider har søgeord endnu.',
7
+ noMatch: 'Ingen søgeord passer',
8
+ none: 'Ingen sider har søgeord endnu',
9
9
  links: (n) => `${n} ${n === 1 ? 'link' : 'links'}`,
10
10
  sorts: { az: 'A–Å', za: 'Å–A', most: 'Flest links først', fewest: 'Færrest links først' },
11
11
  whichFilter: 'Søgeord',
@@ -4,11 +4,12 @@ export const library: Messages['library'] = {
4
4
  siteUpdated: (when) => `Opdateret ${when}`,
5
5
  cmsVersion: (version) => `Morpheme ${version}`,
6
6
  statusSeparator: ' · ',
7
+ createNew: 'Opret',
7
8
  githubAccount: (login) => `GitHub-konto: ${login}`,
8
9
  logOut: 'Log ud',
9
10
  notifications: 'Notifikationer',
10
11
  notificationsNew: (count) => `Notifikationer, ${count} nye`,
11
- noNotifications: 'Ingen notifikationer.',
12
+ noNotifications: 'Ingen notifikationer',
12
13
  clearNotifications: 'Ryd notifikationer',
13
14
  notificationChoices: 'Vælg notifikationer',
14
15
  onDevice: 'På telefonen',
@@ -36,24 +37,24 @@ export const library: Messages['library'] = {
36
37
  themeKeptBlocks: 'Alle blokke, i temaets udseende',
37
38
  useTheme: 'Brug temaet',
38
39
  changeTheme: 'Skift tema',
39
- changeThemeAsk: (name) => `Hjemmesiden får temaet ${name}. Den opdateres om et par minutter.`,
40
+ changeThemeAsk: (name) => `Hjemmesiden får temaet ${name} om et par minutter`,
40
41
  themeCommit: (name) => `Editor: skift tema til ${name}`,
41
- themeInstalled: (name) => `${name} er installeret og kan vælges, når hjemmesiden er bygget.`,
42
- themeUpdated: (name, version) => `${name} er opdateret til ${version} og ser sådan ud, når hjemmesiden er bygget.`,
43
- themeUninstalled: (name) => `${name} er afinstalleret.`,
42
+ themeInstalled: (name) => `${name} er installeret. Du kan vælge det om et par minutter.`,
43
+ themeUpdated: (name, version) => `${name} er opdateret til ${version}. Hjemmesiden bruger den om et par minutter.`,
44
+ themeUninstalled: (name) => `${name} er afinstalleret`,
44
45
  askUninstallTheme: (name) => `Afinstaller ${name}? Temaet fjernes fra hjemmesiden.`,
45
46
  themeStuck: 'Temaet er i brug og kan ikke afinstalleres. Vælg et andet tema først.',
46
47
  themeUninstallHint: 'Kan afinstalleres, fordi hjemmesiden ikke bruger temaet.',
47
- themePendingHint: 'Temaet kan vælges, når hjemmesiden er bygget.',
48
- themeNotInStore: 'Temaet findes ikke i Appstore.',
48
+ themePendingHint: 'Du kan vælge temaet om et par minutter.',
49
+ themeNotInStore: 'Temaet findes ikke i Appstore',
49
50
  iconPackByline: (author, license) => `${author} · ${license}`,
50
51
  iconPackFrom: (theme) => `Fra temaet ${theme}`,
51
52
  iconPackSamples: (name) => `Ikoner fra ${name}`,
52
53
  iconPackInUse: 'I brug',
53
- iconPackNext: 'Skifter hertil, når hjemmesiden er bygget',
54
+ iconPackNext: 'Skifter hertil om et par minutter',
54
55
  changeIconPack: 'Skift ikonpakke',
55
- changeIconPackAsk: (name) => `Hjemmesiden og editoren får ikonerne fra ${name}, når hjemmesiden er bygget om et par minutter.`,
56
- iconPackSaved: (change) => `${change}. Hjemmesiden og editoren får de nye ikoner, når hjemmesiden er bygget.`,
56
+ changeIconPackAsk: (name) => `Hjemmesiden og editoren får ikonerne fra ${name} om et par minutter`,
57
+ iconPackSaved: (change) => `${change}. Hjemmesiden og editoren får de nye ikoner om et par minutter.`,
57
58
  iconPackCommit: (name) => `Editor: skift ikonpakke til ${name}`,
58
59
  motionSchemes: { expressive: 'Udtryksfuld', standard: 'Standard', calm: 'Rolig' },
59
60
  motionHints: {
@@ -62,9 +63,9 @@ export const library: Messages['library'] = {
62
63
  calm: 'Det, der flytter sig, gør det kort, og sektionerne vises med det samme',
63
64
  },
64
65
  motionOfTheme: 'Temaets valg',
65
- changeMotionAsk: (name) => `Hjemmesiden får bevægelsen ${name}, når den er bygget om et par minutter. Editoren får den med det samme.`,
66
+ changeMotionAsk: (name) => `Hjemmesiden får bevægelsen ${name} om et par minutter. Editoren får den med det samme.`,
66
67
  changeMotion: 'Skift bevægelse',
67
- motionSaved: (change) => `${change}. Hjemmesiden får den nye bevægelse, når den er bygget.`,
68
+ motionSaved: (change) => `${change}. Hjemmesiden får den nye bevægelse om et par minutter.`,
68
69
  motionCommit: (name) => `Editor: skift bevægelse til ${name}`,
69
70
  sideNone: 'Ingen',
70
71
  sideNoneHint: 'Siderne har ingen kolonne ved siden af teksten',
@@ -139,8 +140,9 @@ export const library: Messages['library'] = {
139
140
  hideSubpages: 'Skjul undersider',
140
141
  showSubpagesOf: (title) => `Vis undersider til ${title}`,
141
142
  hideSubpagesOf: (title) => `Skjul undersider til ${title}`,
142
- openSidebar: 'Åbn sidepanelet',
143
- closeSidebar: 'Luk sidepanelet',
144
- sidebar: 'Sidepanelet',
143
+ navigation: 'Navigation',
144
+ openMenu: 'Åbn menuen',
145
+ closeMenu: 'Luk menuen',
146
+ mainMenu: 'Hovedmenu',
145
147
  breadcrumbs: 'Brødkrummer',
146
148
  };
@@ -16,10 +16,10 @@ export const licenses: Messages['licenses'] = {
16
16
  offered: 'kan vælges',
17
17
  version: (version) => `Version ${version}`,
18
18
  own: (name) => `${name} selv`,
19
- loading: 'Henter licenserne',
20
- missing: 'Licenserne kommer, når hjemmesiden er opdateret.',
19
+ loading: 'Henter licenserne…',
20
+ missing: 'Licenserne kan ses om et par minutter',
21
21
  text: 'Licenstekst',
22
- noText: 'Der er ingen licenstekst, da alle rettigheder er forbeholdt.',
22
+ noText: 'Der er ingen licenstekst, da alle rettigheder er forbeholdt',
23
23
  standardText: (license) => `Pakken har ingen licensfil, så her står standardteksten for ${license}.`,
24
- notFound: 'Licensen findes ikke.',
24
+ notFound: 'Licensen findes ikke',
25
25
  };
@@ -13,6 +13,8 @@ export const media: Messages['media'] = {
13
13
  all: 'Alle',
14
14
  kind: 'Type',
15
15
  allKinds: 'Alle typer',
16
+ tagFilter: 'Tag',
17
+ allTags: 'Alle tags',
16
18
  kinds: {
17
19
  picture: {
18
20
  plural: 'Billeder',
@@ -45,14 +47,14 @@ export const media: Messages['media'] = {
45
47
  },
46
48
  inUse: 'I brug',
47
49
  removeFilter: (label) => `Fjern filteret ${label}`,
48
- noPictures: 'Ingen billeder.',
49
- noFiles: 'Ingen filer.',
50
+ noPictures: 'Ingen billeder',
51
+ noFiles: 'Ingen filer',
50
52
  pick: 'Vælg billede',
51
53
  uploadNew: 'Upload nyt billede',
52
54
  add: 'Tilføj fil',
53
55
  preparing: 'Klargør billedet…',
54
56
  notDeleted: (error) => `Kunne ikke slette: ${error}`,
55
- nameTaken: 'Der findes allerede en fil med det navn.',
57
+ nameTaken: 'Der findes allerede en fil med det navn',
56
58
  tooBig: (mb) => `Filen er for stor. Den må højst fylde ${mb} MB.`,
57
59
  notAFile: 'Filen kan ikke bruges. Vælg et billede, en PDF, en video eller en zip-fil.',
58
60
  name: 'Navn',
@@ -62,11 +64,15 @@ export const media: Messages['media'] = {
62
64
  savedAs: (name) => `Gemmes som ${name}`,
63
65
  usedOn: 'Bruges på',
64
66
  siteDesign: 'Hjemmesidens design',
65
- noPages: 'Ingen sider.',
67
+ noPages: 'Ingen sider',
68
+ tags: 'Tags',
69
+ addTag: 'Tilføj tag',
70
+ createTag: 'Opret et tag',
66
71
  commit: {
67
72
  add: (what, name) => `Editor: tilføj ${what} "${name}"`,
68
73
  delete: (what, name) => `Editor: slet ${what} "${name}"`,
69
74
  rename: (what, from, to) => `Editor: omdøb ${what} "${from}" til "${to}"`,
75
+ tags: (what, name) => `Editor: ret tags på ${what} "${name}"`,
70
76
  },
71
77
  crop: {
72
78
  format: 'Format',