@plone/volto 18.0.0-alpha.45 → 18.0.0-alpha.47

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 (76) hide show
  1. package/.eslintrc +19 -22
  2. package/CHANGELOG.md +62 -0
  3. package/locales/ca/LC_MESSAGES/volto.po +81 -13
  4. package/locales/ca.json +1 -1
  5. package/locales/de/LC_MESSAGES/volto.po +86 -18
  6. package/locales/de.json +1 -1
  7. package/locales/en/LC_MESSAGES/volto.po +81 -13
  8. package/locales/en.json +1 -1
  9. package/locales/es/LC_MESSAGES/volto.po +81 -13
  10. package/locales/es.json +1 -1
  11. package/locales/eu/LC_MESSAGES/volto.po +81 -13
  12. package/locales/eu.json +1 -1
  13. package/locales/fi/LC_MESSAGES/volto.po +81 -13
  14. package/locales/fi.json +1 -1
  15. package/locales/fr/LC_MESSAGES/volto.po +81 -13
  16. package/locales/fr.json +1 -1
  17. package/locales/hi/LC_MESSAGES/volto.po +81 -13
  18. package/locales/hi.json +1 -1
  19. package/locales/it/LC_MESSAGES/volto.po +81 -13
  20. package/locales/it.json +1 -1
  21. package/locales/ja/LC_MESSAGES/volto.po +81 -13
  22. package/locales/ja.json +1 -1
  23. package/locales/nl/LC_MESSAGES/volto.po +81 -13
  24. package/locales/nl.json +1 -1
  25. package/locales/pt/LC_MESSAGES/volto.po +81 -13
  26. package/locales/pt.json +1 -1
  27. package/locales/pt_BR/LC_MESSAGES/volto.po +81 -13
  28. package/locales/pt_BR.json +1 -1
  29. package/locales/ro/LC_MESSAGES/volto.po +81 -13
  30. package/locales/ro.json +1 -1
  31. package/locales/volto.pot +82 -14
  32. package/locales/zh_CN/LC_MESSAGES/volto.po +81 -13
  33. package/locales/zh_CN.json +1 -1
  34. package/package.json +11 -9
  35. package/razzle.config.js +8 -5
  36. package/src/actions/aliases/aliases.js +27 -7
  37. package/src/actions/aliases/aliases.test.js +1 -1
  38. package/src/components/manage/BlockChooser/BlockChooserSearch.jsx +0 -1
  39. package/src/components/manage/Contents/Contents.jsx +2 -0
  40. package/src/components/manage/Controlpanels/Aliases.jsx +499 -412
  41. package/src/components/manage/Controlpanels/Aliases.test.jsx +7 -0
  42. package/src/components/manage/Controlpanels/DatabaseInformation.jsx +1 -0
  43. package/src/components/manage/Controlpanels/UpgradeControlPanel.jsx +1 -0
  44. package/src/components/manage/Controlpanels/Users/UserGroupMembershipMatrix.jsx +14 -12
  45. package/src/components/manage/Edit/Edit.jsx +7 -3
  46. package/src/components/manage/Form/ModalForm.jsx +3 -1
  47. package/src/components/manage/Pluggable/Pluggable.test.js +3 -3
  48. package/src/components/manage/Sidebar/ObjectBrowserNav.jsx +1 -0
  49. package/src/components/manage/Toolbar/More.jsx +2 -2
  50. package/src/components/manage/Toolbar/PersonalTools.jsx +7 -7
  51. package/src/components/manage/Toolbar/PersonalTools.test.jsx +71 -0
  52. package/src/components/theme/Icon/Icon.stories.jsx +1 -0
  53. package/src/components/theme/Login/Login.jsx +1 -2
  54. package/src/components/theme/Widgets/ArrayWidget.jsx +2 -2
  55. package/src/constants/ActionTypes.js +1 -0
  56. package/src/express-middleware/static.js +2 -2
  57. package/src/helpers/Api/Api.js +12 -1
  58. package/src/helpers/Html/Html.jsx +1 -0
  59. package/src/middleware/api.js +3 -0
  60. package/src/reducers/content/content.js +12 -0
  61. package/src/start-server.js +2 -5
  62. package/types/actions/aliases/aliases.d.ts +8 -1
  63. package/types/components/manage/Contents/__mocks__/index.d.ts +0 -1
  64. package/types/components/manage/Controlpanels/Relations/RelationsMatrix.d.ts +1 -1
  65. package/types/components/manage/Controlpanels/index.d.ts +0 -1
  66. package/types/components/manage/Form/__mocks__/index.d.ts +0 -1
  67. package/types/components/manage/Form/index.d.ts +0 -1
  68. package/types/components/manage/Multilingual/ManageTranslations.d.ts +1 -1
  69. package/types/components/manage/Sidebar/ObjectBrowser.d.ts +1 -1
  70. package/types/components/manage/Widgets/InternalUrlWidget.d.ts +1 -1
  71. package/types/components/manage/Widgets/UrlWidget.d.ts +1 -1
  72. package/types/components/manage/Widgets/__mocks__/index.d.ts +0 -1
  73. package/types/components/manage/Widgets/index.d.ts +2 -3
  74. package/types/config/slots.d.ts +1 -1
  75. package/types/constants/ActionTypes.d.ts +1 -0
  76. package/types/helpers/Helmet/Helmet.d.ts +1 -1
package/.eslintrc CHANGED
@@ -6,29 +6,30 @@
6
6
  "browser": true,
7
7
  "node": true,
8
8
  "mocha": true,
9
- "jasmine": true
9
+ "jasmine": true,
10
10
  },
11
11
  "parser": "@babel/eslint-parser",
12
12
  "parserOptions": {
13
13
  "ecmaVersion": 6,
14
14
  "sourceType": "module",
15
15
  "ecmaFeatures": {
16
- "legacyDecorators": true
17
- }
16
+ "legacyDecorators": true,
17
+ },
18
18
  },
19
19
  "rules": {
20
20
  "import/no-unresolved": 1,
21
+ "react/jsx-key": [2, { "checkFragmentShorthand": true }],
21
22
  "no-alert": 1,
22
23
  "no-console": 1,
23
24
  "no-debugger": 1,
24
25
  "prettier/prettier": [
25
26
  "error",
26
- { "trailingComma": "all", "singleQuote": true }
27
+ { "trailingComma": "all", "singleQuote": true },
27
28
  ],
28
29
  "react-hooks/rules-of-hooks": "error",
29
30
  "react-hooks/exhaustive-deps": "warn",
30
31
  "react/react-in-jsx-scope": "off",
31
- "jsx-a11y/label-has-associated-control": "off"
32
+ "jsx-a11y/label-has-associated-control": "off",
32
33
  },
33
34
  "settings": {
34
35
  "import/resolver": {
@@ -36,21 +37,20 @@
36
37
  "map": [
37
38
  ["@plone/volto", "./src"],
38
39
  ["@plone/volto-slate", "../volto-slate/src"],
39
- ["@plone/registry", "../registry/src"],
40
40
  ["@plone/types", "../types"],
41
41
  ["@package", "./src"],
42
- ["@root", "./src"]
42
+ ["@root", "./src"],
43
43
  ],
44
- "extensions": [".js", ".jsx", ".ts", ".tsx", ".json"]
44
+ "extensions": [".js", ".jsx", ".ts", ".tsx", ".json"],
45
45
  },
46
46
  "babel-plugin-root-import": {
47
- "rootPathSuffix": "src"
48
- }
47
+ "rootPathSuffix": "src",
48
+ },
49
49
  },
50
50
  "import/core-modules": ["load-volto-addons"],
51
51
  "react": {
52
- "version": "detect"
53
- }
52
+ "version": "detect",
53
+ },
54
54
  },
55
55
  "overrides": [
56
56
  {
@@ -60,17 +60,14 @@
60
60
  // Re-add it if at some point, we stop relying on it
61
61
  "extends": ["react-app", "prettier", "plugin:jsx-a11y/recommended"],
62
62
  "plugins": ["prettier", "react-hooks", "jsx-a11y"],
63
- "parser": "@typescript-eslint/parser"
63
+ "parser": "@typescript-eslint/parser",
64
64
  },
65
65
  {
66
- "files": [
67
- "**/*.stories.js",
68
- "**/*.stories.jsx"
69
- ],
66
+ "files": ["**/*.stories.js", "**/*.stories.jsx"],
70
67
  "rules": {
71
- "import/no-anonymous-default-export": "off"
72
- }
73
- }
68
+ "import/no-anonymous-default-export": "off",
69
+ },
70
+ },
74
71
  ],
75
72
  "globals": {
76
73
  "root": true,
@@ -86,6 +83,6 @@
86
83
  "Cypress": true,
87
84
  "jest": true,
88
85
  "socket": true,
89
- "webpackIsomorphicTools": true
90
- }
86
+ "webpackIsomorphicTools": true,
87
+ },
91
88
  }
package/CHANGELOG.md CHANGED
@@ -17,6 +17,68 @@ myst:
17
17
 
18
18
  <!-- towncrier release notes start -->
19
19
 
20
+ ## 18.0.0-alpha.47 (2024-10-27)
21
+
22
+ ### Breaking
23
+
24
+ - Dropped support for Node.js 18, since Volto only supports the last two LTS versions. @sneridagh
25
+ Volto might continue to work on it, but it will be no longer tested in CI. [#6371](https://github.com/plone/volto/issues/6371)
26
+
27
+ ### Feature
28
+
29
+ - URL Management control panel: add a filter for redirects created after a given date.
30
+ **Note:** This requires `Products.CMFPlone` 6.0.14 and `plone.restapi` 9.8.0 or later.
31
+ @davisagli [#6414](https://github.com/plone/volto/issues/6414)
32
+ - URL Management control panel: Move the form for adding a new redirect into a modal. @davisagli [#6421](https://github.com/plone/volto/issues/6421)
33
+ - URL Management control panel: Add feature to bulk upload redirects in a CSV file.
34
+ **Note:** This requires `plone.restapi` 9.8.0 or later.
35
+ @davisagli [#6421](https://github.com/plone/volto/issues/6421)
36
+ - Introducing "client transforms for Redux reducers". @sneridagh [#6422](https://github.com/plone/volto/issues/6422)
37
+ - URL Management control panel: Add a way to edit existing aliases. @davisagli [#6425](https://github.com/plone/volto/issues/6425)
38
+
39
+ ### Bugfix
40
+
41
+ - Fix site setup access check by using `@actions` endpoint to validate permissions. @Faakhir30 [#6355](https://github.com/plone/volto/issues/6355)
42
+ - Fix redirect after login if the `Login` component is used on a route other than `/login` or `/logout`. @dobri1408 [#6419](https://github.com/plone/volto/issues/6419)
43
+ - URL Management control panel: Improve layout for long paths. @davisagli [#6421](https://github.com/plone/volto/issues/6421)
44
+ - URL Management control panel: add missing translations. @davisagli [#6436](https://github.com/plone/volto/issues/6436)
45
+
46
+ ### Internal
47
+
48
+ - Used `resource title` instead of `resource type` in page title on edit. @Faakhir30 [#6308](https://github.com/plone/volto/issues/6308)
49
+ - Added support for Node.js 22, since it will become LTS on 2024-10-29. @sneridagh [#6371](https://github.com/plone/volto/issues/6371)
50
+ - Adapt `@plone/registry` as an ESM module, and fix its imports. @sneridagh [#6399](https://github.com/plone/volto/issues/6399)
51
+ - Fix `clean` make command @sneridagh [#6403](https://github.com/plone/volto/issues/6403)
52
+ - Update typescript and vitest everywhere @sneridagh [#6407](https://github.com/plone/volto/issues/6407)
53
+ - Update `caniuse` Oct24 @sneridagh [#6408](https://github.com/plone/volto/issues/6408)
54
+ - Remove last tests still in Node.js 18 @sneridagh [#6418](https://github.com/plone/volto/issues/6418)
55
+ - Remove mention of `SEAMLESS` mode in the server bootstrap. @sneridagh [#6424](https://github.com/plone/volto/issues/6424)
56
+
57
+ ### Documentation
58
+
59
+ - Added deprecation notices to the upgrade guide for Volto 18. @sneridagh [#6426](https://github.com/plone/volto/issues/6426)
60
+ - Replace `yarn` with `pnpm` wherever necessary. @sneridagh [#6433](https://github.com/plone/volto/issues/6433)
61
+ - Rename page title from Frontend to Volto UI. @stevepiercy [#6438](https://github.com/plone/volto/issues/6438)
62
+
63
+ ## 18.0.0-alpha.46 (2024-10-10)
64
+
65
+ ### Breaking
66
+
67
+ - Added `react/jsx-key` rule for ESlint to detect missing key property in iterators. @sneridagh [#6387](https://github.com/plone/volto/issues/6387)
68
+
69
+ ### Bugfix
70
+
71
+ - Revert "Fix block chooser search is not focusable when clicked on add button" #5867 @sneridagh
72
+ It was causing a regression described in #6389 [#6390](https://github.com/plone/volto/issues/6390)
73
+
74
+ ### Internal
75
+
76
+ - Added missing improvement to the `build-deps` Makefile command. @sneridagh [#6383](https://github.com/plone/volto/issues/6383)
77
+
78
+ ### Documentation
79
+
80
+ - Add reference to Translate Volto in the main documentation. @stevepiercy [#6386](https://github.com/plone/volto/issues/6386)
81
+
20
82
  ## 18.0.0-alpha.45 (2024-10-08)
21
83
 
22
84
  ### Bugfix
@@ -74,7 +74,6 @@ msgstr ""
74
74
 
75
75
  #. Default: "Add"
76
76
  #: components/manage/Aliases/Aliases
77
- #: components/manage/Controlpanels/Aliases
78
77
  #: components/manage/Controlpanels/ContentTypes
79
78
  #: components/manage/Controlpanels/Rules/ConfigureRule
80
79
  #: components/manage/Rules/Rules
@@ -94,6 +93,11 @@ msgstr ""
94
93
  msgid "Add Addons"
95
94
  msgstr "Afegeix complements"
96
95
 
96
+ #. Default: "Add Alternative URL"
97
+ #: components/manage/Controlpanels/Aliases
98
+ msgid "Add Alternative URL"
99
+ msgstr ""
100
+
97
101
  #. Default: "Add Content…"
98
102
  #: components/manage/Toolbar/Types
99
103
  msgid "Add Content"
@@ -310,6 +314,16 @@ msgstr ""
310
314
  msgid "Alias has been added"
311
315
  msgstr ""
312
316
 
317
+ #. Default: "Aliases have been removed."
318
+ #: components/manage/Controlpanels/Aliases
319
+ msgid "Aliases have been removed."
320
+ msgstr ""
321
+
322
+ #. Default: "Aliases have been uploaded."
323
+ #: components/manage/Controlpanels/Aliases
324
+ msgid "Aliases have been uploaded."
325
+ msgstr ""
326
+
313
327
  #. Default: "Alignment"
314
328
  #: components/manage/Blocks/Image/schema
315
329
  #: components/manage/Blocks/LeadImage/LeadImageSidebar
@@ -329,7 +343,7 @@ msgstr "Tots"
329
343
  msgid "All content"
330
344
  msgstr "Tot el contingut"
331
345
 
332
- #. Default: "All existing alternative urls for this site"
346
+ #. Default: "Existing alternative URLs for this site"
333
347
  #: components/manage/Controlpanels/Aliases
334
348
  msgid "All existing alternative urls for this site"
335
349
  msgstr ""
@@ -356,7 +370,7 @@ msgstr "Deixeu el camp buit si la imatge és purament decorativa"
356
370
  msgid "Alt text hint link text"
357
371
  msgstr "Descriu el propòsit de la imatge"
358
372
 
359
- #. Default: "Alternative url path (Required)"
373
+ #. Default: "Alternative URL path (Required)"
360
374
  #: components/manage/Controlpanels/Aliases
361
375
  msgid "Alternative url path (Required)"
362
376
  msgstr ""
@@ -367,7 +381,7 @@ msgstr ""
367
381
  msgid "Alternative url path must start with a slash."
368
382
  msgstr ""
369
383
 
370
- #. Default: "Alternative url path → target url path (date and time of creation, manually created yes/no)"
384
+ #. Default: "Alternative URL path → target URL path (date and time of creation, manually created yes/no)"
371
385
  #: components/manage/Controlpanels/Aliases
372
386
  msgid "Alternative url path → target url path (date and time of creation, manually created yes/no)"
373
387
  msgstr ""
@@ -418,6 +432,11 @@ msgstr ""
418
432
  msgid "Assignments"
419
433
  msgstr ""
420
434
 
435
+ #. Default: "Automatically"
436
+ #: components/manage/Controlpanels/Aliases
437
+ msgid "Automatically"
438
+ msgstr ""
439
+
421
440
  #. Default: "Available"
422
441
  #: components/manage/Controlpanels/AddonsControlpanel
423
442
  msgid "Available"
@@ -477,6 +496,11 @@ msgstr "Base de cerca"
477
496
  msgid "Block"
478
497
  msgstr "Bloc"
479
498
 
499
+ #. Default: "Both"
500
+ #: components/manage/Controlpanels/Aliases
501
+ msgid "Both"
502
+ msgstr ""
503
+
480
504
  #. Default: "Both email address and password are case sensitive, check that caps lock is not enabled."
481
505
  #: components/theme/Login/Login
482
506
  msgid "Both email address and password are case sensitive, check that caps lock is not enabled."
@@ -503,11 +527,21 @@ msgstr "Navegui"
503
527
  msgid "Browse the site, drop an image, or type a URL"
504
528
  msgstr "Navegueu pel lloc, deixeu anar una imatge o escriviu un URL"
505
529
 
530
+ #. Default: "Bulk upload CSV"
531
+ #: components/manage/Controlpanels/Aliases
532
+ msgid "BulkUploadAltUrls"
533
+ msgstr ""
534
+
506
535
  #. Default: "By default, permissions from the container of this item are inherited. If you disable this, only the explicitly defined sharing permissions will be valid. In the overview, the symbol {inherited} indicates an inherited value. Similarly, the symbol {global} indicates a global role, which is managed by the site administrator."
507
536
  #: components/manage/Sharing/Sharing
508
537
  msgid "By default, permissions from the container of this item are inherited. If you disable this, only the explicitly defined sharing permissions will be valid. In the overview, the symbol {inherited} indicates an inherited value. Similarly, the symbol {global} indicates a global role, which is managed by the site administrator."
509
538
  msgstr "Per defecte, els permisos del contenidor d'aquest element són heretats. Si es desactiva, només seran vàlids els permisos de compartició definits explícitament. A la vista general, el símbol ${inherited} indica un valor heretat. De la mateixa manera, el símbol ${global} indica un rol global, que és gestionat per l'administrador del lloc."
510
539
 
540
+ #. Default: "CSV file"
541
+ #: components/manage/Controlpanels/Aliases
542
+ msgid "CSVFile"
543
+ msgstr ""
544
+
511
545
  #. Default: "Cache Name"
512
546
  #: components/manage/Controlpanels/DatabaseInformation
513
547
  msgid "Cache Name"
@@ -836,6 +870,16 @@ msgstr ""
836
870
  msgid "Create working copy"
837
871
  msgstr "Crea una còpia de treball"
838
872
 
873
+ #. Default: "Created after"
874
+ #: components/manage/Controlpanels/Aliases
875
+ msgid "Created after"
876
+ msgstr ""
877
+
878
+ #. Default: "Created before"
879
+ #: components/manage/Controlpanels/Aliases
880
+ msgid "Created before"
881
+ msgstr ""
882
+
839
883
  #. Default: "Created by {creator} on {date}"
840
884
  #: components/manage/WorkingCopyToastsFactory/WorkingCopyToastsFactory
841
885
  msgid "Created by {creator} on {date}"
@@ -1182,6 +1226,11 @@ msgstr "Les adreces de correu electrònic no coincideixen."
1182
1226
  msgid "Edit"
1183
1227
  msgstr "Edita"
1184
1228
 
1229
+ #. Default: "Edit Alternative URL"
1230
+ #: components/manage/Controlpanels/Aliases
1231
+ msgid "Edit Alternative URL"
1232
+ msgstr ""
1233
+
1185
1234
  #. Default: "Edit Rule"
1186
1235
  #: components/manage/Controlpanels/Rules/EditRule
1187
1236
  msgid "Edit Rule"
@@ -1293,14 +1342,18 @@ msgstr "Introduïu el nom complet, per exemple John Smith."
1293
1342
  msgid "Enter map Embed Code"
1294
1343
  msgstr "Introduïu el codi d'inserció del mapa"
1295
1344
 
1296
- #. Default: "Enter the absolute path of the target. Target must exist or be an existing alternative url path to the target."
1345
+ #. Default: "Enter the absolute path of the target. Target must exist or be an existing alternative URL path to the target."
1297
1346
  #: components/manage/Controlpanels/Aliases
1298
1347
  msgid "Enter the absolute path of the target. Target must exist or be an existing alternative url path to the target."
1299
1348
  msgstr ""
1300
1349
 
1350
+ #. Default: "Enter the absolute path where the alternative URL should exist. The path must start with '/'. Only URLs that result in a 404 not found page will result in a redirect occurring."
1351
+ #: components/manage/Controlpanels/Aliases
1352
+ msgid "Enter the absolute path where the alternative url should exist. The path must start with '/'. Only URLs that result in a 404 not found page will result in a redirect occurring."
1353
+ msgstr ""
1354
+
1301
1355
  #. Default: "Enter the absolute path where the alternative url should exist. The path must start with '/'. Only urls that result in a 404 not found page will result in a redirect occurring."
1302
1356
  #: components/manage/Aliases/Aliases
1303
- #: components/manage/Controlpanels/Aliases
1304
1357
  msgid "Enter the absolute path where the alternative url should exist. The path must start with '/'. Only urls that result in a 404 not found page will result in a redirect occurring."
1305
1358
  msgstr ""
1306
1359
 
@@ -1346,11 +1399,6 @@ msgstr ""
1346
1399
  msgid "Error"
1347
1400
  msgstr "Error"
1348
1401
 
1349
- #. Default: "Error"
1350
- #: components/manage/Controlpanels/Aliases
1351
- msgid "ErrorHeader"
1352
- msgstr ""
1353
-
1354
1402
  #. Default: "Event"
1355
1403
  #: components/manage/Controlpanels/Rules/Rules
1356
1404
  msgid "Event"
@@ -1376,6 +1424,11 @@ msgstr ""
1376
1424
  msgid "Event view"
1377
1425
  msgstr "Esdeveniment"
1378
1426
 
1427
+ #. Default: "Example"
1428
+ #: components/manage/Controlpanels/Aliases
1429
+ msgid "Example"
1430
+ msgstr ""
1431
+
1379
1432
  #. Default: "Exclude from navigation"
1380
1433
  #: components/manage/Contents/ContentsPropertiesModal
1381
1434
  msgid "Exclude from navigation"
@@ -1487,6 +1540,7 @@ msgid "Files uploaded: {uploadedFiles}"
1487
1540
  msgstr "Fitxers pujats: {uploadedFiles}"
1488
1541
 
1489
1542
  #. Default: "Filter"
1543
+ #: components/manage/Controlpanels/Aliases
1490
1544
  #: helpers/MessageLabels/MessageLabels
1491
1545
  msgid "Filter"
1492
1546
  msgstr ""
@@ -1496,7 +1550,7 @@ msgstr ""
1496
1550
  msgid "Filter Rules:"
1497
1551
  msgstr ""
1498
1552
 
1499
- #. Default: "Filter by prefix"
1553
+ #. Default: "Filter by path"
1500
1554
  #: components/manage/Controlpanels/Aliases
1501
1555
  msgid "Filter by prefix"
1502
1556
  msgstr ""
@@ -2147,6 +2201,11 @@ msgstr "Gestiona les traduccions per a {title}"
2147
2201
  msgid "Manual"
2148
2202
  msgstr ""
2149
2203
 
2204
+ #. Default: "Manually"
2205
+ #: components/manage/Controlpanels/Aliases
2206
+ msgid "Manually"
2207
+ msgstr ""
2208
+
2150
2209
  #. Default: "Manually or automatically added?"
2151
2210
  #: components/manage/Controlpanels/Aliases
2152
2211
  msgid "Manually or automatically added?"
@@ -3591,7 +3650,6 @@ msgstr "Etiquetes per eliminar"
3591
3650
 
3592
3651
  #. Default: "Target"
3593
3652
  #: components/manage/Blocks/Teaser/schema
3594
- #: components/manage/Controlpanels/Aliases
3595
3653
  #: components/manage/Controlpanels/Relations/BrokenRelations
3596
3654
  #: components/manage/Controlpanels/Relations/RelationsMatrix
3597
3655
  msgid "Target"
@@ -4432,6 +4490,11 @@ msgstr ""
4432
4490
  msgid "box_forgot_password_option"
4433
4491
  msgstr "Has oblidat la teva contrasenya?"
4434
4492
 
4493
+ #. Default: "Add many alternative URLs at once by uploading a CSV file. The first column should be the path to redirect from; the second, the path to redirect to. Both paths must be Plone-site-relative, starting with a slash (/). An optional third column can contain a date and time. An optional fourth column can contain a boolean to mark as a manual redirect (default true)."
4494
+ #: components/manage/Controlpanels/Aliases
4495
+ msgid "bulkUploadUrlsHelp"
4496
+ msgstr ""
4497
+
4435
4498
  #. Default: "Checkbox"
4436
4499
  #: config/Blocks
4437
4500
  msgid "checkboxFacet"
@@ -4542,6 +4605,11 @@ msgstr "quan"
4542
4605
  msgid "event_where"
4543
4606
  msgstr "On?"
4544
4607
 
4608
+ #. Default: "/example"
4609
+ #: components/manage/Controlpanels/Aliases
4610
+ msgid "examplePath"
4611
+ msgstr ""
4612
+
4545
4613
  #. Default: "This website does not accept files larger than {limit}"
4546
4614
  #: helpers/MessageLabels/MessageLabels
4547
4615
  msgid "fileTooLarge"