1
0
mirror of https://gitlab.nic.cz/turris/reforis/foris-js.git synced 2025-04-20 08:16:38 +02:00

Compare commits

..

131 Commits
v6.1.0 ... dev

Author SHA1 Message Date
Aleksandr Gumroian
602e3f58dd Merge branch 'fix-qrcode' into 'dev'
Fix WiFiQRCode component

See merge request turris/reforis/foris-js!279
2025-04-16 17:29:30 +02:00
Aleksandr Gumroian
4b58e96f71
Refactor button click handlers to simplify event handling in WiFiQRCode 2025-04-16 16:44:07 +02:00
Aleksandr Gumroian
a174d6a612
Add Turris logo to enhanced QR code display 2025-04-16 16:43:40 +02:00
Aleksandr Gumroian
5d0276a80f
Replace deprecated QRCode component with QRCodeSVG 2025-04-16 16:43:05 +02:00
Aleksandr Gumroian
e01295504b Merge branch 'update-translations' into 'dev'
Add & update Weblate translations

See merge request turris/reforis/foris-js!277
2025-04-04 16:03:43 +02:00
Aleksandr Gumroian
af49bc7a24
Bump v6.7.1
* Add & update Weblate translations
2025-04-04 15:33:51 +02:00
Aleksandr Gumroian
4a60fb23cc
Update translation messages 2025-04-04 15:16:13 +02:00
Aleksandr Gumroian
c7282261ef
Create translation messages 2025-04-04 15:16:03 +02:00
Adolfo Jayme Barrientos
928758f5c6
Translated using Weblate (Spanish)
Currently translated at 100.0% (82 of 82 strings)

Translation: Turris/Foris JS
Translate-URL: https://hosted.weblate.org/projects/turris/foris-js/es/
2025-03-22 21:01:54 +01:00
தமிழ்நேரம்
030a563c77
Translated using Weblate (Tamil)
Currently translated at 100.0% (82 of 82 strings)

Translation: Turris/Foris JS
Translate-URL: https://hosted.weblate.org/projects/turris/foris-js/ta/
2025-03-19 14:25:21 +01:00
தமிழ்நேரம்
336fb666cc
Translated using Weblate (Tamil)
Currently translated at 8.5% (7 of 82 strings)

Translation: Turris/Foris JS
Translate-URL: https://hosted.weblate.org/projects/turris/foris-js/ta/
2025-03-15 23:53:35 +01:00
தமிழ்நேரம்
debd00d519
Translated using Weblate (Tamil)
Currently translated at 4.8% (4 of 82 strings)

Translation: Turris/Foris JS
Translate-URL: https://hosted.weblate.org/projects/turris/foris-js/ta/
2025-03-14 14:25:35 +01:00
தமிழ்நேரம்
cef75e5748
Translated using Weblate (Tamil)
Currently translated at 2.4% (2 of 82 strings)

Translation: Turris/Foris JS
Translate-URL: https://hosted.weblate.org/projects/turris/foris-js/ta/
2025-03-13 07:14:00 +01:00
தமிழ்நேரம்
027cd6eefb
Added translation using Weblate (Tamil) 2025-03-11 15:40:18 +01:00
Aleksandr Gumroian
227a975e5f Merge branch 'dev' into 'master'
Dev

See merge request turris/reforis/foris-js!276
2025-03-11 15:40:15 +01:00
Aleksandr Gumroian
819e5a1dd2 Merge branch 'bump-version-670' into 'dev'
Bump v6.7.0

See merge request turris/reforis/foris-js!275
2025-03-11 15:33:28 +01:00
Aleksandr Gumroian
6432073d62
Bump v6.7.0
* Add encryption property to guest WiFi settings in tests
* Add global fuzzy search and columns visibility to RichTable
* Make thead of RichTable lighter
* Update dependencies in package.json to latest versions
* Enhance ActionButtonWithModal to support dynamic methods
* NPM audit fix
2025-03-11 15:28:06 +01:00
Aleksandr Gumroian
94f436008d
Update several npm dependencies in package.json 2025-03-11 15:24:08 +01:00
Aleksandr Gumroian
6f9e44a7b1
NPM audit fix 2025-03-11 15:23:18 +01:00
Aleksandr Gumroian
13ca745412 Merge branch 'enhance-action-button-with-modal-dynamic-methods' into 'dev'
Enhance ActionButtonWithModal to support dynamic methods

See merge request turris/reforis/foris-js!274
2025-03-10 16:12:17 +01:00
Aleksandr Gumroian
a25133d786
Enhance ActionButtonWithModal to support dynamic methods 2025-03-10 15:01:45 +01:00
Aleksandr Gumroian
0a839bf369 Merge branch 'add-fuzzy-search-and-column-visibility' into 'dev'
Add global fuzzy search and columns visibility to RichTable

See merge request turris/reforis/foris-js!273
2025-03-06 15:34:48 +01:00
Aleksandr Gumroian
54a801a580
Add global fuzzy search and columns visibility to RichTable 2025-03-06 15:31:53 +01:00
Aleksandr Gumroian
377b4279fd Merge branch 'fix-table-header-color' into 'dev'
Fix table header color

See merge request turris/reforis/foris-js!272
2025-02-26 18:31:01 +01:00
Aleksandr Gumroian
317966e1c9
Update dependencies in package.json to latest versions 2025-02-25 14:06:33 +01:00
Aleksandr Gumroian
326790d80d
Replace 'wait' with 'waitFor' 2025-02-25 14:06:33 +01:00
Aleksandr Gumroian
700b28c463
Add encryption property to guest WiFi settings in tests 2025-02-25 14:06:33 +01:00
Aleksandr Gumroian
3d725e7e1b
Make thead of RichTable light 2025-02-25 14:06:32 +01:00
Aleksandr Gumroian
ede4fb0212 Merge branch 'dev' into 'master'
Dev

See merge request turris/reforis/foris-js!271
2025-02-20 12:56:13 +01:00
Aleksandr Gumroian
33add77704 Merge branch 'bump-version-662' into 'dev'
Bump v6.6.2

See merge request turris/reforis/foris-js!270
2025-02-20 12:53:59 +01:00
Aleksandr Gumroian
456cbcfeec
Bump v6.6.2
* Enhance SubmitButton component to accept a custom label prop
* Refactor RichTable component to remove forwardRef and simplify data handling
2025-02-20 12:42:10 +01:00
Aleksandr Gumroian
bf0b2ce70c Merge branch 'refactor-richtable' into 'dev'
Refactor RichTable

See merge request turris/reforis/foris-js!269
2025-02-19 16:20:47 +01:00
Aleksandr Gumroian
1441f6ff5a
Enhance SubmitButton component to accept a custom label prop and update copyright year 2025-02-19 16:17:05 +01:00
Aleksandr Gumroian
c7d0655771
Refactor RichTable component to remove forwardRef and simplify data handling 2025-02-19 16:17:04 +01:00
Aleksandr Gumroian
7197813cc9 Merge branch 'dev' into 'master'
Dev

See merge request turris/reforis/foris-js!268
2025-02-17 16:16:10 +01:00
Aleksandr Gumroian
31cb8e2ae0 Merge branch 'bump-version-661' into 'dev'
Bump v6.6.1

See merge request turris/reforis/foris-js!267
2025-02-17 16:12:27 +01:00
Aleksandr Gumroian
0a75f24a04
Bump v6.6.1
* Refactor RichTable component to use forwardRef
2025-02-17 16:07:50 +01:00
Aleksandr Gumroian
230ae8e35b Merge branch 'improve-richtable' into 'dev'
Refactor RichTable component to use forwardRef and useImperativeHandle for improved data handling

See merge request turris/reforis/foris-js!266
2025-02-17 15:42:41 +01:00
Aleksandr Gumroian
eb4ffb0651
Refactor RichTable component to use forwardRef
And useImperativeHandle for improved data handling.
2025-02-13 16:30:23 +01:00
Aleksandr Gumroian
2f249ce3dc Merge branch 'dev' into 'master'
Dev

See merge request turris/reforis/foris-js!265
2025-02-07 14:46:24 +01:00
Aleksandr Gumroian
74722b8ff3 Merge branch 'bump-version-660' into 'dev'
Bump v6.6.0

See merge request turris/reforis/foris-js!264
2025-02-07 14:43:20 +01:00
Aleksandr Gumroian
a2f9b3bfab
Bump v6.6.0
* Added & updated Weblate translations
* Added Wi-Fi and LAN settings URLs to ForisURLs
* Added Wi-Fi modes VHT/HE 80+80
* Added encryption selection to WiFiGuestForm
* Added optional close button to ModalHeader component
* Updated Wi-Fi API
* Enhanced NumberInput component with keyboard & touch accessibility
* Refactored pagination condition in RichTable component
2025-02-07 14:41:13 +01:00
Aleksandr Gumroian
2ab65be0bf Merge branch 'sync-master-dev' into 'dev'
Add Wi-Fi and LAN settings URLs to ForisURLs

See merge request turris/reforis/foris-js!262
2025-02-07 13:50:13 +01:00
Aleksandr Gumroian
36a7b4dfda
Add Wi-Fi and LAN settings URLs to ForisURLs 2025-02-07 13:45:13 +01:00
Aleksandr Gumroian
9fb0871cfc Merge branch 'update-translations' into 'dev'
Add & update Weblate translations

See merge request turris/reforis/foris-js!263
2025-02-07 13:39:10 +01:00
Aleksandr Gumroian
c7087eabf2 Merge branch 'feature/add-wifi-ht-modes-80-80' into 'dev'
Add wifi modes VHT/HE 80+80

See merge request turris/reforis/foris-js!260
2025-01-21 14:36:23 +01:00
Martin Matějek
b315ea2fd0
Add wifi modes VHT/HE 80+80 2025-01-21 16:33:02 +03:00
Thanasis
d46629a1bd
Translated using Weblate (Greek)
Currently translated at 8.5% (7 of 82 strings)

Translation: Turris/Foris JS
Translate-URL: https://hosted.weblate.org/projects/turris/foris-js/el/
2025-01-18 12:00:39 +01:00
Thanasis
8ddb590ba8
Translated using Weblate (Greek)
Currently translated at 7.3% (6 of 82 strings)

Translation: Turris/Foris JS
Translate-URL: https://hosted.weblate.org/projects/turris/foris-js/el/
2025-01-17 11:02:24 +01:00
Thanasis
1c2a4518d3
Translated using Weblate (Greek)
Currently translated at 6.0% (5 of 82 strings)

Translation: Turris/Foris JS
Translate-URL: https://hosted.weblate.org/projects/turris/foris-js/el/
2025-01-17 10:53:06 +01:00
Atec
b6312075d2
Translated using Weblate (Slovak)
Currently translated at 100.0% (82 of 82 strings)

Translation: Turris/Foris JS
Translate-URL: https://hosted.weblate.org/projects/turris/foris-js/sk/
2024-12-14 10:00:19 +00:00
ButterflyOfFire
2feedec8d1
Translated using Weblate (French)
Currently translated at 78.0% (64 of 82 strings)

Translation: Turris/Foris JS
Translate-URL: https://hosted.weblate.org/projects/turris/foris-js/fr/
2024-12-14 10:00:19 +00:00
Aleksandr Gumroian
dff5f87e91 Merge branch 'refactor-number-input' into 'dev'
Enhance NumberInput component with keyboard & touch accessibility

See merge request turris/reforis/foris-js!259
2024-12-12 16:49:51 +01:00
Aleksandr Gumroian
38de792390
Update Snapshots 2024-12-12 18:47:38 +03:00
Aleksandr Gumroian
c23616811a
Fix tests 2024-12-12 18:47:33 +03:00
Aleksandr Gumroian
f1132c6b22
Enhance NumberInput component with keyboard & touch accessibility 2024-12-12 18:44:21 +03:00
Moha684
e8e81b36dc
Translated using Weblate (French)
Currently translated at 68.2% (56 of 82 strings)

Translation: Turris/Foris JS
Translate-URL: https://hosted.weblate.org/projects/turris/foris-js/fr/
2024-12-11 10:24:36 +01:00
Pavel Borecki
53c7bb1a10
Translated using Weblate (Czech)
Currently translated at 100.0% (82 of 82 strings)

Translation: Turris/Foris JS
Translate-URL: https://hosted.weblate.org/projects/turris/foris-js/cs/
2024-12-11 10:24:35 +01:00
Ettore Atalan
fb1f79c6c1
Translated using Weblate (German)
Currently translated at 100.0% (71 of 71 strings)

Translation: Turris/Foris JS
Translate-URL: https://hosted.weblate.org/projects/turris/foris-js/de/
2024-12-11 10:24:34 +01:00
Štěpán Henek
eafbc01c73 Merge branch 'feature/wifi-API-update' into 'master'
WiFi API update

See merge request turris/reforis/foris-js!252
2024-12-11 10:24:28 +01:00
Stepan Henek
73819809f4
WiFi API update
Deprecated option `hwmode=11g/11a` was replaced by `band=2g/5g/6g`
2024-12-11 10:10:23 +01:00
Aleksandr Gumroian
ffa1121d39 Merge branch 'add-encryption-selection-to-guest-form' into 'dev'
Add encryption selection to WiFiGuestForm

Closes #27

See merge request turris/reforis/foris-js!258
2024-12-09 16:59:57 +01:00
Aleksandr Gumroian
ee6865e3bb
Update Snapshots 2024-12-09 16:52:51 +01:00
Aleksandr Gumroian
6352060da3
Add encryption selection to WiFiGuestForm 2024-12-09 16:52:50 +01:00
Aleksandr Gumroian
a63b5bfa4e Merge branch 'refactor-modal' into 'dev'
Add optional close button to ModalHeader component

See merge request turris/reforis/foris-js!257
2024-12-04 15:12:07 +01:00
Aleksandr Gumroian
4b2e47f8f9
Refactor pagination condition in RichTable component 2024-12-04 14:02:52 +01:00
Aleksandr Gumroian
66f83b24bd
Add optional close button to ModalHeader component 2024-12-04 14:02:35 +01:00
Aleksandr Gumroian
30fd6f91b4 Merge branch 'dev' into 'master'
Dev

See merge request turris/reforis/foris-js!256
2024-11-13 14:24:26 +01:00
Aleksandr Gumroian
5a53eca138 Merge branch 'bump-650' into 'dev'
Bump v6.5.0

See merge request turris/reforis/foris-js!255
2024-11-13 14:14:04 +01:00
Aleksandr Gumroian
8d2a4dc108
Bump v6.5.0
* Add & update Weblate translations
* Add RichTable component with pagination and sorting
* Add @tanstack/react-table v8.20.5 to dependencies
* Update documentation
* Replace RebootButton with ActionButtonWithModal component
* Fix import path for CustomizationContextMock in customTestRender.js
2024-11-13 14:08:53 +01:00
Aleksandr Gumroian
2481a0c025
Update translation messages 2024-11-13 14:08:12 +01:00
Aleksandr Gumroian
71697424c5
Create translation messages 2024-11-13 14:07:26 +01:00
Aleksandr Gumroian
07f8e3b9de Merge branch 'add-action-btn-with-modal' into 'dev'
Replace RebootButton with ActionButtonWithModal component and update documentation

See merge request turris/reforis/foris-js!254
2024-11-12 17:48:20 +01:00
Aleksandr Gumroian
c9f2b24095
Replace RebootButton with ActionButtonWithModal component and update documentation 2024-11-12 17:39:01 +01:00
Aleksandr Gumroian
087ecfa670 Merge branch 'add-tanstack-and-richtable-component' into 'dev'
Add RichTable component

See merge request turris/reforis/foris-js!253
2024-11-08 23:52:53 +01:00
Aleksandr Gumroian
e6365ecac4
Update Snapshots 2024-11-08 17:59:15 +01:00
Aleksandr Gumroian
e57722caa0
Add RebootButton and RichTable components to documentation 2024-11-08 17:59:15 +01:00
Aleksandr Gumroian
babdf92ddd
Fix import path for CustomizationContextMock in customTestRender.js 2024-11-08 17:59:02 +01:00
Aleksandr Gumroian
42294316d9
Add RichTable component with header, body, and pagination 2024-11-08 17:59:02 +01:00
Aleksandr Gumroian
b65e034b04
Add @tanstack/react-table v8.20.5 to dependencies 2024-11-04 22:27:14 +01:00
Aleksandr Gumroian
14b90bbbd4 Merge branch 'dev' into 'master'
Dev

See merge request turris/reforis/foris-js!251
2024-10-02 14:35:17 +02:00
Aleksandr Gumroian
85b207b1dd Merge branch 'bump-version-640' into 'dev'
Bump v6.4.0

See merge request turris/reforis/foris-js!250
2024-10-02 14:31:57 +02:00
Aleksandr Gumroian
79e61d9507
Bump v6.4.0
* Refactor Alert component to include dismiss animation and timeout
* Refactor ThreeDotsMenu component to include additional props
2024-10-02 14:30:09 +02:00
Aleksandr Gumroian
6795c3941b Merge branch 'add-alert-animation-and-timeout' into 'dev'
Add Alert animation and timeout

See merge request turris/reforis/foris-js!249
2024-10-02 13:48:31 +02:00
Aleksandr Gumroian
969e8e6411
Update Snapshots 2024-10-02 13:16:45 +02:00
Aleksandr Gumroian
0099759279
Fix tests 2024-10-02 13:16:37 +02:00
Aleksandr Gumroian
87c81a2a2d
Refactor Alert component to include dismiss animation and timeout 2024-10-02 13:14:48 +02:00
Aleksandr Gumroian
81b71f8153
Refactor ThreeDotsMenu component to include additional props 2024-10-02 13:14:40 +02:00
Aleksandr Gumroian
c0fd0adbc9 Merge branch 'dev' into 'master'
Dev

See merge request turris/reforis/foris-js!248
2024-09-27 15:48:49 +02:00
Aleksandr Gumroian
1ec0a26199 Merge branch 'bump-version-630' into 'dev'
Bump v6.3.0

See merge request turris/reforis/foris-js!247
2024-09-27 15:39:42 +02:00
Aleksandr Gumroian
76e37b738a
Bump v6.3.0
* Add ThreeDotsMenu component
* Refactor EmailInput description
* Refactor RadioSet & ignore Radio component
* Refactor npm package badge in introduction.md
* NPM audit fix
2024-09-27 15:36:10 +02:00
Aleksandr Gumroian
8a69d14429
NPM audit fix 2024-09-27 15:35:45 +02:00
Aleksandr Gumroian
4d5395c826
Add ThreeDotsMenu component to index.js 2024-09-27 15:29:46 +02:00
Aleksandr Gumroian
1fb83e08ea Merge branch 'add-threedotsmenu-component' into 'dev'
Add ThreeDotsMenu component

See merge request turris/reforis/foris-js!246
2024-09-27 15:17:55 +02:00
Aleksandr Gumroian
e6cfc6dbb0
docs: Refactor npm package badge in introduction.md 2024-09-27 15:13:29 +02:00
Aleksandr Gumroian
a93a64bf96
docs: Refactor EmailInput description 2024-09-27 15:13:28 +02:00
Aleksandr Gumroian
1ab77decfd
docs: Refactor RadioSet & ignore Radio component 2024-09-27 15:13:28 +02:00
Aleksandr Gumroian
b6e1e0adae
Add ThreeDotsMenu component
ThreeDotsMenu Bootstrap component is a dropdown menu
that appears when the user clicks on three dots.

It is used to display a list of actions that can be
performed on a particular item.
2024-09-27 15:13:12 +02:00
Aleksandr Gumroian
a7a4e76cd1 Merge branch 'dev' into 'master'
Dev

See merge request turris/reforis/foris-js!245
2024-09-25 16:22:09 +02:00
Aleksandr Gumroian
e7758cab9a Merge branch 'bump-version-621' into 'dev'
Bump v6.2.1

See merge request turris/reforis/foris-js!243
2024-09-25 16:20:01 +02:00
Aleksandr Gumroian
bf88b76613
Bump v6.2.1
* Add & update Weblate translations
* Refactor CopyInput component
* Refactor ForisURLs to include new URLs for Overview page
2024-09-25 16:15:56 +02:00
Aleksandr Gumroian
3cf85a9516 Merge branch 'update-translations' into 'dev'
Add & update Weblate translations

See merge request turris/reforis/foris-js!244
2024-09-25 16:14:48 +02:00
Aleksandr Gumroian
7c8442300a
Update translation messages 2024-09-25 16:11:22 +02:00
Aleksandr Gumroian
e849397aa2
Create translation messages 2024-09-25 16:11:07 +02:00
Lukas Jelinek
c1b44d498c
Translated using Weblate (Czech)
Currently translated at 100.0% (71 of 71 strings)

Translation: Turris/Foris JS
Translate-URL: https://hosted.weblate.org/projects/turris/foris-js/cs/
2024-09-25 10:15:45 +00:00
Aleksandr Gumroian
1b5a5da953 Merge branch 'add-overview-links' into 'dev'
Refactor ForisURLs to include new URLs for Overview page

See merge request turris/reforis/foris-js!242
2024-09-24 13:19:55 +02:00
Aleksandr Gumroian
7f45201f05
Refactor ForisURLs to include new URLs for Overview page 2024-09-23 17:09:13 +02:00
Aleksandr Gumroian
f34d9bbdbd Merge branch 'fix-copy-input' into 'dev'
Refactor CopyInput component

See merge request turris/reforis/foris-js!241
2024-09-23 14:07:06 +02:00
Aleksandr Gumroian
c7ff3f42f6
Refactor CopyInput component
Remove unnecessary input-group-append div and simplify structure
2024-09-23 13:59:31 +02:00
Atec
a1036514dd
Translated using Weblate (Slovak)
Currently translated at 100.0% (71 of 71 strings)

Translation: Turris/Foris JS
Translate-URL: https://hosted.weblate.org/projects/turris/foris-js/sk/
2024-09-20 14:06:15 +02:00
Aleksandr Gumroian
a352f12279 Merge branch 'dev' into 'master'
Dev

See merge request turris/reforis/foris-js!240
2024-09-20 14:06:10 +02:00
Aleksandr Gumroian
acfbeb2c43 Merge branch 'bump-version-620' into 'dev'
Bump v6.2.0

See merge request turris/reforis/foris-js!239
2024-09-20 13:51:48 +02:00
Aleksandr Gumroian
3bef624ce4
Bump v6.2.0
* Add useFocusTrap hook
* Add extendSession endpoint
* Refactor Spinner.css to use CSS variable for color
* Refactor Modal component to use useFocusTrap hook
* Refactor Alert component to use useFocusTrap hook
2024-09-20 13:36:45 +02:00
Aleksandr Gumroian
7d0d52666d Merge branch 'add-extend-session-url' into 'dev'
Add extendSession endpoint ot ForisURLs

See merge request turris/reforis/foris-js!238
2024-09-20 13:27:22 +02:00
Aleksandr Gumroian
52fe5d65a6
Refactor Spinner.css to use CSS variable for color 2024-09-20 13:23:01 +02:00
Aleksandr Gumroian
b99add91cf
Refactor ForisURLs.js to add extendSession endpoint 2024-09-20 13:23:01 +02:00
Aleksandr Gumroian
b7a4613cf4 Merge branch 'modal-focus-trap' into 'dev'
Introduce useFocusTrap hook and refactor Modal & Alert components

See merge request turris/reforis/foris-js!237
2024-09-19 13:18:26 +02:00
Aleksandr Gumroian
9e2278e016
Update Snapshots 2024-09-17 14:33:41 +02:00
Aleksandr Gumroian
83a6ff75f6
Refactor Alert component to use useFocusTrap hook 2024-09-17 14:33:19 +02:00
Aleksandr Gumroian
02f3803265
Refactor Modal component to use useFocusTrap hook 2024-09-17 14:13:26 +02:00
Aleksandr Gumroian
bb559cbe53 Merge branch 'dev' into 'master'
Dev

See merge request turris/reforis/foris-js!236
2024-08-30 16:03:17 +02:00
Aleksandr Gumroian
c86e2c8944 Merge branch 'bump-611' into 'dev'
Bump v6.1.1

See merge request turris/reforis/foris-js!235
2024-08-30 16:00:56 +02:00
Aleksandr Gumroian
b96ccde81c
Bump v6.1.1
* Add & updated Weblate translations
* Update icon color classes to use "text-secondary" instead of "text-dark"
* Update Wi-Fi QRCodeModal component to use new styles & add close button
* Refactore WiFiGuestForm component to get rid of obsolete div element
* NPM audit fix
2024-08-30 15:56:08 +02:00
Aleksandr Gumroian
cfa6eade17
NPM audit fix 2024-08-30 15:51:23 +02:00
Aleksandr Gumroian
380a388a38 Merge branch 'fix-icons-color' into 'dev'
Update icon color classes & refactoring

See merge request turris/reforis/foris-js!233
2024-08-30 15:49:45 +02:00
Aleksandr Gumroian
cc19b4b293
Update Snapshots 2024-08-30 15:46:45 +02:00
Aleksandr Gumroian
e7ec494bb2
Update Wi-Fi QRCodeModal component to use new button styles & add close button 2024-08-30 15:46:45 +02:00
Aleksandr Gumroian
ea590e443c
Refactor WiFiGuestForm component to get rid of obsolete "input-group-append" div element 2024-08-30 15:46:45 +02:00
Aleksandr Gumroian
b127bf5edf
Update icon color classes to use "text-secondary" instead of "text-dark" 2024-08-30 15:46:45 +02:00
Aleksandr Gumroian
40e4a9a4e3 Merge branch 'update-translations' into 'dev'
Add & update Weblate translations

See merge request turris/reforis/foris-js!234
2024-08-30 15:44:51 +02:00
gallegonovato
bcb7c43863
Translated using Weblate (Spanish)
Currently translated at 100.0% (71 of 71 strings)

Translation: Turris/Foris JS
Translate-URL: https://hosted.weblate.org/projects/turris/foris-js/es/
2024-08-24 15:09:22 +02:00
75 changed files with 10041 additions and 5939 deletions

View File

@ -8,334 +8,454 @@ and this project adheres to
## [Unreleased] ## [Unreleased]
## [6.7.1] - 2025-04-04
### Added
- Added & updated Weblate translations
## [6.7.0] - 2025-03-11
### Added
- Added encryption property to guest WiFi settings in tests
- Added global fuzzy search and columns visibility to RichTable
### Changed
- Made thead of RichTable lighter
- Updated dependencies in package.json to latest versions
- Enhanced ActionButtonWithModal to support dynamic methods
- NPM audit fix
## [6.6.2] - 2025-02-20
### Changed
- Enhanced SubmitButton component to accept a custom label prop
- Refactored RichTable component to remove forwardRef and simplify data handling
## [6.6.1] - 2025-02-17
### Changed
- Refactored RichTable component to use forwardRef
## [6.6.0] - 2025-02-07
### Added
- Added & updated Weblate translations
- Added Wi-Fi and LAN settings URLs to ForisURLs
- Added Wi-Fi modes VHT/HE 80+80
- Added encryption selection to WiFiGuestForm
- Added optional close button to ModalHeader component
### Changed
- Updated Wi-Fi API
- Enhanced NumberInput component with keyboard & touch accessibility
- Refactored pagination condition in RichTable component
## [6.5.0] - 2024-11-13
### Added
- Added & updated Weblate translations
- Added RichTable component with pagination and sorting
- Added @tanstack/react-table v8.20.5 to dependencies
### Changed
- Updated documentation
- Replaced RebootButton with ActionButtonWithModal component
- Fixed import path for CustomizationContextMock in customTestRender.js
## [6.4.0] - 2024-10-02
### Changed
- Refactored Alert component to include dismiss animation and timeout
- Refactored ThreeDotsMenu component to include additional props
## [6.3.0] - 2024-09-27
### Added
- Added ThreeDotsMenu component
### Changed
- Refactored EmailInput description
- Refactored RadioSet & ignore Radio component
- Refactored npm package badge in introduction.md
- NPM audit fix
## [6.2.1] - 2024-09-25
### Added
- Added & updated Weblate translations
### Changed
- Refactored CopyInput component
- Refactored ForisURLs to include new URLs for Overview page
## [6.2.0] - 2024-09-20
### Added
- Added useFocusTrap hook
- Added extendSession endpoint
### Changed
- Refactored Spinner.css to use CSS variable for color
- Refactored Modal component to use useFocusTrap hook
- Refactored Alert component to use useFocusTrap hook
## [6.1.1] - 2024-08-30
### Added
- Added & updated Weblate translations
### Changed
- Updated icon color classes to use "text-secondary" instead of "text-dark"
- Updated Wi-Fi QRCodeModal component to use new styles & added close button
- Refactored WiFiGuestForm component to get rid of obsolete div element
- NPM audit fix
## [6.1.0] - 2024-08-23 ## [6.1.0] - 2024-08-23
### Added ### Added
- Added & updated Weblate translations - Added & updated Weblate translations
### Changed ### Changed
- Migrated to Font Awesome v6 - Migrated to Font Awesome v6
- NPM audit fix - NPM audit fix
## [6.0.3] - 2024-07-26 ## [6.0.3] - 2024-07-26
### Changed ### Changed
- Updated WiFiQRCode component - Updated WiFiQRCode component
## [6.0.2] - 2024-06-28 ## [6.0.2] - 2024-06-28
### Added ### Added
- Added className prop to CheckBox and Radio components - Added className prop to CheckBox and Radio components
## [6.0.1] - 2024-06-26 ## [6.0.1] - 2024-06-26
### Added ### Added
- Added className prop to Switch component - Added className prop to Switch component
### Changed ### Changed
- Updated dependencies in package.json - Updated dependencies in package.json
- NPM audit fix - NPM audit fix
## [6.0.0] - 2024-06-11 ## [6.0.0] - 2024-06-11
### Added ### Added
- Added CHANGELOG.md - Added CHANGELOG.md
- Added JS_DIR variable to Makefile - Added JS_DIR variable to Makefile
- Added support for shared reForis ESLint configuration - Added support for shared reForis ESLint configuration
### Changed ### Changed
- Updated dependencies in package.json - Updated dependencies in package.json
- Updated Spinner.css styles for better positioning and responsiveness - Updated Spinner.css styles for better positioning and responsiveness
- Migrated to Bootstrap 5 - Migrated to Bootstrap 5
- NPM audit fix - NPM audit fix
- Other small improvements - Other small improvements
## [5.6.1] - 2024-01-19 ## [5.6.1] - 2024-01-19
- Added & updated Weblate translations - Added & updated Weblate translations
- Fixed loading state & button's layout - Fixed loading state & button's layout
- Updated bootstrap library to version 4.6.2 - Updated bootstrap library to version 4.6.2
- Used custom reforis-image in GitLab CI/CD - Used custom reforis-image in GitLab CI/CD
- NPM audit fix - NPM audit fix
## [5.6.0] - 2022-12-29 ## [5.6.0] - 2022-12-29
- Add & update Weblate translations - Add & update Weblate translations
- Add CustomizationContext and custom hook - Add CustomizationContext and custom hook
- Update caniuse-lite - Update caniuse-lite
- Remove testUtils from .gitignore - Remove testUtils from .gitignore
- Make ieee80211w_disabled as optional in WiFiForm - Make ieee80211w_disabled as optional in WiFiForm
- Move contexts in a context folder - Move contexts in a context folder
- NPM audit fix - NPM audit fix
## [5.5.0] - 2022-12-02 ## [5.5.0] - 2022-12-02
- Add & update translations - Add & update translations
- Add a switch to disable Management Frame Protection (802.11w) - Add a switch to disable Management Frame Protection (802.11w)
- Improved Foris JS documentation - Improved Foris JS documentation
- NPM audit fix - NPM audit fix
## [5.4.1] - 2022-06-03 ## [5.4.1] - 2022-06-03
- Add Weblate translations - Add Weblate translations
- Update PropType peer dependency - Update PropType peer dependency
- NPM audit fix - NPM audit fix
## [5.4.0] - 2022-05-20 ## [5.4.0] - 2022-05-20
- Add & update translations - Add & update translations
- Add CopyInput bootstrap component - Add CopyInput bootstrap component
- Update WiFiForm labels and description for wifi ax - Update WiFiForm labels and description for wifi ax
- Make WS path in lighttpd mode configurable - Make WS path in lighttpd mode configurable
- Fix Wi-Fi password helptext string - Fix Wi-Fi password helptext string
- NPM audit fix - NPM audit fix
## [5.3.0] - 2022-02-21 ## [5.3.0] - 2022-02-21
- Added & update translations - Added & update translations
- Added rest of the props to DownloadButton component - Added rest of the props to DownloadButton component
- Added hostname validation - Added hostname validation
- Added wifi 802.11ax HE modes - Added wifi 802.11ax HE modes
- Set best Wi-Fi HT mode depending on the checked frequency - Set best Wi-Fi HT mode depending on the checked frequency
- Improved domain name RegEx pattern - Improved domain name RegEx pattern
- Removed customOrder prop in Select component - Removed customOrder prop in Select component
- Fixed Wi-Fi translation strings - Fixed Wi-Fi translation strings
- Fixed autocomplete attribute in PasswordInput - Fixed autocomplete attribute in PasswordInput
- Fixed WiFi password max length check - Fixed WiFi password max length check
- Fixed documentation build - Fixed documentation build
- Fixed access token in publish script - Fixed access token in publish script
- Refined & restructure Makefile - Refined & restructure Makefile
- Updated GitLab CI image to Node.js v16 - Updated GitLab CI image to Node.js v16
- NPM update (several dependencies) - NPM update (several dependencies)
- NPM audit fix - NPM audit fix
## [5.2.0] - 2021-12-15 ## [5.2.0] - 2021-12-15
- Remove login page - Remove login page
- NPM audit fix - NPM audit fix
## [5.1.16] - 2021-11-18 ## [5.1.16] - 2021-11-18
- Revert bad NPM audit fix - Revert bad NPM audit fix
- NPM audit fix - NPM audit fix
## [5.1.15] - 2021-11-03 ## [5.1.15] - 2021-11-03
- Add WPA3 option - Add WPA3 option
- Add custom order ability of Select options - Add custom order ability of Select options
- NPM audit fix - NPM audit fix
## [5.1.14] - 2021-07-30 ## [5.1.14] - 2021-07-30
- Add & update translations - Add & update translations
- Fix infinity redirect loop when WS error occurs - Fix infinity redirect loop when WS error occurs
- NPM audit fix - NPM audit fix
## [5.1.13] - 2021-06-30 ## [5.1.13] - 2021-06-30
- Add sentinelAgreement endpoint to forisUrls - Add sentinelAgreement endpoint to forisUrls
- NPM audit fix - NPM audit fix
## [5.1.12] - 2021-05-14 ## [5.1.12] - 2021-05-14
- Add & update translations - Add & update translations
- Add & fix obsolete links - Add & fix obsolete links
- Expend library with the ResetWifiSettings function - Expend library with the ResetWifiSettings function
- Fix switching Wi-Fi modes depending on bands in WiFiForm - Fix switching Wi-Fi modes depending on bands in WiFiForm
- Fix translation sources in WiFiForm - Fix translation sources in WiFiForm
- NPM audit fix - NPM audit fix
- Other small improvements - Other small improvements
## [5.1.11] - 2021-01-04 ## [5.1.11] - 2021-01-04
- Remove duplicated file for Norwegian language - Remove duplicated file for Norwegian language
- Fix translations inconsistency - Fix translations inconsistency
## [5.1.10] - 2021-12-29 ## [5.1.10] - 2021-12-29
- Add and update translations - Add and update translations
## [5.1.9] - 2021-12-20 ## [5.1.9] - 2021-12-20
- Increase bottom margin of formFieldsSize - Increase bottom margin of formFieldsSize
- Change formFieldsSize of ResetWiFiSettings card - Change formFieldsSize of ResetWiFiSettings card
- Fix trailing space in Modal classes - Fix trailing space in Modal classes
## [5.1.8] - 2020-12-19 ## [5.1.8] - 2020-12-19
- Add isPluginInstalled function - Add isPluginInstalled function
## [5.1.7] - 2020-11-27 ## [5.1.7] - 2020-11-27
## [5.1.6] - 2020-11-25 ## [5.1.6] - 2020-11-25
- NPM audit fix - NPM audit fix
- Add displayCard function to utils - Add displayCard function to utils
- Add optional sizes to Modal - Add optional sizes to Modal
- Add information about optional sizes to docs - Add information about optional sizes to docs
- Remove redundant merge.py - Remove redundant merge.py
## [5.1.5] - 2020-09-25 ## [5.1.5] - 2020-09-25
- Fix DateTime import - Fix DateTime import
- Fix extra empty space in Switch's classes - Fix extra empty space in Switch's classes
## [5.1.4] - 2020-09-25 ## [5.1.4] - 2020-09-25
- Add inline option to Wi-Fi's RadioSet - Add inline option to Wi-Fi's RadioSet
- Fix Alert's dismissible class condition - Fix Alert's dismissible class condition
- Add closing bootstrap modal using ESC - Add closing bootstrap modal using ESC
- Change reboot modal's heading to "Warning!" - Change reboot modal's heading to "Warning!"
## [5.1.3] - 2020-09-11 ## [5.1.3] - 2020-09-11
- Add SSID validation for 32 bytes length - Add SSID validation for 32 bytes length
- Add helpText for SSID input - Add helpText for SSID input
## [5.1.2] - 2020-09-08 ## [5.1.2] - 2020-09-08
- Fix infinity loop caused by WebSockets - Fix infinity loop caused by WebSockets
- Resolve small issues - Resolve small issues
## [5.1.1] - 2020-08-31 ## [5.1.1] - 2020-08-31
- Add "inline" option to RadioSet - Add "inline" option to RadioSet
- NPM audit fix - NPM audit fix
## [5.1.0] - 2020-08-25 ## [5.1.0] - 2020-08-25
- Add new Switch component - Add new Switch component
- Swap checkboxes for switches on Wi-Fi page - Swap checkboxes for switches on Wi-Fi page
- Decrease button width on different breakpoints - Decrease button width on different breakpoints
- Add integration of Prettier + ESLint + reForis Style Guide - Add integration of Prettier + ESLint + reForis Style Guide
- Add appropriate links to dropdown headers - Add appropriate links to dropdown headers
- Add semantic & accessibility structure for headings - Add semantic & accessibility structure for headings
- NPM audit & Update packages - NPM audit & Update packages
- GitLab CI: image update to node 10 - GitLab CI: image update to node 10
## [5.0.3] - 2020-09-23 ## [5.0.3] - 2020-09-23
- Fixes issue with WebSockets - Fixes issue with WebSockets
## [5.0.2] - 2020-09-22 ## [5.0.2] - 2020-09-22
- Fix infinity loop caused by WebSockets - Fix infinity loop caused by WebSockets
## [5.0.1] - 2020-07-21 ## [5.0.1] - 2020-07-21
- Fix Wi-Fi Form - Fix Wi-Fi Form
- NPM audit fix & update of packages - NPM audit fix & update of packages
## [5.0.0] - 2020-05-07 ## [5.0.0] - 2020-05-07
- I've realized that it should be major update due to broken API. - I've realized that it should be major update due to broken API.
## [4.5.1] - 2020-05-07 ## [4.5.1] - 2020-05-07
- Add initialData to ForisForm children. - Add initialData to ForisForm children.
- Update translations .pot file. - Update translations .pot file.
## [4.5.0] - 2020-03-25 ## [4.5.0] - 2020-03-25
- Use exposed pdfmake. - Use exposed pdfmake.
- NPM audit fix & update of packages. - NPM audit fix & update of packages.
## [4.4.0] - 2020-03-13 ## [4.4.0] - 2020-03-13
- Update domain validation. - Update domain validation.
## [4.3.1] - 2020-03-06 ## [4.3.1] - 2020-03-06
- Add logout link. - Add logout link.
## [4.3.0] - 2020-02-26 ## [4.3.0] - 2020-02-26
- Allow RadioSet accept elements as children. - Allow RadioSet accept elements as children.
- Add option to make modal scrollable. - Add option to make modal scrollable.
## [4.2.0] - 2020-02-21 ## [4.2.0] - 2020-02-21
- Add translations. - Add translations.
- Improve datatime localization. - Improve datatime localization.
## [4.1.0] - 2020-02-20 ## [4.1.0] - 2020-02-20
- Added date and time utilities. - Added date and time utilities.
## [4.0.0] - 2020-02-20 ## [4.0.0] - 2020-02-20
- Throw an error if unhandled exception happens during API request. - Throw an error if unhandled exception happens during API request.
## [3.4.0] - 2020-02-17 ## [3.4.0] - 2020-02-17
- Display actual GET error response within the form. - Display actual GET error response within the form.
- Added styles extracted from reForis. - Added styles extracted from reForis.
- Added reference to form element (for programmatically submitting it). - Added reference to form element (for programmatically submitting it).
## [3.2.0] - 2020-01-17 ## [3.2.0] - 2020-01-17
- Swapped react-router with react-router-dom. Prepared Foris JS for using - Swapped react-router with react-router-dom. Prepared Foris JS for using
react-router-dom exposed by reForis. react-router-dom exposed by reForis.
- Added controller ID filter to WebSocket hook. - Added controller ID filter to WebSocket hook.
- Updated translation messages after moving WiFi form. - Updated translation messages after moving WiFi form.
- Increased request timeout to 30.5 sec. - Increased request timeout to 30.5 sec.
## [3.1.1] - 2020-01-10 ## [3.1.1] - 2020-01-10
- Fixed package dependencies related to exposing libraries via reForis - Fixed package dependencies related to exposing libraries via reForis
## [3.1.0] - 2020-01-09 ## [3.1.0] - 2020-01-09
- Added Wi-Fi settings form - Added Wi-Fi settings form
- Fixed path to index.js file in package.json - Fixed path to index.js file in package.json
## [3.0.0] - 2020-01-07 ## [3.0.0] - 2020-01-07
- Removal of Babel compiler - Removal of Babel compiler
- Fixed width of ForisForm, removed default sizing for form widgets (like - Fixed width of ForisForm, removed default sizing for form widgets (like
buttons) buttons)
## [2.1.1] - 2020-01-06 ## [2.1.1] - 2020-01-06
- Display date and time picker above input element - Display date and time picker above input element
## [2.1.0] - 2019-12-19 ## [2.1.0] - 2019-12-19
- Set WebSocket logging to debug level - Set WebSocket logging to debug level
- Added hook that detects clicking outside of component - Added hook that detects clicking outside of component
- Added Radio to list of publicly available components - Added Radio to list of publicly available components
- Fixed link to git repository in package.json - Fixed link to git repository in package.json
## [2.0.0] - 2019-12-09 ## [2.0.0] - 2019-12-09
- Added dynamic suffix for API URLs (allowing to use one hook for different - Added dynamic suffix for API URLs (allowing to use one hook for different
resources with e.g. PUT) resources with e.g. PUT)
- Added unsubscribe method to WebSocket client - Added unsubscribe method to WebSocket client
- Added custom class to SpinnerElement - Added custom class to SpinnerElement
- Improved documentation - Improved documentation
- Published README.md - Published README.md
## [1.4.0] - 2019-11-29 ## [1.4.0] - 2019-11-29
- Add reboot button. - Add reboot button.
- Fix Foris URLs prefixes - Fix Foris URLs prefixes
## [1.3.3] - 2019-11-22 ## [1.3.3] - 2019-11-22
- Add translations from Weblate. - Add translations from Weblate.
## [1.3.2] - 2019-11-20 ## [1.3.2] - 2019-11-20
- Expose only AlertContext. - Expose only AlertContext.
- Add hook for API pooling. - Add hook for API pooling.
## [1.3.1] - 2019-11-14 ## [1.3.1] - 2019-11-14
@ -348,7 +468,18 @@ and this project adheres to
## [0.0.7] - 2019-09-02 ## [0.0.7] - 2019-09-02
[unreleased]: [unreleased]:
https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.1.0...master https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.7.1...dev
[6.7.1]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.7.0...v6.7.1
[6.7.0]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.6.2...v6.7.0
[6.6.2]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.6.1...v6.6.2
[6.6.1]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.6.0...v6.6.1
[6.6.0]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.5.0...v6.6.0
[6.5.0]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.4.0...v6.5.0
[6.4.0]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.3.0...v6.4.0
[6.3.0]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.2.1...v6.3.0
[6.2.1]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.2.0...v6.2.1
[6.2.0]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.1.1...v6.2.0
[6.1.1]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.1.0...v6.1.1
[6.1.0]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.0.3...v6.1.0 [6.1.0]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.0.3...v6.1.0
[6.0.3]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.0.2...v6.0.3 [6.0.3]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.0.2...v6.0.3
[6.0.2]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.0.1...v6.0.2 [6.0.2]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.0.1...v6.0.2

View File

@ -33,5 +33,4 @@ To install a specific version:
npm install foris@version npm install foris@version
``` ```
<a target="_blank" href="https://www.npmjs.com/package/foris">Check [![npm version](https://badge.fury.io/js/foris.svg)](https://badge.fury.io/js/foris)
on<img width="100px" src="./docs/forisjs-npm.svg"></a>

View File

@ -21,10 +21,7 @@ module.exports = {
testPathIgnorePatterns: ["/node_modules/", "/__fixtures__/", "/dist/"], testPathIgnorePatterns: ["/node_modules/", "/__fixtures__/", "/dist/"],
testEnvironment: "jsdom", testEnvironment: "jsdom",
verbose: false, verbose: false,
setupFilesAfterEnv: [ setupFilesAfterEnv: ["<rootDir>/src/testUtils/setup"],
"@testing-library/react/cleanup-after-each",
"<rootDir>/src/testUtils/setup",
],
globals: { globals: {
TZ: "utc", TZ: "utc",
}, },

8720
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{ {
"name": "foris", "name": "foris",
"version": "6.1.0", "version": "6.7.1",
"description": "Foris JS library is a set of components and utils for reForis application and plugins.", "description": "Foris JS library is a set of components and utils for reForis application and plugins.",
"author": "CZ.NIC, z.s.p.o.", "author": "CZ.NIC, z.s.p.o.",
"repository": { "repository": {
@ -14,16 +14,18 @@
"license": "GPL-3.0", "license": "GPL-3.0",
"main": "./src/index.js", "main": "./src/index.js",
"dependencies": { "dependencies": {
"@fortawesome/fontawesome-svg-core": "^6.6.0", "@fortawesome/fontawesome-svg-core": "^6.7.2",
"@fortawesome/free-regular-svg-icons": "^6.6.0", "@fortawesome/free-regular-svg-icons": "^6.7.2",
"@fortawesome/free-solid-svg-icons": "^6.6.0", "@fortawesome/free-solid-svg-icons": "^6.7.2",
"@fortawesome/react-fontawesome": "^0.2.2", "@fortawesome/react-fontawesome": "^0.2.2",
"axios": "^1.7.2", "@tanstack/match-sorter-utils": "^8.19.4",
"@tanstack/react-table": "^8.21.2",
"axios": "^1.7.9",
"immutability-helper": "^3.1.1", "immutability-helper": "^3.1.1",
"moment": "^2.30.1", "moment": "^2.30.1",
"qrcode.react": "^3.1.0", "qrcode.react": "^4.2.0",
"react-datetime": "^3.2.0", "react-datetime": "^3.3.1",
"react-uid": "^2.3.3" "react-uid": "^2.4.0"
}, },
"peerDependencies": { "peerDependencies": {
"bootstrap": "^5.3.3", "bootstrap": "^5.3.3",
@ -33,32 +35,32 @@
"react-router-dom": "^5.1.2" "react-router-dom": "^5.1.2"
}, },
"devDependencies": { "devDependencies": {
"@babel/cli": "^7.24.7", "@babel/cli": "^7.26.4",
"@babel/core": "^7.24.7", "@babel/core": "^7.26.9",
"@babel/plugin-transform-runtime": "^7.24.7", "@babel/plugin-transform-runtime": "^7.26.9",
"@babel/preset-env": "^7.24.7", "@babel/preset-env": "^7.26.9",
"@babel/preset-react": "^7.24.7", "@babel/preset-react": "^7.26.3",
"@testing-library/react": "^8.0.9", "@testing-library/react": "^12.1.5",
"babel-loader": "^8.1.0", "babel-loader": "^9.2.1",
"babel-polyfill": "^6.26.0", "babel-polyfill": "^6.26.0",
"bootstrap": "^5.3.3", "bootstrap": "^5.3.3",
"css-loader": "^5.2.4", "css-loader": "^7.1.2",
"eslint": "^8.57.0", "eslint": "^8.57.0",
"eslint-config-reforis": "^2.1.1", "eslint-config-reforis": "^2.2.1",
"file-loader": "^6.0.0", "file-loader": "^6.0.0",
"jest": "^29.7.0", "jest": "^29.7.0",
"jest-environment-jsdom": "^29.7.0", "jest-environment-jsdom": "^29.7.0",
"jest-mock-axios": "^4.7.3", "jest-mock-axios": "^4.8.0",
"moment-timezone": "^0.5.45", "moment-timezone": "^0.5.47",
"prettier": "^3.3.2", "prettier": "^3.5.3",
"prop-types": "15.8.1", "prop-types": "15.8.1",
"react": "16.9.0", "react": "16.9.0",
"react-dom": "16.9.0", "react-dom": "16.9.0",
"react-router-dom": "^5.1.2", "react-router-dom": "^5.1.2",
"react-styleguidist": "^12.0.1", "react-styleguidist": "^12.0.1",
"snapshot-diff": "^0.10.0", "snapshot-diff": "^0.10.0",
"style-loader": "^1.2.1", "style-loader": "^4.0.0",
"webpack": "^5.92.1" "webpack": "^5.98.0"
}, },
"scripts": { "scripts": {
"lint": "eslint src", "lint": "eslint src",
@ -69,4 +71,4 @@
"docs": "npx styleguidist build ", "docs": "npx styleguidist build ",
"docs:watch": "styleguidist server" "docs:watch": "styleguidist server"
} }
} }

View File

@ -5,10 +5,12 @@
* See /LICENSE for more information. * See /LICENSE for more information.
*/ */
import React from "react"; import React, { useRef, useEffect, useState } from "react";
import PropTypes from "prop-types"; import PropTypes from "prop-types";
import { useFocusTrap } from "../utils/hooks";
export const ALERT_TYPES = Object.freeze({ export const ALERT_TYPES = Object.freeze({
PRIMARY: "primary", PRIMARY: "primary",
SECONDARY: "secondary", SECONDARY: "secondary",
@ -37,17 +39,37 @@ Alert.defaultProps = {
}; };
function Alert({ type, onDismiss, children }) { function Alert({ type, onDismiss, children }) {
const alertRef = useRef();
const [isVisible, setIsVisible] = useState(true);
useFocusTrap(alertRef, !!onDismiss);
useEffect(() => {
if (onDismiss) {
const timeout = setTimeout(() => setIsVisible(false), 7000);
return () => clearTimeout(timeout);
}
}, [onDismiss]);
const handleAnimationEnd = () => {
if (!isVisible && onDismiss) {
onDismiss();
}
};
return ( return (
<div <div
className={`alert alert-${type} ${ ref={alertRef}
className={`alert alert-${type} ${isVisible ? "alert-fade-in" : "alert-slide-out-top"} ${
onDismiss ? "alert-dismissible" : "" onDismiss ? "alert-dismissible" : ""
}`.trim()} }`.trim()}
role="alert"
onAnimationEnd={handleAnimationEnd}
> >
{onDismiss && ( {onDismiss && (
<button <button
type="button" type="button"
className="btn-close" className="btn-close"
onClick={onDismiss} onClick={() => setIsVisible(false)}
aria-label={_("Close")} aria-label={_("Close")}
/> />
)} )}

View File

@ -48,15 +48,13 @@ function CopyInput({ value, ...props }) {
return ( return (
<Input type="text" value={value} ref={inputTextRef} {...props}> <Input type="text" value={value} ref={inputTextRef} {...props}>
<div className="input-group-append"> <button
<button className="btn btn-outline-secondary"
className="btn btn-outline-secondary" type="button"
type="button" onClick={handleCopyClick}
onClick={handleCopyClick} >
> <span>{isCopied ? _("Copied!") : _("Copy")}</span>
<span>{isCopied ? _("Copied!") : _("Copy")}</span> </button>
</button>
</div>
</Input> </Input>
); );
} }

View File

@ -6,6 +6,7 @@ All additional `props` are passed to the `<input type="email">` HTML component.
```js ```js
import { useState } from "react"; import { useState } from "react";
import Button from "./Button";
const [email, setEmail] = useState("Wrong email"); const [email, setEmail] = useState("Wrong email");
<form onSubmit={(e) => e.preventDefault()}> <form onSubmit={(e) => e.preventDefault()}>
<EmailInput <EmailInput
@ -14,6 +15,6 @@ const [email, setEmail] = useState("Wrong email");
helpText="Read the small text!" helpText="Read the small text!"
onChange={(event) => setEmail(event.target.value)} onChange={(event) => setEmail(event.target.value)}
/> />
<button type="submit">Try to submit</button> <Button type="submit">Try to submit</Button>
</form>; </form>;
``` ```

View File

@ -34,12 +34,14 @@ const Input = forwardRef(
return ( return (
<div className="mb-3"> <div className="mb-3">
<label {label && (
className={`form-label ${labelClassName || ""}`.trim()} <label
htmlFor={uid} className={`form-label ${labelClassName || ""}`.trim()}
> htmlFor={uid}
{label} >
</label> {label}
</label>
)}
<div className={`input-group ${groupClassName || ""}`.trim()}> <div className={`input-group ${groupClassName || ""}`.trim()}>
<input <input
className={`form-control ${inputClassName}`.trim()} className={`form-control ${inputClassName}`.trim()}
@ -65,7 +67,7 @@ Input.displayName = "Input";
Input.propTypes = { Input.propTypes = {
type: PropTypes.string.isRequired, type: PropTypes.string.isRequired,
label: PropTypes.string.isRequired, label: PropTypes.string,
helpText: PropTypes.string, helpText: PropTypes.string,
error: PropTypes.string, error: PropTypes.string,
className: PropTypes.string, className: PropTypes.string,

View File

@ -9,7 +9,7 @@ import React, { useRef, useEffect } from "react";
import PropTypes from "prop-types"; import PropTypes from "prop-types";
import { useClickOutside } from "../utils/hooks"; import { useClickOutside, useFocusTrap } from "../utils/hooks";
import Portal from "../utils/Portal"; import Portal from "../utils/Portal";
import "./Modal.css"; import "./Modal.css";
@ -29,10 +29,11 @@ Modal.propTypes = {
}; };
export function Modal({ shown, setShown, scrollable, size, children }) { export function Modal({ shown, setShown, scrollable, size, children }) {
const dialogRef = useRef(); const modalRef = useRef();
let modalSize = "modal-"; let modalSize = "modal-";
useClickOutside(dialogRef, () => setShown(false)); useClickOutside(modalRef, () => setShown(false));
useFocusTrap(modalRef, shown);
useEffect(() => { useEffect(() => {
const handleEsc = (event) => { const handleEsc = (event) => {
@ -65,11 +66,13 @@ export function Modal({ shown, setShown, scrollable, size, children }) {
return ( return (
<Portal containerId="modal-container"> <Portal containerId="modal-container">
<div <div
ref={modalRef}
className={`modal fade ${shown ? "show" : ""}`.trim()} className={`modal fade ${shown ? "show" : ""}`.trim()}
role="dialog" role="dialog"
aria-modal="true"
aria-labelledby="modal-title"
> >
<div <div
ref={dialogRef}
className={`${modalSize.trim()} modal-dialog modal-dialog-centered ${ className={`${modalSize.trim()} modal-dialog modal-dialog-centered ${
scrollable ? "modal-dialog-scrollable" : "" scrollable ? "modal-dialog-scrollable" : ""
}`.trim()} }`.trim()}
@ -85,18 +88,21 @@ export function Modal({ shown, setShown, scrollable, size, children }) {
ModalHeader.propTypes = { ModalHeader.propTypes = {
setShown: PropTypes.func.isRequired, setShown: PropTypes.func.isRequired,
title: PropTypes.string.isRequired, title: PropTypes.string.isRequired,
showCloseButton: PropTypes.bool,
}; };
export function ModalHeader({ setShown, title }) { export function ModalHeader({ setShown, title, showCloseButton = true }) {
return ( return (
<div className="modal-header"> <div className="modal-header">
<h5 className="modal-title">{title}</h5> <h1 className="modal-title fs-5">{title}</h1>
<button {showCloseButton && (
type="button" <button
className="btn-close" type="button"
onClick={() => setShown(false)} className="btn-close"
aria-label={_("Close")} onClick={() => setShown(false)}
/> aria-label={_("Close")}
/>
)}
</div> </div>
); );
} }

View File

@ -50,6 +50,20 @@ function NumberInput({ onChange, inlineText, value, ...props }) {
-1 -1
); );
function handleKeyDown(event, enableFunction) {
if (event.key === "Enter" || event.key === " ") {
event.preventDefault();
enableFunction(true);
}
}
function handleKeyUp(event, enableFunction) {
if (event.key === "Enter" || event.key === " ") {
event.preventDefault();
enableFunction(false);
}
}
return ( return (
<Input type="number" onChange={onChange} value={value} {...props}> <Input type="number" onChange={onChange} value={value} {...props}>
{inlineText && ( {inlineText && (
@ -60,7 +74,15 @@ function NumberInput({ onChange, inlineText, value, ...props }) {
className="btn btn-outline-secondary" className="btn btn-outline-secondary"
onMouseDown={() => enableIncrease(true)} onMouseDown={() => enableIncrease(true)}
onMouseUp={() => enableIncrease(false)} onMouseUp={() => enableIncrease(false)}
aria-label="Increase" onMouseLeave={() => enableIncrease(false)}
onTouchStart={() => enableIncrease(true)}
onTouchEnd={() => enableIncrease(false)}
onTouchCancel={() => enableIncrease(false)}
onKeyDown={(event) => handleKeyDown(event, enableIncrease)}
onKeyUp={(event) => handleKeyUp(event, enableIncrease)}
onBlur={() => enableIncrease(false)}
title={_("Increase value. Hint: Hold to increase faster.")}
aria-label={_("Increase value. Hint: Hold to increase faster.")}
> >
<FontAwesomeIcon icon={faPlus} /> <FontAwesomeIcon icon={faPlus} />
</button> </button>
@ -69,7 +91,15 @@ function NumberInput({ onChange, inlineText, value, ...props }) {
className="btn btn-outline-secondary" className="btn btn-outline-secondary"
onMouseDown={() => enableDecrease(true)} onMouseDown={() => enableDecrease(true)}
onMouseUp={() => enableDecrease(false)} onMouseUp={() => enableDecrease(false)}
aria-label="Decrease" onMouseLeave={() => enableDecrease(false)}
onTouchStart={() => enableDecrease(true)}
onTouchEnd={() => enableDecrease(false)}
onTouchCancel={() => enableDecrease(false)}
onKeyDown={(event) => handleKeyDown(event, enableDecrease)}
onKeyUp={(event) => handleKeyUp(event, enableDecrease)}
onBlur={() => enableDecrease(false)}
title={_("Decrease value. Hint: Hold to decrease faster.")}
aria-label={_("Decrease value. Hint: Hold to decrease faster.")}
> >
<FontAwesomeIcon icon={faMinus} /> <FontAwesomeIcon icon={faMinus} />
</button> </button>

View File

@ -49,7 +49,7 @@ function PasswordInput({ withEye, newPass, ...props }) {
<FontAwesomeIcon <FontAwesomeIcon
icon={isHidden ? faEye : faEyeSlash} icon={isHidden ? faEye : faEyeSlash}
style={{ width: "1.25rem" }} style={{ width: "1.25rem" }}
className="text-dark" className="text-secondary"
/> />
</button> </button>
)} )}

48
src/bootstrap/Radio.js Normal file
View File

@ -0,0 +1,48 @@
/*
* Copyright (C) 2024 CZ.NIC z.s.p.o. (https://www.nic.cz/)
*
* This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information.
*/
import React from "react";
import PropTypes from "prop-types";
Radio.propTypes = {
label: PropTypes.oneOfType([
PropTypes.string,
PropTypes.element,
PropTypes.node,
PropTypes.arrayOf(PropTypes.node),
]).isRequired,
id: PropTypes.string.isRequired,
inline: PropTypes.bool,
helpText: PropTypes.string,
className: PropTypes.string,
};
function Radio({ label, id, helpText, inline, className, ...props }) {
return (
<div
className={`${className || "mb-3"} ${inline ? "form-check form-check-inline" : ""}`.trim()}
>
<input
id={id}
className="form-check-input me-2"
type="radio"
{...props}
/>
<label className="form-check-label" htmlFor={id}>
{label}
{helpText && (
<div className="form-text">
<small>{helpText}</small>
</div>
)}
</label>
</div>
);
}
export default Radio;

View File

@ -10,6 +10,8 @@ import React from "react";
import PropTypes from "prop-types"; import PropTypes from "prop-types";
import { useUID } from "react-uid"; import { useUID } from "react-uid";
import Radio from "./Radio";
RadioSet.propTypes = { RadioSet.propTypes = {
/** Name attribute of the input HTML tag. */ /** Name attribute of the input HTML tag. */
name: PropTypes.string.isRequired, name: PropTypes.string.isRequired,
@ -73,40 +75,4 @@ function RadioSet({ name, label, choices, value, helpText, inline, ...props }) {
); );
} }
Radio.propTypes = {
label: PropTypes.oneOfType([
PropTypes.string,
PropTypes.element,
PropTypes.node,
PropTypes.arrayOf(PropTypes.node),
]).isRequired,
id: PropTypes.string.isRequired,
inline: PropTypes.bool,
helpText: PropTypes.string,
className: PropTypes.string,
};
export function Radio({ label, id, helpText, inline, className, ...props }) {
return (
<div
className={`${className || "mb-3"} ${inline ? "form-check form-check-inline" : ""}`.trim()}
>
<input
id={id}
className="form-check-input me-2"
type="radio"
{...props}
/>
<label className="form-check-label" htmlFor={id}>
{label}
{helpText && (
<div className="form-text">
<small>{helpText}</small>
</div>
)}
</label>
</div>
);
}
export default RadioSet; export default RadioSet;

View File

@ -9,7 +9,7 @@
.spinner-wrapper .spinner-border { .spinner-wrapper .spinner-border {
width: 4rem; width: 4rem;
height: 4rem; height: 4rem;
color: #00a2e2; color: var(--bs-primary);
} }
.spinner-fs-background { .spinner-fs-background {

View File

@ -0,0 +1,42 @@
/*
* Copyright (C) 2024 CZ.NIC z.s.p.o. (https://www.nic.cz/)
*
* This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information.
*/
import React from "react";
import { faEllipsisVertical } from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import PropTypes from "prop-types";
import Button from "./Button";
ThreeDotsMenu.propTypes = {
/** Menu items. */
children: PropTypes.arrayOf(PropTypes.node).isRequired,
};
function ThreeDotsMenu({ children, ...props }) {
return (
<div className="dropdown position-static" {...props}>
<Button
className="btn-sm btn-link text-body"
data-bs-toggle="dropdown"
aria-expanded="false"
>
<FontAwesomeIcon icon={faEllipsisVertical} />
</Button>
<ul className="dropdown-menu">
{children.map((child) => (
<li key={child.key || child.props.id || Math.random()}>
{child}
</li>
))}
</ul>
</div>
);
}
export default ThreeDotsMenu;

View File

@ -0,0 +1,40 @@
ThreeDotsMenu Bootstrap component is a dropdown menu that appears when the user
clicks on three dots. It is used to display a list of actions that can be
performed on a particular item.
```js
import { useState } from "react";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { faEdit, faTrash } from "@fortawesome/free-solid-svg-icons";
const threeDotsMenuItems = [
{
text: "Edit",
icon: faEdit,
onClick: () => {
alert("Edit clicked");
},
},
{
text: "Delete",
icon: faTrash,
onClick: () => {
alert("Delete clicked");
},
},
];
<ThreeDotsMenu>
{threeDotsMenuItems.map((item, index) => (
<button key={index} onClick={item.onClick} className="dropdown-item">
<FontAwesomeIcon
icon={item.icon}
className="me-1"
width="1rem"
size="sm"
/>
{item.text}
</button>
))}
</ThreeDotsMenu>;
```

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/) * Copyright (C) 2019-2025 CZ.NIC z.s.p.o. (https://www.nic.cz/)
* *
* This is free software, licensed under the GNU General Public License v3. * This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information. * See /LICENSE for more information.
@ -7,7 +7,7 @@
import React from "react"; import React from "react";
import { render, fireEvent, getByLabelText, wait } from "customTestRender"; import { render, fireEvent, getByLabelText, waitFor } from "customTestRender";
import NumberInput from "../NumberInput"; import NumberInput from "../NumberInput";
@ -32,17 +32,17 @@ describe("<NumberInput/>", () => {
}); });
it("Increase number with button", async () => { it("Increase number with button", async () => {
const increaseButton = getByLabelText(componentContainer, "Increase"); const increaseButton = getByLabelText(componentContainer, /Increase/);
fireEvent.mouseDown(increaseButton); fireEvent.mouseDown(increaseButton);
await wait(() => await waitFor(() =>
expect(onChangeMock).toHaveBeenCalledWith({ target: { value: 2 } }) expect(onChangeMock).toHaveBeenCalledWith({ target: { value: 2 } })
); );
}); });
it("Decrease number with button", async () => { it("Decrease number with button", async () => {
const decreaseButton = getByLabelText(componentContainer, "Decrease"); const decreaseButton = getByLabelText(componentContainer, /Decrease/);
fireEvent.mouseDown(decreaseButton); fireEvent.mouseDown(decreaseButton);
await wait(() => await waitFor(() =>
expect(onChangeMock).toHaveBeenCalledWith({ target: { value: 0 } }) expect(onChangeMock).toHaveBeenCalledWith({ target: { value: 0 } })
); );
}); });

View File

@ -20,8 +20,9 @@ exports[`<NumberInput/> Render number input 1`] = `
value="1" value="1"
/> />
<button <button
aria-label="Increase" aria-label="Increase value. Hint: Hold to increase faster."
class="btn btn-outline-secondary" class="btn btn-outline-secondary"
title="Increase value. Hint: Hold to increase faster."
type="button" type="button"
> >
<i <i
@ -29,8 +30,9 @@ exports[`<NumberInput/> Render number input 1`] = `
/> />
</button> </button>
<button <button
aria-label="Decrease" aria-label="Decrease value. Hint: Hold to decrease faster."
class="btn btn-outline-secondary" class="btn btn-outline-secondary"
title="Decrease value. Hint: Hold to decrease faster."
type="button" type="button"
> >
<i <i

View File

@ -0,0 +1,157 @@
/*
* Copyright (C) 2019-2025 CZ.NIC z.s.p.o. (https://www.nic.cz/)
*
* This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information.
*/
import React, { useState, useEffect } from "react";
import PropTypes from "prop-types";
import { useAPIPost, useAPIPut } from "../../api/hooks";
import { API_STATE } from "../../api/utils";
import Button from "../../bootstrap/Button";
import {
Modal,
ModalHeader,
ModalBody,
ModalFooter,
} from "../../bootstrap/Modal";
import { useAlert } from "../../context/alertContext/AlertContext";
ActionButtonWithModal.propTypes = {
/** Component that triggers the action. */
actionTrigger: PropTypes.elementType.isRequired,
/** Method to use for the action. */
actionMethod: PropTypes.string,
/** URL to send the action to. */
actionUrl: PropTypes.string.isRequired,
/** Title of the modal. */
modalTitle: PropTypes.string.isRequired,
/** Message of the modal. */
modalMessage: PropTypes.string.isRequired,
/** Text of the action button in the modal. */
modalActionText: PropTypes.string,
/** Props for the action button in the modal. */
modalActionProps: PropTypes.object,
/** Message to display on successful action. */
successMessage: PropTypes.string,
/** Message to display on failed action. */
errorMessage: PropTypes.string,
};
function ActionButtonWithModal({
actionTrigger: ActionTriggerComponent,
actionMethod = "POST",
actionUrl,
modalTitle,
modalMessage,
modalActionText,
modalActionProps,
successMessage,
errorMessage,
}) {
const [triggered, setTriggered] = useState(false);
const [modalShown, setModalShown] = useState(false);
const [triggerPostActionStatus, triggerPostAction] = useAPIPost(actionUrl);
const [triggerPutActionStatus, triggerPutAction] = useAPIPut(actionUrl);
const [setAlert] = useAlert();
useEffect(() => {
if (
triggerPostActionStatus.state === API_STATE.SUCCESS ||
triggerPutActionStatus.state === API_STATE.SUCCESS
) {
setAlert(
successMessage || _("Action successful."),
API_STATE.SUCCESS
);
setTriggered(false);
}
if (
triggerPostActionStatus.state === API_STATE.ERROR ||
triggerPutActionStatus.state === API_STATE.ERROR
) {
setAlert(errorMessage || _("Action failed."));
setTriggered(false);
}
}, [
triggerPostActionStatus,
triggerPutActionStatus,
setAlert,
successMessage,
errorMessage,
]);
const actionHandler = () => {
setTriggered(true);
if (actionMethod === "POST") {
triggerPostAction();
} else {
triggerPutAction();
}
setModalShown(false);
};
return (
<>
<ActionModal
shown={modalShown}
setShown={setModalShown}
onAction={actionHandler}
title={modalTitle}
message={modalMessage}
actionText={modalActionText}
actionProps={modalActionProps}
/>
<ActionTriggerComponent
loading={triggered}
disabled={triggered}
onClick={() => setModalShown(true)}
/>
</>
);
}
ActionModal.propTypes = {
shown: PropTypes.bool.isRequired,
setShown: PropTypes.func.isRequired,
onAction: PropTypes.func.isRequired,
title: PropTypes.string.isRequired,
message: PropTypes.string.isRequired,
actionText: PropTypes.string,
actionProps: PropTypes.object,
};
function ActionModal({
shown,
setShown,
onAction,
title,
message,
actionText,
actionProps,
}) {
return (
<Modal shown={shown} setShown={setShown}>
<ModalHeader setShown={setShown} title={title} />
<ModalBody>
<p className="mb-0">{message}</p>
</ModalBody>
<ModalFooter>
<Button
className="btn-secondary"
onClick={() => setShown(false)}
>
{_("Cancel")}
</Button>
<Button onClick={onAction} {...actionProps}>
{actionText || _("Confirm")}
</Button>
</ModalFooter>
</Modal>
);
}
export default ActionButtonWithModal;

View File

@ -0,0 +1,39 @@
RebootButton component is a button that opens a modal dialog to confirm the
reboot of the device.
## Usage
```jsx
import React, { useEffect, createContext } from "react";
import Button from "../../bootstrap/Button";
import { AlertContextProvider } from "../../context/alertContext/AlertContext";
import ActionButtonWithModal from "./ActionButtonWithModal";
window.AlertContext = React.createContext();
const RebootButtonExample = () => {
const ActionButton = (props) => {
return <Button {...props}>Action</Button>;
};
return (
<AlertContextProvider>
<div id="modal-container" />
<div id="alert-container" />
<ActionButtonWithModal
actionTrigger={ActionButton}
actionUrl="/reforis/api/action"
modalTitle="Warning!"
modalMessage="Are you sure you want to perform this action?"
modalActionText="Confirm action"
modalActionProps={{ className: "btn-danger" }}
successMessage="Action request succeeded."
errorMessage="Action request failed."
/>
</AlertContextProvider>
);
};
<RebootButtonExample />;
```

View File

@ -1,80 +0,0 @@
/*
* Copyright (C) 2019-2024 CZ.NIC z.s.p.o. (https://www.nic.cz/)
*
* This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information.
*/
import React, { useState, useEffect } from "react";
import PropTypes from "prop-types";
import { useAPIPost } from "../api/hooks";
import { API_STATE } from "../api/utils";
import Button from "../bootstrap/Button";
import { Modal, ModalHeader, ModalBody, ModalFooter } from "../bootstrap/Modal";
import { useAlert } from "../context/alertContext/AlertContext";
import { ForisURLs } from "../utils/forisUrls";
function RebootButton(props) {
const [triggered, setTriggered] = useState(false);
const [modalShown, setModalShown] = useState(false);
const [triggerRebootStatus, triggerReboot] = useAPIPost(ForisURLs.reboot);
const [setAlert] = useAlert();
useEffect(() => {
if (triggerRebootStatus.state === API_STATE.ERROR) {
setAlert(_("Reboot request failed."));
}
});
const rebootHandler = () => {
setTriggered(true);
triggerReboot();
setModalShown(false);
};
return (
<>
<RebootModal
shown={modalShown}
setShown={setModalShown}
onReboot={rebootHandler}
/>
<Button
className="btn-danger"
loading={triggered}
disabled={triggered}
onClick={() => setModalShown(true)}
{...props}
>
{_("Reboot")}
</Button>
</>
);
}
RebootModal.propTypes = {
shown: PropTypes.bool.isRequired,
setShown: PropTypes.func.isRequired,
onReboot: PropTypes.func.isRequired,
};
function RebootModal({ shown, setShown, onReboot }) {
return (
<Modal shown={shown} setShown={setShown}>
<ModalHeader setShown={setShown} title={_("Warning!")} />
<ModalBody>
<p>{_("Are you sure you want to restart the router?")}</p>
</ModalBody>
<ModalFooter>
<Button onClick={() => setShown(false)}>{_("Cancel")}</Button>
<Button className="btn-danger" onClick={onReboot}>
{_("Confirm reboot")}
</Button>
</ModalFooter>
</Modal>
);
}
export default RebootButton;

View File

@ -0,0 +1,118 @@
/*
* Copyright (C) 2019-2025 CZ.NIC z.s.p.o. (https://www.nic.cz/)
*
* This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information.
*/
import React, { useMemo, useState } from "react";
import { rankItem } from "@tanstack/match-sorter-utils";
import {
flexRender,
getCoreRowModel,
getSortedRowModel,
getFilteredRowModel,
getPaginationRowModel,
useReactTable,
} from "@tanstack/react-table";
import PropTypes from "prop-types";
import RichTableBody from "./RichTableBody";
import RichTableColumnsDropdown from "./RichTableColumnsDropdown";
import RichTableHeader from "./RichTableHeader";
import RichTablePagination from "./RichTablePagination";
import Input from "../../bootstrap/Input";
RichTable.propTypes = {
/** Columns to be displayed in the table */
columns: PropTypes.array.isRequired,
/** Data to be displayed in the table, must be passed as a stable reference, for example, useState */
data: PropTypes.array.isRequired,
/** Whether to display pagination */
withPagination: PropTypes.bool,
/** Number of rows per page, the default is 5 */
pageSize: PropTypes.number,
/** Index of the current page */
pageIndex: PropTypes.number,
};
export default function RichTable({
columns,
data,
withPagination,
pageSize = 5,
pageIndex = 0,
}) {
const tableColumns = useMemo(() => columns, [columns]);
const [sorting, setSorting] = useState([]);
const [pagination, setPagination] = useState({
pageIndex,
pageSize,
});
const [globalFilter, setGlobalFilter] = useState("");
const [columnVisibility, setColumnVisibility] = useState({});
const table = useReactTable({
data,
columns: tableColumns,
filterFns: {
fuzzy: fuzzyFilter,
},
globalFilterFn: "fuzzy",
getCoreRowModel: getCoreRowModel(),
getSortedRowModel: getSortedRowModel(),
getPaginationRowModel: getPaginationRowModel(),
getFilteredRowModel: getFilteredRowModel(),
onSortingChange: setSorting,
onPaginationChange: setPagination,
onGlobalFilterChange: setGlobalFilter,
onColumnVisibilityChange: setColumnVisibility,
state: {
sorting,
pagination,
globalFilter,
columnVisibility,
},
});
const paginationIsNeeded = data.length > pageSize && withPagination;
return (
<div>
<div className="d-flex justify-content-between align-items-center">
<Input
className="me-3"
type="text"
placeholder={_("Search…")}
value={globalFilter ?? ""}
onChange={(e) => setGlobalFilter(String(e.target.value))}
/>
<RichTableColumnsDropdown columns={table.getAllLeafColumns()} />
</div>
<div className="table-responsive">
<table className="table table-hover text-nowrap">
<RichTableHeader table={table} flexRender={flexRender} />
<RichTableBody
table={table}
columns={tableColumns}
flexRender={flexRender}
/>
</table>
{paginationIsNeeded && (
<RichTablePagination
table={table}
tablePageSize={pageSize}
allRows={data.length}
/>
)}
</div>
</div>
);
}
function fuzzyFilter(row, columnId, value, addMeta) {
const itemRank = rankItem(row.getValue(columnId), value);
addMeta({ itemRank });
return itemRank.passed;
}

View File

@ -0,0 +1,135 @@
### Description
Rich Table is a table component based on
[Tanstack React Table](https://tanstack.com/table/). It adds some features to
the table component, such as:
- **Pagination**: The table can be paginated.
- **Sorting**: The table can be sorted by columns.
- **Row Expansion**: The table rows can be expanded. (To be implemented)
### Example
```js
import RichTable from "./RichTable";
const columns = [
{
header: "Name",
accessorKey: "name",
},
{
header: "Surname",
accessorKey: "surname",
},
{
header: "Age",
accessorKey: "age",
},
{
header: "Phone",
accessorKey: "phone",
},
];
const data = [
{
name: "John",
surname: "Coltrane",
age: 30,
phone: "123456789",
},
{
name: "Jane",
surname: "Doe",
age: 25,
phone: "987654321",
},
{
name: "Alice",
surname: "Smith",
age: 35,
phone: "123456789",
},
{
name: "Bob",
surname: "Smith",
age: 40,
phone: "987654321",
},
{
name: "Charlie",
surname: "Brown",
age: 45,
phone: "123456789",
},
{
name: "Daisy",
surname: "Brown",
age: 50,
phone: "987654321",
},
{
name: "Eve",
surname: "Johnson",
age: 55,
phone: "123456789",
},
{
name: "Frank",
surname: "Johnson",
age: 60,
phone: "987654321",
},
{
name: "Grace",
surname: "Williams",
age: 65,
phone: "123456789",
},
{
name: "Henry",
surname: "Williams",
age: 70,
phone: "987654321",
},
{
name: "Ivy",
surname: "Brown",
age: 75,
phone: "123456789",
},
{
name: "Jack",
surname: "Brown",
age: 80,
phone: "987654321",
},
{
name: "Kelly",
surname: "Johnson",
age: 85,
phone: "123456789",
},
{
name: "Liam",
surname: "Johnson",
age: 90,
phone: "987654321",
},
{
name: "Mia",
surname: "Williams",
age: 95,
phone: "123456789",
},
{
name: "Nathan",
surname: "Williams",
age: 100,
phone: "987654321",
},
];
<RichTable columns={columns} data={data} withPagination />;
```

View File

@ -0,0 +1,58 @@
/*
* Copyright (C) 2019-2024 CZ.NIC z.s.p.o. (https://www.nic.cz/)
*
* This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information.
*/
import React from "react";
import propTypes from "prop-types";
RichTableBody.propTypes = {
table: propTypes.shape({
getRowModel: propTypes.func.isRequired,
}).isRequired,
columns: propTypes.array.isRequired,
flexRender: propTypes.func.isRequired,
};
function RichTableBody({ table, columns, flexRender }) {
return (
<tbody>
{table.getRowModel().rows?.length ? (
table.getRowModel().rows.map((row) => {
return (
<tr key={row.id} className="align-middle">
{row.getVisibleCells().map((cell) => {
return (
<td
key={cell.id}
{...(cell.column.columnDef
.className && {
className:
cell.column.columnDef.className,
})}
>
{flexRender(
cell.column.columnDef.cell,
cell.getContext()
)}
</td>
);
})}
</tr>
);
})
) : (
<tr>
<td colSpan={columns.length} className="text-center py-4">
<span>{_("No results.")}</span>
</td>
</tr>
)}
</tbody>
);
}
export default RichTableBody;

View File

@ -0,0 +1,90 @@
/*
* Copyright (C) 2019-2025 CZ.NIC z.s.p.o. (https://www.nic.cz/)
*
* This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information.
*/
import React from "react";
import { faCheck, faRotateLeft } from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import PropTypes from "prop-types";
import Button from "../../bootstrap/Button";
RichTableColumnsDropdown.propTypes = {
columns: PropTypes.array.isRequired,
};
function RichTableColumnsDropdown({ columns }) {
return (
<div className="dropdown mb-3">
<Button
className="btn btn-outline-secondary dropdown-toggle"
data-bs-toggle="dropdown"
>
{_("Columns")}
</Button>
<ul className="dropdown-menu dropdown-menu-end">
{columns.map((column) => {
return (
<li key={column.id}>
<button
type="button"
className="dropdown-item d-flex align-items-center"
onClick={column.getToggleVisibilityHandler()}
style={{ paddingLeft: "2rem" }}
disabled={
column.columnDef?.enableHiding === false
}
>
{column.getIsVisible() && (
<FontAwesomeIcon
icon={faCheck}
className="position-absolute text-secondary me-2"
style={{ left: "0.6rem" }}
width="1rem"
/>
)}
<span>{column.columnDef.header}</span>
</button>
</li>
);
})}
{columns.some((column) => !column.getIsVisible()) && (
<>
<li>
<hr className="dropdown-divider" />
</li>
<li>
<button
type="button"
className="dropdown-item d-flex align-items-center"
style={{ paddingLeft: "2rem" }}
onClick={() => {
// toggleVisibility for columns that are hidden
columns.forEach((column) => {
if (!column.getIsVisible()) {
column.toggleVisibility();
}
});
}}
>
<FontAwesomeIcon
icon={faRotateLeft}
className="position-absolute text-secondary me-2"
width="1rem"
style={{ left: "0.6rem" }}
/>
{_("Reset")}
</button>
</li>
</>
)}
</ul>
</div>
);
}
export default RichTableColumnsDropdown;

View File

@ -0,0 +1,102 @@
/*
* Copyright (C) 2019-2025 CZ.NIC z.s.p.o. (https://www.nic.cz/)
*
* This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information.
*/
import React from "react";
import {
faSquareCaretUp,
faSquareCaretDown,
} from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import propTypes from "prop-types";
RichTableHeader.propTypes = {
table: propTypes.shape({
getHeaderGroups: propTypes.func.isRequired,
}).isRequired,
flexRender: propTypes.func.isRequired,
};
function RichTableHeader({ table, flexRender }) {
const getThTitle = (header) => {
if (!header.column.getCanSort()) return undefined;
const nextSortingOrder = header.column.getNextSortingOrder();
if (nextSortingOrder === "asc") return _("Sort ascending");
if (nextSortingOrder === "desc") return _("Sort descending");
return _("Clear sort");
};
return (
<thead className="table-light">
{table.getHeaderGroups().map((headerGroup) => (
<tr key={headerGroup.id} role="row">
{headerGroup.headers.map((header) => (
<th
key={header.id}
colSpan={header.colSpan}
{...(header.column.columnDef.headerClassName && {
className:
header.column.columnDef.headerClassName,
})}
>
{header.isPlaceholder ||
header.column.columnDef.headerIsHidden ? (
<div className="d-none" aria-hidden="true">
{flexRender(
header.column.columnDef.header,
header.getContext()
)}
</div>
) : (
<button
type="button"
style={
header.column.columnDef
.headerClassName === "text-center"
? { justifySelf: "center" }
: {}
}
className={`btn btn-link text-decoration-none text-reset fw-bold p-0 d-flex align-items-center
${
header.column.getCanSort()
? "d-flex align-items-center"
: ""
}
`}
onClick={header.column.getToggleSortingHandler()}
title={getThTitle(header)}
>
{flexRender(
header.column.columnDef.header,
header.getContext()
)}
{{
asc: (
<FontAwesomeIcon
icon={faSquareCaretUp}
className="ms-1 text-primary"
/>
),
desc: (
<FontAwesomeIcon
icon={faSquareCaretDown}
className="ms-1 text-primary"
/>
),
}[header.column.getIsSorted()] ?? null}
</button>
)}
</th>
))}
</tr>
))}
</thead>
);
}
export default RichTableHeader;

View File

@ -0,0 +1,128 @@
/*
* Copyright (C) 2019-2025 CZ.NIC z.s.p.o. (https://www.nic.cz/)
*
* This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information.
*/
import React, { useMemo } from "react";
import {
faAngleLeft,
faAnglesLeft,
faAngleRight,
faAnglesRight,
} from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import propTypes from "prop-types";
RichTablePagination.propTypes = {
table: propTypes.shape({
getState: propTypes.func.isRequired,
getCanPreviousPage: propTypes.func.isRequired,
getCanNextPage: propTypes.func.isRequired,
firstPage: propTypes.func.isRequired,
previousPage: propTypes.func.isRequired,
nextPage: propTypes.func.isRequired,
lastPage: propTypes.func.isRequired,
setPageSize: propTypes.func.isRequired,
getPageCount: propTypes.func.isRequired,
}).isRequired,
tablePageSize: propTypes.number,
allRows: propTypes.number,
};
function RichTablePagination({ table, tablePageSize, allRows }) {
const { pagination } = table.getState();
const prevPagBtnDisabled = !table.getCanPreviousPage();
const nextPagBtnDisabled = !table.getCanNextPage();
const pageSizes = useMemo(() => {
return [tablePageSize ?? 5, 10, 25].filter(
(value, index, self) => self.indexOf(value) === index
);
}, [tablePageSize]);
const renderPaginationButton = (icon, ariaLabel, onClick, disabled) => (
<li
className={`page-item ${disabled ? "disabled" : ""}`}
style={{ cursor: disabled ? "not-allowed" : "pointer" }}
>
<button
type="button"
className="page-link"
aria-label={ariaLabel}
onClick={onClick}
disabled={disabled}
>
<FontAwesomeIcon icon={icon} />
</button>
</li>
);
return (
<nav
aria-label={_("Pagination navigation bar")}
className="d-flex gap-2 justify-content-start align-items-center mx-2 mb-1 text-nowrap"
>
<ul className="pagination pagination-sm mb-0">
{renderPaginationButton(
faAnglesLeft,
_("First page"),
() => table.firstPage(),
prevPagBtnDisabled
)}
{renderPaginationButton(
faAngleLeft,
_("Previous page"),
() => table.previousPage(),
prevPagBtnDisabled
)}
{renderPaginationButton(
faAngleRight,
_("Next page"),
() => table.nextPage(),
nextPagBtnDisabled
)}
{renderPaginationButton(
faAnglesRight,
_("Last page"),
() => table.lastPage(),
nextPagBtnDisabled
)}
</ul>
<span>
{_("Page")}&nbsp;
<span className="fw-bold">
{pagination.pageIndex + 1}
&nbsp;{_("of")}&nbsp;
{table.getPageCount().toLocaleString()}
</span>
</span>
<div
className="vr mx-1 align-self-center"
style={{ height: "1.5rem" }}
/>
<span>{_("Rows per page:")}</span>
<select
className="form-select form-select-sm w-auto"
aria-label={_("Select rows per page")}
value={pagination.pageSize}
onChange={(e) => {
table.setPageSize(Number(e.target.value));
}}
>
{pageSizes.map((pageSize) => (
<option key={pageSize} value={pageSize}>
{pageSize}
</option>
))}
<option key={allRows} value={allRows}>
{_("All")}
</option>
</select>
</nav>
);
}
export default RichTablePagination;

View File

@ -9,7 +9,7 @@ import React from "react";
import PropTypes from "prop-types"; import PropTypes from "prop-types";
import { HELP_TEXTS, HTMODES, HWMODES, ENCRYPTIONMODES } from "./constants"; import { HELP_TEXTS, HTMODES, BANDS, ENCRYPTIONMODES } from "./constants";
import WifiGuestForm from "./WiFiGuestForm"; import WifiGuestForm from "./WiFiGuestForm";
import WiFiQRCode from "./WiFiQRCode"; import WiFiQRCode from "./WiFiQRCode";
import PasswordInput from "../../bootstrap/PasswordInput"; import PasswordInput from "../../bootstrap/PasswordInput";
@ -60,7 +60,7 @@ DeviceForm.propTypes = {
SSID: PropTypes.string.isRequired, SSID: PropTypes.string.isRequired,
password: PropTypes.string.isRequired, password: PropTypes.string.isRequired,
hidden: PropTypes.bool.isRequired, hidden: PropTypes.bool.isRequired,
hwmode: PropTypes.string.isRequired, band: PropTypes.string.isRequired,
htmode: PropTypes.string.isRequired, htmode: PropTypes.string.isRequired,
channel: PropTypes.string.isRequired, channel: PropTypes.string.isRequired,
guest_wifi: PropTypes.object.isRequired, guest_wifi: PropTypes.object.isRequired,
@ -155,26 +155,26 @@ function DeviceForm({
/> />
<RadioSet <RadioSet
name={`hwmode-${deviceID}`} name={`band-${deviceID}`}
label="GHz" label={_("Band")}
choices={getHwmodeChoices(formData)} choices={getBandChoices(formData)}
value={formData.hwmode} value={formData.band}
helpText={HELP_TEXTS.hwmode} helpText={HELP_TEXTS.band}
inline inline
onChange={setFormValue((value) => { onChange={setFormValue((value) => {
// Get the last item in an array of available HT modes // Find the selected band
const [best2] = bnds[0].available_htmodes.slice(-1); const selectedBand = bnds.find(
const [best5] = bnds[1].available_htmodes.slice(-1); (band) => band.band === value
);
// Get the last item in the available HT modes for the selected band
const bestHtmode =
selectedBand.available_htmodes.slice(-1)[0];
return { return {
devices: { devices: {
[deviceIndex]: { [deviceIndex]: {
hwmode: { $set: value }, band: { $set: value },
channel: { $set: "0" }, channel: { $set: "0" },
htmode: { htmode: { $set: bestHtmode },
$set:
// Set HT mode depending on checked frequency
value === "11a" ? best5 : best2,
},
}, },
}, },
}; };
@ -263,7 +263,7 @@ function getChannelChoices(device) {
}; };
device.available_bands.forEach((availableBand) => { device.available_bands.forEach((availableBand) => {
if (availableBand.hwmode !== device.hwmode) return; if (availableBand.band !== device.band) return;
availableBand.available_channels.forEach((availableChannel) => { availableBand.available_channels.forEach((availableChannel) => {
channelChoices[availableChannel.number.toString()] = ` channelChoices[availableChannel.number.toString()] = `
@ -282,7 +282,7 @@ function getHtmodeChoices(device) {
const htmodeChoices = {}; const htmodeChoices = {};
device.available_bands.forEach((availableBand) => { device.available_bands.forEach((availableBand) => {
if (availableBand.hwmode !== device.hwmode) return; if (availableBand.band !== device.band) return;
availableBand.available_htmodes.forEach((availableHtmod) => { availableBand.available_htmodes.forEach((availableHtmod) => {
htmodeChoices[availableHtmod] = HTMODES[availableHtmod]; htmodeChoices[availableHtmod] = HTMODES[availableHtmod];
@ -291,10 +291,10 @@ function getHtmodeChoices(device) {
return htmodeChoices; return htmodeChoices;
} }
function getHwmodeChoices(device) { function getBandChoices(device) {
return device.available_bands.map((availableBand) => ({ return device.available_bands.map((availableBand) => ({
label: HWMODES[availableBand.hwmode], label: `${BANDS[availableBand.band]} GHz`,
value: availableBand.hwmode, value: availableBand.band,
})); }));
} }

View File

@ -9,9 +9,10 @@ import React from "react";
import PropTypes from "prop-types"; import PropTypes from "prop-types";
import { HELP_TEXTS } from "./constants"; import { HELP_TEXTS, ENCRYPTIONMODES } from "./constants";
import WiFiQRCode from "./WiFiQRCode"; import WiFiQRCode from "./WiFiQRCode";
import PasswordInput from "../../bootstrap/PasswordInput"; import PasswordInput from "../../bootstrap/PasswordInput";
import Select from "../../bootstrap/Select";
import Switch from "../../bootstrap/Switch"; import Switch from "../../bootstrap/Switch";
import TextInput from "../../bootstrap/TextInput"; import TextInput from "../../bootstrap/TextInput";
@ -21,6 +22,7 @@ WifiGuestForm.propTypes = {
SSID: PropTypes.string.isRequired, SSID: PropTypes.string.isRequired,
password: PropTypes.string.isRequired, password: PropTypes.string.isRequired,
enabled: PropTypes.bool.isRequired, enabled: PropTypes.bool.isRequired,
encryption: PropTypes.string.isRequired,
}), }),
formErrors: PropTypes.shape({ formErrors: PropTypes.shape({
SSID: PropTypes.string, SSID: PropTypes.string,
@ -68,14 +70,11 @@ export default function WifiGuestForm({
}))} }))}
{...props} {...props}
> >
<div className="input-group-append"> <WiFiQRCode
<WiFiQRCode SSID={formData.SSID}
SSID={formData.SSID} password={formData.password}
password={formData.password} />
/>
</div>
</TextInput> </TextInput>
<PasswordInput <PasswordInput
withEye withEye
label={_("Password")} label={_("Password")}
@ -92,6 +91,20 @@ export default function WifiGuestForm({
}))} }))}
{...props} {...props}
/> />
<Select
label={_("Encryption")}
choices={ENCRYPTIONMODES}
helpText={HELP_TEXTS.wpa3}
value={formData.encryption}
onChange={setFormValue((value) => ({
devices: {
[formData.id]: {
guest_wifi: { encryption: { $set: value } },
},
},
}))}
{...props}
/>
</> </>
) : null} ) : null}
</> </>

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (C) 2019-2024 CZ.NIC z.s.p.o. (https://www.nic.cz/) * Copyright (C) 2019-2025 CZ.NIC z.s.p.o. (https://www.nic.cz/)
* *
* This is free software, licensed under the GNU General Public License v3. * This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information. * See /LICENSE for more information.
@ -9,7 +9,7 @@ import React, { useState } from "react";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import PropTypes from "prop-types"; import PropTypes from "prop-types";
import QRCode from "qrcode.react"; import { QRCodeSVG } from "qrcode.react";
import { createAndDownloadPdf, toQRCodeContent } from "./qrCodeHelpers"; import { createAndDownloadPdf, toQRCodeContent } from "./qrCodeHelpers";
import Button from "../../bootstrap/Button"; import Button from "../../bootstrap/Button";
@ -33,26 +33,23 @@ export default function WiFiQRCode({ SSID, password }) {
<button <button
type="button" type="button"
className="input-group-text" className="input-group-text"
onClick={(e) => { onClick={() => setModal(true)}
e.preventDefault();
setModal(true);
}}
> >
<FontAwesomeIcon <FontAwesomeIcon
icon="fa-solid fa-qrcode" icon="fa-solid fa-qrcode"
title={_("Show QR code")} title={_("Show QR code")}
aria-label={_("Show QR code")} aria-label={_("Show QR code")}
className="text-dark" className="text-secondary"
/> />
</button> </button>
{modal ? ( {modal && (
<QRCodeModal <QRCodeModal
setShown={setModal} setShown={setModal}
shown={modal} shown={modal}
SSID={SSID} SSID={SSID}
password={password} password={password}
/> />
) : null} )}
</> </>
); );
} }
@ -69,22 +66,30 @@ function QRCodeModal({ shown, setShown, SSID, password }) {
<Modal setShown={setShown} shown={shown}> <Modal setShown={setShown} shown={shown}>
<ModalHeader setShown={setShown} title={_("Wi-Fi QR Code")} /> <ModalHeader setShown={setShown} title={_("Wi-Fi QR Code")} />
<ModalBody> <ModalBody>
<QRCode <QRCodeSVG
renderAs="svg" className="d-block mx-auto img-logo-black"
value={toQRCodeContent(SSID, password)} value={toQRCodeContent(SSID, password)}
level="M" level="M"
size={350} size={350}
includeMargin marginSize={0}
style={{ display: "block", margin: "auto" }} imageSettings={{
src: "/reforis/static/reforis/imgs/turris.svg",
height: 40,
width: 40,
excavate: true,
}}
/> />
</ModalBody> </ModalBody>
<ModalFooter> <ModalFooter>
<Button <Button
className="btn-outline-primary" className="btn-secondary"
onClick={(e) => { onClick={() => setShown(false)}
e.preventDefault(); >
createAndDownloadPdf(SSID, password); {_("Close")}
}} </Button>
<Button
className="btn-primary"
onClick={() => createAndDownloadPdf(SSID, password)}
> >
<FontAwesomeIcon <FontAwesomeIcon
icon="fa-solid fa-file-download" icon="fa-solid fa-file-download"

View File

@ -1,12 +1,12 @@
/* /*
* Copyright (C) 2019-2021 CZ.NIC z.s.p.o. (http://www.nic.cz/) * Copyright (C) 2019-2025 CZ.NIC z.s.p.o. (https://www.nic.cz/)
* *
* This is free software, licensed under the GNU General Public License v3. * This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information. * See /LICENSE for more information.
*/ */
import React from "react"; import React from "react";
import { render, fireEvent, wait } from "customTestRender"; import { render, fireEvent, waitFor } from "customTestRender";
import mockAxios from "jest-mock-axios"; import mockAxios from "jest-mock-axios";
import WebSockets from "webSockets/WebSockets"; import WebSockets from "webSockets/WebSockets";
@ -35,7 +35,7 @@ describe("<ResetWiFiSettings/>", () => {
expect.anything() expect.anything()
); );
mockAxios.mockResponse({ data: { foo: "bar" } }); mockAxios.mockResponse({ data: { foo: "bar" } });
await wait(() => await waitFor(() =>
expect(mockSetAlert).toBeCalledWith( expect(mockSetAlert).toBeCalledWith(
"Wi-Fi settings are set to defaults.", "Wi-Fi settings are set to defaults.",
ALERT_TYPES.SUCCESS ALERT_TYPES.SUCCESS
@ -46,7 +46,7 @@ describe("<ResetWiFiSettings/>", () => {
it("should display alert on open ports - failure", async () => { it("should display alert on open ports - failure", async () => {
fireEvent.click(getAllByText("Reset Wi-Fi Settings")[1]); fireEvent.click(getAllByText("Reset Wi-Fi Settings")[1]);
mockJSONError(); mockJSONError();
await wait(() => await waitFor(() =>
expect(mockSetAlert).toBeCalledWith( expect(mockSetAlert).toBeCalledWith(
"An error occurred during resetting Wi-Fi settings." "An error occurred during resetting Wi-Fi settings."
) )

View File

@ -1,15 +1,16 @@
/* /*
* Copyright (C) 2019-2021 CZ.NIC z.s.p.o. (http://www.nic.cz/) * Copyright (C) 2019-2025 CZ.NIC z.s.p.o. (https://www.nic.cz/)
* *
* This is free software, licensed under the GNU General Public License v3. * This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information. * See /LICENSE for more information.
*/ */
import React from "react"; import React from "react";
import diffSnapshot from "snapshot-diff"; import diffSnapshot from "snapshot-diff";
import mockAxios from "jest-mock-axios"; import mockAxios from "jest-mock-axios";
import { fireEvent, render, wait } from "customTestRender"; import { fireEvent, render, waitFor } from "customTestRender";
import WebSockets from "webSockets/WebSockets"; import WebSockets from "webSockets/WebSockets";
import { mockJSONError } from "testUtils/network"; import { mockJSONError } from "testUtils/network";
@ -45,7 +46,7 @@ describe("<WiFiSettings/>", () => {
getByLabelText = renderRes.getByLabelText; getByLabelText = renderRes.getByLabelText;
getByText = renderRes.getByText; getByText = renderRes.getByText;
mockAxios.mockResponse({ data: wifiSettingsFixture() }); mockAxios.mockResponse({ data: wifiSettingsFixture() });
await wait(() => renderRes.getByText("Wi-Fi 1")); await waitFor(() => renderRes.getByText("Wi-Fi 1"));
firstRender = renderRes.asFragment(); firstRender = renderRes.asFragment();
}); });
@ -60,7 +61,7 @@ describe("<WiFiSettings/>", () => {
); );
const errorMessage = "An API error occurred."; const errorMessage = "An API error occurred.";
mockJSONError(errorMessage); mockJSONError(errorMessage);
await wait(() => { await waitFor(() => {
expect(getByText(errorMessage)).toBeTruthy(); expect(getByText(errorMessage)).toBeTruthy();
}); });
}); });
@ -77,7 +78,7 @@ describe("<WiFiSettings/>", () => {
it("Snapshot 2.4 GHz", () => { it("Snapshot 2.4 GHz", () => {
fireEvent.click(getByText("Wi-Fi 1")); fireEvent.click(getByText("Wi-Fi 1"));
const enabledRender = asFragment(); const enabledRender = asFragment();
fireEvent.click(getAllByText("2.4")[0]); fireEvent.click(getAllByText(/2.4/)[0]);
expect(diffSnapshot(enabledRender, asFragment())).toMatchSnapshot(); expect(diffSnapshot(enabledRender, asFragment())).toMatchSnapshot();
}); });
@ -118,7 +119,7 @@ describe("<WiFiSettings/>", () => {
guest_wifi: { enabled: false }, guest_wifi: { enabled: false },
hidden: false, hidden: false,
htmode: "HT80", htmode: "HT80",
hwmode: "11a", band: "5g",
id: 0, id: 0,
password: "TestPass", password: "TestPass",
encryption: "WPA3", encryption: "WPA3",
@ -135,7 +136,7 @@ describe("<WiFiSettings/>", () => {
it("Post form: 2.4 GHz", () => { it("Post form: 2.4 GHz", () => {
fireEvent.click(getByText("Wi-Fi 1")); fireEvent.click(getByText("Wi-Fi 1"));
fireEvent.click(getAllByText("2.4")[0]); fireEvent.click(getAllByText(/2.4/)[0]);
fireEvent.click(getByText("Save")); fireEvent.click(getByText("Save"));
expect(mockAxios.post).toBeCalled(); expect(mockAxios.post).toBeCalled();
@ -148,7 +149,7 @@ describe("<WiFiSettings/>", () => {
guest_wifi: { enabled: false }, guest_wifi: { enabled: false },
hidden: false, hidden: false,
htmode: "VHT80", htmode: "VHT80",
hwmode: "11g", band: "2g",
id: 0, id: 0,
password: "TestPass", password: "TestPass",
encryption: "WPA3", encryption: "WPA3",
@ -181,11 +182,12 @@ describe("<WiFiSettings/>", () => {
guest_wifi: { guest_wifi: {
SSID: "TestGuestSSID", SSID: "TestGuestSSID",
enabled: true, enabled: true,
encryption: "WPA2",
password: "test_password", password: "test_password",
}, },
hidden: false, hidden: false,
htmode: "HT80", htmode: "HT80",
hwmode: "11a", band: "5g",
id: 0, id: 0,
password: "TestPass", password: "TestPass",
encryption: "WPA3", encryption: "WPA3",

View File

@ -77,7 +77,7 @@ export function wifiSettingsFixture() {
"VHT40", "VHT40",
"VHT80", "VHT80",
], ],
hwmode: "11g", band: "2g",
}, },
{ {
available_channels: [ available_channels: [
@ -215,7 +215,7 @@ export function wifiSettingsFixture() {
"VHT40", "VHT40",
"VHT80", "VHT80",
], ],
hwmode: "11a", band: "5g",
}, },
], ],
channel: 60, channel: 60,
@ -223,11 +223,12 @@ export function wifiSettingsFixture() {
guest_wifi: { guest_wifi: {
SSID: "TestGuestSSID", SSID: "TestGuestSSID",
enabled: false, enabled: false,
encryption: "WPA2",
password: "", password: "",
}, },
hidden: false, hidden: false,
htmode: "HT80", htmode: "HT80",
hwmode: "11a", band: "5g",
id: 0, id: 0,
password: "TestPass", password: "TestPass",
encryption: "WPA3", encryption: "WPA3",
@ -294,7 +295,7 @@ export function wifiSettingsFixture() {
}, },
], ],
available_htmodes: ["NOHT", "HT20", "HT40"], available_htmodes: ["NOHT", "HT20", "HT40"],
hwmode: "11g", band: "2g",
}, },
], ],
channel: 11, channel: 11,
@ -306,7 +307,7 @@ export function wifiSettingsFixture() {
}, },
hidden: false, hidden: false,
htmode: "HT40", htmode: "HT40",
hwmode: "11g", band: "2g",
id: 1, id: 1,
password: "TestPass", password: "TestPass",
encryption: "WPA3", encryption: "WPA3",
@ -323,7 +324,7 @@ const oneDevice = {
guest_wifi: { enabled: false }, guest_wifi: { enabled: false },
hidden: false, hidden: false,
htmode: "HT40", htmode: "HT40",
hwmode: "11a", band: "5g",
id: 0, id: 0,
password: "TestPass", password: "TestPass",
encryption: "WPA3", encryption: "WPA3",
@ -340,7 +341,7 @@ const twoDevices = {
guest_wifi: { enabled: false }, guest_wifi: { enabled: false },
hidden: false, hidden: false,
htmode: "HT40", htmode: "HT40",
hwmode: "11a", band: "5g",
id: 0, id: 0,
password: "TestPass", password: "TestPass",
encryption: "WPA3", encryption: "WPA3",
@ -352,7 +353,7 @@ const twoDevices = {
guest_wifi: { enabled: false }, guest_wifi: { enabled: false },
hidden: false, hidden: false,
htmode: "HT40", htmode: "HT40",
hwmode: "11a", band: "5g",
id: 1, id: 1,
password: "TestPass", password: "TestPass",
encryption: "WPA3", encryption: "WPA3",
@ -369,7 +370,7 @@ const threeDevices = {
guest_wifi: { enabled: false }, guest_wifi: { enabled: false },
hidden: false, hidden: false,
htmode: "HT40", htmode: "HT40",
hwmode: "11a", band: "5g",
id: 0, id: 0,
password: "TestPass", password: "TestPass",
encryption: "WPA3", encryption: "WPA3",
@ -381,7 +382,7 @@ const threeDevices = {
guest_wifi: { enabled: false }, guest_wifi: { enabled: false },
hidden: false, hidden: false,
htmode: "HT40", htmode: "HT40",
hwmode: "11a", band: "5g",
id: 1, id: 1,
password: "TestPass", password: "TestPass",
encryption: "WPA3", encryption: "WPA3",
@ -393,7 +394,7 @@ const threeDevices = {
guest_wifi: { enabled: false }, guest_wifi: { enabled: false },
hidden: false, hidden: false,
htmode: "HT40", htmode: "HT40",
hwmode: "11a", band: "5g",
id: 2, id: 2,
password: "", password: "",
encryption: "WPA3", encryption: "WPA3",

View File

@ -339,7 +339,7 @@ exports[`<WiFiSettings/> Snapshot guest network. 1`] = `
- First value - First value
+ Second value + Second value
@@ -524,10 +524,91 @@ @@ -524,10 +524,124 @@
<small> <small>
Enables Wi-Fi for guests, which is separated from LAN network. Devices connected to this network are allowed to access the internet, but aren't allowed to access other devices and the configuration interface of the router. Parameters of the guest network can be set in the Guest network tab. Enables Wi-Fi for guests, which is separated from LAN network. Devices connected to this network are allowed to access the internet, but aren't allowed to access other devices and the configuration interface of the router. Parameters of the guest network can be set in the Guest network tab.
</small> </small>
@ -363,18 +363,14 @@ exports[`<WiFiSettings/> Snapshot guest network. 1`] = `
+ type="text" + type="text"
+ value="TestGuestSSID" + value="TestGuestSSID"
+ /> + />
+ <div + <button
+ class="input-group-append" + class="input-group-text"
+ type="button"
+ > + >
+ <button + <i
+ class="input-group-text" + class="fa"
+ type="button" + />
+ > + </button>
+ <i
+ class="fa"
+ />
+ </button>
+ </div>
+ </div> + </div>
+ <div + <div
+ class="form-text" + class="form-text"
@ -425,13 +421,50 @@ exports[`<WiFiSettings/> Snapshot guest network. 1`] = `
+ WPA2/3 pre-shared key, that is required to connect to the network. + WPA2/3 pre-shared key, that is required to connect to the network.
+ </small> + </small>
+ </div> + </div>
+ </div>
+ <div
+ class="mb-3"
+ >
+ <label
+ class="form-label"
+ for="14"
+ >
+ Encryption
+ </label>
+ <select
+ class="form-select"
+ id="14"
+ >
+ <option
+ value="WPA3"
+ >
+ WPA3 only
+ </option>
+ <option
+ value="WPA2/3"
+ >
+ WPA3 with WPA2 as fallback (default)
+ </option>
+ <option
+ value="WPA2"
+ >
+ WPA2 only
+ </option>
+ </select>
+ <div
+ class="form-text"
+ >
+ <small>
+ The WPA3 standard is the new most secure encryption method that is suggested to be used with any device that supports it. The older devices without WPA3 support require older WPA2. If you experience issues with connecting older devices, try to enable WPA2.
+ </small>
+ </div>
+ </div> + </div>
<hr /> <hr />
<div <div
class="form-check form-switch mb-3 d-flex align-items-center" class="form-check form-switch mb-3 d-flex align-items-center"
> >
<input <input
@@ -550,10 +631,11 @@ @@ -550,10 +664,11 @@
<div <div
class="text-end" class="text-end"
> >
@ -559,23 +592,23 @@ exports[`<WiFiSettings/> Snapshot one module enabled. 1`] = `
+ class="d-block" + class="d-block"
+ for="6" + for="6"
+ > + >
+ GHz + Band
+ </label> + </label>
+ <div + <div
+ class="mb-3 form-check form-check-inline" + class="mb-3 form-check form-check-inline"
+ > + >
+ <input + <input
+ class="form-check-input me-2" + class="form-check-input me-2"
+ id="hwmode-0-0" + id="band-0-0"
+ name="hwmode-0" + name="band-0"
+ type="radio" + type="radio"
+ value="11g" + value="2g"
+ /> + />
+ <label + <label
+ class="form-check-label" + class="form-check-label"
+ for="hwmode-0-0" + for="band-0-0"
+ > + >
+ 2.4 + 2.4 GHz
+ </label> + </label>
+ </div> + </div>
+ <div + <div
@ -584,16 +617,16 @@ exports[`<WiFiSettings/> Snapshot one module enabled. 1`] = `
+ <input + <input
+ checked="" + checked=""
+ class="form-check-input me-2" + class="form-check-input me-2"
+ id="hwmode-0-1" + id="band-0-1"
+ name="hwmode-0" + name="band-0"
+ type="radio" + type="radio"
+ value="11a" + value="5g"
+ /> + />
+ <label + <label
+ class="form-check-label" + class="form-check-label"
+ for="hwmode-0-1" + for="band-0-1"
+ > + >
+ 5 + 5 GHz
+ </label> + </label>
+ </div> + </div>
+ <div + <div

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (C) 2019-2022 CZ.NIC z.s.p.o. (https://www.nic.cz/) * Copyright (C) 2019-2024 CZ.NIC z.s.p.o. (https://www.nic.cz/)
* *
* This is free software, licensed under the GNU General Public License v3. * This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information. * See /LICENSE for more information.
@ -12,15 +12,18 @@ export const HTMODES = {
VHT20: _("802.11ac - 20 MHz wide channel"), VHT20: _("802.11ac - 20 MHz wide channel"),
VHT40: _("802.11ac - 40 MHz wide channel"), VHT40: _("802.11ac - 40 MHz wide channel"),
VHT80: _("802.11ac - 80 MHz wide channel"), VHT80: _("802.11ac - 80 MHz wide channel"),
VHT80_80: _("802.11ac - 80+80 MHz wide channel"),
VHT160: _("802.11ac - 160 MHz wide channel"), VHT160: _("802.11ac - 160 MHz wide channel"),
HE20: _("802.11ax - 20 MHz wide channel"), HE20: _("802.11ax - 20 MHz wide channel"),
HE40: _("802.11ax - 40 MHz wide channel"), HE40: _("802.11ax - 40 MHz wide channel"),
HE80: _("802.11ax - 80 MHz wide channel"), HE80: _("802.11ax - 80 MHz wide channel"),
HE80_80: _("802.11ax - 80+80 MHz wide channel"),
HE160: _("802.11ax - 160 MHz wide channel"), HE160: _("802.11ax - 160 MHz wide channel"),
}; };
export const HWMODES = { export const BANDS = {
"11g": "2.4", "2g": "2.4",
"11a": "5", "5g": "5",
"6g": "6",
}; };
export const ENCRYPTIONMODES = { export const ENCRYPTIONMODES = {
WPA3: _("WPA3 only"), WPA3: _("WPA3 only"),
@ -37,7 +40,7 @@ export const HELP_TEXTS = {
hidden: _( hidden: _(
"If set, network is not visible when scanning for available networks." "If set, network is not visible when scanning for available networks."
), ),
hwmode: _( band: _(
"The 2.4 GHz band is more widely supported by clients, but tends to have more interference. The 5 GHz band is a newer standard and may not be supported by all your devices. It usually has less interference, but the signal does not carry so well indoors." "The 2.4 GHz band is more widely supported by clients, but tends to have more interference. The 5 GHz band is a newer standard and may not be supported by all your devices. It usually has less interference, but the signal does not carry so well indoors."
), ),
htmode: _( htmode: _(

View File

@ -0,0 +1,86 @@
/*
* Copyright (C) 2019-2025 CZ.NIC z.s.p.o. (https://www.nic.cz/)
*
* This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information.
*/
import React from "react";
import Button from "bootstrap/Button";
import { fireEvent, getByText, render, waitFor } from "customTestRender";
import mockAxios from "jest-mock-axios";
import { mockJSONError } from "testUtils/network";
import { mockSetAlert } from "testUtils/alertContextMock";
import ActionButtonWithModal from "../ActionButtonWithModal/ActionButtonWithModal";
describe("<ActionButtonWithModal/>", () => {
let componentContainer;
const ActionButton = (props) => (
<Button type="button" {...props}>
Action
</Button>
);
beforeEach(() => {
const { container } = render(
<>
<div id="modal-container" />
<div id="alert-container" />
<ActionButtonWithModal
actionTrigger={ActionButton}
actionUrl="/reforis/api/action"
modalTitle="Warning!"
modalMessage="Are you sure you want to perform this action?"
modalActionText="Confirm action"
modalActionProps={{ className: "btn-danger" }}
successMessage="Action request succeeded."
errorMessage="Action request failed."
/>
</>
);
componentContainer = container;
});
it("Render button.", () => {
expect(componentContainer).toMatchSnapshot();
});
it("Render modal.", () => {
fireEvent.click(getByText(componentContainer, "Action"));
expect(componentContainer).toMatchSnapshot();
});
it("Confirm action.", () => {
fireEvent.click(getByText(componentContainer, "Action"));
fireEvent.click(getByText(componentContainer, "Confirm action"));
expect(mockAxios.post).toHaveBeenCalledWith(
"/reforis/api/action",
undefined,
expect.anything()
);
});
it("Hold error.", async () => {
fireEvent.click(getByText(componentContainer, "Action"));
fireEvent.click(getByText(componentContainer, "Confirm action"));
mockJSONError();
await waitFor(() =>
expect(mockSetAlert).toBeCalledWith("Action request failed.")
);
});
it("Show success alert on successful action.", async () => {
fireEvent.click(getByText(componentContainer, "Action"));
fireEvent.click(getByText(componentContainer, "Confirm action"));
mockAxios.mockResponse({ status: 200 });
await waitFor(() =>
expect(mockSetAlert).toBeCalledWith(
"Action request succeeded.",
"success"
)
);
});
});

View File

@ -1,63 +0,0 @@
/*
* Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/)
*
* This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information.
*/
import React from "react";
import {
fireEvent,
getByText,
queryByText,
render,
wait,
} from "customTestRender";
import mockAxios from "jest-mock-axios";
import { mockJSONError } from "testUtils/network";
import { mockSetAlert } from "testUtils/alertContextMock";
import RebootButton from "../RebootButton";
describe("<RebootButton/>", () => {
let componentContainer;
beforeEach(() => {
const { container } = render(
<>
<div id="modal-container" />
<RebootButton />
</>
);
componentContainer = container;
});
it("Render.", () => {
expect(componentContainer).toMatchSnapshot();
});
it("Render modal.", () => {
expect(queryByText(componentContainer, "Confirm reboot")).toBeNull();
fireEvent.click(getByText(componentContainer, "Reboot"));
expect(componentContainer).toMatchSnapshot();
});
it("Confirm reboot.", () => {
fireEvent.click(getByText(componentContainer, "Reboot"));
fireEvent.click(getByText(componentContainer, "Confirm reboot"));
expect(mockAxios.post).toHaveBeenCalledWith(
"/reforis/api/reboot",
undefined,
expect.anything()
);
});
it("Hold error.", async () => {
fireEvent.click(getByText(componentContainer, "Reboot"));
fireEvent.click(getByText(componentContainer, "Confirm reboot"));
mockJSONError();
await wait(() =>
expect(mockSetAlert).toBeCalledWith("Reboot request failed.")
);
});
});

View File

@ -1,11 +1,32 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP // Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`<RebootButton/> Render modal. 1`] = ` exports[`<ActionButtonWithModal/> Render button. 1`] = `
<div>
<div
id="modal-container"
/>
<div
id="alert-container"
/>
<button
class="btn btn-primary d-inline-flex justify-content-center align-items-center"
type="button"
>
<span>
Action
</span>
</button>
</div>
`;
exports[`<ActionButtonWithModal/> Render modal. 1`] = `
<div> <div>
<div <div
id="modal-container" id="modal-container"
> >
<div <div
aria-labelledby="modal-title"
aria-modal="true"
class="modal fade show" class="modal fade show"
role="dialog" role="dialog"
> >
@ -19,11 +40,11 @@ exports[`<RebootButton/> Render modal. 1`] = `
<div <div
class="modal-header" class="modal-header"
> >
<h5 <h1
class="modal-title" class="modal-title fs-5"
> >
Warning! Warning!
</h5> </h1>
<button <button
aria-label="Close" aria-label="Close"
class="btn-close" class="btn-close"
@ -33,15 +54,17 @@ exports[`<RebootButton/> Render modal. 1`] = `
<div <div
class="modal-body" class="modal-body"
> >
<p> <p
Are you sure you want to restart the router? class="mb-0"
>
Are you sure you want to perform this action?
</p> </p>
</div> </div>
<div <div
class="modal-footer" class="modal-footer"
> >
<button <button
class="btn btn-primary d-inline-flex justify-content-center align-items-center" class="btn btn-secondary d-inline-flex justify-content-center align-items-center"
type="button" type="button"
> >
<span> <span>
@ -53,7 +76,7 @@ exports[`<RebootButton/> Render modal. 1`] = `
type="button" type="button"
> >
<span> <span>
Confirm reboot Confirm action
</span> </span>
</button> </button>
</div> </div>
@ -61,28 +84,15 @@ exports[`<RebootButton/> Render modal. 1`] = `
</div> </div>
</div> </div>
</div> </div>
<button
class="btn btn-danger d-inline-flex justify-content-center align-items-center"
type="button"
>
<span>
Reboot
</span>
</button>
</div>
`;
exports[`<RebootButton/> Render. 1`] = `
<div>
<div <div
id="modal-container" id="alert-container"
/> />
<button <button
class="btn btn-danger d-inline-flex justify-content-center align-items-center" class="btn btn-primary d-inline-flex justify-content-center align-items-center"
type="button" type="button"
> >
<span> <span>
Reboot Action
</span> </span>
</button> </button>
</div> </div>

View File

@ -43,14 +43,17 @@ describe("AlertContext", () => {
expect(componentContainer).toMatchSnapshot(); expect(componentContainer).toMatchSnapshot();
}); });
it("should dismiss alert with alert button", () => { it("should dismiss alert with alert button", async () => {
fireEvent.click(getByText(componentContainer, "Set alert")); fireEvent.click(getByText(componentContainer, "Set alert"));
// Alert is present // Alert is present
expect(getByText(componentContainer, "Alert content")).toBeDefined(); expect(getByText(componentContainer, "Alert content")).toBeDefined();
fireEvent.click(componentContainer.querySelector(".btn-close")); fireEvent.click(componentContainer.querySelector(".btn-close"));
// Alert is gone // Alert is gone
expect(queryByText(componentContainer, "Alert content")).toBeNull(); await (() =>
expect(
queryByText(componentContainer, "Alert content")
).toBeNull());
}); });
it("should dismiss alert with external button", () => { it("should dismiss alert with external button", () => {

View File

@ -6,7 +6,8 @@ exports[`AlertContext should render alert 1`] = `
id="alert-container" id="alert-container"
> >
<div <div
class="alert alert-danger alert-dismissible" class="alert alert-danger alert-fade-in alert-dismissible"
role="alert"
> >
<button <button
aria-label="Close" aria-label="Close"

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (C) 2019-2022 CZ.NIC z.s.p.o. (https://www.nic.cz/) * Copyright (C) 2019-2025 CZ.NIC z.s.p.o. (https://www.nic.cz/)
* *
* This is free software, licensed under the GNU General Public License v3. * This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information. * See /LICENSE for more information.
@ -7,7 +7,7 @@
import React from "react"; import React from "react";
import { render, wait, getByText } from "customTestRender"; import { render, waitFor, getByText } from "customTestRender";
import mockAxios from "jest-mock-axios"; import mockAxios from "jest-mock-axios";
import { import {
@ -38,7 +38,7 @@ describe("CustomizationContext", () => {
it("should render component without customization", async () => { it("should render component without customization", async () => {
mockAxios.mockResponse({ data: {} }); mockAxios.mockResponse({ data: {} });
await wait(() => getByText(componentContainer, ORIGINAL)); await waitFor(() => getByText(componentContainer, ORIGINAL));
expect(componentContainer).toMatchSnapshot(); expect(componentContainer).toMatchSnapshot();
}); });
@ -46,7 +46,7 @@ describe("CustomizationContext", () => {
it("should render customized component", async () => { it("should render customized component", async () => {
mockAxios.mockResponse({ data: { customization: "shield" } }); mockAxios.mockResponse({ data: { customization: "shield" } });
await wait(() => getByText(componentContainer, CUSTOM)); await waitFor(() => getByText(componentContainer, CUSTOM));
expect(componentContainer).toMatchSnapshot(); expect(componentContainer).toMatchSnapshot();
}); });

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/) * Copyright (C) 2019-2025 CZ.NIC z.s.p.o. (https://www.nic.cz/)
* *
* This is free software, licensed under the GNU General Public License v3. * This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information. * See /LICENSE for more information.
@ -7,7 +7,7 @@
import React from "react"; import React from "react";
import { act, fireEvent, render, waitForElement } from "customTestRender"; import { act, fireEvent, render, waitFor } from "customTestRender";
import mockAxios from "jest-mock-axios"; import mockAxios from "jest-mock-axios";
import WebSockets from "webSockets/WebSockets"; import WebSockets from "webSockets/WebSockets";
import ForisForm from "../components/ForisForm"; import ForisForm from "../components/ForisForm";
@ -59,7 +59,7 @@ describe("useForm hook.", () => {
); );
mockAxios.mockResponse({ field: "fetchedData" }); mockAxios.mockResponse({ field: "fetchedData" });
input = await waitForElement(() => getByTestId("test-input")); input = await waitFor(() => getByTestId("test-input"));
form = container.firstChild.firstChild; form = container.firstChild.firstChild;
}); });

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/) * Copyright (C) 2019-2025 CZ.NIC z.s.p.o. (https://www.nic.cz/)
* *
* This is free software, licensed under the GNU General Public License v3. * This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information. * See /LICENSE for more information.
@ -20,22 +20,25 @@ export const STATES = {
SubmitButton.propTypes = { SubmitButton.propTypes = {
disabled: PropTypes.bool, disabled: PropTypes.bool,
state: PropTypes.oneOf(Object.keys(STATES).map((key) => STATES[key])), state: PropTypes.oneOf(Object.keys(STATES).map((key) => STATES[key])),
label: PropTypes.string,
}; };
export function SubmitButton({ disabled, state, ...props }) { export function SubmitButton({ disabled, state, label, ...props }) {
const disableSubmitButton = disabled || state !== STATES.READY; const disableSubmitButton = disabled || state !== STATES.READY;
const loadingSubmitButton = state !== STATES.READY; const loadingSubmitButton = state !== STATES.READY;
let labelSubmitButton; let labelSubmitButton = label;
switch (state) { if (!labelSubmitButton) {
case STATES.SAVING: switch (state) {
labelSubmitButton = _("Updating"); case STATES.SAVING:
break; labelSubmitButton = _("Updating");
case STATES.LOAD: break;
labelSubmitButton = _("Load settings"); case STATES.LOAD:
break; labelSubmitButton = _("Load settings");
default: break;
labelSubmitButton = _("Save"); default:
labelSubmitButton = _("Save");
}
} }
return ( return (

View File

@ -28,19 +28,22 @@ export { default as FileInput } from "./bootstrap/FileInput";
export { default as Input } from "./bootstrap/Input"; export { default as Input } from "./bootstrap/Input";
export { default as NumberInput } from "./bootstrap/NumberInput"; export { default as NumberInput } from "./bootstrap/NumberInput";
export { default as PasswordInput } from "./bootstrap/PasswordInput"; export { default as PasswordInput } from "./bootstrap/PasswordInput";
export { default as RadioSet, Radio } from "./bootstrap/RadioSet"; export { default as Radio } from "./bootstrap/Radio";
export { default as RadioSet } from "./bootstrap/RadioSet";
export { default as Select } from "./bootstrap/Select"; export { default as Select } from "./bootstrap/Select";
export { default as TextInput } from "./bootstrap/TextInput"; export { default as TextInput } from "./bootstrap/TextInput";
export { formFieldsSize, buttonFormFieldsSize } from "./bootstrap/constants"; export { formFieldsSize, buttonFormFieldsSize } from "./bootstrap/constants";
export { default as Switch } from "./bootstrap/Switch"; export { default as Switch } from "./bootstrap/Switch";
export { default as ThreeDotsMenu } from "./bootstrap/ThreeDotsMenu";
export { Spinner, SpinnerElement } from "./bootstrap/Spinner"; export { Spinner, SpinnerElement } from "./bootstrap/Spinner";
export { Modal, ModalBody, ModalFooter, ModalHeader } from "./bootstrap/Modal"; export { Modal, ModalBody, ModalFooter, ModalHeader } from "./bootstrap/Modal";
// Common // Common
export { default as RebootButton } from "./common/RebootButton"; export { default as ActionButtonWithModal } from "./common/ActionButtonWithModal/ActionButtonWithModal";
export { default as WiFiSettings } from "./common/WiFiSettings/WiFiSettings"; export { default as WiFiSettings } from "./common/WiFiSettings/WiFiSettings";
export { default as ResetWiFiSettings } from "./common/WiFiSettings/ResetWiFiSettings"; export { default as ResetWiFiSettings } from "./common/WiFiSettings/ResetWiFiSettings";
export { default as RichTable } from "./common/RichTable/RichTable";
// Form // Form
export { default as ForisForm } from "./form/components/ForisForm"; export { default as ForisForm } from "./form/components/ForisForm";
export { export {

View File

@ -14,7 +14,7 @@ import { render } from "@testing-library/react";
import PropTypes from "prop-types"; import PropTypes from "prop-types";
import { AlertContextMock } from "./alertContextMock"; import { AlertContextMock } from "./alertContextMock";
import { CustomizationContextMock } from "./cutomizationContextMock"; import { CustomizationContextMock } from "./customizationContextMock";
Wrapper.propTypes = { Wrapper.propTypes = {
children: PropTypes.oneOfType([ children: PropTypes.oneOfType([

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (C) 2019-2021 CZ.NIC z.s.p.o. (http://www.nic.cz/) * Copyright (C) 2019-2024 CZ.NIC z.s.p.o. (https://www.nic.cz/)
* *
* This is free software, licensed under the GNU General Public License v3. * This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information. * See /LICENSE for more information.
@ -9,8 +9,10 @@ export const REFORIS_URL_PREFIX = "/reforis";
export const REFORIS_API_URL_PREFIX = `${REFORIS_URL_PREFIX}/api`; export const REFORIS_API_URL_PREFIX = `${REFORIS_URL_PREFIX}/api`;
export const ForisURLs = { export const ForisURLs = {
// turris-auth
login: `/login?${REFORIS_URL_PREFIX}/`, login: `/login?${REFORIS_URL_PREFIX}/`,
logout: `/logout`, logout: `/logout`,
extendSession: `/extend-session`,
static: `${REFORIS_URL_PREFIX}/static/reforis`, static: `${REFORIS_URL_PREFIX}/static/reforis`,
wifi: `${REFORIS_URL_PREFIX}/network-settings/wifi`, wifi: `${REFORIS_URL_PREFIX}/network-settings/wifi`,
@ -25,10 +27,19 @@ export const ForisURLs = {
storage: `${REFORIS_URL_PREFIX}/storage`, storage: `${REFORIS_URL_PREFIX}/storage`,
sentinelAgreement: `${REFORIS_URL_PREFIX}/sentinel/agreement`, sentinelAgreement: `${REFORIS_URL_PREFIX}/sentinel/agreement`,
// URLs without prefix for Overview page
openvpnClientSettings: "/openvpn/client-settings",
packageManagementPackages: "/package-management/packages",
packageManagementUpdateSettings: "/package-management/update-settings",
sentinelLicenseAgreement: "/sentinel/agreement",
librespeedSpeedTest: "/librespeed/speed-test",
// Notifications links are used with <Link/> inside Router, thus url subdir is not required. // Notifications links are used with <Link/> inside Router, thus url subdir is not required.
overview: "/overview", overview: "/overview",
notifications: "/overview#notifications", notifications: "/overview#notifications",
notificationsSettings: "/administration/notifications-settings", notificationsSettings: "/administration/notifications-settings",
wifiSettings: "/network-settings/wifi",
lanSettings: "/network-settings/lan",
approveUpdates: "/package-management/updates", approveUpdates: "/package-management/updates",
languages: "/package-management/languages", languages: "/package-management/languages",

View File

@ -40,3 +40,40 @@ export function useClickOutside(element, callback) {
}; };
}); });
} }
/* Trap focus inside element. */
export function useFocusTrap(elementRef, condition = true) {
useEffect(() => {
if (!condition) {
return;
}
const currentElement = elementRef.current;
const focusableElements = currentElement.querySelectorAll(
'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'
);
const firstElement = focusableElements[0];
const lastElement = focusableElements[focusableElements.length - 1];
const handleTab = (event) => {
if (event.key === "Tab") {
if (event.shiftKey) {
if (document.activeElement === firstElement) {
lastElement.focus();
event.preventDefault();
}
} else if (document.activeElement === lastElement) {
firstElement.focus();
event.preventDefault();
}
}
};
currentElement.addEventListener("keydown", handleTab);
firstElement.focus();
return () => {
currentElement.removeEventListener("keydown", handleTab);
};
}, [elementRef, condition]);
}

View File

@ -28,11 +28,11 @@ module.exports = {
content: "docs/development.md", content: "docs/development.md",
}, },
{ {
name: "Components", name: "Common Components",
description: "Set of main components.", description: "Set of main components.",
sections: [ sections: [
{ {
name: "Foris forms", name: "ForisForm",
components: [ components: [
"src/form/components/ForisForm.js", "src/form/components/ForisForm.js",
"src/form/components/alerts.js", "src/form/components/alerts.js",
@ -42,47 +42,52 @@ module.exports = {
usageMode: "expand", usageMode: "expand",
}, },
{ {
name: "Alert Context", name: "RichTable",
components: ["src/context/alertContext/AlertContext.js"], components: ["src/common/RichTable/RichTable.js"],
exampleMode: "expand",
usageMode: "expand",
},
{
name: "ActionButtonWithModal",
components: [
"src/common/ActionButtonWithModal/ActionButtonWithModal.js",
],
exampleMode: "expand", exampleMode: "expand",
usageMode: "expand", usageMode: "expand",
}, },
], ],
sectionDepth: 1, sectionDepth: 1,
}, },
{ {
name: "Customization Context", name: "Bootstrap Components",
components: [
"src/context/customizationContext/CustomizationContext.js",
],
exampleMode: "expand",
usageMode: "expand",
},
{
name: "Bootstrap components",
description: "Set of bootstrap components.", description: "Set of bootstrap components.",
components: "src/bootstrap/*.js", components: "src/bootstrap/*.js",
exampleMode: "expand", exampleMode: "expand",
usageMode: "expand", usageMode: "expand",
ignore: ["src/bootstrap/constants.js"], ignore: ["src/bootstrap/constants.js", "src/bootstrap/Radio.js"],
sectionDepth: 0, sectionDepth: 0,
}, },
{
name: "Contexts",
components: [
"src/context/alertContext/AlertContext.js",
"src/context/customizationContext/CustomizationContext.js",
],
exampleMode: "expand",
usageMode: "expand",
},
], ],
template: { template: {
favicon: "/docs/components/logo.svg", favicon: "/docs/components/logo.svg",
}, },
require: [ require: [
"babel-polyfill", "babel-polyfill",
path.join(__dirname, "src/testUtils/mockGlobals"), path.join(__dirname, "src/testUtils/mockGlobals.js"),
path.join( path.join(
__dirname, __dirname,
"node_modules/bootstrap/dist/css/bootstrap.min.css" "node_modules/bootstrap/dist/css/bootstrap.min.css"
), ),
path.join( path.join(__dirname, "node_modules/bootstrap/dist/js/bootstrap.min.js"),
__dirname,
"node_modules/@fortawesome/fontawesome-free/css/all.min.css"
),
], ],
styleguideComponents: { styleguideComponents: {
LogoRenderer: path.join(__dirname, "docs/components/Logo"), LogoRenderer: path.join(__dirname, "docs/components/Logo"),

View File

@ -1,23 +1,23 @@
# Czech translations for Foris JS. # Czech translations for Foris JS.
# Copyright (C) 2024 CZ.NIC, z.s.p.o. (https://www.nic.cz/) # Copyright (C) 2025 CZ.NIC, z.s.p.o. (https://www.nic.cz/)
# This file is distributed under the same license as the Foris JS project. # This file is distributed under the same license as the Foris JS project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024. # FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-08-23 14:02+0200\n" "POT-Creation-Date: 2025-04-04 15:14+0200\n"
"PO-Revision-Date: 2023-11-23 16:03+0000\n" "PO-Revision-Date: 2024-11-15 06:01+0000\n"
"Last-Translator: Lukas Jelinek <lukas.jelinek@nic.cz>\n" "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>\n"
"Language: cs\n" "Language: cs\n"
"Language-Team: Czech <https://hosted.weblate.org/projects/turris/foris-" "Language-Team: Czech <https://hosted.weblate.org/projects/turris/foris-"
"js/cs/>\n" "js/cs/>\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.16.0\n" "Generated-By: Babel 2.17.0\n"
#: src/api/utils.js:61 #: src/api/utils.js:61
msgid "The session is expired. Please log in again." msgid "The session is expired. Please log in again."
@ -35,41 +35,110 @@ msgstr "Neobdržena žádná odezva."
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "Došlo k neznámé chybě v aplikačním programovém rozhraní." msgstr "Došlo k neznámé chybě v aplikačním programovém rozhraní."
#: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98 #: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:103
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr "Zavřít"
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copied!" msgid "Copied!"
msgstr "Zkopírováno!" msgstr "Zkopírováno!"
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copy" msgid "Copy"
msgstr "Kopírovat" msgstr "Kopírovat"
#: src/common/RebootButton.js:27 #: src/bootstrap/NumberInput.js:84 src/bootstrap/NumberInput.js:85
msgid "Reboot request failed." msgid "Increase value. Hint: Hold to increase faster."
msgstr "Vyžadován restart." msgstr ""
#: src/common/RebootButton.js:51 #: src/bootstrap/NumberInput.js:101 src/bootstrap/NumberInput.js:102
msgid "Reboot" msgid "Decrease value. Hint: Hold to decrease faster."
msgstr "Restartovat" msgstr ""
#: src/common/RebootButton.js:66 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:67
msgid "Warning!" msgid "Action successful."
msgstr "Varování!" msgstr "Akce úspěšná."
#: src/common/RebootButton.js:68 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:76
msgid "Are you sure you want to restart the router?" msgid "Action failed."
msgstr "Opravdu chcete router restartovat?" msgstr "Akce se nezdařila."
#: src/common/RebootButton.js:71 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:147
msgid "Cancel" msgid "Cancel"
msgstr "Zrušit" msgstr "Zrušit"
#: src/common/RebootButton.js:73 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:150
msgid "Confirm reboot" msgid "Confirm"
msgstr "Potvrdit restart" msgstr "Potvrdit"
#: src/common/RichTable/RichTable.js:87
msgid "Search…"
msgstr ""
#: src/common/RichTable/RichTableBody.js:50
msgid "No results."
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:27
msgid "Columns"
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:80
msgid "Reset"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr "Seřadit vzestupně"
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr "Seřadit sestupně"
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr "Vyčistit řazení"
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr "Navigační pruh stránkování"
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr "První stránka"
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr "Předchozí stránka"
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr "Následující stránka"
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr "Poslední stránka"
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr "Stránka"
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr "z"
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr "Řádků na stránku:"
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr "Vyberte řádky na stránku"
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr "Vše"
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
msgid "An error occurred during resetting Wi-Fi settings." msgid "An error occurred during resetting Wi-Fi settings."
@ -91,15 +160,16 @@ msgid ""
"and restore the default values." "and restore the default values."
msgstr "" msgstr ""
"Pokud se počet bezdrátových karet neshoduje, můžete zkusit obnovit " "Pokud se počet bezdrátových karet neshoduje, můžete zkusit obnovit "
"nastavení Wi-Fi. Je třeba upozornit, že se tím odstraní aktuální " "nastavení Wi-Fi. Je třeba upozornit, že se tím odstraní stávající "
"konfigurace Wi-Fi a obnoví se výchozí hodnoty." "nastavení Wi-Fi a obnoví se výchozí hodnoty."
#: src/common/WiFiSettings/WiFiForm.js:97 #: src/common/WiFiSettings/WiFiForm.js:97
#, python-brace-format
msgid "Wi-Fi ${deviceID + 1}" msgid "Wi-Fi ${deviceID + 1}"
msgstr "Wi-Fi ${deviceID + 1}" msgstr "Wi-Fi ${deviceID + 1}"
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:81 #: src/common/WiFiSettings/WiFiGuestForm.js:80
msgid "Password" msgid "Password"
msgstr "Heslo" msgstr "Heslo"
@ -107,6 +177,10 @@ msgstr "Heslo"
msgid "Hide SSID" msgid "Hide SSID"
msgstr "Skrýt SSID" msgstr "Skrýt SSID"
#: src/common/WiFiSettings/WiFiForm.js:159
msgid "Band"
msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:186 #: src/common/WiFiSettings/WiFiForm.js:186
msgid "802.11n/ac/ax mode" msgid "802.11n/ac/ax mode"
msgstr "Režim 802.11n/ac/ax" msgstr "Režim 802.11n/ac/ax"
@ -116,6 +190,7 @@ msgid "Channel"
msgstr "Kanál" msgstr "Kanál"
#: src/common/WiFiSettings/WiFiForm.js:211 #: src/common/WiFiSettings/WiFiForm.js:211
#: src/common/WiFiSettings/WiFiGuestForm.js:95
msgid "Encryption" msgid "Encryption"
msgstr "Šifrování" msgstr "Šifrování"
@ -128,7 +203,7 @@ msgid ""
"In case you have trouble connecting to WiFi Access Point, try disabling " "In case you have trouble connecting to WiFi Access Point, try disabling "
"Management Frame Protection." "Management Frame Protection."
msgstr "" msgstr ""
"Máte-li problémy při připojování k přístupovému bodu Wi-Fi, zkuste " "Pokud máte problémy při připojování k přístupovému bodu Wi-Fi, zkuste "
"vypnout Management Frame Protection." "vypnout Management Frame Protection."
#: src/common/WiFiSettings/WiFiForm.js:262 #: src/common/WiFiSettings/WiFiForm.js:262
@ -139,21 +214,20 @@ msgstr "automaticky"
msgid "Custom" msgid "Custom"
msgstr "Uživatelsky určené" msgstr "Uživatelsky určené"
#: src/common/WiFiSettings/WiFiGuestForm.js:43 #: src/common/WiFiSettings/WiFiGuestForm.js:45
msgid "Enable Guest Wi-Fi" msgid "Enable Guest Wi-Fi"
msgstr "Zapnout Wi-Fi pro hosty" msgstr "Zapnout Wi-Fi pro hosty"
#: src/common/WiFiSettings/WiFiQRCode.js:43 #: src/common/WiFiSettings/WiFiQRCode.js:43
#: src/common/WiFiSettings/WiFiQRCode.js:44 #: src/common/WiFiSettings/WiFiQRCode.js:44
#, fuzzy
msgid "Show QR code" msgid "Show QR code"
msgstr "Wi-Fi QR kód" msgstr "Ukázat QR kód"
#: src/common/WiFiSettings/WiFiQRCode.js:70 #: src/common/WiFiSettings/WiFiQRCode.js:70
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "Wi-Fi QR kód" msgstr "Wi-Fi QR kód"
#: src/common/WiFiSettings/WiFiQRCode.js:93 #: src/common/WiFiSettings/WiFiQRCode.js:102
msgid "Download PDF" msgid "Download PDF"
msgstr "Stáhnout PDF" msgstr "Stáhnout PDF"
@ -180,7 +254,7 @@ msgstr "Je třeba, aby heslo obsahovalo alespoň 8 znaků"
#: src/common/WiFiSettings/WiFiSettings.js:91 #: src/common/WiFiSettings/WiFiSettings.js:91
#: src/common/WiFiSettings/WiFiSettings.js:110 #: src/common/WiFiSettings/WiFiSettings.js:110
msgid "Password must not contain more than 63 symbols" msgid "Password must not contain more than 63 symbols"
msgstr "Heslo nesmí obsahovat více než 63 znaků" msgstr "Heslo nemůže obsahovat více než 63 znaků"
#: src/common/WiFiSettings/constants.js:9 #: src/common/WiFiSettings/constants.js:9
msgid "Disabled" msgid "Disabled"
@ -207,38 +281,48 @@ msgid "802.11ac - 80 MHz wide channel"
msgstr "802.11ac kanál šíře 80 MHz" msgstr "802.11ac kanál šíře 80 MHz"
#: src/common/WiFiSettings/constants.js:15 #: src/common/WiFiSettings/constants.js:15
#, fuzzy
msgid "802.11ac - 80+80 MHz wide channel"
msgstr "802.11ac kanál šíře 80 MHz"
#: src/common/WiFiSettings/constants.js:16
msgid "802.11ac - 160 MHz wide channel" msgid "802.11ac - 160 MHz wide channel"
msgstr "802.11ac kanál šíře 160 MHz" msgstr "802.11ac kanál šíře 160 MHz"
#: src/common/WiFiSettings/constants.js:16 #: src/common/WiFiSettings/constants.js:17
msgid "802.11ax - 20 MHz wide channel" msgid "802.11ax - 20 MHz wide channel"
msgstr "802.11ax kanál šíře 20 MHz" msgstr "802.11ax kanál šíře 20 MHz"
#: src/common/WiFiSettings/constants.js:17 #: src/common/WiFiSettings/constants.js:18
msgid "802.11ax - 40 MHz wide channel" msgid "802.11ax - 40 MHz wide channel"
msgstr "802.11ax kanál šíře 40 MHz" msgstr "802.11ax kanál šíře 40 MHz"
#: src/common/WiFiSettings/constants.js:18 #: src/common/WiFiSettings/constants.js:19
msgid "802.11ax - 80 MHz wide channel" msgid "802.11ax - 80 MHz wide channel"
msgstr "802.11ax kanál šíře 80 MHz" msgstr "802.11ax kanál šíře 80 MHz"
#: src/common/WiFiSettings/constants.js:19 #: src/common/WiFiSettings/constants.js:20
#, fuzzy
msgid "802.11ax - 80+80 MHz wide channel"
msgstr "802.11ax kanál šíře 80 MHz"
#: src/common/WiFiSettings/constants.js:21
msgid "802.11ax - 160 MHz wide channel" msgid "802.11ax - 160 MHz wide channel"
msgstr "802.11ax kanál šíře 160 MHz" msgstr "802.11ax kanál šíře 160 MHz"
#: src/common/WiFiSettings/constants.js:26 #: src/common/WiFiSettings/constants.js:29
msgid "WPA3 only" msgid "WPA3 only"
msgstr "pouze WPA3" msgstr "pouze WPA3"
#: src/common/WiFiSettings/constants.js:27 #: src/common/WiFiSettings/constants.js:30
msgid "WPA3 with WPA2 as fallback (default)" msgid "WPA3 with WPA2 as fallback (default)"
msgstr "WPA3, nouzově WPA2 (výchozí)" msgstr "WPA3, nouzově WPA2 (výchozí)"
#: src/common/WiFiSettings/constants.js:28 #: src/common/WiFiSettings/constants.js:31
msgid "WPA2 only" msgid "WPA2 only"
msgstr "pouze WPA2" msgstr "pouze WPA2"
#: src/common/WiFiSettings/constants.js:31 #: src/common/WiFiSettings/constants.js:34
msgid "" msgid ""
"SSID which contains non-standard characters could cause problems on some " "SSID which contains non-standard characters could cause problems on some "
"devices." "devices."
@ -246,17 +330,17 @@ msgstr ""
"SSID obsahující nestandardní znaky může na některých zařízení způsobovat " "SSID obsahující nestandardní znaky může na některých zařízení způsobovat "
"problémy." "problémy."
#: src/common/WiFiSettings/constants.js:34 #: src/common/WiFiSettings/constants.js:37
msgid "WPA2/3 pre-shared key, that is required to connect to the network." msgid "WPA2/3 pre-shared key, that is required to connect to the network."
msgstr "Předsdílený klíč WPA2/3, který je vyžadován pro připojení se k síti." msgstr "Předsdílený klíč WPA2/3, který je vyžadován pro připojení se k síti."
#: src/common/WiFiSettings/constants.js:37 #: src/common/WiFiSettings/constants.js:40
msgid "If set, network is not visible when scanning for available networks." msgid "If set, network is not visible when scanning for available networks."
msgstr "" msgstr ""
"Při zapnutí této volby se síť nebude zobrazovat zařízením když budou " "Při zapnutí této volby se síť nebude zobrazovat zařízením když budou "
"vyhledávat dostupné sítě." "vyhledávat dostupné sítě."
#: src/common/WiFiSettings/constants.js:40 #: src/common/WiFiSettings/constants.js:43
msgid "" msgid ""
"The 2.4 GHz band is more widely supported by clients, but tends to have " "The 2.4 GHz band is more widely supported by clients, but tends to have "
"more interference. The 5 GHz band is a newer standard and may not be " "more interference. The 5 GHz band is a newer standard and may not be "
@ -268,7 +352,7 @@ msgstr ""
"podporováno všemi vámi používanými zařízeními. Obvykle bývá méně " "podporováno všemi vámi používanými zařízeními. Obvykle bývá méně "
"zarušené, signál se ale hůře šíří uvnitř budov." "zarušené, signál se ale hůře šíří uvnitř budov."
#: src/common/WiFiSettings/constants.js:43 #: src/common/WiFiSettings/constants.js:46
msgid "" msgid ""
"Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 " "Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 "
"MHz wide channels can yield higher throughput but can cause more " "MHz wide channels can yield higher throughput but can cause more "
@ -280,7 +364,7 @@ msgstr ""
" na rušení. Pokud nevíte co zvolit, použijte výchozí volbu s kanálem šíře" " na rušení. Pokud nevíte co zvolit, použijte výchozí volbu s kanálem šíře"
" 20 MHz." " 20 MHz."
#: src/common/WiFiSettings/constants.js:46 #: src/common/WiFiSettings/constants.js:49
msgid "" msgid ""
"Enables Wi-Fi for guests, which is separated from LAN network. Devices " "Enables Wi-Fi for guests, which is separated from LAN network. Devices "
"connected to this network are allowed to access the internet, but aren't " "connected to this network are allowed to access the internet, but aren't "
@ -293,7 +377,7 @@ msgstr ""
"ostatní zařízení a k rozhraní pro nastavování směrovače. Parametry sítě " "ostatní zařízení a k rozhraní pro nastavování směrovače. Parametry sítě "
"pro hosty je možné nastavit na panelu „Síť pro hosty“." "pro hosty je možné nastavit na panelu „Síť pro hosty“."
#: src/common/WiFiSettings/constants.js:49 #: src/common/WiFiSettings/constants.js:52
msgid "" msgid ""
"The WPA3 standard is the new most secure encryption method that is " "The WPA3 standard is the new most secure encryption method that is "
"suggested to be used with any device that supports it. The older devices " "suggested to be used with any device that supports it. The older devices "
@ -315,15 +399,15 @@ msgstr ""
"Změny, které byly provedeny, nebyly uloženy. Jste si jistý, že chcete " "Změny, které byly provedeny, nebyly uloženy. Jste si jistý, že chcete "
"opustit stránku?" "opustit stránku?"
#: src/form/components/SubmitButton.js:32 #: src/form/components/SubmitButton.js:34
msgid "Updating" msgid "Updating"
msgstr "Aktualizuji" msgstr "Aktualizuje se"
#: src/form/components/SubmitButton.js:35 #: src/form/components/SubmitButton.js:37
msgid "Load settings" msgid "Load settings"
msgstr "Načítám nastavení" msgstr "Načíst nastavení"
#: src/form/components/SubmitButton.js:38 #: src/form/components/SubmitButton.js:40
msgid "Save" msgid "Save"
msgstr "Uložit" msgstr "Uložit"
@ -353,7 +437,7 @@ msgstr "Toto není platné doménové jméno."
#: src/utils/validations.js:18 #: src/utils/validations.js:18
msgid "This is not a valid DUID." msgid "This is not a valid DUID."
msgstr "Tohle není platné DUID." msgstr "Toto není platné DUID."
#: src/utils/validations.js:19 #: src/utils/validations.js:19
msgid "This is not a valid MAC address." msgid "This is not a valid MAC address."
@ -389,3 +473,15 @@ msgstr "Neobsahuje seznam e-mailů oddělených čárkou."
#~ "se tím odstraní aktuální konfigurace a vrátí se výchozí hodnoty.\n" #~ "se tím odstraní aktuální konfigurace a vrátí se výchozí hodnoty.\n"
#~ " " #~ " "
#~ msgid "Reboot request failed."
#~ msgstr "Vyžadován restart."
#~ msgid "Reboot"
#~ msgstr "Restartovat"
#~ msgid "Warning!"
#~ msgstr "Varování!"
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr "Opravdu chcete router restartovat?"

View File

@ -1,13 +1,13 @@
# Danish translations for Foris JS. # Danish translations for Foris JS.
# Copyright (C) 2024 CZ.NIC, z.s.p.o. (https://www.nic.cz/) # Copyright (C) 2025 CZ.NIC, z.s.p.o. (https://www.nic.cz/)
# This file is distributed under the same license as the Foris JS project. # This file is distributed under the same license as the Foris JS project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024. # FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-08-23 14:02+0200\n" "POT-Creation-Date: 2025-04-04 15:14+0200\n"
"PO-Revision-Date: 2019-02-19 13:34+0100\n" "PO-Revision-Date: 2019-02-19 13:34+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: da\n" "Language: da\n"
@ -16,7 +16,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.16.0\n" "Generated-By: Babel 2.17.0\n"
#: src/api/utils.js:61 #: src/api/utils.js:61
msgid "The session is expired. Please log in again." msgid "The session is expired. Please log in again."
@ -34,40 +34,109 @@ msgstr ""
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
#: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98 #: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:103
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copy" msgid "Copy"
msgstr "" msgstr ""
#: src/common/RebootButton.js:27 #: src/bootstrap/NumberInput.js:84 src/bootstrap/NumberInput.js:85
msgid "Reboot request failed." msgid "Increase value. Hint: Hold to increase faster."
msgstr "" msgstr ""
#: src/common/RebootButton.js:51 #: src/bootstrap/NumberInput.js:101 src/bootstrap/NumberInput.js:102
msgid "Reboot" msgid "Decrease value. Hint: Hold to decrease faster."
msgstr "" msgstr ""
#: src/common/RebootButton.js:66 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:67
msgid "Warning!" msgid "Action successful."
msgstr "" msgstr ""
#: src/common/RebootButton.js:68 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:76
msgid "Are you sure you want to restart the router?" msgid "Action failed."
msgstr "" msgstr ""
#: src/common/RebootButton.js:71 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:147
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
#: src/common/RebootButton.js:73 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:150
msgid "Confirm reboot" msgid "Confirm"
msgstr ""
#: src/common/RichTable/RichTable.js:87
msgid "Search…"
msgstr ""
#: src/common/RichTable/RichTableBody.js:50
msgid "No results."
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:27
msgid "Columns"
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:80
msgid "Reset"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr "" msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
@ -91,11 +160,12 @@ msgid ""
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:97 #: src/common/WiFiSettings/WiFiForm.js:97
#, python-brace-format
msgid "Wi-Fi ${deviceID + 1}" msgid "Wi-Fi ${deviceID + 1}"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:81 #: src/common/WiFiSettings/WiFiGuestForm.js:80
msgid "Password" msgid "Password"
msgstr "" msgstr ""
@ -103,6 +173,10 @@ msgstr ""
msgid "Hide SSID" msgid "Hide SSID"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:159
msgid "Band"
msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:186 #: src/common/WiFiSettings/WiFiForm.js:186
msgid "802.11n/ac/ax mode" msgid "802.11n/ac/ax mode"
msgstr "" msgstr ""
@ -112,6 +186,7 @@ msgid "Channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:211 #: src/common/WiFiSettings/WiFiForm.js:211
#: src/common/WiFiSettings/WiFiGuestForm.js:95
msgid "Encryption" msgid "Encryption"
msgstr "" msgstr ""
@ -133,7 +208,7 @@ msgstr ""
msgid "Custom" msgid "Custom"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiGuestForm.js:43 #: src/common/WiFiSettings/WiFiGuestForm.js:45
msgid "Enable Guest Wi-Fi" msgid "Enable Guest Wi-Fi"
msgstr "" msgstr ""
@ -146,7 +221,7 @@ msgstr ""
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiQRCode.js:93 #: src/common/WiFiSettings/WiFiQRCode.js:102
msgid "Download PDF" msgid "Download PDF"
msgstr "" msgstr ""
@ -200,52 +275,60 @@ msgid "802.11ac - 80 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:15 #: src/common/WiFiSettings/constants.js:15
msgid "802.11ac - 160 MHz wide channel" msgid "802.11ac - 80+80 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:16 #: src/common/WiFiSettings/constants.js:16
msgid "802.11ax - 20 MHz wide channel" msgid "802.11ac - 160 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:17 #: src/common/WiFiSettings/constants.js:17
msgid "802.11ax - 40 MHz wide channel" msgid "802.11ax - 20 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:18 #: src/common/WiFiSettings/constants.js:18
msgid "802.11ax - 80 MHz wide channel" msgid "802.11ax - 40 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:19 #: src/common/WiFiSettings/constants.js:19
msgid "802.11ax - 80 MHz wide channel"
msgstr ""
#: src/common/WiFiSettings/constants.js:20
msgid "802.11ax - 80+80 MHz wide channel"
msgstr ""
#: src/common/WiFiSettings/constants.js:21
msgid "802.11ax - 160 MHz wide channel" msgid "802.11ax - 160 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:26 #: src/common/WiFiSettings/constants.js:29
msgid "WPA3 only" msgid "WPA3 only"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:27 #: src/common/WiFiSettings/constants.js:30
msgid "WPA3 with WPA2 as fallback (default)" msgid "WPA3 with WPA2 as fallback (default)"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:28 #: src/common/WiFiSettings/constants.js:31
msgid "WPA2 only" msgid "WPA2 only"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:31 #: src/common/WiFiSettings/constants.js:34
msgid "" msgid ""
"SSID which contains non-standard characters could cause problems on some " "SSID which contains non-standard characters could cause problems on some "
"devices." "devices."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:34 #: src/common/WiFiSettings/constants.js:37
msgid "WPA2/3 pre-shared key, that is required to connect to the network." msgid "WPA2/3 pre-shared key, that is required to connect to the network."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:37 #: src/common/WiFiSettings/constants.js:40
msgid "If set, network is not visible when scanning for available networks." msgid "If set, network is not visible when scanning for available networks."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:40 #: src/common/WiFiSettings/constants.js:43
msgid "" msgid ""
"The 2.4 GHz band is more widely supported by clients, but tends to have " "The 2.4 GHz band is more widely supported by clients, but tends to have "
"more interference. The 5 GHz band is a newer standard and may not be " "more interference. The 5 GHz band is a newer standard and may not be "
@ -253,7 +336,7 @@ msgid ""
"signal does not carry so well indoors." "signal does not carry so well indoors."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:43 #: src/common/WiFiSettings/constants.js:46
msgid "" msgid ""
"Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 " "Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 "
"MHz wide channels can yield higher throughput but can cause more " "MHz wide channels can yield higher throughput but can cause more "
@ -261,7 +344,7 @@ msgid ""
"default option with 20 MHz wide channel." "default option with 20 MHz wide channel."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:46 #: src/common/WiFiSettings/constants.js:49
msgid "" msgid ""
"Enables Wi-Fi for guests, which is separated from LAN network. Devices " "Enables Wi-Fi for guests, which is separated from LAN network. Devices "
"connected to this network are allowed to access the internet, but aren't " "connected to this network are allowed to access the internet, but aren't "
@ -270,7 +353,7 @@ msgid ""
"tab." "tab."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:49 #: src/common/WiFiSettings/constants.js:52
msgid "" msgid ""
"The WPA3 standard is the new most secure encryption method that is " "The WPA3 standard is the new most secure encryption method that is "
"suggested to be used with any device that supports it. The older devices " "suggested to be used with any device that supports it. The older devices "
@ -286,15 +369,15 @@ msgstr ""
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:32 #: src/form/components/SubmitButton.js:34
msgid "Updating" msgid "Updating"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:35 #: src/form/components/SubmitButton.js:37
msgid "Load settings" msgid "Load settings"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:38 #: src/form/components/SubmitButton.js:40
msgid "Save" msgid "Save"
msgstr "" msgstr ""
@ -424,3 +507,18 @@ msgstr ""
#~ "channel." #~ "channel."
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr ""
#~ msgid "Reboot"
#~ msgstr ""
#~ msgid "Warning!"
#~ msgstr ""
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr ""
#~ msgid "Confirm reboot"
#~ msgstr ""

View File

@ -1,13 +1,13 @@
# German translations for Foris JS. # German translations for Foris JS.
# Copyright (C) 2024 CZ.NIC, z.s.p.o. (https://www.nic.cz/) # Copyright (C) 2025 CZ.NIC, z.s.p.o. (https://www.nic.cz/)
# This file is distributed under the same license as the Foris JS project. # This file is distributed under the same license as the Foris JS project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024. # FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-08-23 14:02+0200\n" "POT-Creation-Date: 2025-04-04 15:14+0200\n"
"PO-Revision-Date: 2024-01-04 21:08+0000\n" "PO-Revision-Date: 2024-01-04 21:08+0000\n"
"Last-Translator: Erik Pfannenstein <debianignatz@gmx.de>\n" "Last-Translator: Erik Pfannenstein <debianignatz@gmx.de>\n"
"Language: de\n" "Language: de\n"
@ -17,7 +17,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.16.0\n" "Generated-By: Babel 2.17.0\n"
#: src/api/utils.js:61 #: src/api/utils.js:61
msgid "The session is expired. Please log in again." msgid "The session is expired. Please log in again."
@ -35,42 +35,113 @@ msgstr "Keine Antwort erhalten."
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "Ein unbekannter API-Fehler ist aufgetreten." msgstr "Ein unbekannter API-Fehler ist aufgetreten."
#: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98 #: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:103
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr "Schließen"
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copied!" msgid "Copied!"
msgstr "Kopiert!" msgstr "Kopiert!"
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copy" msgid "Copy"
msgstr "Kopieren" msgstr "Kopieren"
#: src/common/RebootButton.js:27 #: src/bootstrap/NumberInput.js:84 src/bootstrap/NumberInput.js:85
msgid "Reboot request failed." msgid "Increase value. Hint: Hold to increase faster."
msgstr "Neustart-Einleitung fehlgeschlagen." msgstr ""
#: src/common/RebootButton.js:51 #: src/bootstrap/NumberInput.js:101 src/bootstrap/NumberInput.js:102
msgid "Reboot" msgid "Decrease value. Hint: Hold to decrease faster."
msgstr "Systemneustart" msgstr ""
#: src/common/RebootButton.js:66 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:67
msgid "Warning!" #, fuzzy
msgstr "Warnung!" msgid "Action successful."
msgstr "Einstellungen erfolgreich gespeichert"
#: src/common/RebootButton.js:68 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:76
msgid "Are you sure you want to restart the router?" msgid "Action failed."
msgstr "Sind Sie sicher, dass Sie den Router neu starten wollen?" msgstr ""
#: src/common/RebootButton.js:71 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:147
msgid "Cancel" msgid "Cancel"
msgstr "Abbrechen" msgstr "Abbrechen"
#: src/common/RebootButton.js:73 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:150
msgid "Confirm reboot" #, fuzzy
msgid "Confirm"
msgstr "Neustart bestätigen" msgstr "Neustart bestätigen"
#: src/common/RichTable/RichTable.js:87
msgid "Search…"
msgstr ""
#: src/common/RichTable/RichTableBody.js:50
msgid "No results."
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:27
msgid "Columns"
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:80
msgid "Reset"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
msgid "An error occurred during resetting Wi-Fi settings." msgid "An error occurred during resetting Wi-Fi settings."
msgstr "" msgstr ""
@ -97,11 +168,12 @@ msgstr ""
" WLAN-Konfiguration mit den Werkseinstellungen überschrieben wird." " WLAN-Konfiguration mit den Werkseinstellungen überschrieben wird."
#: src/common/WiFiSettings/WiFiForm.js:97 #: src/common/WiFiSettings/WiFiForm.js:97
#, python-brace-format
msgid "Wi-Fi ${deviceID + 1}" msgid "Wi-Fi ${deviceID + 1}"
msgstr "WLAN ${deviceID + 1}" msgstr "WLAN ${deviceID + 1}"
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:81 #: src/common/WiFiSettings/WiFiGuestForm.js:80
msgid "Password" msgid "Password"
msgstr "Passwort" msgstr "Passwort"
@ -109,6 +181,10 @@ msgstr "Passwort"
msgid "Hide SSID" msgid "Hide SSID"
msgstr "SSID verbergen" msgstr "SSID verbergen"
#: src/common/WiFiSettings/WiFiForm.js:159
msgid "Band"
msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:186 #: src/common/WiFiSettings/WiFiForm.js:186
msgid "802.11n/ac/ax mode" msgid "802.11n/ac/ax mode"
msgstr "802.11n/ac/ax-Modus" msgstr "802.11n/ac/ax-Modus"
@ -118,6 +194,7 @@ msgid "Channel"
msgstr "Kanal" msgstr "Kanal"
#: src/common/WiFiSettings/WiFiForm.js:211 #: src/common/WiFiSettings/WiFiForm.js:211
#: src/common/WiFiSettings/WiFiGuestForm.js:95
msgid "Encryption" msgid "Encryption"
msgstr "Verschlüsselung" msgstr "Verschlüsselung"
@ -141,21 +218,20 @@ msgstr "automatisch"
msgid "Custom" msgid "Custom"
msgstr "Benutzerdefiniert" msgstr "Benutzerdefiniert"
#: src/common/WiFiSettings/WiFiGuestForm.js:43 #: src/common/WiFiSettings/WiFiGuestForm.js:45
msgid "Enable Guest Wi-Fi" msgid "Enable Guest Wi-Fi"
msgstr "Gast-WLAN aktivieren" msgstr "Gast-WLAN aktivieren"
#: src/common/WiFiSettings/WiFiQRCode.js:43 #: src/common/WiFiSettings/WiFiQRCode.js:43
#: src/common/WiFiSettings/WiFiQRCode.js:44 #: src/common/WiFiSettings/WiFiQRCode.js:44
#, fuzzy
msgid "Show QR code" msgid "Show QR code"
msgstr "WLAN QR-Code" msgstr "QR-Code anzeigen"
#: src/common/WiFiSettings/WiFiQRCode.js:70 #: src/common/WiFiSettings/WiFiQRCode.js:70
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "WLAN QR-Code" msgstr "WLAN QR-Code"
#: src/common/WiFiSettings/WiFiQRCode.js:93 #: src/common/WiFiSettings/WiFiQRCode.js:102
msgid "Download PDF" msgid "Download PDF"
msgstr "PDF herunterladen" msgstr "PDF herunterladen"
@ -209,38 +285,48 @@ msgid "802.11ac - 80 MHz wide channel"
msgstr "802.11ac - 80 MHz breiter Kanal" msgstr "802.11ac - 80 MHz breiter Kanal"
#: src/common/WiFiSettings/constants.js:15 #: src/common/WiFiSettings/constants.js:15
#, fuzzy
msgid "802.11ac - 80+80 MHz wide channel"
msgstr "802.11ac - 80 MHz breiter Kanal"
#: src/common/WiFiSettings/constants.js:16
msgid "802.11ac - 160 MHz wide channel" msgid "802.11ac - 160 MHz wide channel"
msgstr "802.11ac - 160 MHz breiter Kanal" msgstr "802.11ac - 160 MHz breiter Kanal"
#: src/common/WiFiSettings/constants.js:16 #: src/common/WiFiSettings/constants.js:17
msgid "802.11ax - 20 MHz wide channel" msgid "802.11ax - 20 MHz wide channel"
msgstr "802.11ax - 20 MHz breiter Kanal" msgstr "802.11ax - 20 MHz breiter Kanal"
#: src/common/WiFiSettings/constants.js:17 #: src/common/WiFiSettings/constants.js:18
msgid "802.11ax - 40 MHz wide channel" msgid "802.11ax - 40 MHz wide channel"
msgstr "802.11ax - 40 MHz breiter Kanal" msgstr "802.11ax - 40 MHz breiter Kanal"
#: src/common/WiFiSettings/constants.js:18 #: src/common/WiFiSettings/constants.js:19
msgid "802.11ax - 80 MHz wide channel" msgid "802.11ax - 80 MHz wide channel"
msgstr "802.11ax - 80 MHz breiter Kanal" msgstr "802.11ax - 80 MHz breiter Kanal"
#: src/common/WiFiSettings/constants.js:19 #: src/common/WiFiSettings/constants.js:20
#, fuzzy
msgid "802.11ax - 80+80 MHz wide channel"
msgstr "802.11ax - 80 MHz breiter Kanal"
#: src/common/WiFiSettings/constants.js:21
msgid "802.11ax - 160 MHz wide channel" msgid "802.11ax - 160 MHz wide channel"
msgstr "802.11ax - 160 MHz breiter Kanal" msgstr "802.11ax - 160 MHz breiter Kanal"
#: src/common/WiFiSettings/constants.js:26 #: src/common/WiFiSettings/constants.js:29
msgid "WPA3 only" msgid "WPA3 only"
msgstr "Nur WPA3" msgstr "Nur WPA3"
#: src/common/WiFiSettings/constants.js:27 #: src/common/WiFiSettings/constants.js:30
msgid "WPA3 with WPA2 as fallback (default)" msgid "WPA3 with WPA2 as fallback (default)"
msgstr "WPA3 mit WPA2 als Ausweichmöglichkeit (Voreinstellung)" msgstr "WPA3 mit WPA2 als Ausweichmöglichkeit (Voreinstellung)"
#: src/common/WiFiSettings/constants.js:28 #: src/common/WiFiSettings/constants.js:31
msgid "WPA2 only" msgid "WPA2 only"
msgstr "Nur WPA2" msgstr "Nur WPA2"
#: src/common/WiFiSettings/constants.js:31 #: src/common/WiFiSettings/constants.js:34
msgid "" msgid ""
"SSID which contains non-standard characters could cause problems on some " "SSID which contains non-standard characters could cause problems on some "
"devices." "devices."
@ -248,17 +334,17 @@ msgstr ""
"SSIDs, die nicht standardmäßige Zeichen enthalten, können auf manchen " "SSIDs, die nicht standardmäßige Zeichen enthalten, können auf manchen "
"Geräten Probleme verursachen." "Geräten Probleme verursachen."
#: src/common/WiFiSettings/constants.js:34 #: src/common/WiFiSettings/constants.js:37
msgid "WPA2/3 pre-shared key, that is required to connect to the network." msgid "WPA2/3 pre-shared key, that is required to connect to the network."
msgstr "WPA2/3 Pre-Shard Key, der zum Verbinden mit dem Netzwerk notwendig ist." msgstr "WPA2/3 Pre-Shard Key, der zum Verbinden mit dem Netzwerk notwendig ist."
#: src/common/WiFiSettings/constants.js:37 #: src/common/WiFiSettings/constants.js:40
msgid "If set, network is not visible when scanning for available networks." msgid "If set, network is not visible when scanning for available networks."
msgstr "" msgstr ""
"Falls aktiviert, wird das Netzwerk nicht in der Liste der verfügbaren " "Falls aktiviert, wird das Netzwerk nicht in der Liste der verfügbaren "
"drahtlosen Netzwerke angezeigt." "drahtlosen Netzwerke angezeigt."
#: src/common/WiFiSettings/constants.js:40 #: src/common/WiFiSettings/constants.js:43
msgid "" msgid ""
"The 2.4 GHz band is more widely supported by clients, but tends to have " "The 2.4 GHz band is more widely supported by clients, but tends to have "
"more interference. The 5 GHz band is a newer standard and may not be " "more interference. The 5 GHz band is a newer standard and may not be "
@ -271,7 +357,7 @@ msgstr ""
"wird. Es hat in der Regel weniger Interferenzen, aber das Signal trägt " "wird. Es hat in der Regel weniger Interferenzen, aber das Signal trägt "
"nicht so gut in Innenräumen." "nicht so gut in Innenräumen."
#: src/common/WiFiSettings/constants.js:43 #: src/common/WiFiSettings/constants.js:46
msgid "" msgid ""
"Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 " "Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 "
"MHz wide channels can yield higher throughput but can cause more " "MHz wide channels can yield higher throughput but can cause more "
@ -283,7 +369,7 @@ msgstr ""
" zu mehr Interferenzen im Netzwerk führen. Wenn Sie nicht wissen, was Sie" " zu mehr Interferenzen im Netzwerk führen. Wenn Sie nicht wissen, was Sie"
" wählen sollen, verwenden Sie die Voreinstellung mit 20 MHz Kanalbreite." " wählen sollen, verwenden Sie die Voreinstellung mit 20 MHz Kanalbreite."
#: src/common/WiFiSettings/constants.js:46 #: src/common/WiFiSettings/constants.js:49
msgid "" msgid ""
"Enables Wi-Fi for guests, which is separated from LAN network. Devices " "Enables Wi-Fi for guests, which is separated from LAN network. Devices "
"connected to this network are allowed to access the internet, but aren't " "connected to this network are allowed to access the internet, but aren't "
@ -297,7 +383,7 @@ msgstr ""
"Konfigurationsschnittstelle des Routers. Die Parameter des Gastnetzwerks " "Konfigurationsschnittstelle des Routers. Die Parameter des Gastnetzwerks "
"können auf der Gastnetzwerk-Registerkarte eingestellt werden." "können auf der Gastnetzwerk-Registerkarte eingestellt werden."
#: src/common/WiFiSettings/constants.js:49 #: src/common/WiFiSettings/constants.js:52
msgid "" msgid ""
"The WPA3 standard is the new most secure encryption method that is " "The WPA3 standard is the new most secure encryption method that is "
"suggested to be used with any device that supports it. The older devices " "suggested to be used with any device that supports it. The older devices "
@ -320,15 +406,15 @@ msgstr ""
"Änderungen, die Sie vorgenommen haben, werden möglicherweise nicht " "Änderungen, die Sie vorgenommen haben, werden möglicherweise nicht "
"gespeichert. Möchten Sie wirklich gehen?" "gespeichert. Möchten Sie wirklich gehen?"
#: src/form/components/SubmitButton.js:32 #: src/form/components/SubmitButton.js:34
msgid "Updating" msgid "Updating"
msgstr "Aktualisiere" msgstr "Aktualisiere"
#: src/form/components/SubmitButton.js:35 #: src/form/components/SubmitButton.js:37
msgid "Load settings" msgid "Load settings"
msgstr "Einstellungen laden" msgstr "Einstellungen laden"
#: src/form/components/SubmitButton.js:38 #: src/form/components/SubmitButton.js:40
msgid "Save" msgid "Save"
msgstr "Speichern" msgstr "Speichern"
@ -368,22 +454,21 @@ msgstr "Dies ist keine gültige MAC-Adresse."
msgid "Doesn't contain a list of emails separated by commas." msgid "Doesn't contain a list of emails separated by commas."
msgstr "Enthält keine Liste von E-Mails, die durch Kommas getrennt sind." msgstr "Enthält keine Liste von E-Mails, die durch Kommas getrennt sind."
#~ msgid "An unknown error occurred. Check the console for more info."
#~ msgstr ""
#~ msgid "Reboot confirmation"
#~ msgstr ""
#~ msgid "Enable" #~ msgid "Enable"
#~ msgstr "Aktivieren" #~ msgstr "Aktivieren"
#~ msgid "" #~ msgid "Reboot request failed."
#~ "\n" #~ msgstr "Neustart-Einleitung fehlgeschlagen."
#~ "If a number of wireless cards "
#~ "doesn't match, you may try to " #~ msgid "Reboot"
#~ "reset the Wi-Fi settings. Note " #~ msgstr "Systemneustart"
#~ "that this will remove the\n"
#~ "current Wi-Fi configuration and restore the default values.\n" #~ msgid "Warning!"
#~ " " #~ msgstr "Warnung!"
#~ msgstr ""
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr "Sind Sie sicher, dass Sie den Router neu starten wollen?"
#~ msgid "Confirm reboot"
#~ msgstr "Neustart bestätigen"

View File

@ -1,15 +1,15 @@
# Greek translations for Foris JS. # Greek translations for Foris JS.
# Copyright (C) 2024 CZ.NIC, z.s.p.o. (https://www.nic.cz/) # Copyright (C) 2025 CZ.NIC, z.s.p.o. (https://www.nic.cz/)
# This file is distributed under the same license as the Foris JS project. # This file is distributed under the same license as the Foris JS project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024. # FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-08-23 14:02+0200\n" "POT-Creation-Date: 2025-04-04 15:14+0200\n"
"PO-Revision-Date: 2021-02-09 16:50+0000\n" "PO-Revision-Date: 2025-01-18 11:00+0000\n"
"Last-Translator: Michalis <michalisntovas@yahoo.gr>\n" "Last-Translator: Thanasis <thanasakis11mail@gmail.com>\n"
"Language: el\n" "Language: el\n"
"Language-Team: Greek <https://hosted.weblate.org/projects/turris/foris-" "Language-Team: Greek <https://hosted.weblate.org/projects/turris/foris-"
"js/el/>\n" "js/el/>\n"
@ -17,7 +17,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.16.0\n" "Generated-By: Babel 2.17.0\n"
#: src/api/utils.js:61 #: src/api/utils.js:61
msgid "The session is expired. Please log in again." msgid "The session is expired. Please log in again."
@ -35,42 +35,112 @@ msgstr ""
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
#: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98 #: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:103
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr "Κλείσιμο"
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copy" msgid "Copy"
msgstr "" msgstr ""
#: src/common/RebootButton.js:27 #: src/bootstrap/NumberInput.js:84 src/bootstrap/NumberInput.js:85
msgid "Reboot request failed." msgid "Increase value. Hint: Hold to increase faster."
msgstr "" msgstr ""
#: src/common/RebootButton.js:51 #: src/bootstrap/NumberInput.js:101 src/bootstrap/NumberInput.js:102
msgid "Reboot" msgid "Decrease value. Hint: Hold to decrease faster."
msgstr "Επανεκκίνηση"
#: src/common/RebootButton.js:66
msgid "Warning!"
msgstr "" msgstr ""
#: src/common/RebootButton.js:68 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:67
msgid "Are you sure you want to restart the router?" msgid "Action successful."
msgstr "Είστε βέβαιοι ότι θέλετε να κάνετε επανεκκίνηση του δρομολογητή;" msgstr ""
#: src/common/RebootButton.js:71 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:76
msgid "Action failed."
msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:147
msgid "Cancel" msgid "Cancel"
msgstr "Άκυρο" msgstr "Άκυρο"
#: src/common/RebootButton.js:73 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:150
msgid "Confirm reboot" #, fuzzy
msgid "Confirm"
msgstr "Επιβεβαίωση επανεκκίνησης" msgstr "Επιβεβαίωση επανεκκίνησης"
#: src/common/RichTable/RichTable.js:87
msgid "Search…"
msgstr ""
#: src/common/RichTable/RichTableBody.js:50
msgid "No results."
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:27
msgid "Columns"
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:80
msgid "Reset"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
msgid "An error occurred during resetting Wi-Fi settings." msgid "An error occurred during resetting Wi-Fi settings."
msgstr "" msgstr ""
@ -92,11 +162,12 @@ msgid ""
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:97 #: src/common/WiFiSettings/WiFiForm.js:97
#, python-brace-format
msgid "Wi-Fi ${deviceID + 1}" msgid "Wi-Fi ${deviceID + 1}"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:81 #: src/common/WiFiSettings/WiFiGuestForm.js:80
msgid "Password" msgid "Password"
msgstr "" msgstr ""
@ -104,6 +175,10 @@ msgstr ""
msgid "Hide SSID" msgid "Hide SSID"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:159
msgid "Band"
msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:186 #: src/common/WiFiSettings/WiFiForm.js:186
msgid "802.11n/ac/ax mode" msgid "802.11n/ac/ax mode"
msgstr "" msgstr ""
@ -114,6 +189,7 @@ msgid "Channel"
msgstr "Άκυρο" msgstr "Άκυρο"
#: src/common/WiFiSettings/WiFiForm.js:211 #: src/common/WiFiSettings/WiFiForm.js:211
#: src/common/WiFiSettings/WiFiGuestForm.js:95
msgid "Encryption" msgid "Encryption"
msgstr "" msgstr ""
@ -133,9 +209,9 @@ msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:303 #: src/common/WiFiSettings/WiFiForm.js:303
msgid "Custom" msgid "Custom"
msgstr "" msgstr "Προσαρμοσμένο"
#: src/common/WiFiSettings/WiFiGuestForm.js:43 #: src/common/WiFiSettings/WiFiGuestForm.js:45
msgid "Enable Guest Wi-Fi" msgid "Enable Guest Wi-Fi"
msgstr "" msgstr ""
@ -148,7 +224,7 @@ msgstr ""
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiQRCode.js:93 #: src/common/WiFiSettings/WiFiQRCode.js:102
msgid "Download PDF" msgid "Download PDF"
msgstr "" msgstr ""
@ -179,7 +255,7 @@ msgstr ""
#: src/common/WiFiSettings/constants.js:9 #: src/common/WiFiSettings/constants.js:9
msgid "Disabled" msgid "Disabled"
msgstr "" msgstr "Απενεργοποιημένο"
#: src/common/WiFiSettings/constants.js:10 #: src/common/WiFiSettings/constants.js:10
msgid "802.11n - 20 MHz wide channel" msgid "802.11n - 20 MHz wide channel"
@ -202,52 +278,60 @@ msgid "802.11ac - 80 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:15 #: src/common/WiFiSettings/constants.js:15
msgid "802.11ac - 160 MHz wide channel" msgid "802.11ac - 80+80 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:16 #: src/common/WiFiSettings/constants.js:16
msgid "802.11ax - 20 MHz wide channel" msgid "802.11ac - 160 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:17 #: src/common/WiFiSettings/constants.js:17
msgid "802.11ax - 40 MHz wide channel" msgid "802.11ax - 20 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:18 #: src/common/WiFiSettings/constants.js:18
msgid "802.11ax - 80 MHz wide channel" msgid "802.11ax - 40 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:19 #: src/common/WiFiSettings/constants.js:19
msgid "802.11ax - 80 MHz wide channel"
msgstr ""
#: src/common/WiFiSettings/constants.js:20
msgid "802.11ax - 80+80 MHz wide channel"
msgstr ""
#: src/common/WiFiSettings/constants.js:21
msgid "802.11ax - 160 MHz wide channel" msgid "802.11ax - 160 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:26 #: src/common/WiFiSettings/constants.js:29
msgid "WPA3 only" msgid "WPA3 only"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:27 #: src/common/WiFiSettings/constants.js:30
msgid "WPA3 with WPA2 as fallback (default)" msgid "WPA3 with WPA2 as fallback (default)"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:28 #: src/common/WiFiSettings/constants.js:31
msgid "WPA2 only" msgid "WPA2 only"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:31 #: src/common/WiFiSettings/constants.js:34
msgid "" msgid ""
"SSID which contains non-standard characters could cause problems on some " "SSID which contains non-standard characters could cause problems on some "
"devices." "devices."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:34 #: src/common/WiFiSettings/constants.js:37
msgid "WPA2/3 pre-shared key, that is required to connect to the network." msgid "WPA2/3 pre-shared key, that is required to connect to the network."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:37 #: src/common/WiFiSettings/constants.js:40
msgid "If set, network is not visible when scanning for available networks." msgid "If set, network is not visible when scanning for available networks."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:40 #: src/common/WiFiSettings/constants.js:43
msgid "" msgid ""
"The 2.4 GHz band is more widely supported by clients, but tends to have " "The 2.4 GHz band is more widely supported by clients, but tends to have "
"more interference. The 5 GHz band is a newer standard and may not be " "more interference. The 5 GHz band is a newer standard and may not be "
@ -255,7 +339,7 @@ msgid ""
"signal does not carry so well indoors." "signal does not carry so well indoors."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:43 #: src/common/WiFiSettings/constants.js:46
msgid "" msgid ""
"Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 " "Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 "
"MHz wide channels can yield higher throughput but can cause more " "MHz wide channels can yield higher throughput but can cause more "
@ -263,7 +347,7 @@ msgid ""
"default option with 20 MHz wide channel." "default option with 20 MHz wide channel."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:46 #: src/common/WiFiSettings/constants.js:49
msgid "" msgid ""
"Enables Wi-Fi for guests, which is separated from LAN network. Devices " "Enables Wi-Fi for guests, which is separated from LAN network. Devices "
"connected to this network are allowed to access the internet, but aren't " "connected to this network are allowed to access the internet, but aren't "
@ -272,7 +356,7 @@ msgid ""
"tab." "tab."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:49 #: src/common/WiFiSettings/constants.js:52
msgid "" msgid ""
"The WPA3 standard is the new most secure encryption method that is " "The WPA3 standard is the new most secure encryption method that is "
"suggested to be used with any device that supports it. The older devices " "suggested to be used with any device that supports it. The older devices "
@ -288,15 +372,15 @@ msgstr ""
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:32 #: src/form/components/SubmitButton.js:34
msgid "Updating" msgid "Updating"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:35 #: src/form/components/SubmitButton.js:37
msgid "Load settings" msgid "Load settings"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:38 #: src/form/components/SubmitButton.js:40
msgid "Save" msgid "Save"
msgstr "" msgstr ""
@ -426,3 +510,15 @@ msgstr ""
#~ "channel." #~ "channel."
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr ""
#~ msgid "Reboot"
#~ msgstr "Επανεκκίνηση"
#~ msgid "Warning!"
#~ msgstr ""
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr "Είστε βέβαιοι ότι θέλετε να κάνετε επανεκκίνηση του δρομολογητή;"

View File

@ -1,13 +1,13 @@
# English translations for Foris JS. # English translations for Foris JS.
# Copyright (C) 2024 CZ.NIC, z.s.p.o. (https://www.nic.cz/) # Copyright (C) 2025 CZ.NIC, z.s.p.o. (https://www.nic.cz/)
# This file is distributed under the same license as the Foris JS project. # This file is distributed under the same license as the Foris JS project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024. # FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-08-23 14:02+0200\n" "POT-Creation-Date: 2025-04-04 15:14+0200\n"
"PO-Revision-Date: 2019-10-17 09:28+0000\n" "PO-Revision-Date: 2019-10-17 09:28+0000\n"
"Last-Translator: Scott Anecito <scott.anecito@protonmail.com>\n" "Last-Translator: Scott Anecito <scott.anecito@protonmail.com>\n"
"Language: en\n" "Language: en\n"
@ -17,7 +17,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.16.0\n" "Generated-By: Babel 2.17.0\n"
#: src/api/utils.js:61 #: src/api/utils.js:61
msgid "The session is expired. Please log in again." msgid "The session is expired. Please log in again."
@ -35,40 +35,109 @@ msgstr ""
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
#: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98 #: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:103
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copy" msgid "Copy"
msgstr "" msgstr ""
#: src/common/RebootButton.js:27 #: src/bootstrap/NumberInput.js:84 src/bootstrap/NumberInput.js:85
msgid "Reboot request failed." msgid "Increase value. Hint: Hold to increase faster."
msgstr "" msgstr ""
#: src/common/RebootButton.js:51 #: src/bootstrap/NumberInput.js:101 src/bootstrap/NumberInput.js:102
msgid "Reboot" msgid "Decrease value. Hint: Hold to decrease faster."
msgstr "" msgstr ""
#: src/common/RebootButton.js:66 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:67
msgid "Warning!" msgid "Action successful."
msgstr "" msgstr ""
#: src/common/RebootButton.js:68 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:76
msgid "Are you sure you want to restart the router?" msgid "Action failed."
msgstr "" msgstr ""
#: src/common/RebootButton.js:71 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:147
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
#: src/common/RebootButton.js:73 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:150
msgid "Confirm reboot" msgid "Confirm"
msgstr ""
#: src/common/RichTable/RichTable.js:87
msgid "Search…"
msgstr ""
#: src/common/RichTable/RichTableBody.js:50
msgid "No results."
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:27
msgid "Columns"
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:80
msgid "Reset"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr "" msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
@ -92,11 +161,12 @@ msgid ""
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:97 #: src/common/WiFiSettings/WiFiForm.js:97
#, python-brace-format
msgid "Wi-Fi ${deviceID + 1}" msgid "Wi-Fi ${deviceID + 1}"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:81 #: src/common/WiFiSettings/WiFiGuestForm.js:80
msgid "Password" msgid "Password"
msgstr "" msgstr ""
@ -104,6 +174,10 @@ msgstr ""
msgid "Hide SSID" msgid "Hide SSID"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:159
msgid "Band"
msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:186 #: src/common/WiFiSettings/WiFiForm.js:186
msgid "802.11n/ac/ax mode" msgid "802.11n/ac/ax mode"
msgstr "" msgstr ""
@ -113,6 +187,7 @@ msgid "Channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:211 #: src/common/WiFiSettings/WiFiForm.js:211
#: src/common/WiFiSettings/WiFiGuestForm.js:95
msgid "Encryption" msgid "Encryption"
msgstr "" msgstr ""
@ -134,7 +209,7 @@ msgstr ""
msgid "Custom" msgid "Custom"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiGuestForm.js:43 #: src/common/WiFiSettings/WiFiGuestForm.js:45
msgid "Enable Guest Wi-Fi" msgid "Enable Guest Wi-Fi"
msgstr "" msgstr ""
@ -147,7 +222,7 @@ msgstr ""
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiQRCode.js:93 #: src/common/WiFiSettings/WiFiQRCode.js:102
msgid "Download PDF" msgid "Download PDF"
msgstr "" msgstr ""
@ -201,52 +276,60 @@ msgid "802.11ac - 80 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:15 #: src/common/WiFiSettings/constants.js:15
msgid "802.11ac - 160 MHz wide channel" msgid "802.11ac - 80+80 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:16 #: src/common/WiFiSettings/constants.js:16
msgid "802.11ax - 20 MHz wide channel" msgid "802.11ac - 160 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:17 #: src/common/WiFiSettings/constants.js:17
msgid "802.11ax - 40 MHz wide channel" msgid "802.11ax - 20 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:18 #: src/common/WiFiSettings/constants.js:18
msgid "802.11ax - 80 MHz wide channel" msgid "802.11ax - 40 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:19 #: src/common/WiFiSettings/constants.js:19
msgid "802.11ax - 80 MHz wide channel"
msgstr ""
#: src/common/WiFiSettings/constants.js:20
msgid "802.11ax - 80+80 MHz wide channel"
msgstr ""
#: src/common/WiFiSettings/constants.js:21
msgid "802.11ax - 160 MHz wide channel" msgid "802.11ax - 160 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:26 #: src/common/WiFiSettings/constants.js:29
msgid "WPA3 only" msgid "WPA3 only"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:27 #: src/common/WiFiSettings/constants.js:30
msgid "WPA3 with WPA2 as fallback (default)" msgid "WPA3 with WPA2 as fallback (default)"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:28 #: src/common/WiFiSettings/constants.js:31
msgid "WPA2 only" msgid "WPA2 only"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:31 #: src/common/WiFiSettings/constants.js:34
msgid "" msgid ""
"SSID which contains non-standard characters could cause problems on some " "SSID which contains non-standard characters could cause problems on some "
"devices." "devices."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:34 #: src/common/WiFiSettings/constants.js:37
msgid "WPA2/3 pre-shared key, that is required to connect to the network." msgid "WPA2/3 pre-shared key, that is required to connect to the network."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:37 #: src/common/WiFiSettings/constants.js:40
msgid "If set, network is not visible when scanning for available networks." msgid "If set, network is not visible when scanning for available networks."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:40 #: src/common/WiFiSettings/constants.js:43
msgid "" msgid ""
"The 2.4 GHz band is more widely supported by clients, but tends to have " "The 2.4 GHz band is more widely supported by clients, but tends to have "
"more interference. The 5 GHz band is a newer standard and may not be " "more interference. The 5 GHz band is a newer standard and may not be "
@ -254,7 +337,7 @@ msgid ""
"signal does not carry so well indoors." "signal does not carry so well indoors."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:43 #: src/common/WiFiSettings/constants.js:46
msgid "" msgid ""
"Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 " "Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 "
"MHz wide channels can yield higher throughput but can cause more " "MHz wide channels can yield higher throughput but can cause more "
@ -262,7 +345,7 @@ msgid ""
"default option with 20 MHz wide channel." "default option with 20 MHz wide channel."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:46 #: src/common/WiFiSettings/constants.js:49
msgid "" msgid ""
"Enables Wi-Fi for guests, which is separated from LAN network. Devices " "Enables Wi-Fi for guests, which is separated from LAN network. Devices "
"connected to this network are allowed to access the internet, but aren't " "connected to this network are allowed to access the internet, but aren't "
@ -271,7 +354,7 @@ msgid ""
"tab." "tab."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:49 #: src/common/WiFiSettings/constants.js:52
msgid "" msgid ""
"The WPA3 standard is the new most secure encryption method that is " "The WPA3 standard is the new most secure encryption method that is "
"suggested to be used with any device that supports it. The older devices " "suggested to be used with any device that supports it. The older devices "
@ -287,15 +370,15 @@ msgstr ""
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:32 #: src/form/components/SubmitButton.js:34
msgid "Updating" msgid "Updating"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:35 #: src/form/components/SubmitButton.js:37
msgid "Load settings" msgid "Load settings"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:38 #: src/form/components/SubmitButton.js:40
msgid "Save" msgid "Save"
msgstr "" msgstr ""
@ -422,3 +505,18 @@ msgstr ""
#~ "channel." #~ "channel."
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr ""
#~ msgid "Reboot"
#~ msgstr ""
#~ msgid "Warning!"
#~ msgstr ""
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr ""
#~ msgid "Confirm reboot"
#~ msgstr ""

View File

@ -1,15 +1,15 @@
# Spanish translations for Foris JS. # Spanish translations for Foris JS.
# Copyright (C) 2024 CZ.NIC, z.s.p.o. (https://www.nic.cz/) # Copyright (C) 2025 CZ.NIC, z.s.p.o. (https://www.nic.cz/)
# This file is distributed under the same license as the Foris JS project. # This file is distributed under the same license as the Foris JS project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024. # FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-08-23 14:02+0200\n" "POT-Creation-Date: 2025-04-04 15:14+0200\n"
"PO-Revision-Date: 2022-09-11 17:15+0000\n" "PO-Revision-Date: 2025-03-22 20:01+0000\n"
"Last-Translator: Dan Cybersec <dan.cybersec@protonmail.com>\n" "Last-Translator: Adolfo Jayme Barrientos <fitojb@ubuntu.com>\n"
"Language: es\n" "Language: es\n"
"Language-Team: Spanish <https://hosted.weblate.org/projects/turris/foris-" "Language-Team: Spanish <https://hosted.weblate.org/projects/turris/foris-"
"js/es/>\n" "js/es/>\n"
@ -17,74 +17,143 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.16.0\n" "Generated-By: Babel 2.17.0\n"
#: src/api/utils.js:61 #: src/api/utils.js:61
msgid "The session is expired. Please log in again." msgid "The session is expired. Please log in again."
msgstr "La sesiòn ha expirado. Por favor, authentìquese otra vez." msgstr "La sesión ha caducado. Autentíquese otra vez."
#: src/api/utils.js:66 #: src/api/utils.js:66
msgid "Timeout error occurred." msgid "Timeout error occurred."
msgstr "Error de tiempo de espera ocurrido." msgstr "Ocurrió un error de tiempo de espera excedido."
#: src/api/utils.js:69 #: src/api/utils.js:69
msgid "No response received." msgid "No response received."
msgstr "Respuesta no recivida." msgstr "No se recibió ninguna respuesta."
#: src/api/utils.js:79 #: src/api/utils.js:79
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr "Se produjo un error desconocido con la API."
"Un error desconocido ha ocurrido. Compruebe la consola para mas "
"informaciòn."
#: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98 #: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:103
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr "Cerrar"
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copied!" msgid "Copied!"
msgstr "¡Copiado!" msgstr "¡Copiado!"
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copy" msgid "Copy"
msgstr "Copiar" msgstr "Copiar"
#: src/common/RebootButton.js:27 #: src/bootstrap/NumberInput.js:84 src/bootstrap/NumberInput.js:85
msgid "Reboot request failed." msgid "Increase value. Hint: Hold to increase faster."
msgstr "La petición de reinicio ha fallado." msgstr ""
#: src/common/RebootButton.js:51 #: src/bootstrap/NumberInput.js:101 src/bootstrap/NumberInput.js:102
msgid "Reboot" msgid "Decrease value. Hint: Hold to decrease faster."
msgstr "Reiniciar" msgstr ""
#: src/common/RebootButton.js:66 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:67
msgid "Warning!" msgid "Action successful."
msgstr "¡Atención!" msgstr "La acción es exitosa."
#: src/common/RebootButton.js:68 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:76
msgid "Are you sure you want to restart the router?" msgid "Action failed."
msgstr "¿Estás seguro de que quieres reiniciar el router?" msgstr "La acción falló."
#: src/common/RebootButton.js:71 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:147
msgid "Cancel" msgid "Cancel"
msgstr "Cancelar" msgstr "Cancelar"
#: src/common/RebootButton.js:73 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:150
msgid "Confirm reboot" msgid "Confirm"
msgstr "Confirmar reinicio" msgstr "Confirmar"
#: src/common/RichTable/RichTable.js:87
msgid "Search…"
msgstr ""
#: src/common/RichTable/RichTableBody.js:50
msgid "No results."
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:27
msgid "Columns"
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:80
msgid "Reset"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr "Ordenar ascendentemente"
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr "Ordenar descendentemente"
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr "Quitar ordenación"
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr "Barra de navegación de paginación"
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr "Primera página"
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr "Página anterior"
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr "Página siguiente"
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr "Última página"
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr "Página"
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr "de"
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr "Filas por página:"
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr "Seleccionar filas por página"
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr "Todo"
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
msgid "An error occurred during resetting Wi-Fi settings." msgid "An error occurred during resetting Wi-Fi settings."
msgstr "Ocurrió un error durante el reseteo de los ajustes Wi-Fi." msgstr "Ocurrió un error al restablecer la configuración de wifi."
#: src/common/WiFiSettings/ResetWiFiSettings.js:42 #: src/common/WiFiSettings/ResetWiFiSettings.js:42
msgid "Wi-Fi settings are set to defaults." msgid "Wi-Fi settings are set to defaults."
msgstr "Los ajustes Wi-Fi se han definido por defecto." msgstr ""
"La configuración del wifi se ha restablecido a los valores "
"predeterminados."
#: src/common/WiFiSettings/ResetWiFiSettings.js:56 #: src/common/WiFiSettings/ResetWiFiSettings.js:56
#: src/common/WiFiSettings/ResetWiFiSettings.js:70 #: src/common/WiFiSettings/ResetWiFiSettings.js:70
msgid "Reset Wi-Fi Settings" msgid "Reset Wi-Fi Settings"
msgstr "Resetear los ajustes Wi-Fi" msgstr "Restablecer configuración de wifi"
#: src/common/WiFiSettings/ResetWiFiSettings.js:58 #: src/common/WiFiSettings/ResetWiFiSettings.js:58
msgid "" msgid ""
@ -92,16 +161,17 @@ msgid ""
"Fi settings. Note that this will remove the current Wi-Fi configuration " "Fi settings. Note that this will remove the current Wi-Fi configuration "
"and restore the default values." "and restore the default values."
msgstr "" msgstr ""
"Si cierto número de tarjetas inalámbricas no coincide, puedes intentar a " "Si varias tarjetas inalámbricas no coinciden, puede intentar restablecer "
"resetar los ajustes Wi-Fi. Ten en cuenta que esto eliminará la " "la configuración de wifi. Observe que esto eliminará la configuración de "
"configuración Wi-Fi actual, y restaurará los ajustes por defecto." "wifi actual y restaurará los valores predeterminados."
#: src/common/WiFiSettings/WiFiForm.js:97 #: src/common/WiFiSettings/WiFiForm.js:97
#, python-brace-format
msgid "Wi-Fi ${deviceID + 1}" msgid "Wi-Fi ${deviceID + 1}"
msgstr "Wi-Fi ${deviceID + 1}" msgstr "Wi-Fi ${deviceID + 1}"
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:81 #: src/common/WiFiSettings/WiFiGuestForm.js:80
msgid "Password" msgid "Password"
msgstr "Contraseña" msgstr "Contraseña"
@ -109,6 +179,10 @@ msgstr "Contraseña"
msgid "Hide SSID" msgid "Hide SSID"
msgstr "Ocultar SSID" msgstr "Ocultar SSID"
#: src/common/WiFiSettings/WiFiForm.js:159
msgid "Band"
msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:186 #: src/common/WiFiSettings/WiFiForm.js:186
msgid "802.11n/ac/ax mode" msgid "802.11n/ac/ax mode"
msgstr "Modo 802.11n/ac/ax" msgstr "Modo 802.11n/ac/ax"
@ -118,18 +192,21 @@ msgid "Channel"
msgstr "Canal" msgstr "Canal"
#: src/common/WiFiSettings/WiFiForm.js:211 #: src/common/WiFiSettings/WiFiForm.js:211
#: src/common/WiFiSettings/WiFiGuestForm.js:95
msgid "Encryption" msgid "Encryption"
msgstr "Cifrado" msgstr "Cifrado"
#: src/common/WiFiSettings/WiFiForm.js:226 #: src/common/WiFiSettings/WiFiForm.js:226
msgid "Disable Management Frame Protection" msgid "Disable Management Frame Protection"
msgstr "" msgstr "Desactivar protección de marcos de gestión"
#: src/common/WiFiSettings/WiFiForm.js:227 #: src/common/WiFiSettings/WiFiForm.js:227
msgid "" msgid ""
"In case you have trouble connecting to WiFi Access Point, try disabling " "In case you have trouble connecting to WiFi Access Point, try disabling "
"Management Frame Protection." "Management Frame Protection."
msgstr "" msgstr ""
"Si tiene problemas para conectarse a un punto de acceso wifi, intente "
"desactivar la protección de marcos de gestión."
#: src/common/WiFiSettings/WiFiForm.js:262 #: src/common/WiFiSettings/WiFiForm.js:262
msgid "auto" msgid "auto"
@ -139,28 +216,27 @@ msgstr "automático"
msgid "Custom" msgid "Custom"
msgstr "Personalizado" msgstr "Personalizado"
#: src/common/WiFiSettings/WiFiGuestForm.js:43 #: src/common/WiFiSettings/WiFiGuestForm.js:45
msgid "Enable Guest Wi-Fi" msgid "Enable Guest Wi-Fi"
msgstr "Activar el modo Wi-Fi de invitados" msgstr "Activar el modo wifi de invitados"
#: src/common/WiFiSettings/WiFiQRCode.js:43 #: src/common/WiFiSettings/WiFiQRCode.js:43
#: src/common/WiFiSettings/WiFiQRCode.js:44 #: src/common/WiFiSettings/WiFiQRCode.js:44
#, fuzzy
msgid "Show QR code" msgid "Show QR code"
msgstr "Código QR Wi-Fi" msgstr "Mostrar el código QR"
#: src/common/WiFiSettings/WiFiQRCode.js:70 #: src/common/WiFiSettings/WiFiQRCode.js:70
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "Código QR Wi-Fi" msgstr "Código QR de wifi"
#: src/common/WiFiSettings/WiFiQRCode.js:93 #: src/common/WiFiSettings/WiFiQRCode.js:102
msgid "Download PDF" msgid "Download PDF"
msgstr "Descargar PDF" msgstr "Descargar PDF"
#: src/common/WiFiSettings/WiFiSettings.js:83 #: src/common/WiFiSettings/WiFiSettings.js:83
#: src/common/WiFiSettings/WiFiSettings.js:99 #: src/common/WiFiSettings/WiFiSettings.js:99
msgid "SSID can't be longer than 32 symbols" msgid "SSID can't be longer than 32 symbols"
msgstr "El SSID no puede ser más largo que 32 símbolos" msgstr "El SSID no puede superar 32 símbolos de longitud"
#: src/common/WiFiSettings/WiFiSettings.js:84 #: src/common/WiFiSettings/WiFiSettings.js:84
#: src/common/WiFiSettings/WiFiSettings.js:101 #: src/common/WiFiSettings/WiFiSettings.js:101
@ -170,7 +246,7 @@ msgstr "El SSID no puede estar vacío"
#: src/common/WiFiSettings/WiFiSettings.js:86 #: src/common/WiFiSettings/WiFiSettings.js:86
#: src/common/WiFiSettings/WiFiSettings.js:103 #: src/common/WiFiSettings/WiFiSettings.js:103
msgid "SSID can't be longer than 32 bytes" msgid "SSID can't be longer than 32 bytes"
msgstr "El SSID no puede ser más largo que 32 bytes" msgstr "El SSID no puede superar 32 bytes de longitud"
#: src/common/WiFiSettings/WiFiSettings.js:89 #: src/common/WiFiSettings/WiFiSettings.js:89
#: src/common/WiFiSettings/WiFiSettings.js:106 #: src/common/WiFiSettings/WiFiSettings.js:106
@ -188,57 +264,67 @@ msgstr "Desactivado"
#: src/common/WiFiSettings/constants.js:10 #: src/common/WiFiSettings/constants.js:10
msgid "802.11n - 20 MHz wide channel" msgid "802.11n - 20 MHz wide channel"
msgstr "802.11n - ancho de canal de 20 MHz" msgstr "802.11n - anchura de canal de 20 MHz"
#: src/common/WiFiSettings/constants.js:11 #: src/common/WiFiSettings/constants.js:11
msgid "802.11n - 40 MHz wide channel" msgid "802.11n - 40 MHz wide channel"
msgstr "802.11n - ancho de canal de 40 MHz" msgstr "802.11n - anchura de canal de 40 MHz"
#: src/common/WiFiSettings/constants.js:12 #: src/common/WiFiSettings/constants.js:12
msgid "802.11ac - 20 MHz wide channel" msgid "802.11ac - 20 MHz wide channel"
msgstr "802.11ac - ancho de canal de 20 MHz" msgstr "802.11ac - anchura de canal de 20 MHz"
#: src/common/WiFiSettings/constants.js:13 #: src/common/WiFiSettings/constants.js:13
msgid "802.11ac - 40 MHz wide channel" msgid "802.11ac - 40 MHz wide channel"
msgstr "802.11ac - ancho de canal de 40 MHz" msgstr "802.11ac - anchura de canal de 40 MHz"
#: src/common/WiFiSettings/constants.js:14 #: src/common/WiFiSettings/constants.js:14
msgid "802.11ac - 80 MHz wide channel" msgid "802.11ac - 80 MHz wide channel"
msgstr "802.11ac - ancho de canal de 80 MHz" msgstr "802.11ac - anchura de canal de 80 MHz"
#: src/common/WiFiSettings/constants.js:15 #: src/common/WiFiSettings/constants.js:15
msgid "802.11ac - 160 MHz wide channel" #, fuzzy
msgstr "802.11ac - ancho de canal de 160 MHz" msgid "802.11ac - 80+80 MHz wide channel"
msgstr "802.11ac - anchura de canal de 80 MHz"
#: src/common/WiFiSettings/constants.js:16 #: src/common/WiFiSettings/constants.js:16
msgid "802.11ax - 20 MHz wide channel" msgid "802.11ac - 160 MHz wide channel"
msgstr "802.11ax - ancho de canal de 20 MHz" msgstr "802.11ac - anchura de canal de 160 MHz"
#: src/common/WiFiSettings/constants.js:17 #: src/common/WiFiSettings/constants.js:17
msgid "802.11ax - 40 MHz wide channel" msgid "802.11ax - 20 MHz wide channel"
msgstr "802.11ax - ancho de canal de 40 MHz" msgstr "802.11ax - anchura de canal de 20 MHz"
#: src/common/WiFiSettings/constants.js:18 #: src/common/WiFiSettings/constants.js:18
msgid "802.11ax - 80 MHz wide channel" msgid "802.11ax - 40 MHz wide channel"
msgstr "802.11ax - ancho de canal de 80 MHz" msgstr "802.11ax - anchura de canal de 40 MHz"
#: src/common/WiFiSettings/constants.js:19 #: src/common/WiFiSettings/constants.js:19
msgid "802.11ax - 160 MHz wide channel" msgid "802.11ax - 80 MHz wide channel"
msgstr "802.11ax - ancho de canal de 160 MHz" msgstr "802.11ax - anchura de canal de 80 MHz"
#: src/common/WiFiSettings/constants.js:26 #: src/common/WiFiSettings/constants.js:20
#, fuzzy
msgid "802.11ax - 80+80 MHz wide channel"
msgstr "802.11ax - anchura de canal de 80 MHz"
#: src/common/WiFiSettings/constants.js:21
msgid "802.11ax - 160 MHz wide channel"
msgstr "802.11ax - anchura de canal de 160 MHz"
#: src/common/WiFiSettings/constants.js:29
msgid "WPA3 only" msgid "WPA3 only"
msgstr "WPA3 únicamente" msgstr "WPA3 únicamente"
#: src/common/WiFiSettings/constants.js:27 #: src/common/WiFiSettings/constants.js:30
msgid "WPA3 with WPA2 as fallback (default)" msgid "WPA3 with WPA2 as fallback (default)"
msgstr "WPA3 con WPA2 como respaldo (por defecto)" msgstr "WPA3 con WPA2 como respaldo (por defecto)"
#: src/common/WiFiSettings/constants.js:28 #: src/common/WiFiSettings/constants.js:31
msgid "WPA2 only" msgid "WPA2 only"
msgstr "WPA2 únicamente" msgstr "WPA2 únicamente"
#: src/common/WiFiSettings/constants.js:31 #: src/common/WiFiSettings/constants.js:34
msgid "" msgid ""
"SSID which contains non-standard characters could cause problems on some " "SSID which contains non-standard characters could cause problems on some "
"devices." "devices."
@ -246,40 +332,40 @@ msgstr ""
"Un SSID que contiene caracteres no estándar puede causar problemas en " "Un SSID que contiene caracteres no estándar puede causar problemas en "
"ciertos dispositivos." "ciertos dispositivos."
#: src/common/WiFiSettings/constants.js:34
msgid "WPA2/3 pre-shared key, that is required to connect to the network."
msgstr "Clave pre-compartida WPA2/3, que es requerida para conectar a la red."
#: src/common/WiFiSettings/constants.js:37 #: src/common/WiFiSettings/constants.js:37
msgid "If set, network is not visible when scanning for available networks." msgid "WPA2/3 pre-shared key, that is required to connect to the network."
msgstr "Si está definida, la red no es visible al escanear redes disponibles." msgstr "Clave precompartida WPA2/3, que se requiere para conectar a la red."
#: src/common/WiFiSettings/constants.js:40 #: src/common/WiFiSettings/constants.js:40
msgid "If set, network is not visible when scanning for available networks."
msgstr "Si está definida, la red no es visible al buscar redes disponibles."
#: src/common/WiFiSettings/constants.js:43
msgid "" msgid ""
"The 2.4 GHz band is more widely supported by clients, but tends to have " "The 2.4 GHz band is more widely supported by clients, but tends to have "
"more interference. The 5 GHz band is a newer standard and may not be " "more interference. The 5 GHz band is a newer standard and may not be "
"supported by all your devices. It usually has less interference, but the " "supported by all your devices. It usually has less interference, but the "
"signal does not carry so well indoors." "signal does not carry so well indoors."
msgstr "" msgstr ""
"La banda de 2.4 GHz es soportada por un mayor número de clientes, pero " "Un número mayor de clientes admite la banda de 2.4 GHz, pero tiende a "
"tiende a sufrir más interferencias. La banda de 5 GHz es un nuevo " "sufrir más interferencias. La banda de 5 GHz es un estándar nuevo y puede"
"estándar y puede que no esté soportado por todos tus dispositivos. Aunque" " que no esté admitido por todos sus dispositivos. Aunque normalmente "
" normalmente tiene sufre menos interferencias, la señal tiene un alcance " "sufre menos interferencias, la señal tiene un alcance limitado en "
"limitado en interiores." "interiores."
#: src/common/WiFiSettings/constants.js:43 #: src/common/WiFiSettings/constants.js:46
msgid "" msgid ""
"Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 " "Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 "
"MHz wide channels can yield higher throughput but can cause more " "MHz wide channels can yield higher throughput but can cause more "
"interference in the network. If you don't know what to choose, use the " "interference in the network. If you don't know what to choose, use the "
"default option with 20 MHz wide channel." "default option with 20 MHz wide channel."
msgstr "" msgstr ""
"Cambia esto para ajustar el modo de operación 802.11n/ac/ax. 802.11n con " "Cambie esto para ajustar el modo de operación 802.11n/ac/ax. 802.11n con "
"un ancho de canal de 40 MHz puede producir un mayor rendimiento pero " "una anchura de canal de 40 MHz puede mejorar el rendimiento pero puede "
"puede causar más interferencias en la red. Si no estás seguro de qué " "causar más interferencias en la red. Si no sabe qué elegir, use la opción"
"elegir, usa la opción por defecto con el ancho de canal de 20 MHz." " predeterminada con la anchura de canal de 20 MHz."
#: src/common/WiFiSettings/constants.js:46 #: src/common/WiFiSettings/constants.js:49
msgid "" msgid ""
"Enables Wi-Fi for guests, which is separated from LAN network. Devices " "Enables Wi-Fi for guests, which is separated from LAN network. Devices "
"connected to this network are allowed to access the internet, but aren't " "connected to this network are allowed to access the internet, but aren't "
@ -287,13 +373,13 @@ msgid ""
"router. Parameters of the guest network can be set in the Guest network " "router. Parameters of the guest network can be set in the Guest network "
"tab." "tab."
msgstr "" msgstr ""
"Activa el Wi-Fi para invitados, que se encuentra aislado de la red local." "Activa el wifi para invitados, que se encuentra aislado de la red local. "
" Los dispositivos conectados a esta red pueden acceder a internet, pero " "Los dispositivos conectados a esta red pueden acceder a internet, pero no"
"no pueden acceder a otros dispositivos o a la interfaz de configuración " " pueden acceder a otros dispositivos o a la interfaz de configuración del"
"del router. Los parámetros de la red de invitados pueden configurarse en " " enrutador. Los parámetros de la red de invitados pueden configurarse en "
"la pestaña de red de invitados." "la pestaña Red de invitados."
#: src/common/WiFiSettings/constants.js:49 #: src/common/WiFiSettings/constants.js:52
msgid "" msgid ""
"The WPA3 standard is the new most secure encryption method that is " "The WPA3 standard is the new most secure encryption method that is "
"suggested to be used with any device that supports it. The older devices " "suggested to be used with any device that supports it. The older devices "
@ -301,30 +387,30 @@ msgid ""
"connecting older devices, try to enable WPA2." "connecting older devices, try to enable WPA2."
msgstr "" msgstr ""
"El estándar WPA3 es el nuevo método más seguro de cifrado que se aconseja" "El estándar WPA3 es el nuevo método más seguro de cifrado que se aconseja"
" utilizar con cualquier dispositivo que lo soporte. Los dispositivos más " " utilizar con cualquier dispositivo que lo admita. Los dispositivos más "
"antiguos sin soporte para WPA3 necesitan utilizar WPA2. Si encuentras " "antiguos no compatibles con WPA3 necesitan utilizar WPA2. Si encuentra "
"problemas al intentar conectar dispositivos antiguos, prueba a activar " "problemas al intentar conectar dispositivos antiguos, pruebe a activar "
"WPA2." "WPA2."
#: src/form/components/ForisForm.js:121 #: src/form/components/ForisForm.js:121
msgid "Settings saved successfully" msgid "Settings saved successfully"
msgstr "Los ajustes se han guardado correctamente" msgstr "La configuración se ha guardado correctamente"
#: src/form/components/ForisForm.js:183 #: src/form/components/ForisForm.js:183
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
"Los cambios que has realizado podrían no haberse guardado. ¿Estás seguro " "Los cambios que ha realizado podrían no haberse guardado. ¿Confirma que "
"de que quieres salir?" "quiere salir?"
#: src/form/components/SubmitButton.js:32 #: src/form/components/SubmitButton.js:34
msgid "Updating" msgid "Updating"
msgstr "Actualizando" msgstr "Actualizando"
#: src/form/components/SubmitButton.js:35 #: src/form/components/SubmitButton.js:37
msgid "Load settings" msgid "Load settings"
msgstr "Cargando los ajustes" msgstr "Cargar configuración"
#: src/form/components/SubmitButton.js:38 #: src/form/components/SubmitButton.js:40
msgid "Save" msgid "Save"
msgstr "Guardar" msgstr "Guardar"
@ -334,23 +420,23 @@ msgstr "Se ha producido un error mientras se recuperaban los datos."
#: src/utils/validations.js:13 #: src/utils/validations.js:13
msgid "This is not a valid IPv4 address." msgid "This is not a valid IPv4 address."
msgstr "Esto no es una dirección IPv4 válida." msgstr "Esta no es una dirección IPv4 válida."
#: src/utils/validations.js:14 #: src/utils/validations.js:14
msgid "This is not a valid IPv6 address." msgid "This is not a valid IPv6 address."
msgstr "Esto no es una dirección IPv6 válida." msgstr "Esta no es una dirección IPv6 válida."
#: src/utils/validations.js:15 #: src/utils/validations.js:15
msgid "This is not a valid IPv6 prefix." msgid "This is not a valid IPv6 prefix."
msgstr "Esto no es un prefijo IPv6 válido." msgstr "Este no es un prefijo IPv6 válido."
#: src/utils/validations.js:16 #: src/utils/validations.js:16
msgid "This is not a valid domain name." msgid "This is not a valid domain name."
msgstr "Esto no es un nombre de dominio válido." msgstr "Este no es un nombre de dominio válido."
#: src/utils/validations.js:17 #: src/utils/validations.js:17
msgid "This is not a valid hostname." msgid "This is not a valid hostname."
msgstr "Esto no es un nombre de dominio válido." msgstr "Este no es un nombre de anfitrión válido."
#: src/utils/validations.js:18 #: src/utils/validations.js:18
msgid "This is not a valid DUID." msgid "This is not a valid DUID."
@ -445,3 +531,15 @@ msgstr "No contiene una lista de correos electrónicos separados por comas."
#~ "channel." #~ "channel."
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr "La petición de reinicio ha fallado."
#~ msgid "Reboot"
#~ msgstr "Reiniciar"
#~ msgid "Warning!"
#~ msgstr "¡Atención!"
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr "¿Estás seguro de que quieres reiniciar el router?"

View File

@ -1,13 +1,13 @@
# Finnish translations for Foris JS. # Finnish translations for Foris JS.
# Copyright (C) 2024 CZ.NIC, z.s.p.o. (https://www.nic.cz/) # Copyright (C) 2025 CZ.NIC, z.s.p.o. (https://www.nic.cz/)
# This file is distributed under the same license as the Foris JS project. # This file is distributed under the same license as the Foris JS project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024. # FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-08-23 14:02+0200\n" "POT-Creation-Date: 2025-04-04 15:14+0200\n"
"PO-Revision-Date: 2019-02-19 13:34+0100\n" "PO-Revision-Date: 2019-02-19 13:34+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: fi\n" "Language: fi\n"
@ -16,7 +16,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.16.0\n" "Generated-By: Babel 2.17.0\n"
#: src/api/utils.js:61 #: src/api/utils.js:61
msgid "The session is expired. Please log in again." msgid "The session is expired. Please log in again."
@ -34,40 +34,109 @@ msgstr ""
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
#: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98 #: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:103
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copy" msgid "Copy"
msgstr "" msgstr ""
#: src/common/RebootButton.js:27 #: src/bootstrap/NumberInput.js:84 src/bootstrap/NumberInput.js:85
msgid "Reboot request failed." msgid "Increase value. Hint: Hold to increase faster."
msgstr "" msgstr ""
#: src/common/RebootButton.js:51 #: src/bootstrap/NumberInput.js:101 src/bootstrap/NumberInput.js:102
msgid "Reboot" msgid "Decrease value. Hint: Hold to decrease faster."
msgstr "" msgstr ""
#: src/common/RebootButton.js:66 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:67
msgid "Warning!" msgid "Action successful."
msgstr "" msgstr ""
#: src/common/RebootButton.js:68 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:76
msgid "Are you sure you want to restart the router?" msgid "Action failed."
msgstr "" msgstr ""
#: src/common/RebootButton.js:71 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:147
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
#: src/common/RebootButton.js:73 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:150
msgid "Confirm reboot" msgid "Confirm"
msgstr ""
#: src/common/RichTable/RichTable.js:87
msgid "Search…"
msgstr ""
#: src/common/RichTable/RichTableBody.js:50
msgid "No results."
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:27
msgid "Columns"
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:80
msgid "Reset"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr "" msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
@ -91,11 +160,12 @@ msgid ""
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:97 #: src/common/WiFiSettings/WiFiForm.js:97
#, python-brace-format
msgid "Wi-Fi ${deviceID + 1}" msgid "Wi-Fi ${deviceID + 1}"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:81 #: src/common/WiFiSettings/WiFiGuestForm.js:80
msgid "Password" msgid "Password"
msgstr "" msgstr ""
@ -103,6 +173,10 @@ msgstr ""
msgid "Hide SSID" msgid "Hide SSID"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:159
msgid "Band"
msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:186 #: src/common/WiFiSettings/WiFiForm.js:186
msgid "802.11n/ac/ax mode" msgid "802.11n/ac/ax mode"
msgstr "" msgstr ""
@ -112,6 +186,7 @@ msgid "Channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:211 #: src/common/WiFiSettings/WiFiForm.js:211
#: src/common/WiFiSettings/WiFiGuestForm.js:95
msgid "Encryption" msgid "Encryption"
msgstr "" msgstr ""
@ -133,7 +208,7 @@ msgstr ""
msgid "Custom" msgid "Custom"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiGuestForm.js:43 #: src/common/WiFiSettings/WiFiGuestForm.js:45
msgid "Enable Guest Wi-Fi" msgid "Enable Guest Wi-Fi"
msgstr "" msgstr ""
@ -146,7 +221,7 @@ msgstr ""
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiQRCode.js:93 #: src/common/WiFiSettings/WiFiQRCode.js:102
msgid "Download PDF" msgid "Download PDF"
msgstr "" msgstr ""
@ -200,52 +275,60 @@ msgid "802.11ac - 80 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:15 #: src/common/WiFiSettings/constants.js:15
msgid "802.11ac - 160 MHz wide channel" msgid "802.11ac - 80+80 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:16 #: src/common/WiFiSettings/constants.js:16
msgid "802.11ax - 20 MHz wide channel" msgid "802.11ac - 160 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:17 #: src/common/WiFiSettings/constants.js:17
msgid "802.11ax - 40 MHz wide channel" msgid "802.11ax - 20 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:18 #: src/common/WiFiSettings/constants.js:18
msgid "802.11ax - 80 MHz wide channel" msgid "802.11ax - 40 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:19 #: src/common/WiFiSettings/constants.js:19
msgid "802.11ax - 80 MHz wide channel"
msgstr ""
#: src/common/WiFiSettings/constants.js:20
msgid "802.11ax - 80+80 MHz wide channel"
msgstr ""
#: src/common/WiFiSettings/constants.js:21
msgid "802.11ax - 160 MHz wide channel" msgid "802.11ax - 160 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:26 #: src/common/WiFiSettings/constants.js:29
msgid "WPA3 only" msgid "WPA3 only"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:27 #: src/common/WiFiSettings/constants.js:30
msgid "WPA3 with WPA2 as fallback (default)" msgid "WPA3 with WPA2 as fallback (default)"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:28 #: src/common/WiFiSettings/constants.js:31
msgid "WPA2 only" msgid "WPA2 only"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:31 #: src/common/WiFiSettings/constants.js:34
msgid "" msgid ""
"SSID which contains non-standard characters could cause problems on some " "SSID which contains non-standard characters could cause problems on some "
"devices." "devices."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:34 #: src/common/WiFiSettings/constants.js:37
msgid "WPA2/3 pre-shared key, that is required to connect to the network." msgid "WPA2/3 pre-shared key, that is required to connect to the network."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:37 #: src/common/WiFiSettings/constants.js:40
msgid "If set, network is not visible when scanning for available networks." msgid "If set, network is not visible when scanning for available networks."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:40 #: src/common/WiFiSettings/constants.js:43
msgid "" msgid ""
"The 2.4 GHz band is more widely supported by clients, but tends to have " "The 2.4 GHz band is more widely supported by clients, but tends to have "
"more interference. The 5 GHz band is a newer standard and may not be " "more interference. The 5 GHz band is a newer standard and may not be "
@ -253,7 +336,7 @@ msgid ""
"signal does not carry so well indoors." "signal does not carry so well indoors."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:43 #: src/common/WiFiSettings/constants.js:46
msgid "" msgid ""
"Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 " "Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 "
"MHz wide channels can yield higher throughput but can cause more " "MHz wide channels can yield higher throughput but can cause more "
@ -261,7 +344,7 @@ msgid ""
"default option with 20 MHz wide channel." "default option with 20 MHz wide channel."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:46 #: src/common/WiFiSettings/constants.js:49
msgid "" msgid ""
"Enables Wi-Fi for guests, which is separated from LAN network. Devices " "Enables Wi-Fi for guests, which is separated from LAN network. Devices "
"connected to this network are allowed to access the internet, but aren't " "connected to this network are allowed to access the internet, but aren't "
@ -270,7 +353,7 @@ msgid ""
"tab." "tab."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:49 #: src/common/WiFiSettings/constants.js:52
msgid "" msgid ""
"The WPA3 standard is the new most secure encryption method that is " "The WPA3 standard is the new most secure encryption method that is "
"suggested to be used with any device that supports it. The older devices " "suggested to be used with any device that supports it. The older devices "
@ -286,15 +369,15 @@ msgstr ""
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:32 #: src/form/components/SubmitButton.js:34
msgid "Updating" msgid "Updating"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:35 #: src/form/components/SubmitButton.js:37
msgid "Load settings" msgid "Load settings"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:38 #: src/form/components/SubmitButton.js:40
msgid "Save" msgid "Save"
msgstr "" msgstr ""
@ -424,3 +507,18 @@ msgstr ""
#~ "channel." #~ "channel."
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr ""
#~ msgid "Reboot"
#~ msgstr ""
#~ msgid "Warning!"
#~ msgstr ""
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr ""
#~ msgid "Confirm reboot"
#~ msgstr ""

View File

@ -1,13 +1,13 @@
# Faroese translations for Foris JS. # Faroese translations for Foris JS.
# Copyright (C) 2024 CZ.NIC, z.s.p.o. (https://www.nic.cz/) # Copyright (C) 2025 CZ.NIC, z.s.p.o. (https://www.nic.cz/)
# This file is distributed under the same license as the Foris JS project. # This file is distributed under the same license as the Foris JS project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024. # FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-08-23 14:02+0200\n" "POT-Creation-Date: 2025-04-04 15:14+0200\n"
"PO-Revision-Date: 2019-02-19 13:34+0100\n" "PO-Revision-Date: 2019-02-19 13:34+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: fo\n" "Language: fo\n"
@ -16,7 +16,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.16.0\n" "Generated-By: Babel 2.17.0\n"
#: src/api/utils.js:61 #: src/api/utils.js:61
msgid "The session is expired. Please log in again." msgid "The session is expired. Please log in again."
@ -34,40 +34,109 @@ msgstr ""
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
#: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98 #: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:103
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copy" msgid "Copy"
msgstr "" msgstr ""
#: src/common/RebootButton.js:27 #: src/bootstrap/NumberInput.js:84 src/bootstrap/NumberInput.js:85
msgid "Reboot request failed." msgid "Increase value. Hint: Hold to increase faster."
msgstr "" msgstr ""
#: src/common/RebootButton.js:51 #: src/bootstrap/NumberInput.js:101 src/bootstrap/NumberInput.js:102
msgid "Reboot" msgid "Decrease value. Hint: Hold to decrease faster."
msgstr "" msgstr ""
#: src/common/RebootButton.js:66 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:67
msgid "Warning!" msgid "Action successful."
msgstr "" msgstr ""
#: src/common/RebootButton.js:68 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:76
msgid "Are you sure you want to restart the router?" msgid "Action failed."
msgstr "" msgstr ""
#: src/common/RebootButton.js:71 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:147
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
#: src/common/RebootButton.js:73 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:150
msgid "Confirm reboot" msgid "Confirm"
msgstr ""
#: src/common/RichTable/RichTable.js:87
msgid "Search…"
msgstr ""
#: src/common/RichTable/RichTableBody.js:50
msgid "No results."
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:27
msgid "Columns"
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:80
msgid "Reset"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr "" msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
@ -91,11 +160,12 @@ msgid ""
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:97 #: src/common/WiFiSettings/WiFiForm.js:97
#, python-brace-format
msgid "Wi-Fi ${deviceID + 1}" msgid "Wi-Fi ${deviceID + 1}"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:81 #: src/common/WiFiSettings/WiFiGuestForm.js:80
msgid "Password" msgid "Password"
msgstr "" msgstr ""
@ -103,6 +173,10 @@ msgstr ""
msgid "Hide SSID" msgid "Hide SSID"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:159
msgid "Band"
msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:186 #: src/common/WiFiSettings/WiFiForm.js:186
msgid "802.11n/ac/ax mode" msgid "802.11n/ac/ax mode"
msgstr "" msgstr ""
@ -112,6 +186,7 @@ msgid "Channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:211 #: src/common/WiFiSettings/WiFiForm.js:211
#: src/common/WiFiSettings/WiFiGuestForm.js:95
msgid "Encryption" msgid "Encryption"
msgstr "" msgstr ""
@ -133,7 +208,7 @@ msgstr ""
msgid "Custom" msgid "Custom"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiGuestForm.js:43 #: src/common/WiFiSettings/WiFiGuestForm.js:45
msgid "Enable Guest Wi-Fi" msgid "Enable Guest Wi-Fi"
msgstr "" msgstr ""
@ -146,7 +221,7 @@ msgstr ""
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiQRCode.js:93 #: src/common/WiFiSettings/WiFiQRCode.js:102
msgid "Download PDF" msgid "Download PDF"
msgstr "" msgstr ""
@ -200,52 +275,60 @@ msgid "802.11ac - 80 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:15 #: src/common/WiFiSettings/constants.js:15
msgid "802.11ac - 160 MHz wide channel" msgid "802.11ac - 80+80 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:16 #: src/common/WiFiSettings/constants.js:16
msgid "802.11ax - 20 MHz wide channel" msgid "802.11ac - 160 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:17 #: src/common/WiFiSettings/constants.js:17
msgid "802.11ax - 40 MHz wide channel" msgid "802.11ax - 20 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:18 #: src/common/WiFiSettings/constants.js:18
msgid "802.11ax - 80 MHz wide channel" msgid "802.11ax - 40 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:19 #: src/common/WiFiSettings/constants.js:19
msgid "802.11ax - 80 MHz wide channel"
msgstr ""
#: src/common/WiFiSettings/constants.js:20
msgid "802.11ax - 80+80 MHz wide channel"
msgstr ""
#: src/common/WiFiSettings/constants.js:21
msgid "802.11ax - 160 MHz wide channel" msgid "802.11ax - 160 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:26 #: src/common/WiFiSettings/constants.js:29
msgid "WPA3 only" msgid "WPA3 only"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:27 #: src/common/WiFiSettings/constants.js:30
msgid "WPA3 with WPA2 as fallback (default)" msgid "WPA3 with WPA2 as fallback (default)"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:28 #: src/common/WiFiSettings/constants.js:31
msgid "WPA2 only" msgid "WPA2 only"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:31 #: src/common/WiFiSettings/constants.js:34
msgid "" msgid ""
"SSID which contains non-standard characters could cause problems on some " "SSID which contains non-standard characters could cause problems on some "
"devices." "devices."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:34 #: src/common/WiFiSettings/constants.js:37
msgid "WPA2/3 pre-shared key, that is required to connect to the network." msgid "WPA2/3 pre-shared key, that is required to connect to the network."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:37 #: src/common/WiFiSettings/constants.js:40
msgid "If set, network is not visible when scanning for available networks." msgid "If set, network is not visible when scanning for available networks."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:40 #: src/common/WiFiSettings/constants.js:43
msgid "" msgid ""
"The 2.4 GHz band is more widely supported by clients, but tends to have " "The 2.4 GHz band is more widely supported by clients, but tends to have "
"more interference. The 5 GHz band is a newer standard and may not be " "more interference. The 5 GHz band is a newer standard and may not be "
@ -253,7 +336,7 @@ msgid ""
"signal does not carry so well indoors." "signal does not carry so well indoors."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:43 #: src/common/WiFiSettings/constants.js:46
msgid "" msgid ""
"Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 " "Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 "
"MHz wide channels can yield higher throughput but can cause more " "MHz wide channels can yield higher throughput but can cause more "
@ -261,7 +344,7 @@ msgid ""
"default option with 20 MHz wide channel." "default option with 20 MHz wide channel."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:46 #: src/common/WiFiSettings/constants.js:49
msgid "" msgid ""
"Enables Wi-Fi for guests, which is separated from LAN network. Devices " "Enables Wi-Fi for guests, which is separated from LAN network. Devices "
"connected to this network are allowed to access the internet, but aren't " "connected to this network are allowed to access the internet, but aren't "
@ -270,7 +353,7 @@ msgid ""
"tab." "tab."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:49 #: src/common/WiFiSettings/constants.js:52
msgid "" msgid ""
"The WPA3 standard is the new most secure encryption method that is " "The WPA3 standard is the new most secure encryption method that is "
"suggested to be used with any device that supports it. The older devices " "suggested to be used with any device that supports it. The older devices "
@ -286,15 +369,15 @@ msgstr ""
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:32 #: src/form/components/SubmitButton.js:34
msgid "Updating" msgid "Updating"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:35 #: src/form/components/SubmitButton.js:37
msgid "Load settings" msgid "Load settings"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:38 #: src/form/components/SubmitButton.js:40
msgid "Save" msgid "Save"
msgstr "" msgstr ""
@ -424,3 +507,18 @@ msgstr ""
#~ "channel." #~ "channel."
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr ""
#~ msgid "Reboot"
#~ msgstr ""
#~ msgid "Warning!"
#~ msgstr ""
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr ""
#~ msgid "Confirm reboot"
#~ msgstr ""

View File

@ -1,21 +1,21 @@
# Translations template for Foris JS. # Translations template for Foris JS.
# Copyright (C) 2024 CZ.NIC, z.s.p.o. (https://www.nic.cz/) # Copyright (C) 2025 CZ.NIC, z.s.p.o. (https://www.nic.cz/)
# This file is distributed under the same license as the Foris JS project. # This file is distributed under the same license as the Foris JS project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024. # FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
# #
#, fuzzy #, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Foris JS 6.1.0\n" "Project-Id-Version: Foris JS 6.7.0\n"
"Report-Msgid-Bugs-To: tech.support@turris.cz\n" "Report-Msgid-Bugs-To: tech.support@turris.cz\n"
"POT-Creation-Date: 2024-08-23 14:02+0200\n" "POT-Creation-Date: 2025-04-04 15:14+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.16.0\n" "Generated-By: Babel 2.17.0\n"
#: src/api/utils.js:61 #: src/api/utils.js:61
msgid "The session is expired. Please log in again." msgid "The session is expired. Please log in again."
@ -33,40 +33,109 @@ msgstr ""
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
#: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98 #: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:103
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copy" msgid "Copy"
msgstr "" msgstr ""
#: src/common/RebootButton.js:27 #: src/bootstrap/NumberInput.js:84 src/bootstrap/NumberInput.js:85
msgid "Reboot request failed." msgid "Increase value. Hint: Hold to increase faster."
msgstr "" msgstr ""
#: src/common/RebootButton.js:51 #: src/bootstrap/NumberInput.js:101 src/bootstrap/NumberInput.js:102
msgid "Reboot" msgid "Decrease value. Hint: Hold to decrease faster."
msgstr "" msgstr ""
#: src/common/RebootButton.js:66 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:67
msgid "Warning!" msgid "Action successful."
msgstr "" msgstr ""
#: src/common/RebootButton.js:68 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:76
msgid "Are you sure you want to restart the router?" msgid "Action failed."
msgstr "" msgstr ""
#: src/common/RebootButton.js:71 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:147
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
#: src/common/RebootButton.js:73 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:150
msgid "Confirm reboot" msgid "Confirm"
msgstr ""
#: src/common/RichTable/RichTable.js:87
msgid "Search…"
msgstr ""
#: src/common/RichTable/RichTableBody.js:50
msgid "No results."
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:27
msgid "Columns"
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:80
msgid "Reset"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr "" msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
@ -90,11 +159,12 @@ msgid ""
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:97 #: src/common/WiFiSettings/WiFiForm.js:97
#, python-brace-format
msgid "Wi-Fi ${deviceID + 1}" msgid "Wi-Fi ${deviceID + 1}"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:81 #: src/common/WiFiSettings/WiFiGuestForm.js:80
msgid "Password" msgid "Password"
msgstr "" msgstr ""
@ -102,6 +172,10 @@ msgstr ""
msgid "Hide SSID" msgid "Hide SSID"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:159
msgid "Band"
msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:186 #: src/common/WiFiSettings/WiFiForm.js:186
msgid "802.11n/ac/ax mode" msgid "802.11n/ac/ax mode"
msgstr "" msgstr ""
@ -111,6 +185,7 @@ msgid "Channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:211 #: src/common/WiFiSettings/WiFiForm.js:211
#: src/common/WiFiSettings/WiFiGuestForm.js:95
msgid "Encryption" msgid "Encryption"
msgstr "" msgstr ""
@ -132,7 +207,7 @@ msgstr ""
msgid "Custom" msgid "Custom"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiGuestForm.js:43 #: src/common/WiFiSettings/WiFiGuestForm.js:45
msgid "Enable Guest Wi-Fi" msgid "Enable Guest Wi-Fi"
msgstr "" msgstr ""
@ -145,7 +220,7 @@ msgstr ""
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiQRCode.js:93 #: src/common/WiFiSettings/WiFiQRCode.js:102
msgid "Download PDF" msgid "Download PDF"
msgstr "" msgstr ""
@ -199,52 +274,60 @@ msgid "802.11ac - 80 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:15 #: src/common/WiFiSettings/constants.js:15
msgid "802.11ac - 160 MHz wide channel" msgid "802.11ac - 80+80 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:16 #: src/common/WiFiSettings/constants.js:16
msgid "802.11ax - 20 MHz wide channel" msgid "802.11ac - 160 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:17 #: src/common/WiFiSettings/constants.js:17
msgid "802.11ax - 40 MHz wide channel" msgid "802.11ax - 20 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:18 #: src/common/WiFiSettings/constants.js:18
msgid "802.11ax - 80 MHz wide channel" msgid "802.11ax - 40 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:19 #: src/common/WiFiSettings/constants.js:19
msgid "802.11ax - 80 MHz wide channel"
msgstr ""
#: src/common/WiFiSettings/constants.js:20
msgid "802.11ax - 80+80 MHz wide channel"
msgstr ""
#: src/common/WiFiSettings/constants.js:21
msgid "802.11ax - 160 MHz wide channel" msgid "802.11ax - 160 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:26 #: src/common/WiFiSettings/constants.js:29
msgid "WPA3 only" msgid "WPA3 only"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:27 #: src/common/WiFiSettings/constants.js:30
msgid "WPA3 with WPA2 as fallback (default)" msgid "WPA3 with WPA2 as fallback (default)"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:28 #: src/common/WiFiSettings/constants.js:31
msgid "WPA2 only" msgid "WPA2 only"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:31 #: src/common/WiFiSettings/constants.js:34
msgid "" msgid ""
"SSID which contains non-standard characters could cause problems on some " "SSID which contains non-standard characters could cause problems on some "
"devices." "devices."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:34 #: src/common/WiFiSettings/constants.js:37
msgid "WPA2/3 pre-shared key, that is required to connect to the network." msgid "WPA2/3 pre-shared key, that is required to connect to the network."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:37 #: src/common/WiFiSettings/constants.js:40
msgid "If set, network is not visible when scanning for available networks." msgid "If set, network is not visible when scanning for available networks."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:40 #: src/common/WiFiSettings/constants.js:43
msgid "" msgid ""
"The 2.4 GHz band is more widely supported by clients, but tends to have " "The 2.4 GHz band is more widely supported by clients, but tends to have "
"more interference. The 5 GHz band is a newer standard and may not be " "more interference. The 5 GHz band is a newer standard and may not be "
@ -252,7 +335,7 @@ msgid ""
"signal does not carry so well indoors." "signal does not carry so well indoors."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:43 #: src/common/WiFiSettings/constants.js:46
msgid "" msgid ""
"Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 " "Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 "
"MHz wide channels can yield higher throughput but can cause more " "MHz wide channels can yield higher throughput but can cause more "
@ -260,7 +343,7 @@ msgid ""
"default option with 20 MHz wide channel." "default option with 20 MHz wide channel."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:46 #: src/common/WiFiSettings/constants.js:49
msgid "" msgid ""
"Enables Wi-Fi for guests, which is separated from LAN network. Devices " "Enables Wi-Fi for guests, which is separated from LAN network. Devices "
"connected to this network are allowed to access the internet, but aren't " "connected to this network are allowed to access the internet, but aren't "
@ -269,7 +352,7 @@ msgid ""
"tab." "tab."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:49 #: src/common/WiFiSettings/constants.js:52
msgid "" msgid ""
"The WPA3 standard is the new most secure encryption method that is " "The WPA3 standard is the new most secure encryption method that is "
"suggested to be used with any device that supports it. The older devices " "suggested to be used with any device that supports it. The older devices "
@ -285,15 +368,15 @@ msgstr ""
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:32 #: src/form/components/SubmitButton.js:34
msgid "Updating" msgid "Updating"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:35 #: src/form/components/SubmitButton.js:37
msgid "Load settings" msgid "Load settings"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:38 #: src/form/components/SubmitButton.js:40
msgid "Save" msgid "Save"
msgstr "" msgstr ""

View File

@ -1,15 +1,16 @@
# French translations for Foris JS. # French translations for Foris JS.
# Copyright (C) 2024 CZ.NIC, z.s.p.o. (https://www.nic.cz/) # Copyright (C) 2025 CZ.NIC, z.s.p.o. (https://www.nic.cz/)
# This file is distributed under the same license as the Foris JS project. # This file is distributed under the same license as the Foris JS project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024. # FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-08-23 14:02+0200\n" "POT-Creation-Date: 2025-04-04 15:14+0200\n"
"PO-Revision-Date: 2024-07-27 01:09+0000\n" "PO-Revision-Date: 2024-12-14 10:00+0000\n"
"Last-Translator: Moha684 <nahil82466@gmail.com>\n" "Last-Translator: ButterflyOfFire "
"<boffire@users.noreply.hosted.weblate.org>\n"
"Language: fr\n" "Language: fr\n"
"Language-Team: French <https://hosted.weblate.org/projects/turris/foris-" "Language-Team: French <https://hosted.weblate.org/projects/turris/foris-"
"js/fr/>\n" "js/fr/>\n"
@ -17,7 +18,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.16.0\n" "Generated-By: Babel 2.17.0\n"
#: src/api/utils.js:61 #: src/api/utils.js:61
msgid "The session is expired. Please log in again." msgid "The session is expired. Please log in again."
@ -35,42 +36,112 @@ msgstr "Aucun réponse reçue."
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "Une erreur dAPI inconnue sest produite." msgstr "Une erreur dAPI inconnue sest produite."
#: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98 #: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:103
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr "Fermer"
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copied!" msgid "Copied!"
msgstr "Copié!" msgstr "Copié!"
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copy" msgid "Copy"
msgstr "Copier" msgstr "Copier"
#: src/common/RebootButton.js:27 #: src/bootstrap/NumberInput.js:84 src/bootstrap/NumberInput.js:85
msgid "Reboot request failed." msgid "Increase value. Hint: Hold to increase faster."
msgstr "La demande de redémarrage a échoué." msgstr ""
#: src/common/RebootButton.js:51 #: src/bootstrap/NumberInput.js:101 src/bootstrap/NumberInput.js:102
msgid "Reboot" msgid "Decrease value. Hint: Hold to decrease faster."
msgstr "Redémarrer" msgstr ""
#: src/common/RebootButton.js:66 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:67
msgid "Warning!" msgid "Action successful."
msgstr "Attention!" msgstr "Paramètres enregistrés avec succès."
#: src/common/RebootButton.js:68 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:76
msgid "Are you sure you want to restart the router?" msgid "Action failed."
msgstr "Voulez-vous vraiment redémarrer le routeur ?" msgstr "L'enregistrement des paramètres a échoué."
#: src/common/RebootButton.js:71 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:147
msgid "Cancel" msgid "Cancel"
msgstr "Annuler" msgstr "Annuler"
#: src/common/RebootButton.js:73 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:150
msgid "Confirm reboot" #, fuzzy
msgid "Confirm"
msgstr "Confirmer le redémarrage" msgstr "Confirmer le redémarrage"
#: src/common/RichTable/RichTable.js:87
msgid "Search…"
msgstr ""
#: src/common/RichTable/RichTableBody.js:50
msgid "No results."
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:27
msgid "Columns"
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:80
msgid "Reset"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr "Première page"
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr "Page précédente"
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr "Page suivante"
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr "Dernière page"
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr "Page"
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr "de"
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr "Lignes par page :"
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr "Sélectionnez les lignes par page"
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr "Tout"
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
msgid "An error occurred during resetting Wi-Fi settings." msgid "An error occurred during resetting Wi-Fi settings."
msgstr "" msgstr ""
@ -94,11 +165,12 @@ msgid ""
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:97 #: src/common/WiFiSettings/WiFiForm.js:97
#, python-brace-format
msgid "Wi-Fi ${deviceID + 1}" msgid "Wi-Fi ${deviceID + 1}"
msgstr "Wi-Fi ${deviceID + 1}" msgstr "Wi-Fi ${deviceID + 1}"
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:81 #: src/common/WiFiSettings/WiFiGuestForm.js:80
msgid "Password" msgid "Password"
msgstr "Mot de passe" msgstr "Mot de passe"
@ -106,6 +178,10 @@ msgstr "Mot de passe"
msgid "Hide SSID" msgid "Hide SSID"
msgstr "Masquer le SSID" msgstr "Masquer le SSID"
#: src/common/WiFiSettings/WiFiForm.js:159
msgid "Band"
msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:186 #: src/common/WiFiSettings/WiFiForm.js:186
#, fuzzy #, fuzzy
msgid "802.11n/ac/ax mode" msgid "802.11n/ac/ax mode"
@ -116,6 +192,7 @@ msgid "Channel"
msgstr "Canal" msgstr "Canal"
#: src/common/WiFiSettings/WiFiForm.js:211 #: src/common/WiFiSettings/WiFiForm.js:211
#: src/common/WiFiSettings/WiFiGuestForm.js:95
msgid "Encryption" msgid "Encryption"
msgstr "Chiffrement" msgstr "Chiffrement"
@ -139,7 +216,7 @@ msgstr "automatique"
msgid "Custom" msgid "Custom"
msgstr "Personnalisé" msgstr "Personnalisé"
#: src/common/WiFiSettings/WiFiGuestForm.js:43 #: src/common/WiFiSettings/WiFiGuestForm.js:45
msgid "Enable Guest Wi-Fi" msgid "Enable Guest Wi-Fi"
msgstr "Activer le mode Wi-Fi invité" msgstr "Activer le mode Wi-Fi invité"
@ -153,7 +230,7 @@ msgstr "Code QR Wi-Fi"
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "Code QR Wi-Fi" msgstr "Code QR Wi-Fi"
#: src/common/WiFiSettings/WiFiQRCode.js:93 #: src/common/WiFiSettings/WiFiQRCode.js:102
msgid "Download PDF" msgid "Download PDF"
msgstr "Télécharger le PDF" msgstr "Télécharger le PDF"
@ -208,42 +285,52 @@ msgid "802.11ac - 80 MHz wide channel"
msgstr "802.11ac - canal large de 80 MHz" msgstr "802.11ac - canal large de 80 MHz"
#: src/common/WiFiSettings/constants.js:15 #: src/common/WiFiSettings/constants.js:15
#, fuzzy
msgid "802.11ac - 80+80 MHz wide channel"
msgstr "802.11ac - canal large de 80 MHz"
#: src/common/WiFiSettings/constants.js:16
msgid "802.11ac - 160 MHz wide channel" msgid "802.11ac - 160 MHz wide channel"
msgstr "802.11ac - canal large de 160 MHz" msgstr "802.11ac - canal large de 160 MHz"
#: src/common/WiFiSettings/constants.js:16 #: src/common/WiFiSettings/constants.js:17
#, fuzzy #, fuzzy
msgid "802.11ax - 20 MHz wide channel" msgid "802.11ax - 20 MHz wide channel"
msgstr "802.11ac - canal large de 20 MHz" msgstr "802.11ac - canal large de 20 MHz"
#: src/common/WiFiSettings/constants.js:17 #: src/common/WiFiSettings/constants.js:18
#, fuzzy #, fuzzy
msgid "802.11ax - 40 MHz wide channel" msgid "802.11ax - 40 MHz wide channel"
msgstr "802.11ac - canal large de 40 MHz" msgstr "802.11ac - canal large de 40 MHz"
#: src/common/WiFiSettings/constants.js:18 #: src/common/WiFiSettings/constants.js:19
#, fuzzy #, fuzzy
msgid "802.11ax - 80 MHz wide channel" msgid "802.11ax - 80 MHz wide channel"
msgstr "802.11ac - canal large de 80 MHz" msgstr "802.11ac - canal large de 80 MHz"
#: src/common/WiFiSettings/constants.js:19 #: src/common/WiFiSettings/constants.js:20
#, fuzzy
msgid "802.11ax - 80+80 MHz wide channel"
msgstr "802.11ac - canal large de 80 MHz"
#: src/common/WiFiSettings/constants.js:21
#, fuzzy #, fuzzy
msgid "802.11ax - 160 MHz wide channel" msgid "802.11ax - 160 MHz wide channel"
msgstr "802.11ac - canal large de 160 MHz" msgstr "802.11ac - canal large de 160 MHz"
#: src/common/WiFiSettings/constants.js:26 #: src/common/WiFiSettings/constants.js:29
msgid "WPA3 only" msgid "WPA3 only"
msgstr "WPA3 seulement" msgstr "WPA3 seulement"
#: src/common/WiFiSettings/constants.js:27 #: src/common/WiFiSettings/constants.js:30
msgid "WPA3 with WPA2 as fallback (default)" msgid "WPA3 with WPA2 as fallback (default)"
msgstr "WPA3 avec WPA2 comme solution de repli (par défaut)" msgstr "WPA3 avec WPA2 comme solution de repli (par défaut)"
#: src/common/WiFiSettings/constants.js:28 #: src/common/WiFiSettings/constants.js:31
msgid "WPA2 only" msgid "WPA2 only"
msgstr "WPA2 seulement" msgstr "WPA2 seulement"
#: src/common/WiFiSettings/constants.js:31 #: src/common/WiFiSettings/constants.js:34
msgid "" msgid ""
"SSID which contains non-standard characters could cause problems on some " "SSID which contains non-standard characters could cause problems on some "
"devices." "devices."
@ -251,7 +338,7 @@ msgstr ""
"Un SSID qui contient des caractères non standard peut causer des " "Un SSID qui contient des caractères non standard peut causer des "
"problèmes sur certains appareils." "problèmes sur certains appareils."
#: src/common/WiFiSettings/constants.js:34 #: src/common/WiFiSettings/constants.js:37
#, fuzzy #, fuzzy
msgid "WPA2/3 pre-shared key, that is required to connect to the network." msgid "WPA2/3 pre-shared key, that is required to connect to the network."
msgstr "" msgstr ""
@ -260,13 +347,13 @@ msgstr ""
"réseau.\n" "réseau.\n"
" " " "
#: src/common/WiFiSettings/constants.js:37 #: src/common/WiFiSettings/constants.js:40
msgid "If set, network is not visible when scanning for available networks." msgid "If set, network is not visible when scanning for available networks."
msgstr "" msgstr ""
"S'il est défini, le réseau n'est pas visible lors de la recherche de " "S'il est défini, le réseau n'est pas visible lors de la recherche de "
"réseaux disponibles." "réseaux disponibles."
#: src/common/WiFiSettings/constants.js:40 #: src/common/WiFiSettings/constants.js:43
#, fuzzy #, fuzzy
msgid "" msgid ""
"The 2.4 GHz band is more widely supported by clients, but tends to have " "The 2.4 GHz band is more widely supported by clients, but tends to have "
@ -283,7 +370,7 @@ msgstr ""
"signal\n" "signal\n"
" mais le signal ne passe pas aussi bien à l'intérieur." " mais le signal ne passe pas aussi bien à l'intérieur."
#: src/common/WiFiSettings/constants.js:43 #: src/common/WiFiSettings/constants.js:46
#, fuzzy #, fuzzy
msgid "" msgid ""
"Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 " "Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 "
@ -301,7 +388,7 @@ msgstr ""
" l'option par défaut avec un canal large de 20 MHz.\n" " l'option par défaut avec un canal large de 20 MHz.\n"
" " " "
#: src/common/WiFiSettings/constants.js:46 #: src/common/WiFiSettings/constants.js:49
#, fuzzy #, fuzzy
msgid "" msgid ""
"Enables Wi-Fi for guests, which is separated from LAN network. Devices " "Enables Wi-Fi for guests, which is separated from LAN network. Devices "
@ -319,7 +406,7 @@ msgstr ""
"l'onglet Réseau invité.\n" "l'onglet Réseau invité.\n"
" " " "
#: src/common/WiFiSettings/constants.js:49 #: src/common/WiFiSettings/constants.js:52
msgid "" msgid ""
"The WPA3 standard is the new most secure encryption method that is " "The WPA3 standard is the new most secure encryption method that is "
"suggested to be used with any device that supports it. The older devices " "suggested to be used with any device that supports it. The older devices "
@ -342,15 +429,15 @@ msgstr ""
"Il se peut que vos modifications ne soient pas enregistrées. Êtes-vous " "Il se peut que vos modifications ne soient pas enregistrées. Êtes-vous "
"sûr de vouloir quitter?" "sûr de vouloir quitter?"
#: src/form/components/SubmitButton.js:32 #: src/form/components/SubmitButton.js:34
msgid "Updating" msgid "Updating"
msgstr "Mise à jour en cours" msgstr "Mise à jour en cours"
#: src/form/components/SubmitButton.js:35 #: src/form/components/SubmitButton.js:37
msgid "Load settings" msgid "Load settings"
msgstr "Charger les paramètres" msgstr "Charger les paramètres"
#: src/form/components/SubmitButton.js:38 #: src/form/components/SubmitButton.js:40
msgid "Save" msgid "Save"
msgstr "Enregistrer" msgstr "Enregistrer"
@ -415,3 +502,15 @@ msgstr ""
#~ " " #~ " "
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr "La demande de redémarrage a échoué."
#~ msgid "Reboot"
#~ msgstr "Redémarrer"
#~ msgid "Warning!"
#~ msgstr "Attention!"
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr "Voulez-vous vraiment redémarrer le routeur ?"

View File

@ -1,13 +1,13 @@
# Croatian translations for Foris JS. # Croatian translations for Foris JS.
# Copyright (C) 2024 CZ.NIC, z.s.p.o. (https://www.nic.cz/) # Copyright (C) 2025 CZ.NIC, z.s.p.o. (https://www.nic.cz/)
# This file is distributed under the same license as the Foris JS project. # This file is distributed under the same license as the Foris JS project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024. # FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-08-23 14:02+0200\n" "POT-Creation-Date: 2025-04-04 15:14+0200\n"
"PO-Revision-Date: 2022-09-29 14:17+0000\n" "PO-Revision-Date: 2022-09-29 14:17+0000\n"
"Last-Translator: Milo Ivir <mail@milotype.de>\n" "Last-Translator: Milo Ivir <mail@milotype.de>\n"
"Language: hr\n" "Language: hr\n"
@ -18,7 +18,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.16.0\n" "Generated-By: Babel 2.17.0\n"
#: src/api/utils.js:61 #: src/api/utils.js:61
msgid "The session is expired. Please log in again." msgid "The session is expired. Please log in again."
@ -36,40 +36,109 @@ msgstr ""
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
#: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98 #: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:103
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copy" msgid "Copy"
msgstr "" msgstr ""
#: src/common/RebootButton.js:27 #: src/bootstrap/NumberInput.js:84 src/bootstrap/NumberInput.js:85
msgid "Reboot request failed." msgid "Increase value. Hint: Hold to increase faster."
msgstr "" msgstr ""
#: src/common/RebootButton.js:51 #: src/bootstrap/NumberInput.js:101 src/bootstrap/NumberInput.js:102
msgid "Reboot" msgid "Decrease value. Hint: Hold to decrease faster."
msgstr "" msgstr ""
#: src/common/RebootButton.js:66 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:67
msgid "Warning!" msgid "Action successful."
msgstr "" msgstr ""
#: src/common/RebootButton.js:68 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:76
msgid "Are you sure you want to restart the router?" msgid "Action failed."
msgstr "" msgstr ""
#: src/common/RebootButton.js:71 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:147
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
#: src/common/RebootButton.js:73 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:150
msgid "Confirm reboot" msgid "Confirm"
msgstr ""
#: src/common/RichTable/RichTable.js:87
msgid "Search…"
msgstr ""
#: src/common/RichTable/RichTableBody.js:50
msgid "No results."
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:27
msgid "Columns"
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:80
msgid "Reset"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr "" msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
@ -93,11 +162,12 @@ msgid ""
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:97 #: src/common/WiFiSettings/WiFiForm.js:97
#, python-brace-format
msgid "Wi-Fi ${deviceID + 1}" msgid "Wi-Fi ${deviceID + 1}"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:81 #: src/common/WiFiSettings/WiFiGuestForm.js:80
msgid "Password" msgid "Password"
msgstr "Lozinka" msgstr "Lozinka"
@ -105,6 +175,10 @@ msgstr "Lozinka"
msgid "Hide SSID" msgid "Hide SSID"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:159
msgid "Band"
msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:186 #: src/common/WiFiSettings/WiFiForm.js:186
msgid "802.11n/ac/ax mode" msgid "802.11n/ac/ax mode"
msgstr "" msgstr ""
@ -114,6 +188,7 @@ msgid "Channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:211 #: src/common/WiFiSettings/WiFiForm.js:211
#: src/common/WiFiSettings/WiFiGuestForm.js:95
msgid "Encryption" msgid "Encryption"
msgstr "" msgstr ""
@ -135,7 +210,7 @@ msgstr ""
msgid "Custom" msgid "Custom"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiGuestForm.js:43 #: src/common/WiFiSettings/WiFiGuestForm.js:45
msgid "Enable Guest Wi-Fi" msgid "Enable Guest Wi-Fi"
msgstr "" msgstr ""
@ -148,7 +223,7 @@ msgstr ""
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiQRCode.js:93 #: src/common/WiFiSettings/WiFiQRCode.js:102
msgid "Download PDF" msgid "Download PDF"
msgstr "" msgstr ""
@ -202,52 +277,60 @@ msgid "802.11ac - 80 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:15 #: src/common/WiFiSettings/constants.js:15
msgid "802.11ac - 160 MHz wide channel" msgid "802.11ac - 80+80 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:16 #: src/common/WiFiSettings/constants.js:16
msgid "802.11ax - 20 MHz wide channel" msgid "802.11ac - 160 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:17 #: src/common/WiFiSettings/constants.js:17
msgid "802.11ax - 40 MHz wide channel" msgid "802.11ax - 20 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:18 #: src/common/WiFiSettings/constants.js:18
msgid "802.11ax - 80 MHz wide channel" msgid "802.11ax - 40 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:19 #: src/common/WiFiSettings/constants.js:19
msgid "802.11ax - 80 MHz wide channel"
msgstr ""
#: src/common/WiFiSettings/constants.js:20
msgid "802.11ax - 80+80 MHz wide channel"
msgstr ""
#: src/common/WiFiSettings/constants.js:21
msgid "802.11ax - 160 MHz wide channel" msgid "802.11ax - 160 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:26 #: src/common/WiFiSettings/constants.js:29
msgid "WPA3 only" msgid "WPA3 only"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:27 #: src/common/WiFiSettings/constants.js:30
msgid "WPA3 with WPA2 as fallback (default)" msgid "WPA3 with WPA2 as fallback (default)"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:28 #: src/common/WiFiSettings/constants.js:31
msgid "WPA2 only" msgid "WPA2 only"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:31 #: src/common/WiFiSettings/constants.js:34
msgid "" msgid ""
"SSID which contains non-standard characters could cause problems on some " "SSID which contains non-standard characters could cause problems on some "
"devices." "devices."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:34 #: src/common/WiFiSettings/constants.js:37
msgid "WPA2/3 pre-shared key, that is required to connect to the network." msgid "WPA2/3 pre-shared key, that is required to connect to the network."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:37 #: src/common/WiFiSettings/constants.js:40
msgid "If set, network is not visible when scanning for available networks." msgid "If set, network is not visible when scanning for available networks."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:40 #: src/common/WiFiSettings/constants.js:43
msgid "" msgid ""
"The 2.4 GHz band is more widely supported by clients, but tends to have " "The 2.4 GHz band is more widely supported by clients, but tends to have "
"more interference. The 5 GHz band is a newer standard and may not be " "more interference. The 5 GHz band is a newer standard and may not be "
@ -255,7 +338,7 @@ msgid ""
"signal does not carry so well indoors." "signal does not carry so well indoors."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:43 #: src/common/WiFiSettings/constants.js:46
msgid "" msgid ""
"Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 " "Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 "
"MHz wide channels can yield higher throughput but can cause more " "MHz wide channels can yield higher throughput but can cause more "
@ -263,7 +346,7 @@ msgid ""
"default option with 20 MHz wide channel." "default option with 20 MHz wide channel."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:46 #: src/common/WiFiSettings/constants.js:49
msgid "" msgid ""
"Enables Wi-Fi for guests, which is separated from LAN network. Devices " "Enables Wi-Fi for guests, which is separated from LAN network. Devices "
"connected to this network are allowed to access the internet, but aren't " "connected to this network are allowed to access the internet, but aren't "
@ -272,7 +355,7 @@ msgid ""
"tab." "tab."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:49 #: src/common/WiFiSettings/constants.js:52
msgid "" msgid ""
"The WPA3 standard is the new most secure encryption method that is " "The WPA3 standard is the new most secure encryption method that is "
"suggested to be used with any device that supports it. The older devices " "suggested to be used with any device that supports it. The older devices "
@ -288,15 +371,15 @@ msgstr ""
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:32 #: src/form/components/SubmitButton.js:34
msgid "Updating" msgid "Updating"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:35 #: src/form/components/SubmitButton.js:37
msgid "Load settings" msgid "Load settings"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:38 #: src/form/components/SubmitButton.js:40
msgid "Save" msgid "Save"
msgstr "Spremi" msgstr "Spremi"
@ -426,3 +509,18 @@ msgstr ""
#~ "channel." #~ "channel."
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr ""
#~ msgid "Reboot"
#~ msgstr ""
#~ msgid "Warning!"
#~ msgstr ""
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr ""
#~ msgid "Confirm reboot"
#~ msgstr ""

View File

@ -1,13 +1,13 @@
# Hungarian translations for Foris JS. # Hungarian translations for Foris JS.
# Copyright (C) 2024 CZ.NIC, z.s.p.o. (https://www.nic.cz/) # Copyright (C) 2025 CZ.NIC, z.s.p.o. (https://www.nic.cz/)
# This file is distributed under the same license as the Foris JS project. # This file is distributed under the same license as the Foris JS project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024. # FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-08-23 14:02+0200\n" "POT-Creation-Date: 2025-04-04 15:14+0200\n"
"PO-Revision-Date: 2021-01-07 01:26+0000\n" "PO-Revision-Date: 2021-01-07 01:26+0000\n"
"Last-Translator: Zoli <boritek@gmail.com>\n" "Last-Translator: Zoli <boritek@gmail.com>\n"
"Language: hu\n" "Language: hu\n"
@ -17,7 +17,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.16.0\n" "Generated-By: Babel 2.17.0\n"
#: src/api/utils.js:61 #: src/api/utils.js:61
msgid "The session is expired. Please log in again." msgid "The session is expired. Please log in again."
@ -35,40 +35,110 @@ msgstr "Nem érkezett válasz."
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "Ismeretlen API-hiba történt." msgstr "Ismeretlen API-hiba történt."
#: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98 #: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:103
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copy" msgid "Copy"
msgstr "" msgstr ""
#: src/common/RebootButton.js:27 #: src/bootstrap/NumberInput.js:84 src/bootstrap/NumberInput.js:85
msgid "Reboot request failed." msgid "Increase value. Hint: Hold to increase faster."
msgstr "" msgstr ""
#: src/common/RebootButton.js:51 #: src/bootstrap/NumberInput.js:101 src/bootstrap/NumberInput.js:102
msgid "Reboot" msgid "Decrease value. Hint: Hold to decrease faster."
msgstr "" msgstr ""
#: src/common/RebootButton.js:66 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:67
msgid "Warning!" #, fuzzy
msgid "Action successful."
msgstr "Beállítások sikeresen elmentve"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:76
msgid "Action failed."
msgstr "" msgstr ""
#: src/common/RebootButton.js:68 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:147
msgid "Are you sure you want to restart the router?"
msgstr ""
#: src/common/RebootButton.js:71
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
#: src/common/RebootButton.js:73 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:150
msgid "Confirm reboot" msgid "Confirm"
msgstr ""
#: src/common/RichTable/RichTable.js:87
msgid "Search…"
msgstr ""
#: src/common/RichTable/RichTableBody.js:50
msgid "No results."
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:27
msgid "Columns"
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:80
msgid "Reset"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr "" msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
@ -92,11 +162,12 @@ msgid ""
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:97 #: src/common/WiFiSettings/WiFiForm.js:97
#, python-brace-format
msgid "Wi-Fi ${deviceID + 1}" msgid "Wi-Fi ${deviceID + 1}"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:81 #: src/common/WiFiSettings/WiFiGuestForm.js:80
msgid "Password" msgid "Password"
msgstr "" msgstr ""
@ -104,6 +175,10 @@ msgstr ""
msgid "Hide SSID" msgid "Hide SSID"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:159
msgid "Band"
msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:186 #: src/common/WiFiSettings/WiFiForm.js:186
msgid "802.11n/ac/ax mode" msgid "802.11n/ac/ax mode"
msgstr "" msgstr ""
@ -113,6 +188,7 @@ msgid "Channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:211 #: src/common/WiFiSettings/WiFiForm.js:211
#: src/common/WiFiSettings/WiFiGuestForm.js:95
msgid "Encryption" msgid "Encryption"
msgstr "" msgstr ""
@ -134,7 +210,7 @@ msgstr ""
msgid "Custom" msgid "Custom"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiGuestForm.js:43 #: src/common/WiFiSettings/WiFiGuestForm.js:45
msgid "Enable Guest Wi-Fi" msgid "Enable Guest Wi-Fi"
msgstr "" msgstr ""
@ -147,7 +223,7 @@ msgstr ""
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiQRCode.js:93 #: src/common/WiFiSettings/WiFiQRCode.js:102
msgid "Download PDF" msgid "Download PDF"
msgstr "" msgstr ""
@ -201,52 +277,60 @@ msgid "802.11ac - 80 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:15 #: src/common/WiFiSettings/constants.js:15
msgid "802.11ac - 160 MHz wide channel" msgid "802.11ac - 80+80 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:16 #: src/common/WiFiSettings/constants.js:16
msgid "802.11ax - 20 MHz wide channel" msgid "802.11ac - 160 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:17 #: src/common/WiFiSettings/constants.js:17
msgid "802.11ax - 40 MHz wide channel" msgid "802.11ax - 20 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:18 #: src/common/WiFiSettings/constants.js:18
msgid "802.11ax - 80 MHz wide channel" msgid "802.11ax - 40 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:19 #: src/common/WiFiSettings/constants.js:19
msgid "802.11ax - 80 MHz wide channel"
msgstr ""
#: src/common/WiFiSettings/constants.js:20
msgid "802.11ax - 80+80 MHz wide channel"
msgstr ""
#: src/common/WiFiSettings/constants.js:21
msgid "802.11ax - 160 MHz wide channel" msgid "802.11ax - 160 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:26 #: src/common/WiFiSettings/constants.js:29
msgid "WPA3 only" msgid "WPA3 only"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:27 #: src/common/WiFiSettings/constants.js:30
msgid "WPA3 with WPA2 as fallback (default)" msgid "WPA3 with WPA2 as fallback (default)"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:28 #: src/common/WiFiSettings/constants.js:31
msgid "WPA2 only" msgid "WPA2 only"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:31 #: src/common/WiFiSettings/constants.js:34
msgid "" msgid ""
"SSID which contains non-standard characters could cause problems on some " "SSID which contains non-standard characters could cause problems on some "
"devices." "devices."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:34 #: src/common/WiFiSettings/constants.js:37
msgid "WPA2/3 pre-shared key, that is required to connect to the network." msgid "WPA2/3 pre-shared key, that is required to connect to the network."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:37 #: src/common/WiFiSettings/constants.js:40
msgid "If set, network is not visible when scanning for available networks." msgid "If set, network is not visible when scanning for available networks."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:40 #: src/common/WiFiSettings/constants.js:43
msgid "" msgid ""
"The 2.4 GHz band is more widely supported by clients, but tends to have " "The 2.4 GHz band is more widely supported by clients, but tends to have "
"more interference. The 5 GHz band is a newer standard and may not be " "more interference. The 5 GHz band is a newer standard and may not be "
@ -254,7 +338,7 @@ msgid ""
"signal does not carry so well indoors." "signal does not carry so well indoors."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:43 #: src/common/WiFiSettings/constants.js:46
msgid "" msgid ""
"Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 " "Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 "
"MHz wide channels can yield higher throughput but can cause more " "MHz wide channels can yield higher throughput but can cause more "
@ -262,7 +346,7 @@ msgid ""
"default option with 20 MHz wide channel." "default option with 20 MHz wide channel."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:46 #: src/common/WiFiSettings/constants.js:49
msgid "" msgid ""
"Enables Wi-Fi for guests, which is separated from LAN network. Devices " "Enables Wi-Fi for guests, which is separated from LAN network. Devices "
"connected to this network are allowed to access the internet, but aren't " "connected to this network are allowed to access the internet, but aren't "
@ -271,7 +355,7 @@ msgid ""
"tab." "tab."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:49 #: src/common/WiFiSettings/constants.js:52
msgid "" msgid ""
"The WPA3 standard is the new most secure encryption method that is " "The WPA3 standard is the new most secure encryption method that is "
"suggested to be used with any device that supports it. The older devices " "suggested to be used with any device that supports it. The older devices "
@ -289,15 +373,15 @@ msgstr ""
"Lehet, hogy az Ön által végrehajtott módosításokat nem menti a rendszer. " "Lehet, hogy az Ön által végrehajtott módosításokat nem menti a rendszer. "
"Biztosan el akar menni?" "Biztosan el akar menni?"
#: src/form/components/SubmitButton.js:32 #: src/form/components/SubmitButton.js:34
msgid "Updating" msgid "Updating"
msgstr "Frissítés" msgstr "Frissítés"
#: src/form/components/SubmitButton.js:35 #: src/form/components/SubmitButton.js:37
msgid "Load settings" msgid "Load settings"
msgstr "Beállítások betöltése" msgstr "Beállítások betöltése"
#: src/form/components/SubmitButton.js:38 #: src/form/components/SubmitButton.js:40
msgid "Save" msgid "Save"
msgstr "Mentés" msgstr "Mentés"
@ -419,3 +503,18 @@ msgstr "Nem tartalmaz vesszővel elválasztott e-mail listát."
#~ "channel." #~ "channel."
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr ""
#~ msgid "Reboot"
#~ msgstr ""
#~ msgid "Warning!"
#~ msgstr ""
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr ""
#~ msgid "Confirm reboot"
#~ msgstr ""

View File

@ -1,13 +1,13 @@
# Italian translations for Foris JS. # Italian translations for Foris JS.
# Copyright (C) 2024 CZ.NIC, z.s.p.o. (https://www.nic.cz/) # Copyright (C) 2025 CZ.NIC, z.s.p.o. (https://www.nic.cz/)
# This file is distributed under the same license as the Foris JS project. # This file is distributed under the same license as the Foris JS project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024. # FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-08-23 14:02+0200\n" "POT-Creation-Date: 2025-04-04 15:14+0200\n"
"PO-Revision-Date: 2022-12-31 23:48+0000\n" "PO-Revision-Date: 2022-12-31 23:48+0000\n"
"Last-Translator: Anselmo <anselmo@casinadicornia.com>\n" "Last-Translator: Anselmo <anselmo@casinadicornia.com>\n"
"Language: it\n" "Language: it\n"
@ -17,7 +17,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.16.0\n" "Generated-By: Babel 2.17.0\n"
#: src/api/utils.js:61 #: src/api/utils.js:61
msgid "The session is expired. Please log in again." msgid "The session is expired. Please log in again."
@ -35,40 +35,109 @@ msgstr ""
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
#: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98 #: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:103
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copy" msgid "Copy"
msgstr "" msgstr ""
#: src/common/RebootButton.js:27 #: src/bootstrap/NumberInput.js:84 src/bootstrap/NumberInput.js:85
msgid "Reboot request failed." msgid "Increase value. Hint: Hold to increase faster."
msgstr "" msgstr ""
#: src/common/RebootButton.js:51 #: src/bootstrap/NumberInput.js:101 src/bootstrap/NumberInput.js:102
msgid "Reboot" msgid "Decrease value. Hint: Hold to decrease faster."
msgstr "" msgstr ""
#: src/common/RebootButton.js:66 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:67
msgid "Warning!" msgid "Action successful."
msgstr "" msgstr ""
#: src/common/RebootButton.js:68 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:76
msgid "Are you sure you want to restart the router?" msgid "Action failed."
msgstr "" msgstr ""
#: src/common/RebootButton.js:71 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:147
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
#: src/common/RebootButton.js:73 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:150
msgid "Confirm reboot" msgid "Confirm"
msgstr ""
#: src/common/RichTable/RichTable.js:87
msgid "Search…"
msgstr ""
#: src/common/RichTable/RichTableBody.js:50
msgid "No results."
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:27
msgid "Columns"
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:80
msgid "Reset"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr "" msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
@ -92,11 +161,12 @@ msgid ""
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:97 #: src/common/WiFiSettings/WiFiForm.js:97
#, python-brace-format
msgid "Wi-Fi ${deviceID + 1}" msgid "Wi-Fi ${deviceID + 1}"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:81 #: src/common/WiFiSettings/WiFiGuestForm.js:80
msgid "Password" msgid "Password"
msgstr "Password" msgstr "Password"
@ -104,6 +174,10 @@ msgstr "Password"
msgid "Hide SSID" msgid "Hide SSID"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:159
msgid "Band"
msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:186 #: src/common/WiFiSettings/WiFiForm.js:186
msgid "802.11n/ac/ax mode" msgid "802.11n/ac/ax mode"
msgstr "" msgstr ""
@ -113,6 +187,7 @@ msgid "Channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:211 #: src/common/WiFiSettings/WiFiForm.js:211
#: src/common/WiFiSettings/WiFiGuestForm.js:95
msgid "Encryption" msgid "Encryption"
msgstr "" msgstr ""
@ -134,7 +209,7 @@ msgstr ""
msgid "Custom" msgid "Custom"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiGuestForm.js:43 #: src/common/WiFiSettings/WiFiGuestForm.js:45
msgid "Enable Guest Wi-Fi" msgid "Enable Guest Wi-Fi"
msgstr "" msgstr ""
@ -147,7 +222,7 @@ msgstr ""
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiQRCode.js:93 #: src/common/WiFiSettings/WiFiQRCode.js:102
msgid "Download PDF" msgid "Download PDF"
msgstr "" msgstr ""
@ -201,52 +276,60 @@ msgid "802.11ac - 80 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:15 #: src/common/WiFiSettings/constants.js:15
msgid "802.11ac - 160 MHz wide channel" msgid "802.11ac - 80+80 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:16 #: src/common/WiFiSettings/constants.js:16
msgid "802.11ax - 20 MHz wide channel" msgid "802.11ac - 160 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:17 #: src/common/WiFiSettings/constants.js:17
msgid "802.11ax - 40 MHz wide channel" msgid "802.11ax - 20 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:18 #: src/common/WiFiSettings/constants.js:18
msgid "802.11ax - 80 MHz wide channel" msgid "802.11ax - 40 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:19 #: src/common/WiFiSettings/constants.js:19
msgid "802.11ax - 80 MHz wide channel"
msgstr ""
#: src/common/WiFiSettings/constants.js:20
msgid "802.11ax - 80+80 MHz wide channel"
msgstr ""
#: src/common/WiFiSettings/constants.js:21
msgid "802.11ax - 160 MHz wide channel" msgid "802.11ax - 160 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:26 #: src/common/WiFiSettings/constants.js:29
msgid "WPA3 only" msgid "WPA3 only"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:27 #: src/common/WiFiSettings/constants.js:30
msgid "WPA3 with WPA2 as fallback (default)" msgid "WPA3 with WPA2 as fallback (default)"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:28 #: src/common/WiFiSettings/constants.js:31
msgid "WPA2 only" msgid "WPA2 only"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:31 #: src/common/WiFiSettings/constants.js:34
msgid "" msgid ""
"SSID which contains non-standard characters could cause problems on some " "SSID which contains non-standard characters could cause problems on some "
"devices." "devices."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:34 #: src/common/WiFiSettings/constants.js:37
msgid "WPA2/3 pre-shared key, that is required to connect to the network." msgid "WPA2/3 pre-shared key, that is required to connect to the network."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:37 #: src/common/WiFiSettings/constants.js:40
msgid "If set, network is not visible when scanning for available networks." msgid "If set, network is not visible when scanning for available networks."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:40 #: src/common/WiFiSettings/constants.js:43
msgid "" msgid ""
"The 2.4 GHz band is more widely supported by clients, but tends to have " "The 2.4 GHz band is more widely supported by clients, but tends to have "
"more interference. The 5 GHz band is a newer standard and may not be " "more interference. The 5 GHz band is a newer standard and may not be "
@ -254,7 +337,7 @@ msgid ""
"signal does not carry so well indoors." "signal does not carry so well indoors."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:43 #: src/common/WiFiSettings/constants.js:46
msgid "" msgid ""
"Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 " "Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 "
"MHz wide channels can yield higher throughput but can cause more " "MHz wide channels can yield higher throughput but can cause more "
@ -262,7 +345,7 @@ msgid ""
"default option with 20 MHz wide channel." "default option with 20 MHz wide channel."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:46 #: src/common/WiFiSettings/constants.js:49
msgid "" msgid ""
"Enables Wi-Fi for guests, which is separated from LAN network. Devices " "Enables Wi-Fi for guests, which is separated from LAN network. Devices "
"connected to this network are allowed to access the internet, but aren't " "connected to this network are allowed to access the internet, but aren't "
@ -271,7 +354,7 @@ msgid ""
"tab." "tab."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:49 #: src/common/WiFiSettings/constants.js:52
msgid "" msgid ""
"The WPA3 standard is the new most secure encryption method that is " "The WPA3 standard is the new most secure encryption method that is "
"suggested to be used with any device that supports it. The older devices " "suggested to be used with any device that supports it. The older devices "
@ -287,15 +370,15 @@ msgstr ""
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:32 #: src/form/components/SubmitButton.js:34
msgid "Updating" msgid "Updating"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:35 #: src/form/components/SubmitButton.js:37
msgid "Load settings" msgid "Load settings"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:38 #: src/form/components/SubmitButton.js:40
msgid "Save" msgid "Save"
msgstr "" msgstr ""
@ -425,3 +508,18 @@ msgstr ""
#~ "channel." #~ "channel."
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr ""
#~ msgid "Reboot"
#~ msgstr ""
#~ msgid "Warning!"
#~ msgstr ""
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr ""
#~ msgid "Confirm reboot"
#~ msgstr ""

View File

@ -1,13 +1,13 @@
# Japanese translations for Foris JS. # Japanese translations for Foris JS.
# Copyright (C) 2024 CZ.NIC, z.s.p.o. (https://www.nic.cz/) # Copyright (C) 2025 CZ.NIC, z.s.p.o. (https://www.nic.cz/)
# This file is distributed under the same license as the Foris JS project. # This file is distributed under the same license as the Foris JS project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024. # FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-08-23 14:02+0200\n" "POT-Creation-Date: 2025-04-04 15:14+0200\n"
"PO-Revision-Date: 2019-10-16 10:08+0000\n" "PO-Revision-Date: 2019-10-16 10:08+0000\n"
"Last-Translator: Scott Anecito <scott.anecito@protonmail.com>\n" "Last-Translator: Scott Anecito <scott.anecito@protonmail.com>\n"
"Language: ja\n" "Language: ja\n"
@ -17,7 +17,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.16.0\n" "Generated-By: Babel 2.17.0\n"
#: src/api/utils.js:61 #: src/api/utils.js:61
msgid "The session is expired. Please log in again." msgid "The session is expired. Please log in again."
@ -35,40 +35,109 @@ msgstr ""
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
#: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98 #: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:103
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copy" msgid "Copy"
msgstr "" msgstr ""
#: src/common/RebootButton.js:27 #: src/bootstrap/NumberInput.js:84 src/bootstrap/NumberInput.js:85
msgid "Reboot request failed." msgid "Increase value. Hint: Hold to increase faster."
msgstr "" msgstr ""
#: src/common/RebootButton.js:51 #: src/bootstrap/NumberInput.js:101 src/bootstrap/NumberInput.js:102
msgid "Reboot" msgid "Decrease value. Hint: Hold to decrease faster."
msgstr "再起動"
#: src/common/RebootButton.js:66
msgid "Warning!"
msgstr "" msgstr ""
#: src/common/RebootButton.js:68 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:67
msgid "Are you sure you want to restart the router?" msgid "Action successful."
msgstr "" msgstr ""
#: src/common/RebootButton.js:71 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:76
msgid "Action failed."
msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:147
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
#: src/common/RebootButton.js:73 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:150
msgid "Confirm reboot" msgid "Confirm"
msgstr ""
#: src/common/RichTable/RichTable.js:87
msgid "Search…"
msgstr ""
#: src/common/RichTable/RichTableBody.js:50
msgid "No results."
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:27
msgid "Columns"
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:80
msgid "Reset"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr "" msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
@ -92,11 +161,12 @@ msgid ""
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:97 #: src/common/WiFiSettings/WiFiForm.js:97
#, python-brace-format
msgid "Wi-Fi ${deviceID + 1}" msgid "Wi-Fi ${deviceID + 1}"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:81 #: src/common/WiFiSettings/WiFiGuestForm.js:80
msgid "Password" msgid "Password"
msgstr "" msgstr ""
@ -104,6 +174,10 @@ msgstr ""
msgid "Hide SSID" msgid "Hide SSID"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:159
msgid "Band"
msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:186 #: src/common/WiFiSettings/WiFiForm.js:186
msgid "802.11n/ac/ax mode" msgid "802.11n/ac/ax mode"
msgstr "" msgstr ""
@ -113,6 +187,7 @@ msgid "Channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:211 #: src/common/WiFiSettings/WiFiForm.js:211
#: src/common/WiFiSettings/WiFiGuestForm.js:95
msgid "Encryption" msgid "Encryption"
msgstr "" msgstr ""
@ -135,7 +210,7 @@ msgstr "自動"
msgid "Custom" msgid "Custom"
msgstr "自動" msgstr "自動"
#: src/common/WiFiSettings/WiFiGuestForm.js:43 #: src/common/WiFiSettings/WiFiGuestForm.js:45
msgid "Enable Guest Wi-Fi" msgid "Enable Guest Wi-Fi"
msgstr "" msgstr ""
@ -148,7 +223,7 @@ msgstr ""
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiQRCode.js:93 #: src/common/WiFiSettings/WiFiQRCode.js:102
msgid "Download PDF" msgid "Download PDF"
msgstr "" msgstr ""
@ -202,52 +277,60 @@ msgid "802.11ac - 80 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:15 #: src/common/WiFiSettings/constants.js:15
msgid "802.11ac - 160 MHz wide channel" msgid "802.11ac - 80+80 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:16 #: src/common/WiFiSettings/constants.js:16
msgid "802.11ax - 20 MHz wide channel" msgid "802.11ac - 160 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:17 #: src/common/WiFiSettings/constants.js:17
msgid "802.11ax - 40 MHz wide channel" msgid "802.11ax - 20 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:18 #: src/common/WiFiSettings/constants.js:18
msgid "802.11ax - 80 MHz wide channel" msgid "802.11ax - 40 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:19 #: src/common/WiFiSettings/constants.js:19
msgid "802.11ax - 80 MHz wide channel"
msgstr ""
#: src/common/WiFiSettings/constants.js:20
msgid "802.11ax - 80+80 MHz wide channel"
msgstr ""
#: src/common/WiFiSettings/constants.js:21
msgid "802.11ax - 160 MHz wide channel" msgid "802.11ax - 160 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:26 #: src/common/WiFiSettings/constants.js:29
msgid "WPA3 only" msgid "WPA3 only"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:27 #: src/common/WiFiSettings/constants.js:30
msgid "WPA3 with WPA2 as fallback (default)" msgid "WPA3 with WPA2 as fallback (default)"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:28 #: src/common/WiFiSettings/constants.js:31
msgid "WPA2 only" msgid "WPA2 only"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:31 #: src/common/WiFiSettings/constants.js:34
msgid "" msgid ""
"SSID which contains non-standard characters could cause problems on some " "SSID which contains non-standard characters could cause problems on some "
"devices." "devices."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:34 #: src/common/WiFiSettings/constants.js:37
msgid "WPA2/3 pre-shared key, that is required to connect to the network." msgid "WPA2/3 pre-shared key, that is required to connect to the network."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:37 #: src/common/WiFiSettings/constants.js:40
msgid "If set, network is not visible when scanning for available networks." msgid "If set, network is not visible when scanning for available networks."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:40 #: src/common/WiFiSettings/constants.js:43
msgid "" msgid ""
"The 2.4 GHz band is more widely supported by clients, but tends to have " "The 2.4 GHz band is more widely supported by clients, but tends to have "
"more interference. The 5 GHz band is a newer standard and may not be " "more interference. The 5 GHz band is a newer standard and may not be "
@ -255,7 +338,7 @@ msgid ""
"signal does not carry so well indoors." "signal does not carry so well indoors."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:43 #: src/common/WiFiSettings/constants.js:46
msgid "" msgid ""
"Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 " "Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 "
"MHz wide channels can yield higher throughput but can cause more " "MHz wide channels can yield higher throughput but can cause more "
@ -263,7 +346,7 @@ msgid ""
"default option with 20 MHz wide channel." "default option with 20 MHz wide channel."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:46 #: src/common/WiFiSettings/constants.js:49
msgid "" msgid ""
"Enables Wi-Fi for guests, which is separated from LAN network. Devices " "Enables Wi-Fi for guests, which is separated from LAN network. Devices "
"connected to this network are allowed to access the internet, but aren't " "connected to this network are allowed to access the internet, but aren't "
@ -272,7 +355,7 @@ msgid ""
"tab." "tab."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:49 #: src/common/WiFiSettings/constants.js:52
msgid "" msgid ""
"The WPA3 standard is the new most secure encryption method that is " "The WPA3 standard is the new most secure encryption method that is "
"suggested to be used with any device that supports it. The older devices " "suggested to be used with any device that supports it. The older devices "
@ -288,15 +371,15 @@ msgstr ""
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:32 #: src/form/components/SubmitButton.js:34
msgid "Updating" msgid "Updating"
msgstr "アップデート中…" msgstr "アップデート中…"
#: src/form/components/SubmitButton.js:35 #: src/form/components/SubmitButton.js:37
msgid "Load settings" msgid "Load settings"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:38 #: src/form/components/SubmitButton.js:40
msgid "Save" msgid "Save"
msgstr "" msgstr ""
@ -426,3 +509,18 @@ msgstr ""
#~ "channel." #~ "channel."
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr ""
#~ msgid "Reboot"
#~ msgstr "再起動"
#~ msgid "Warning!"
#~ msgstr ""
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr ""
#~ msgid "Confirm reboot"
#~ msgstr ""

View File

@ -1,13 +1,13 @@
# Korean translations for Foris JS. # Korean translations for Foris JS.
# Copyright (C) 2024 CZ.NIC, z.s.p.o. (https://www.nic.cz/) # Copyright (C) 2025 CZ.NIC, z.s.p.o. (https://www.nic.cz/)
# This file is distributed under the same license as the Foris JS project. # This file is distributed under the same license as the Foris JS project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024. # FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-08-23 14:02+0200\n" "POT-Creation-Date: 2025-04-04 15:14+0200\n"
"PO-Revision-Date: 2019-02-19 13:34+0100\n" "PO-Revision-Date: 2019-02-19 13:34+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: ko\n" "Language: ko\n"
@ -16,7 +16,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.16.0\n" "Generated-By: Babel 2.17.0\n"
#: src/api/utils.js:61 #: src/api/utils.js:61
msgid "The session is expired. Please log in again." msgid "The session is expired. Please log in again."
@ -34,40 +34,109 @@ msgstr ""
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
#: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98 #: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:103
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copy" msgid "Copy"
msgstr "" msgstr ""
#: src/common/RebootButton.js:27 #: src/bootstrap/NumberInput.js:84 src/bootstrap/NumberInput.js:85
msgid "Reboot request failed." msgid "Increase value. Hint: Hold to increase faster."
msgstr "" msgstr ""
#: src/common/RebootButton.js:51 #: src/bootstrap/NumberInput.js:101 src/bootstrap/NumberInput.js:102
msgid "Reboot" msgid "Decrease value. Hint: Hold to decrease faster."
msgstr "" msgstr ""
#: src/common/RebootButton.js:66 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:67
msgid "Warning!" msgid "Action successful."
msgstr "" msgstr ""
#: src/common/RebootButton.js:68 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:76
msgid "Are you sure you want to restart the router?" msgid "Action failed."
msgstr "" msgstr ""
#: src/common/RebootButton.js:71 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:147
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
#: src/common/RebootButton.js:73 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:150
msgid "Confirm reboot" msgid "Confirm"
msgstr ""
#: src/common/RichTable/RichTable.js:87
msgid "Search…"
msgstr ""
#: src/common/RichTable/RichTableBody.js:50
msgid "No results."
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:27
msgid "Columns"
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:80
msgid "Reset"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr "" msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
@ -91,11 +160,12 @@ msgid ""
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:97 #: src/common/WiFiSettings/WiFiForm.js:97
#, python-brace-format
msgid "Wi-Fi ${deviceID + 1}" msgid "Wi-Fi ${deviceID + 1}"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:81 #: src/common/WiFiSettings/WiFiGuestForm.js:80
msgid "Password" msgid "Password"
msgstr "" msgstr ""
@ -103,6 +173,10 @@ msgstr ""
msgid "Hide SSID" msgid "Hide SSID"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:159
msgid "Band"
msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:186 #: src/common/WiFiSettings/WiFiForm.js:186
msgid "802.11n/ac/ax mode" msgid "802.11n/ac/ax mode"
msgstr "" msgstr ""
@ -112,6 +186,7 @@ msgid "Channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:211 #: src/common/WiFiSettings/WiFiForm.js:211
#: src/common/WiFiSettings/WiFiGuestForm.js:95
msgid "Encryption" msgid "Encryption"
msgstr "" msgstr ""
@ -133,7 +208,7 @@ msgstr ""
msgid "Custom" msgid "Custom"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiGuestForm.js:43 #: src/common/WiFiSettings/WiFiGuestForm.js:45
msgid "Enable Guest Wi-Fi" msgid "Enable Guest Wi-Fi"
msgstr "" msgstr ""
@ -146,7 +221,7 @@ msgstr ""
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiQRCode.js:93 #: src/common/WiFiSettings/WiFiQRCode.js:102
msgid "Download PDF" msgid "Download PDF"
msgstr "" msgstr ""
@ -200,52 +275,60 @@ msgid "802.11ac - 80 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:15 #: src/common/WiFiSettings/constants.js:15
msgid "802.11ac - 160 MHz wide channel" msgid "802.11ac - 80+80 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:16 #: src/common/WiFiSettings/constants.js:16
msgid "802.11ax - 20 MHz wide channel" msgid "802.11ac - 160 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:17 #: src/common/WiFiSettings/constants.js:17
msgid "802.11ax - 40 MHz wide channel" msgid "802.11ax - 20 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:18 #: src/common/WiFiSettings/constants.js:18
msgid "802.11ax - 80 MHz wide channel" msgid "802.11ax - 40 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:19 #: src/common/WiFiSettings/constants.js:19
msgid "802.11ax - 80 MHz wide channel"
msgstr ""
#: src/common/WiFiSettings/constants.js:20
msgid "802.11ax - 80+80 MHz wide channel"
msgstr ""
#: src/common/WiFiSettings/constants.js:21
msgid "802.11ax - 160 MHz wide channel" msgid "802.11ax - 160 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:26 #: src/common/WiFiSettings/constants.js:29
msgid "WPA3 only" msgid "WPA3 only"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:27 #: src/common/WiFiSettings/constants.js:30
msgid "WPA3 with WPA2 as fallback (default)" msgid "WPA3 with WPA2 as fallback (default)"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:28 #: src/common/WiFiSettings/constants.js:31
msgid "WPA2 only" msgid "WPA2 only"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:31 #: src/common/WiFiSettings/constants.js:34
msgid "" msgid ""
"SSID which contains non-standard characters could cause problems on some " "SSID which contains non-standard characters could cause problems on some "
"devices." "devices."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:34 #: src/common/WiFiSettings/constants.js:37
msgid "WPA2/3 pre-shared key, that is required to connect to the network." msgid "WPA2/3 pre-shared key, that is required to connect to the network."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:37 #: src/common/WiFiSettings/constants.js:40
msgid "If set, network is not visible when scanning for available networks." msgid "If set, network is not visible when scanning for available networks."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:40 #: src/common/WiFiSettings/constants.js:43
msgid "" msgid ""
"The 2.4 GHz band is more widely supported by clients, but tends to have " "The 2.4 GHz band is more widely supported by clients, but tends to have "
"more interference. The 5 GHz band is a newer standard and may not be " "more interference. The 5 GHz band is a newer standard and may not be "
@ -253,7 +336,7 @@ msgid ""
"signal does not carry so well indoors." "signal does not carry so well indoors."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:43 #: src/common/WiFiSettings/constants.js:46
msgid "" msgid ""
"Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 " "Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 "
"MHz wide channels can yield higher throughput but can cause more " "MHz wide channels can yield higher throughput but can cause more "
@ -261,7 +344,7 @@ msgid ""
"default option with 20 MHz wide channel." "default option with 20 MHz wide channel."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:46 #: src/common/WiFiSettings/constants.js:49
msgid "" msgid ""
"Enables Wi-Fi for guests, which is separated from LAN network. Devices " "Enables Wi-Fi for guests, which is separated from LAN network. Devices "
"connected to this network are allowed to access the internet, but aren't " "connected to this network are allowed to access the internet, but aren't "
@ -270,7 +353,7 @@ msgid ""
"tab." "tab."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:49 #: src/common/WiFiSettings/constants.js:52
msgid "" msgid ""
"The WPA3 standard is the new most secure encryption method that is " "The WPA3 standard is the new most secure encryption method that is "
"suggested to be used with any device that supports it. The older devices " "suggested to be used with any device that supports it. The older devices "
@ -286,15 +369,15 @@ msgstr ""
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:32 #: src/form/components/SubmitButton.js:34
msgid "Updating" msgid "Updating"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:35 #: src/form/components/SubmitButton.js:37
msgid "Load settings" msgid "Load settings"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:38 #: src/form/components/SubmitButton.js:40
msgid "Save" msgid "Save"
msgstr "" msgstr ""
@ -424,3 +507,18 @@ msgstr ""
#~ "channel." #~ "channel."
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr ""
#~ msgid "Reboot"
#~ msgstr ""
#~ msgid "Warning!"
#~ msgstr ""
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr ""
#~ msgid "Confirm reboot"
#~ msgstr ""

View File

@ -1,13 +1,13 @@
# Lithuanian translations for Foris JS. # Lithuanian translations for Foris JS.
# Copyright (C) 2024 CZ.NIC, z.s.p.o. (https://www.nic.cz/) # Copyright (C) 2025 CZ.NIC, z.s.p.o. (https://www.nic.cz/)
# This file is distributed under the same license as the Foris JS project. # This file is distributed under the same license as the Foris JS project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024. # FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-08-23 14:02+0200\n" "POT-Creation-Date: 2025-04-04 15:14+0200\n"
"PO-Revision-Date: 2019-02-19 13:34+0100\n" "PO-Revision-Date: 2019-02-19 13:34+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: lt\n" "Language: lt\n"
@ -17,7 +17,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.16.0\n" "Generated-By: Babel 2.17.0\n"
#: src/api/utils.js:61 #: src/api/utils.js:61
msgid "The session is expired. Please log in again." msgid "The session is expired. Please log in again."
@ -35,40 +35,109 @@ msgstr ""
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
#: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98 #: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:103
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copy" msgid "Copy"
msgstr "" msgstr ""
#: src/common/RebootButton.js:27 #: src/bootstrap/NumberInput.js:84 src/bootstrap/NumberInput.js:85
msgid "Reboot request failed." msgid "Increase value. Hint: Hold to increase faster."
msgstr "" msgstr ""
#: src/common/RebootButton.js:51 #: src/bootstrap/NumberInput.js:101 src/bootstrap/NumberInput.js:102
msgid "Reboot" msgid "Decrease value. Hint: Hold to decrease faster."
msgstr "" msgstr ""
#: src/common/RebootButton.js:66 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:67
msgid "Warning!" msgid "Action successful."
msgstr "" msgstr ""
#: src/common/RebootButton.js:68 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:76
msgid "Are you sure you want to restart the router?" msgid "Action failed."
msgstr "" msgstr ""
#: src/common/RebootButton.js:71 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:147
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
#: src/common/RebootButton.js:73 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:150
msgid "Confirm reboot" msgid "Confirm"
msgstr ""
#: src/common/RichTable/RichTable.js:87
msgid "Search…"
msgstr ""
#: src/common/RichTable/RichTableBody.js:50
msgid "No results."
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:27
msgid "Columns"
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:80
msgid "Reset"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr "" msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
@ -92,11 +161,12 @@ msgid ""
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:97 #: src/common/WiFiSettings/WiFiForm.js:97
#, python-brace-format
msgid "Wi-Fi ${deviceID + 1}" msgid "Wi-Fi ${deviceID + 1}"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:81 #: src/common/WiFiSettings/WiFiGuestForm.js:80
msgid "Password" msgid "Password"
msgstr "" msgstr ""
@ -104,6 +174,10 @@ msgstr ""
msgid "Hide SSID" msgid "Hide SSID"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:159
msgid "Band"
msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:186 #: src/common/WiFiSettings/WiFiForm.js:186
msgid "802.11n/ac/ax mode" msgid "802.11n/ac/ax mode"
msgstr "" msgstr ""
@ -113,6 +187,7 @@ msgid "Channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:211 #: src/common/WiFiSettings/WiFiForm.js:211
#: src/common/WiFiSettings/WiFiGuestForm.js:95
msgid "Encryption" msgid "Encryption"
msgstr "" msgstr ""
@ -134,7 +209,7 @@ msgstr ""
msgid "Custom" msgid "Custom"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiGuestForm.js:43 #: src/common/WiFiSettings/WiFiGuestForm.js:45
msgid "Enable Guest Wi-Fi" msgid "Enable Guest Wi-Fi"
msgstr "" msgstr ""
@ -147,7 +222,7 @@ msgstr ""
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiQRCode.js:93 #: src/common/WiFiSettings/WiFiQRCode.js:102
msgid "Download PDF" msgid "Download PDF"
msgstr "" msgstr ""
@ -201,52 +276,60 @@ msgid "802.11ac - 80 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:15 #: src/common/WiFiSettings/constants.js:15
msgid "802.11ac - 160 MHz wide channel" msgid "802.11ac - 80+80 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:16 #: src/common/WiFiSettings/constants.js:16
msgid "802.11ax - 20 MHz wide channel" msgid "802.11ac - 160 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:17 #: src/common/WiFiSettings/constants.js:17
msgid "802.11ax - 40 MHz wide channel" msgid "802.11ax - 20 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:18 #: src/common/WiFiSettings/constants.js:18
msgid "802.11ax - 80 MHz wide channel" msgid "802.11ax - 40 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:19 #: src/common/WiFiSettings/constants.js:19
msgid "802.11ax - 80 MHz wide channel"
msgstr ""
#: src/common/WiFiSettings/constants.js:20
msgid "802.11ax - 80+80 MHz wide channel"
msgstr ""
#: src/common/WiFiSettings/constants.js:21
msgid "802.11ax - 160 MHz wide channel" msgid "802.11ax - 160 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:26 #: src/common/WiFiSettings/constants.js:29
msgid "WPA3 only" msgid "WPA3 only"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:27 #: src/common/WiFiSettings/constants.js:30
msgid "WPA3 with WPA2 as fallback (default)" msgid "WPA3 with WPA2 as fallback (default)"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:28 #: src/common/WiFiSettings/constants.js:31
msgid "WPA2 only" msgid "WPA2 only"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:31 #: src/common/WiFiSettings/constants.js:34
msgid "" msgid ""
"SSID which contains non-standard characters could cause problems on some " "SSID which contains non-standard characters could cause problems on some "
"devices." "devices."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:34 #: src/common/WiFiSettings/constants.js:37
msgid "WPA2/3 pre-shared key, that is required to connect to the network." msgid "WPA2/3 pre-shared key, that is required to connect to the network."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:37 #: src/common/WiFiSettings/constants.js:40
msgid "If set, network is not visible when scanning for available networks." msgid "If set, network is not visible when scanning for available networks."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:40 #: src/common/WiFiSettings/constants.js:43
msgid "" msgid ""
"The 2.4 GHz band is more widely supported by clients, but tends to have " "The 2.4 GHz band is more widely supported by clients, but tends to have "
"more interference. The 5 GHz band is a newer standard and may not be " "more interference. The 5 GHz band is a newer standard and may not be "
@ -254,7 +337,7 @@ msgid ""
"signal does not carry so well indoors." "signal does not carry so well indoors."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:43 #: src/common/WiFiSettings/constants.js:46
msgid "" msgid ""
"Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 " "Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 "
"MHz wide channels can yield higher throughput but can cause more " "MHz wide channels can yield higher throughput but can cause more "
@ -262,7 +345,7 @@ msgid ""
"default option with 20 MHz wide channel." "default option with 20 MHz wide channel."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:46 #: src/common/WiFiSettings/constants.js:49
msgid "" msgid ""
"Enables Wi-Fi for guests, which is separated from LAN network. Devices " "Enables Wi-Fi for guests, which is separated from LAN network. Devices "
"connected to this network are allowed to access the internet, but aren't " "connected to this network are allowed to access the internet, but aren't "
@ -271,7 +354,7 @@ msgid ""
"tab." "tab."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:49 #: src/common/WiFiSettings/constants.js:52
msgid "" msgid ""
"The WPA3 standard is the new most secure encryption method that is " "The WPA3 standard is the new most secure encryption method that is "
"suggested to be used with any device that supports it. The older devices " "suggested to be used with any device that supports it. The older devices "
@ -287,15 +370,15 @@ msgstr ""
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:32 #: src/form/components/SubmitButton.js:34
msgid "Updating" msgid "Updating"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:35 #: src/form/components/SubmitButton.js:37
msgid "Load settings" msgid "Load settings"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:38 #: src/form/components/SubmitButton.js:40
msgid "Save" msgid "Save"
msgstr "" msgstr ""
@ -425,3 +508,18 @@ msgstr ""
#~ "channel." #~ "channel."
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr ""
#~ msgid "Reboot"
#~ msgstr ""
#~ msgid "Warning!"
#~ msgstr ""
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr ""
#~ msgid "Confirm reboot"
#~ msgstr ""

View File

@ -1,13 +1,13 @@
# Norwegian Bokmål (Norway) translations for Foris JS. # Norwegian Bokmål (Norway) translations for Foris JS.
# Copyright (C) 2024 CZ.NIC, z.s.p.o. (https://www.nic.cz/) # Copyright (C) 2025 CZ.NIC, z.s.p.o. (https://www.nic.cz/)
# This file is distributed under the same license as the Foris JS project. # This file is distributed under the same license as the Foris JS project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024. # FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-08-23 14:02+0200\n" "POT-Creation-Date: 2025-04-04 15:14+0200\n"
"PO-Revision-Date: 2023-03-02 11:40+0000\n" "PO-Revision-Date: 2023-03-02 11:40+0000\n"
"Last-Translator: Allan Nordhøy <epost@anotheragency.no>\n" "Last-Translator: Allan Nordhøy <epost@anotheragency.no>\n"
"Language: nb_NO\n" "Language: nb_NO\n"
@ -17,7 +17,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.16.0\n" "Generated-By: Babel 2.17.0\n"
#: src/api/utils.js:61 #: src/api/utils.js:61
msgid "The session is expired. Please log in again." msgid "The session is expired. Please log in again."
@ -36,43 +36,113 @@ msgstr "Fikk ikke svar."
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "Ukjent API-feil." msgstr "Ukjent API-feil."
#: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98 #: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:103
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copied!" msgid "Copied!"
msgstr "Kopiert" msgstr "Kopiert"
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copy" msgid "Copy"
msgstr "Kopier" msgstr "Kopier"
#: src/common/RebootButton.js:27 #: src/bootstrap/NumberInput.js:84 src/bootstrap/NumberInput.js:85
msgid "Increase value. Hint: Hold to increase faster."
msgstr ""
#: src/bootstrap/NumberInput.js:101 src/bootstrap/NumberInput.js:102
msgid "Decrease value. Hint: Hold to decrease faster."
msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:67
#, fuzzy #, fuzzy
msgid "Reboot request failed." msgid "Action successful."
msgstr "Omstart kreves" msgstr "Innstillinger lagret"
#: src/common/RebootButton.js:51 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:76
msgid "Reboot" msgid "Action failed."
msgstr "Start på ny" msgstr ""
#: src/common/RebootButton.js:66 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:147
msgid "Warning!"
msgstr "Advarsel!"
#: src/common/RebootButton.js:68
msgid "Are you sure you want to restart the router?"
msgstr "Er du sikker på at du vil utføre omstart av ruteren?"
#: src/common/RebootButton.js:71
msgid "Cancel" msgid "Cancel"
msgstr "Avbryt" msgstr "Avbryt"
#: src/common/RebootButton.js:73 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:150
msgid "Confirm reboot" #, fuzzy
msgid "Confirm"
msgstr "Bekreft omstart" msgstr "Bekreft omstart"
#: src/common/RichTable/RichTable.js:87
msgid "Search…"
msgstr ""
#: src/common/RichTable/RichTableBody.js:50
msgid "No results."
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:27
msgid "Columns"
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:80
msgid "Reset"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
#, fuzzy #, fuzzy
msgid "An error occurred during resetting Wi-Fi settings." msgid "An error occurred during resetting Wi-Fi settings."
@ -98,12 +168,12 @@ msgstr ""
"gjenoppretter forvalgte verdier." "gjenoppretter forvalgte verdier."
#: src/common/WiFiSettings/WiFiForm.js:97 #: src/common/WiFiSettings/WiFiForm.js:97
#, fuzzy #, fuzzy, python-brace-format
msgid "Wi-Fi ${deviceID + 1}" msgid "Wi-Fi ${deviceID + 1}"
msgstr "Wi-Fi ${deviceID + 1}" msgstr "Wi-Fi ${deviceID + 1}"
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:81 #: src/common/WiFiSettings/WiFiGuestForm.js:80
msgid "Password" msgid "Password"
msgstr "Passord" msgstr "Passord"
@ -111,6 +181,10 @@ msgstr "Passord"
msgid "Hide SSID" msgid "Hide SSID"
msgstr "Skjul SSID" msgstr "Skjul SSID"
#: src/common/WiFiSettings/WiFiForm.js:159
msgid "Band"
msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:186 #: src/common/WiFiSettings/WiFiForm.js:186
#, fuzzy #, fuzzy
msgid "802.11n/ac/ax mode" msgid "802.11n/ac/ax mode"
@ -121,6 +195,7 @@ msgid "Channel"
msgstr "Kanal" msgstr "Kanal"
#: src/common/WiFiSettings/WiFiForm.js:211 #: src/common/WiFiSettings/WiFiForm.js:211
#: src/common/WiFiSettings/WiFiGuestForm.js:95
msgid "Encryption" msgid "Encryption"
msgstr "Kryptering" msgstr "Kryptering"
@ -146,7 +221,7 @@ msgstr "automatisk"
msgid "Custom" msgid "Custom"
msgstr "Tilpasset" msgstr "Tilpasset"
#: src/common/WiFiSettings/WiFiGuestForm.js:43 #: src/common/WiFiSettings/WiFiGuestForm.js:45
#, fuzzy #, fuzzy
msgid "Enable Guest Wi-Fi" msgid "Enable Guest Wi-Fi"
msgstr "Skru på gjestetrådløsnett" msgstr "Skru på gjestetrådløsnett"
@ -161,7 +236,7 @@ msgstr "QR-kode for Wi-Fi"
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "QR-kode for Wi-Fi" msgstr "QR-kode for Wi-Fi"
#: src/common/WiFiSettings/WiFiQRCode.js:93 #: src/common/WiFiSettings/WiFiQRCode.js:102
msgid "Download PDF" msgid "Download PDF"
msgstr "Last ned PDF" msgstr "Last ned PDF"
@ -218,56 +293,66 @@ msgstr "802.11ac - 80 MHz vid kanal"
#: src/common/WiFiSettings/constants.js:15 #: src/common/WiFiSettings/constants.js:15
#, fuzzy #, fuzzy
msgid "802.11ac - 160 MHz wide channel" msgid "802.11ac - 80+80 MHz wide channel"
msgstr "802.11ac - 80 MHz vid kanal" msgstr "802.11ac - 80 MHz vid kanal"
#: src/common/WiFiSettings/constants.js:16 #: src/common/WiFiSettings/constants.js:16
#, fuzzy #, fuzzy
msgid "802.11ac - 160 MHz wide channel"
msgstr "802.11ac - 80 MHz vid kanal"
#: src/common/WiFiSettings/constants.js:17
#, fuzzy
msgid "802.11ax - 20 MHz wide channel" msgid "802.11ax - 20 MHz wide channel"
msgstr "802.11ac - 20 MHz vid kanal" msgstr "802.11ac - 20 MHz vid kanal"
#: src/common/WiFiSettings/constants.js:17 #: src/common/WiFiSettings/constants.js:18
#, fuzzy #, fuzzy
msgid "802.11ax - 40 MHz wide channel" msgid "802.11ax - 40 MHz wide channel"
msgstr "802.11ac - 40 MHz vid kanal" msgstr "802.11ac - 40 MHz vid kanal"
#: src/common/WiFiSettings/constants.js:18 #: src/common/WiFiSettings/constants.js:19
#, fuzzy #, fuzzy
msgid "802.11ax - 80 MHz wide channel" msgid "802.11ax - 80 MHz wide channel"
msgstr "802.11ac - 80 MHz vid kanal" msgstr "802.11ac - 80 MHz vid kanal"
#: src/common/WiFiSettings/constants.js:19 #: src/common/WiFiSettings/constants.js:20
#, fuzzy
msgid "802.11ax - 80+80 MHz wide channel"
msgstr "802.11ac - 80 MHz vid kanal"
#: src/common/WiFiSettings/constants.js:21
#, fuzzy #, fuzzy
msgid "802.11ax - 160 MHz wide channel" msgid "802.11ax - 160 MHz wide channel"
msgstr "802.11ac - 80 MHz vid kanal" msgstr "802.11ac - 80 MHz vid kanal"
#: src/common/WiFiSettings/constants.js:26 #: src/common/WiFiSettings/constants.js:29
msgid "WPA3 only" msgid "WPA3 only"
msgstr "Kun WPA3" msgstr "Kun WPA3"
#: src/common/WiFiSettings/constants.js:27 #: src/common/WiFiSettings/constants.js:30
msgid "WPA3 with WPA2 as fallback (default)" msgid "WPA3 with WPA2 as fallback (default)"
msgstr "WPA3 med WPA2 som tilbakefall (forvalg)" msgstr "WPA3 med WPA2 som tilbakefall (forvalg)"
#: src/common/WiFiSettings/constants.js:28 #: src/common/WiFiSettings/constants.js:31
msgid "WPA2 only" msgid "WPA2 only"
msgstr "Kun WPA2" msgstr "Kun WPA2"
#: src/common/WiFiSettings/constants.js:31 #: src/common/WiFiSettings/constants.js:34
msgid "" msgid ""
"SSID which contains non-standard characters could cause problems on some " "SSID which contains non-standard characters could cause problems on some "
"devices." "devices."
msgstr "SSID som inneholder uvanlige tegn kan forårsake problemer på noen enheter." msgstr "SSID som inneholder uvanlige tegn kan forårsake problemer på noen enheter."
#: src/common/WiFiSettings/constants.js:34 #: src/common/WiFiSettings/constants.js:37
msgid "WPA2/3 pre-shared key, that is required to connect to the network." msgid "WPA2/3 pre-shared key, that is required to connect to the network."
msgstr "WPA2/3 med forhåndsdelt nøkkel, (som kreves for å koble til nettverket)." msgstr "WPA2/3 med forhåndsdelt nøkkel, (som kreves for å koble til nettverket)."
#: src/common/WiFiSettings/constants.js:37 #: src/common/WiFiSettings/constants.js:40
msgid "If set, network is not visible when scanning for available networks." msgid "If set, network is not visible when scanning for available networks."
msgstr "Skjuler nettverket fra nettverkslister." msgstr "Skjuler nettverket fra nettverkslister."
#: src/common/WiFiSettings/constants.js:40 #: src/common/WiFiSettings/constants.js:43
msgid "" msgid ""
"The 2.4 GHz band is more widely supported by clients, but tends to have " "The 2.4 GHz band is more widely supported by clients, but tends to have "
"more interference. The 5 GHz band is a newer standard and may not be " "more interference. The 5 GHz band is a newer standard and may not be "
@ -280,7 +365,7 @@ msgstr ""
"forstyrrelse,\n" "forstyrrelse,\n"
"men signalet er mer utsatt for hindringer innendørs." "men signalet er mer utsatt for hindringer innendørs."
#: src/common/WiFiSettings/constants.js:43 #: src/common/WiFiSettings/constants.js:46
msgid "" msgid ""
"Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 " "Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 "
"MHz wide channels can yield higher throughput but can cause more " "MHz wide channels can yield higher throughput but can cause more "
@ -292,7 +377,7 @@ msgstr ""
"men kan forårsake mer forstyrrelse i nettverket. Hvis du ikke vet hva du " "men kan forårsake mer forstyrrelse i nettverket. Hvis du ikke vet hva du "
"skal velge, bruk forvalget på 20 MHz brede kanaler." "skal velge, bruk forvalget på 20 MHz brede kanaler."
#: src/common/WiFiSettings/constants.js:46 #: src/common/WiFiSettings/constants.js:49
msgid "" msgid ""
"Enables Wi-Fi for guests, which is separated from LAN network. Devices " "Enables Wi-Fi for guests, which is separated from LAN network. Devices "
"connected to this network are allowed to access the internet, but aren't " "connected to this network are allowed to access the internet, but aren't "
@ -306,7 +391,7 @@ msgstr ""
"ruteren.\n" "ruteren.\n"
"Parametere for gjestenettverket kan settes i gjestenettverksfanen." "Parametere for gjestenettverket kan settes i gjestenettverksfanen."
#: src/common/WiFiSettings/constants.js:49 #: src/common/WiFiSettings/constants.js:52
msgid "" msgid ""
"The WPA3 standard is the new most secure encryption method that is " "The WPA3 standard is the new most secure encryption method that is "
"suggested to be used with any device that supports it. The older devices " "suggested to be used with any device that supports it. The older devices "
@ -326,16 +411,16 @@ msgstr "Innstillinger lagret"
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "Endringer du har gjort vil ikke bli lagret. Er du sikker?" msgstr "Endringer du har gjort vil ikke bli lagret. Er du sikker?"
#: src/form/components/SubmitButton.js:32 #: src/form/components/SubmitButton.js:34
#, fuzzy #, fuzzy
msgid "Updating" msgid "Updating"
msgstr "Oppdaterer" msgstr "Oppdaterer"
#: src/form/components/SubmitButton.js:35 #: src/form/components/SubmitButton.js:37
msgid "Load settings" msgid "Load settings"
msgstr "Last inn innstillinger" msgstr "Last inn innstillinger"
#: src/form/components/SubmitButton.js:38 #: src/form/components/SubmitButton.js:40
msgid "Save" msgid "Save"
msgstr "Lagre" msgstr "Lagre"
@ -403,3 +488,15 @@ msgstr "Inneholder ikke en kommainndelt liste med e-postadresser."
#~ "gjeldende Wi-Fi-oppsett og tilbakestiller forvalgte verdier.\n" #~ "gjeldende Wi-Fi-oppsett og tilbakestiller forvalgte verdier.\n"
#~ " " #~ " "
#~ msgid "Reboot request failed."
#~ msgstr "Omstart kreves"
#~ msgid "Reboot"
#~ msgstr "Start på ny"
#~ msgid "Warning!"
#~ msgstr "Advarsel!"
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr "Er du sikker på at du vil utføre omstart av ruteren?"

View File

@ -1,13 +1,13 @@
# Dutch translations for Foris JS. # Dutch translations for Foris JS.
# Copyright (C) 2024 CZ.NIC, z.s.p.o. (https://www.nic.cz/) # Copyright (C) 2025 CZ.NIC, z.s.p.o. (https://www.nic.cz/)
# This file is distributed under the same license as the Foris JS project. # This file is distributed under the same license as the Foris JS project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024. # FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-08-23 14:02+0200\n" "POT-Creation-Date: 2025-04-04 15:14+0200\n"
"PO-Revision-Date: 2024-01-04 21:08+0000\n" "PO-Revision-Date: 2024-01-04 21:08+0000\n"
"Last-Translator: powerburner-nl <peter.mulder.1981@gmail.com>\n" "Last-Translator: powerburner-nl <peter.mulder.1981@gmail.com>\n"
"Language: nl\n" "Language: nl\n"
@ -17,7 +17,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.16.0\n" "Generated-By: Babel 2.17.0\n"
#: src/api/utils.js:61 #: src/api/utils.js:61
msgid "The session is expired. Please log in again." msgid "The session is expired. Please log in again."
@ -35,43 +35,112 @@ msgstr ""
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
#: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98 #: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:103
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copy" msgid "Copy"
msgstr "" msgstr ""
#: src/common/RebootButton.js:27 #: src/bootstrap/NumberInput.js:84 src/bootstrap/NumberInput.js:85
#, fuzzy msgid "Increase value. Hint: Hold to increase faster."
msgid "Reboot request failed." msgstr ""
msgstr "Opnieuw opstarten is vereist"
#: src/common/RebootButton.js:51 #: src/bootstrap/NumberInput.js:101 src/bootstrap/NumberInput.js:102
msgid "Reboot" msgid "Decrease value. Hint: Hold to decrease faster."
msgstr "Opnieuw opstarten" msgstr ""
#: src/common/RebootButton.js:66 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:67
msgid "Warning!" msgid "Action successful."
msgstr "Waarschuwing!" msgstr ""
#: src/common/RebootButton.js:68 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:76
msgid "Are you sure you want to restart the router?" msgid "Action failed."
msgstr "Weet u zeker dat u de router opnieuw wilt opstarten?" msgstr ""
#: src/common/RebootButton.js:71 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:147
msgid "Cancel" msgid "Cancel"
msgstr "Annuleren" msgstr "Annuleren"
#: src/common/RebootButton.js:73 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:150
msgid "Confirm reboot" #, fuzzy
msgid "Confirm"
msgstr "Opnieuw opstarten bevestigen" msgstr "Opnieuw opstarten bevestigen"
#: src/common/RichTable/RichTable.js:87
msgid "Search…"
msgstr ""
#: src/common/RichTable/RichTableBody.js:50
msgid "No results."
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:27
msgid "Columns"
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:80
msgid "Reset"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
msgid "An error occurred during resetting Wi-Fi settings." msgid "An error occurred during resetting Wi-Fi settings."
msgstr "" msgstr ""
@ -93,11 +162,12 @@ msgid ""
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:97 #: src/common/WiFiSettings/WiFiForm.js:97
#, python-brace-format
msgid "Wi-Fi ${deviceID + 1}" msgid "Wi-Fi ${deviceID + 1}"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:81 #: src/common/WiFiSettings/WiFiGuestForm.js:80
msgid "Password" msgid "Password"
msgstr "Wachtwoord" msgstr "Wachtwoord"
@ -105,6 +175,10 @@ msgstr "Wachtwoord"
msgid "Hide SSID" msgid "Hide SSID"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:159
msgid "Band"
msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:186 #: src/common/WiFiSettings/WiFiForm.js:186
msgid "802.11n/ac/ax mode" msgid "802.11n/ac/ax mode"
msgstr "" msgstr ""
@ -114,6 +188,7 @@ msgid "Channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:211 #: src/common/WiFiSettings/WiFiForm.js:211
#: src/common/WiFiSettings/WiFiGuestForm.js:95
msgid "Encryption" msgid "Encryption"
msgstr "" msgstr ""
@ -136,7 +211,7 @@ msgstr "auto"
msgid "Custom" msgid "Custom"
msgstr "auto" msgstr "auto"
#: src/common/WiFiSettings/WiFiGuestForm.js:43 #: src/common/WiFiSettings/WiFiGuestForm.js:45
msgid "Enable Guest Wi-Fi" msgid "Enable Guest Wi-Fi"
msgstr "" msgstr ""
@ -149,7 +224,7 @@ msgstr ""
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiQRCode.js:93 #: src/common/WiFiSettings/WiFiQRCode.js:102
msgid "Download PDF" msgid "Download PDF"
msgstr "" msgstr ""
@ -203,52 +278,60 @@ msgid "802.11ac - 80 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:15 #: src/common/WiFiSettings/constants.js:15
msgid "802.11ac - 160 MHz wide channel" msgid "802.11ac - 80+80 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:16 #: src/common/WiFiSettings/constants.js:16
msgid "802.11ax - 20 MHz wide channel" msgid "802.11ac - 160 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:17 #: src/common/WiFiSettings/constants.js:17
msgid "802.11ax - 40 MHz wide channel" msgid "802.11ax - 20 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:18 #: src/common/WiFiSettings/constants.js:18
msgid "802.11ax - 80 MHz wide channel" msgid "802.11ax - 40 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:19 #: src/common/WiFiSettings/constants.js:19
msgid "802.11ax - 80 MHz wide channel"
msgstr ""
#: src/common/WiFiSettings/constants.js:20
msgid "802.11ax - 80+80 MHz wide channel"
msgstr ""
#: src/common/WiFiSettings/constants.js:21
msgid "802.11ax - 160 MHz wide channel" msgid "802.11ax - 160 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:26 #: src/common/WiFiSettings/constants.js:29
msgid "WPA3 only" msgid "WPA3 only"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:27 #: src/common/WiFiSettings/constants.js:30
msgid "WPA3 with WPA2 as fallback (default)" msgid "WPA3 with WPA2 as fallback (default)"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:28 #: src/common/WiFiSettings/constants.js:31
msgid "WPA2 only" msgid "WPA2 only"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:31 #: src/common/WiFiSettings/constants.js:34
msgid "" msgid ""
"SSID which contains non-standard characters could cause problems on some " "SSID which contains non-standard characters could cause problems on some "
"devices." "devices."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:34 #: src/common/WiFiSettings/constants.js:37
msgid "WPA2/3 pre-shared key, that is required to connect to the network." msgid "WPA2/3 pre-shared key, that is required to connect to the network."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:37 #: src/common/WiFiSettings/constants.js:40
msgid "If set, network is not visible when scanning for available networks." msgid "If set, network is not visible when scanning for available networks."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:40 #: src/common/WiFiSettings/constants.js:43
msgid "" msgid ""
"The 2.4 GHz band is more widely supported by clients, but tends to have " "The 2.4 GHz band is more widely supported by clients, but tends to have "
"more interference. The 5 GHz band is a newer standard and may not be " "more interference. The 5 GHz band is a newer standard and may not be "
@ -256,7 +339,7 @@ msgid ""
"signal does not carry so well indoors." "signal does not carry so well indoors."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:43 #: src/common/WiFiSettings/constants.js:46
msgid "" msgid ""
"Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 " "Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 "
"MHz wide channels can yield higher throughput but can cause more " "MHz wide channels can yield higher throughput but can cause more "
@ -264,7 +347,7 @@ msgid ""
"default option with 20 MHz wide channel." "default option with 20 MHz wide channel."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:46 #: src/common/WiFiSettings/constants.js:49
msgid "" msgid ""
"Enables Wi-Fi for guests, which is separated from LAN network. Devices " "Enables Wi-Fi for guests, which is separated from LAN network. Devices "
"connected to this network are allowed to access the internet, but aren't " "connected to this network are allowed to access the internet, but aren't "
@ -273,7 +356,7 @@ msgid ""
"tab." "tab."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:49 #: src/common/WiFiSettings/constants.js:52
msgid "" msgid ""
"The WPA3 standard is the new most secure encryption method that is " "The WPA3 standard is the new most secure encryption method that is "
"suggested to be used with any device that supports it. The older devices " "suggested to be used with any device that supports it. The older devices "
@ -289,15 +372,15 @@ msgstr ""
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:32 #: src/form/components/SubmitButton.js:34
msgid "Updating" msgid "Updating"
msgstr "Bijwerken" msgstr "Bijwerken"
#: src/form/components/SubmitButton.js:35 #: src/form/components/SubmitButton.js:37
msgid "Load settings" msgid "Load settings"
msgstr "Instellingen laden" msgstr "Instellingen laden"
#: src/form/components/SubmitButton.js:38 #: src/form/components/SubmitButton.js:40
msgid "Save" msgid "Save"
msgstr "Opslaan" msgstr "Opslaan"
@ -428,3 +511,15 @@ msgstr "Bevat geen lijst met e-mails gescheiden door komma's."
#~ "channel." #~ "channel."
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr "Opnieuw opstarten is vereist"
#~ msgid "Reboot"
#~ msgstr "Opnieuw opstarten"
#~ msgid "Warning!"
#~ msgstr "Waarschuwing!"
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr "Weet u zeker dat u de router opnieuw wilt opstarten?"

View File

@ -1,13 +1,13 @@
# Polish translations for Foris JS. # Polish translations for Foris JS.
# Copyright (C) 2024 CZ.NIC, z.s.p.o. (https://www.nic.cz/) # Copyright (C) 2025 CZ.NIC, z.s.p.o. (https://www.nic.cz/)
# This file is distributed under the same license as the Foris JS project. # This file is distributed under the same license as the Foris JS project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024. # FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-08-23 14:02+0200\n" "POT-Creation-Date: 2025-04-04 15:14+0200\n"
"PO-Revision-Date: 2023-03-07 16:37+0000\n" "PO-Revision-Date: 2023-03-07 16:37+0000\n"
"Last-Translator: Arusekk <arek_koz@o2.pl>\n" "Last-Translator: Arusekk <arek_koz@o2.pl>\n"
"Language: pl\n" "Language: pl\n"
@ -18,7 +18,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.16.0\n" "Generated-By: Babel 2.17.0\n"
#: src/api/utils.js:61 #: src/api/utils.js:61
msgid "The session is expired. Please log in again." msgid "The session is expired. Please log in again."
@ -36,42 +36,113 @@ msgstr "Brak odpowiedzi."
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "Wystąpił nieznany błąd API." msgstr "Wystąpił nieznany błąd API."
#: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98 #: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:103
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copy" msgid "Copy"
msgstr "" msgstr ""
#: src/common/RebootButton.js:27 #: src/bootstrap/NumberInput.js:84 src/bootstrap/NumberInput.js:85
msgid "Reboot request failed." msgid "Increase value. Hint: Hold to increase faster."
msgstr "" msgstr ""
#: src/common/RebootButton.js:51 #: src/bootstrap/NumberInput.js:101 src/bootstrap/NumberInput.js:102
msgid "Reboot" msgid "Decrease value. Hint: Hold to decrease faster."
msgstr "Restart" msgstr ""
#: src/common/RebootButton.js:66 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:67
msgid "Warning!" #, fuzzy
msgstr "Ostrzeżenie!" msgid "Action successful."
msgstr "Ustawienia zostały zapisane"
#: src/common/RebootButton.js:68 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:76
msgid "Are you sure you want to restart the router?" msgid "Action failed."
msgstr "Czy na pewno zrestartować router?" msgstr ""
#: src/common/RebootButton.js:71 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:147
msgid "Cancel" msgid "Cancel"
msgstr "Anuluj" msgstr "Anuluj"
#: src/common/RebootButton.js:73 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:150
msgid "Confirm reboot" #, fuzzy
msgid "Confirm"
msgstr "Potwierdź restart" msgstr "Potwierdź restart"
#: src/common/RichTable/RichTable.js:87
msgid "Search…"
msgstr ""
#: src/common/RichTable/RichTableBody.js:50
msgid "No results."
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:27
msgid "Columns"
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:80
msgid "Reset"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
msgid "An error occurred during resetting Wi-Fi settings." msgid "An error occurred during resetting Wi-Fi settings."
msgstr "" msgstr ""
@ -93,11 +164,12 @@ msgid ""
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:97 #: src/common/WiFiSettings/WiFiForm.js:97
#, python-brace-format
msgid "Wi-Fi ${deviceID + 1}" msgid "Wi-Fi ${deviceID + 1}"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:81 #: src/common/WiFiSettings/WiFiGuestForm.js:80
msgid "Password" msgid "Password"
msgstr "Hasło" msgstr "Hasło"
@ -105,6 +177,10 @@ msgstr "Hasło"
msgid "Hide SSID" msgid "Hide SSID"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:159
msgid "Band"
msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:186 #: src/common/WiFiSettings/WiFiForm.js:186
msgid "802.11n/ac/ax mode" msgid "802.11n/ac/ax mode"
msgstr "" msgstr ""
@ -114,6 +190,7 @@ msgid "Channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:211 #: src/common/WiFiSettings/WiFiForm.js:211
#: src/common/WiFiSettings/WiFiGuestForm.js:95
msgid "Encryption" msgid "Encryption"
msgstr "" msgstr ""
@ -135,7 +212,7 @@ msgstr ""
msgid "Custom" msgid "Custom"
msgstr "Własny" msgstr "Własny"
#: src/common/WiFiSettings/WiFiGuestForm.js:43 #: src/common/WiFiSettings/WiFiGuestForm.js:45
msgid "Enable Guest Wi-Fi" msgid "Enable Guest Wi-Fi"
msgstr "" msgstr ""
@ -148,7 +225,7 @@ msgstr ""
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiQRCode.js:93 #: src/common/WiFiSettings/WiFiQRCode.js:102
msgid "Download PDF" msgid "Download PDF"
msgstr "" msgstr ""
@ -202,52 +279,60 @@ msgid "802.11ac - 80 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:15 #: src/common/WiFiSettings/constants.js:15
msgid "802.11ac - 160 MHz wide channel" msgid "802.11ac - 80+80 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:16 #: src/common/WiFiSettings/constants.js:16
msgid "802.11ax - 20 MHz wide channel" msgid "802.11ac - 160 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:17 #: src/common/WiFiSettings/constants.js:17
msgid "802.11ax - 40 MHz wide channel" msgid "802.11ax - 20 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:18 #: src/common/WiFiSettings/constants.js:18
msgid "802.11ax - 80 MHz wide channel" msgid "802.11ax - 40 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:19 #: src/common/WiFiSettings/constants.js:19
msgid "802.11ax - 80 MHz wide channel"
msgstr ""
#: src/common/WiFiSettings/constants.js:20
msgid "802.11ax - 80+80 MHz wide channel"
msgstr ""
#: src/common/WiFiSettings/constants.js:21
msgid "802.11ax - 160 MHz wide channel" msgid "802.11ax - 160 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:26 #: src/common/WiFiSettings/constants.js:29
msgid "WPA3 only" msgid "WPA3 only"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:27 #: src/common/WiFiSettings/constants.js:30
msgid "WPA3 with WPA2 as fallback (default)" msgid "WPA3 with WPA2 as fallback (default)"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:28 #: src/common/WiFiSettings/constants.js:31
msgid "WPA2 only" msgid "WPA2 only"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:31 #: src/common/WiFiSettings/constants.js:34
msgid "" msgid ""
"SSID which contains non-standard characters could cause problems on some " "SSID which contains non-standard characters could cause problems on some "
"devices." "devices."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:34 #: src/common/WiFiSettings/constants.js:37
msgid "WPA2/3 pre-shared key, that is required to connect to the network." msgid "WPA2/3 pre-shared key, that is required to connect to the network."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:37 #: src/common/WiFiSettings/constants.js:40
msgid "If set, network is not visible when scanning for available networks." msgid "If set, network is not visible when scanning for available networks."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:40 #: src/common/WiFiSettings/constants.js:43
msgid "" msgid ""
"The 2.4 GHz band is more widely supported by clients, but tends to have " "The 2.4 GHz band is more widely supported by clients, but tends to have "
"more interference. The 5 GHz band is a newer standard and may not be " "more interference. The 5 GHz band is a newer standard and may not be "
@ -255,7 +340,7 @@ msgid ""
"signal does not carry so well indoors." "signal does not carry so well indoors."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:43 #: src/common/WiFiSettings/constants.js:46
msgid "" msgid ""
"Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 " "Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 "
"MHz wide channels can yield higher throughput but can cause more " "MHz wide channels can yield higher throughput but can cause more "
@ -263,7 +348,7 @@ msgid ""
"default option with 20 MHz wide channel." "default option with 20 MHz wide channel."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:46 #: src/common/WiFiSettings/constants.js:49
msgid "" msgid ""
"Enables Wi-Fi for guests, which is separated from LAN network. Devices " "Enables Wi-Fi for guests, which is separated from LAN network. Devices "
"connected to this network are allowed to access the internet, but aren't " "connected to this network are allowed to access the internet, but aren't "
@ -272,7 +357,7 @@ msgid ""
"tab." "tab."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:49 #: src/common/WiFiSettings/constants.js:52
msgid "" msgid ""
"The WPA3 standard is the new most secure encryption method that is " "The WPA3 standard is the new most secure encryption method that is "
"suggested to be used with any device that supports it. The older devices " "suggested to be used with any device that supports it. The older devices "
@ -290,15 +375,15 @@ msgstr ""
"Wprowadzone zmiany mogą nie zostać zapisane. Jesteś pewny, że chcesz " "Wprowadzone zmiany mogą nie zostać zapisane. Jesteś pewny, że chcesz "
"wyjść?" "wyjść?"
#: src/form/components/SubmitButton.js:32 #: src/form/components/SubmitButton.js:34
msgid "Updating" msgid "Updating"
msgstr "Aktualizacja" msgstr "Aktualizacja"
#: src/form/components/SubmitButton.js:35 #: src/form/components/SubmitButton.js:37
msgid "Load settings" msgid "Load settings"
msgstr "Wczytaj ustawienia" msgstr "Wczytaj ustawienia"
#: src/form/components/SubmitButton.js:38 #: src/form/components/SubmitButton.js:40
msgid "Save" msgid "Save"
msgstr "Zapisz" msgstr "Zapisz"
@ -426,3 +511,15 @@ msgstr "Nie zawiera listy e-maili oddzielonych przecinkami."
#~ "channel." #~ "channel."
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr ""
#~ msgid "Reboot"
#~ msgstr "Restart"
#~ msgid "Warning!"
#~ msgstr "Ostrzeżenie!"
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr "Czy na pewno zrestartować router?"

View File

@ -1,13 +1,13 @@
# Portuguese (Brazil) translations for Foris JS. # Portuguese (Brazil) translations for Foris JS.
# Copyright (C) 2024 CZ.NIC, z.s.p.o. (https://www.nic.cz/) # Copyright (C) 2025 CZ.NIC, z.s.p.o. (https://www.nic.cz/)
# This file is distributed under the same license as the Foris JS project. # This file is distributed under the same license as the Foris JS project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024. # FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-08-23 14:02+0200\n" "POT-Creation-Date: 2025-04-04 15:14+0200\n"
"PO-Revision-Date: 2021-12-21 12:52+0000\n" "PO-Revision-Date: 2021-12-21 12:52+0000\n"
"Last-Translator: c10l <weblate.org@a.c10l.cc>\n" "Last-Translator: c10l <weblate.org@a.c10l.cc>\n"
"Language: pt_BR\n" "Language: pt_BR\n"
@ -17,7 +17,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.16.0\n" "Generated-By: Babel 2.17.0\n"
#: src/api/utils.js:61 #: src/api/utils.js:61
msgid "The session is expired. Please log in again." msgid "The session is expired. Please log in again."
@ -35,42 +35,112 @@ msgstr ""
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
#: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98 #: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:103
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copy" msgid "Copy"
msgstr "" msgstr ""
#: src/common/RebootButton.js:27 #: src/bootstrap/NumberInput.js:84 src/bootstrap/NumberInput.js:85
msgid "Reboot request failed." msgid "Increase value. Hint: Hold to increase faster."
msgstr "" msgstr ""
#: src/common/RebootButton.js:51 #: src/bootstrap/NumberInput.js:101 src/bootstrap/NumberInput.js:102
msgid "Reboot" msgid "Decrease value. Hint: Hold to decrease faster."
msgstr "Reinício" msgstr ""
#: src/common/RebootButton.js:66 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:67
msgid "Warning!" msgid "Action successful."
msgstr "Atenção!" msgstr ""
#: src/common/RebootButton.js:68 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:76
msgid "Are you sure you want to restart the router?" msgid "Action failed."
msgstr "Você tem certeza de que quer reiniciar o roteador?" msgstr ""
#: src/common/RebootButton.js:71 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:147
msgid "Cancel" msgid "Cancel"
msgstr "Cancelar" msgstr "Cancelar"
#: src/common/RebootButton.js:73 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:150
msgid "Confirm reboot" #, fuzzy
msgid "Confirm"
msgstr "Confirma reinício" msgstr "Confirma reinício"
#: src/common/RichTable/RichTable.js:87
msgid "Search…"
msgstr ""
#: src/common/RichTable/RichTableBody.js:50
msgid "No results."
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:27
msgid "Columns"
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:80
msgid "Reset"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
msgid "An error occurred during resetting Wi-Fi settings." msgid "An error occurred during resetting Wi-Fi settings."
msgstr "" msgstr ""
@ -92,11 +162,12 @@ msgid ""
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:97 #: src/common/WiFiSettings/WiFiForm.js:97
#, python-brace-format
msgid "Wi-Fi ${deviceID + 1}" msgid "Wi-Fi ${deviceID + 1}"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:81 #: src/common/WiFiSettings/WiFiGuestForm.js:80
msgid "Password" msgid "Password"
msgstr "" msgstr ""
@ -104,6 +175,10 @@ msgstr ""
msgid "Hide SSID" msgid "Hide SSID"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:159
msgid "Band"
msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:186 #: src/common/WiFiSettings/WiFiForm.js:186
msgid "802.11n/ac/ax mode" msgid "802.11n/ac/ax mode"
msgstr "" msgstr ""
@ -113,6 +188,7 @@ msgid "Channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:211 #: src/common/WiFiSettings/WiFiForm.js:211
#: src/common/WiFiSettings/WiFiGuestForm.js:95
msgid "Encryption" msgid "Encryption"
msgstr "" msgstr ""
@ -134,7 +210,7 @@ msgstr ""
msgid "Custom" msgid "Custom"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiGuestForm.js:43 #: src/common/WiFiSettings/WiFiGuestForm.js:45
msgid "Enable Guest Wi-Fi" msgid "Enable Guest Wi-Fi"
msgstr "" msgstr ""
@ -147,7 +223,7 @@ msgstr ""
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiQRCode.js:93 #: src/common/WiFiSettings/WiFiQRCode.js:102
msgid "Download PDF" msgid "Download PDF"
msgstr "" msgstr ""
@ -201,52 +277,60 @@ msgid "802.11ac - 80 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:15 #: src/common/WiFiSettings/constants.js:15
msgid "802.11ac - 160 MHz wide channel" msgid "802.11ac - 80+80 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:16 #: src/common/WiFiSettings/constants.js:16
msgid "802.11ax - 20 MHz wide channel" msgid "802.11ac - 160 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:17 #: src/common/WiFiSettings/constants.js:17
msgid "802.11ax - 40 MHz wide channel" msgid "802.11ax - 20 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:18 #: src/common/WiFiSettings/constants.js:18
msgid "802.11ax - 80 MHz wide channel" msgid "802.11ax - 40 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:19 #: src/common/WiFiSettings/constants.js:19
msgid "802.11ax - 80 MHz wide channel"
msgstr ""
#: src/common/WiFiSettings/constants.js:20
msgid "802.11ax - 80+80 MHz wide channel"
msgstr ""
#: src/common/WiFiSettings/constants.js:21
msgid "802.11ax - 160 MHz wide channel" msgid "802.11ax - 160 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:26 #: src/common/WiFiSettings/constants.js:29
msgid "WPA3 only" msgid "WPA3 only"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:27 #: src/common/WiFiSettings/constants.js:30
msgid "WPA3 with WPA2 as fallback (default)" msgid "WPA3 with WPA2 as fallback (default)"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:28 #: src/common/WiFiSettings/constants.js:31
msgid "WPA2 only" msgid "WPA2 only"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:31 #: src/common/WiFiSettings/constants.js:34
msgid "" msgid ""
"SSID which contains non-standard characters could cause problems on some " "SSID which contains non-standard characters could cause problems on some "
"devices." "devices."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:34 #: src/common/WiFiSettings/constants.js:37
msgid "WPA2/3 pre-shared key, that is required to connect to the network." msgid "WPA2/3 pre-shared key, that is required to connect to the network."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:37 #: src/common/WiFiSettings/constants.js:40
msgid "If set, network is not visible when scanning for available networks." msgid "If set, network is not visible when scanning for available networks."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:40 #: src/common/WiFiSettings/constants.js:43
msgid "" msgid ""
"The 2.4 GHz band is more widely supported by clients, but tends to have " "The 2.4 GHz band is more widely supported by clients, but tends to have "
"more interference. The 5 GHz band is a newer standard and may not be " "more interference. The 5 GHz band is a newer standard and may not be "
@ -254,7 +338,7 @@ msgid ""
"signal does not carry so well indoors." "signal does not carry so well indoors."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:43 #: src/common/WiFiSettings/constants.js:46
msgid "" msgid ""
"Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 " "Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 "
"MHz wide channels can yield higher throughput but can cause more " "MHz wide channels can yield higher throughput but can cause more "
@ -262,7 +346,7 @@ msgid ""
"default option with 20 MHz wide channel." "default option with 20 MHz wide channel."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:46 #: src/common/WiFiSettings/constants.js:49
msgid "" msgid ""
"Enables Wi-Fi for guests, which is separated from LAN network. Devices " "Enables Wi-Fi for guests, which is separated from LAN network. Devices "
"connected to this network are allowed to access the internet, but aren't " "connected to this network are allowed to access the internet, but aren't "
@ -271,7 +355,7 @@ msgid ""
"tab." "tab."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:49 #: src/common/WiFiSettings/constants.js:52
msgid "" msgid ""
"The WPA3 standard is the new most secure encryption method that is " "The WPA3 standard is the new most secure encryption method that is "
"suggested to be used with any device that supports it. The older devices " "suggested to be used with any device that supports it. The older devices "
@ -287,15 +371,15 @@ msgstr ""
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:32 #: src/form/components/SubmitButton.js:34
msgid "Updating" msgid "Updating"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:35 #: src/form/components/SubmitButton.js:37
msgid "Load settings" msgid "Load settings"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:38 #: src/form/components/SubmitButton.js:40
msgid "Save" msgid "Save"
msgstr "" msgstr ""
@ -403,3 +487,15 @@ msgstr ""
#~ "channel." #~ "channel."
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr ""
#~ msgid "Reboot"
#~ msgstr "Reinício"
#~ msgid "Warning!"
#~ msgstr "Atenção!"
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr "Você tem certeza de que quer reiniciar o roteador?"

View File

@ -1,13 +1,13 @@
# Romanian translations for Foris JS. # Romanian translations for Foris JS.
# Copyright (C) 2024 CZ.NIC, z.s.p.o. (https://www.nic.cz/) # Copyright (C) 2025 CZ.NIC, z.s.p.o. (https://www.nic.cz/)
# This file is distributed under the same license as the Foris JS project. # This file is distributed under the same license as the Foris JS project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024. # FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-08-23 14:02+0200\n" "POT-Creation-Date: 2025-04-04 15:14+0200\n"
"PO-Revision-Date: 2019-02-19 13:35+0100\n" "PO-Revision-Date: 2019-02-19 13:35+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: ro\n" "Language: ro\n"
@ -17,7 +17,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.16.0\n" "Generated-By: Babel 2.17.0\n"
#: src/api/utils.js:61 #: src/api/utils.js:61
msgid "The session is expired. Please log in again." msgid "The session is expired. Please log in again."
@ -35,40 +35,109 @@ msgstr ""
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "" msgstr ""
#: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98 #: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:103
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copy" msgid "Copy"
msgstr "" msgstr ""
#: src/common/RebootButton.js:27 #: src/bootstrap/NumberInput.js:84 src/bootstrap/NumberInput.js:85
msgid "Reboot request failed." msgid "Increase value. Hint: Hold to increase faster."
msgstr "" msgstr ""
#: src/common/RebootButton.js:51 #: src/bootstrap/NumberInput.js:101 src/bootstrap/NumberInput.js:102
msgid "Reboot" msgid "Decrease value. Hint: Hold to decrease faster."
msgstr "" msgstr ""
#: src/common/RebootButton.js:66 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:67
msgid "Warning!" msgid "Action successful."
msgstr "" msgstr ""
#: src/common/RebootButton.js:68 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:76
msgid "Are you sure you want to restart the router?" msgid "Action failed."
msgstr "" msgstr ""
#: src/common/RebootButton.js:71 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:147
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
#: src/common/RebootButton.js:73 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:150
msgid "Confirm reboot" msgid "Confirm"
msgstr ""
#: src/common/RichTable/RichTable.js:87
msgid "Search…"
msgstr ""
#: src/common/RichTable/RichTableBody.js:50
msgid "No results."
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:27
msgid "Columns"
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:80
msgid "Reset"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr "" msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
@ -92,11 +161,12 @@ msgid ""
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:97 #: src/common/WiFiSettings/WiFiForm.js:97
#, python-brace-format
msgid "Wi-Fi ${deviceID + 1}" msgid "Wi-Fi ${deviceID + 1}"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:81 #: src/common/WiFiSettings/WiFiGuestForm.js:80
msgid "Password" msgid "Password"
msgstr "" msgstr ""
@ -104,6 +174,10 @@ msgstr ""
msgid "Hide SSID" msgid "Hide SSID"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:159
msgid "Band"
msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:186 #: src/common/WiFiSettings/WiFiForm.js:186
msgid "802.11n/ac/ax mode" msgid "802.11n/ac/ax mode"
msgstr "" msgstr ""
@ -113,6 +187,7 @@ msgid "Channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:211 #: src/common/WiFiSettings/WiFiForm.js:211
#: src/common/WiFiSettings/WiFiGuestForm.js:95
msgid "Encryption" msgid "Encryption"
msgstr "" msgstr ""
@ -134,7 +209,7 @@ msgstr ""
msgid "Custom" msgid "Custom"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiGuestForm.js:43 #: src/common/WiFiSettings/WiFiGuestForm.js:45
msgid "Enable Guest Wi-Fi" msgid "Enable Guest Wi-Fi"
msgstr "" msgstr ""
@ -147,7 +222,7 @@ msgstr ""
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "" msgstr ""
#: src/common/WiFiSettings/WiFiQRCode.js:93 #: src/common/WiFiSettings/WiFiQRCode.js:102
msgid "Download PDF" msgid "Download PDF"
msgstr "" msgstr ""
@ -201,52 +276,60 @@ msgid "802.11ac - 80 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:15 #: src/common/WiFiSettings/constants.js:15
msgid "802.11ac - 160 MHz wide channel" msgid "802.11ac - 80+80 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:16 #: src/common/WiFiSettings/constants.js:16
msgid "802.11ax - 20 MHz wide channel" msgid "802.11ac - 160 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:17 #: src/common/WiFiSettings/constants.js:17
msgid "802.11ax - 40 MHz wide channel" msgid "802.11ax - 20 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:18 #: src/common/WiFiSettings/constants.js:18
msgid "802.11ax - 80 MHz wide channel" msgid "802.11ax - 40 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:19 #: src/common/WiFiSettings/constants.js:19
msgid "802.11ax - 80 MHz wide channel"
msgstr ""
#: src/common/WiFiSettings/constants.js:20
msgid "802.11ax - 80+80 MHz wide channel"
msgstr ""
#: src/common/WiFiSettings/constants.js:21
msgid "802.11ax - 160 MHz wide channel" msgid "802.11ax - 160 MHz wide channel"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:26 #: src/common/WiFiSettings/constants.js:29
msgid "WPA3 only" msgid "WPA3 only"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:27 #: src/common/WiFiSettings/constants.js:30
msgid "WPA3 with WPA2 as fallback (default)" msgid "WPA3 with WPA2 as fallback (default)"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:28 #: src/common/WiFiSettings/constants.js:31
msgid "WPA2 only" msgid "WPA2 only"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:31 #: src/common/WiFiSettings/constants.js:34
msgid "" msgid ""
"SSID which contains non-standard characters could cause problems on some " "SSID which contains non-standard characters could cause problems on some "
"devices." "devices."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:34 #: src/common/WiFiSettings/constants.js:37
msgid "WPA2/3 pre-shared key, that is required to connect to the network." msgid "WPA2/3 pre-shared key, that is required to connect to the network."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:37 #: src/common/WiFiSettings/constants.js:40
msgid "If set, network is not visible when scanning for available networks." msgid "If set, network is not visible when scanning for available networks."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:40 #: src/common/WiFiSettings/constants.js:43
msgid "" msgid ""
"The 2.4 GHz band is more widely supported by clients, but tends to have " "The 2.4 GHz band is more widely supported by clients, but tends to have "
"more interference. The 5 GHz band is a newer standard and may not be " "more interference. The 5 GHz band is a newer standard and may not be "
@ -254,7 +337,7 @@ msgid ""
"signal does not carry so well indoors." "signal does not carry so well indoors."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:43 #: src/common/WiFiSettings/constants.js:46
msgid "" msgid ""
"Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 " "Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 "
"MHz wide channels can yield higher throughput but can cause more " "MHz wide channels can yield higher throughput but can cause more "
@ -262,7 +345,7 @@ msgid ""
"default option with 20 MHz wide channel." "default option with 20 MHz wide channel."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:46 #: src/common/WiFiSettings/constants.js:49
msgid "" msgid ""
"Enables Wi-Fi for guests, which is separated from LAN network. Devices " "Enables Wi-Fi for guests, which is separated from LAN network. Devices "
"connected to this network are allowed to access the internet, but aren't " "connected to this network are allowed to access the internet, but aren't "
@ -271,7 +354,7 @@ msgid ""
"tab." "tab."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:49 #: src/common/WiFiSettings/constants.js:52
msgid "" msgid ""
"The WPA3 standard is the new most secure encryption method that is " "The WPA3 standard is the new most secure encryption method that is "
"suggested to be used with any device that supports it. The older devices " "suggested to be used with any device that supports it. The older devices "
@ -287,15 +370,15 @@ msgstr ""
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:32 #: src/form/components/SubmitButton.js:34
msgid "Updating" msgid "Updating"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:35 #: src/form/components/SubmitButton.js:37
msgid "Load settings" msgid "Load settings"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:38 #: src/form/components/SubmitButton.js:40
msgid "Save" msgid "Save"
msgstr "" msgstr ""
@ -425,3 +508,18 @@ msgstr ""
#~ "channel." #~ "channel."
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr ""
#~ msgid "Reboot"
#~ msgstr ""
#~ msgid "Warning!"
#~ msgstr ""
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr ""
#~ msgid "Confirm reboot"
#~ msgstr ""

View File

@ -1,13 +1,13 @@
# Russian translations for Foris JS. # Russian translations for Foris JS.
# Copyright (C) 2024 CZ.NIC, z.s.p.o. (https://www.nic.cz/) # Copyright (C) 2025 CZ.NIC, z.s.p.o. (https://www.nic.cz/)
# This file is distributed under the same license as the Foris JS project. # This file is distributed under the same license as the Foris JS project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024. # FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-08-23 14:02+0200\n" "POT-Creation-Date: 2025-04-04 15:14+0200\n"
"PO-Revision-Date: 2022-12-07 12:47+0000\n" "PO-Revision-Date: 2022-12-07 12:47+0000\n"
"Last-Translator: Алексей Леньшин <alenshin@gmail.com>\n" "Last-Translator: Алексей Леньшин <alenshin@gmail.com>\n"
"Language: ru\n" "Language: ru\n"
@ -18,7 +18,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.16.0\n" "Generated-By: Babel 2.17.0\n"
#: src/api/utils.js:61 #: src/api/utils.js:61
msgid "The session is expired. Please log in again." msgid "The session is expired. Please log in again."
@ -36,42 +36,113 @@ msgstr "Ответ не получен."
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "Неизвестная ошибка программного интерфейса приложения." msgstr "Неизвестная ошибка программного интерфейса приложения."
#: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98 #: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:103
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copied!" msgid "Copied!"
msgstr "Скопировано!" msgstr "Скопировано!"
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copy" msgid "Copy"
msgstr "Копировать" msgstr "Копировать"
#: src/common/RebootButton.js:27 #: src/bootstrap/NumberInput.js:84 src/bootstrap/NumberInput.js:85
msgid "Reboot request failed." msgid "Increase value. Hint: Hold to increase faster."
msgstr "Запрос на перезагрузку не выполнен." msgstr ""
#: src/common/RebootButton.js:51 #: src/bootstrap/NumberInput.js:101 src/bootstrap/NumberInput.js:102
msgid "Reboot" msgid "Decrease value. Hint: Hold to decrease faster."
msgstr "Перезагрузка" msgstr ""
#: src/common/RebootButton.js:66 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:67
msgid "Warning!" #, fuzzy
msgstr "Предупреждение!" msgid "Action successful."
msgstr "Настройки были успешно сохранены"
#: src/common/RebootButton.js:68 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:76
msgid "Are you sure you want to restart the router?" msgid "Action failed."
msgstr "Вы уверены, что хотите перезагрузить маршрутизатор?" msgstr ""
#: src/common/RebootButton.js:71 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:147
msgid "Cancel" msgid "Cancel"
msgstr "Отмена" msgstr "Отмена"
#: src/common/RebootButton.js:73 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:150
msgid "Confirm reboot" #, fuzzy
msgid "Confirm"
msgstr "Подтвердите перезагрузку" msgstr "Подтвердите перезагрузку"
#: src/common/RichTable/RichTable.js:87
msgid "Search…"
msgstr ""
#: src/common/RichTable/RichTableBody.js:50
msgid "No results."
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:27
msgid "Columns"
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:80
msgid "Reset"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
msgid "An error occurred during resetting Wi-Fi settings." msgid "An error occurred during resetting Wi-Fi settings."
msgstr "При сбросе настроек Wi-Fi произошла ошибка." msgstr "При сбросе настроек Wi-Fi произошла ошибка."
@ -96,11 +167,12 @@ msgstr ""
"текущая конфигурация Wi-Fi и восстановлены значения по умолчанию." "текущая конфигурация Wi-Fi и восстановлены значения по умолчанию."
#: src/common/WiFiSettings/WiFiForm.js:97 #: src/common/WiFiSettings/WiFiForm.js:97
#, python-brace-format
msgid "Wi-Fi ${deviceID + 1}" msgid "Wi-Fi ${deviceID + 1}"
msgstr "Wi-Fi ${deviceID + 1}" msgstr "Wi-Fi ${deviceID + 1}"
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:81 #: src/common/WiFiSettings/WiFiGuestForm.js:80
msgid "Password" msgid "Password"
msgstr "Пароль" msgstr "Пароль"
@ -108,6 +180,10 @@ msgstr "Пароль"
msgid "Hide SSID" msgid "Hide SSID"
msgstr "Скрыть SSID" msgstr "Скрыть SSID"
#: src/common/WiFiSettings/WiFiForm.js:159
msgid "Band"
msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:186 #: src/common/WiFiSettings/WiFiForm.js:186
msgid "802.11n/ac/ax mode" msgid "802.11n/ac/ax mode"
msgstr "Режим 802.11n/ac/ax" msgstr "Режим 802.11n/ac/ax"
@ -117,6 +193,7 @@ msgid "Channel"
msgstr "Канал" msgstr "Канал"
#: src/common/WiFiSettings/WiFiForm.js:211 #: src/common/WiFiSettings/WiFiForm.js:211
#: src/common/WiFiSettings/WiFiGuestForm.js:95
msgid "Encryption" msgid "Encryption"
msgstr "Шифрование" msgstr "Шифрование"
@ -140,7 +217,7 @@ msgstr "авто"
msgid "Custom" msgid "Custom"
msgstr "Ручная настройка" msgstr "Ручная настройка"
#: src/common/WiFiSettings/WiFiGuestForm.js:43 #: src/common/WiFiSettings/WiFiGuestForm.js:45
msgid "Enable Guest Wi-Fi" msgid "Enable Guest Wi-Fi"
msgstr "Включить гостевой Wi-Fi" msgstr "Включить гостевой Wi-Fi"
@ -154,7 +231,7 @@ msgstr "QR-код Wi-Fi"
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "QR-код Wi-Fi" msgstr "QR-код Wi-Fi"
#: src/common/WiFiSettings/WiFiQRCode.js:93 #: src/common/WiFiSettings/WiFiQRCode.js:102
msgid "Download PDF" msgid "Download PDF"
msgstr "Скачать PDF" msgstr "Скачать PDF"
@ -208,38 +285,48 @@ msgid "802.11ac - 80 MHz wide channel"
msgstr "802.11ac - ширина канала 80 МГц" msgstr "802.11ac - ширина канала 80 МГц"
#: src/common/WiFiSettings/constants.js:15 #: src/common/WiFiSettings/constants.js:15
#, fuzzy
msgid "802.11ac - 80+80 MHz wide channel"
msgstr "802.11ac - ширина канала 80 МГц"
#: src/common/WiFiSettings/constants.js:16
msgid "802.11ac - 160 MHz wide channel" msgid "802.11ac - 160 MHz wide channel"
msgstr "802.11ac - ширина канала 160 МГц" msgstr "802.11ac - ширина канала 160 МГц"
#: src/common/WiFiSettings/constants.js:16 #: src/common/WiFiSettings/constants.js:17
msgid "802.11ax - 20 MHz wide channel" msgid "802.11ax - 20 MHz wide channel"
msgstr "802.11ax - ширина канала 20 МГц" msgstr "802.11ax - ширина канала 20 МГц"
#: src/common/WiFiSettings/constants.js:17 #: src/common/WiFiSettings/constants.js:18
msgid "802.11ax - 40 MHz wide channel" msgid "802.11ax - 40 MHz wide channel"
msgstr "802.11ax - ширина канала 40 МГц" msgstr "802.11ax - ширина канала 40 МГц"
#: src/common/WiFiSettings/constants.js:18 #: src/common/WiFiSettings/constants.js:19
msgid "802.11ax - 80 MHz wide channel" msgid "802.11ax - 80 MHz wide channel"
msgstr "802.11ax - ширина канала 80 МГц" msgstr "802.11ax - ширина канала 80 МГц"
#: src/common/WiFiSettings/constants.js:19 #: src/common/WiFiSettings/constants.js:20
#, fuzzy
msgid "802.11ax - 80+80 MHz wide channel"
msgstr "802.11ax - ширина канала 80 МГц"
#: src/common/WiFiSettings/constants.js:21
msgid "802.11ax - 160 MHz wide channel" msgid "802.11ax - 160 MHz wide channel"
msgstr "802.11ax - ширина канала 160 МГц" msgstr "802.11ax - ширина канала 160 МГц"
#: src/common/WiFiSettings/constants.js:26 #: src/common/WiFiSettings/constants.js:29
msgid "WPA3 only" msgid "WPA3 only"
msgstr "Только WPA3" msgstr "Только WPA3"
#: src/common/WiFiSettings/constants.js:27 #: src/common/WiFiSettings/constants.js:30
msgid "WPA3 with WPA2 as fallback (default)" msgid "WPA3 with WPA2 as fallback (default)"
msgstr "WPA3 с WPA2 в качестве резервного (по умолчанию)" msgstr "WPA3 с WPA2 в качестве резервного (по умолчанию)"
#: src/common/WiFiSettings/constants.js:28 #: src/common/WiFiSettings/constants.js:31
msgid "WPA2 only" msgid "WPA2 only"
msgstr "Только WPA2" msgstr "Только WPA2"
#: src/common/WiFiSettings/constants.js:31 #: src/common/WiFiSettings/constants.js:34
msgid "" msgid ""
"SSID which contains non-standard characters could cause problems on some " "SSID which contains non-standard characters could cause problems on some "
"devices." "devices."
@ -247,17 +334,17 @@ msgstr ""
"SSID, содержащий нестандартные символы, может вызвать проблемы на " "SSID, содержащий нестандартные символы, может вызвать проблемы на "
"некоторых устройствах." "некоторых устройствах."
#: src/common/WiFiSettings/constants.js:34 #: src/common/WiFiSettings/constants.js:37
msgid "WPA2/3 pre-shared key, that is required to connect to the network." msgid "WPA2/3 pre-shared key, that is required to connect to the network."
msgstr "Общий ключ WPA2/3, необходимый для подключения к сети." msgstr "Общий ключ WPA2/3, необходимый для подключения к сети."
#: src/common/WiFiSettings/constants.js:37 #: src/common/WiFiSettings/constants.js:40
msgid "If set, network is not visible when scanning for available networks." msgid "If set, network is not visible when scanning for available networks."
msgstr "" msgstr ""
"Если установлено, сеть не будет отображаться при сканировании доступных " "Если установлено, сеть не будет отображаться при сканировании доступных "
"сетей." "сетей."
#: src/common/WiFiSettings/constants.js:40 #: src/common/WiFiSettings/constants.js:43
msgid "" msgid ""
"The 2.4 GHz band is more widely supported by clients, but tends to have " "The 2.4 GHz band is more widely supported by clients, but tends to have "
"more interference. The 5 GHz band is a newer standard and may not be " "more interference. The 5 GHz band is a newer standard and may not be "
@ -269,7 +356,7 @@ msgstr ""
"поддерживаться не всеми устройствами. В нем обычно меньше помех, но в " "поддерживаться не всеми устройствами. В нем обычно меньше помех, но в "
"помещении сигнал проходит не так хорошо." "помещении сигнал проходит не так хорошо."
#: src/common/WiFiSettings/constants.js:43 #: src/common/WiFiSettings/constants.js:46
msgid "" msgid ""
"Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 " "Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 "
"MHz wide channels can yield higher throughput but can cause more " "MHz wide channels can yield higher throughput but can cause more "
@ -281,7 +368,7 @@ msgstr ""
"способность, но может вызывать больше помех в сети. Если вы не знаете, " "способность, но может вызывать больше помех в сети. Если вы не знаете, "
"что выбрать, используйте опцию по умолчанию с каналом шириной 20 МГц." "что выбрать, используйте опцию по умолчанию с каналом шириной 20 МГц."
#: src/common/WiFiSettings/constants.js:46 #: src/common/WiFiSettings/constants.js:49
msgid "" msgid ""
"Enables Wi-Fi for guests, which is separated from LAN network. Devices " "Enables Wi-Fi for guests, which is separated from LAN network. Devices "
"connected to this network are allowed to access the internet, but aren't " "connected to this network are allowed to access the internet, but aren't "
@ -294,7 +381,7 @@ msgstr ""
"доступ к другим устройствам и интерфейсу конфигурации маршрутизатора. " "доступ к другим устройствам и интерфейсу конфигурации маршрутизатора. "
"Параметры гостевой сети можно настроить на вкладке Гостевая сеть." "Параметры гостевой сети можно настроить на вкладке Гостевая сеть."
#: src/common/WiFiSettings/constants.js:49 #: src/common/WiFiSettings/constants.js:52
msgid "" msgid ""
"The WPA3 standard is the new most secure encryption method that is " "The WPA3 standard is the new most secure encryption method that is "
"suggested to be used with any device that supports it. The older devices " "suggested to be used with any device that supports it. The older devices "
@ -317,15 +404,15 @@ msgstr ""
"В случае выхода ваши изменения будут утеряны. Вы действительно хотите " "В случае выхода ваши изменения будут утеряны. Вы действительно хотите "
"покинуть эту страницу?" "покинуть эту страницу?"
#: src/form/components/SubmitButton.js:32 #: src/form/components/SubmitButton.js:34
msgid "Updating" msgid "Updating"
msgstr "Обновление" msgstr "Обновление"
#: src/form/components/SubmitButton.js:35 #: src/form/components/SubmitButton.js:37
msgid "Load settings" msgid "Load settings"
msgstr "Загрузить настройки" msgstr "Загрузить настройки"
#: src/form/components/SubmitButton.js:38 #: src/form/components/SubmitButton.js:40
msgid "Save" msgid "Save"
msgstr "Сохранить" msgstr "Сохранить"
@ -394,3 +481,15 @@ msgstr "Не содержит списка электронных адресов
#~ "значений по умолчанию.\n" #~ "значений по умолчанию.\n"
#~ " " #~ " "
#~ msgid "Reboot request failed."
#~ msgstr "Запрос на перезагрузку не выполнен."
#~ msgid "Reboot"
#~ msgstr "Перезагрузка"
#~ msgid "Warning!"
#~ msgstr "Предупреждение!"
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr "Вы уверены, что хотите перезагрузить маршрутизатор?"

View File

@ -1,23 +1,23 @@
# Slovak translations for Foris JS. # Slovak translations for Foris JS.
# Copyright (C) 2024 CZ.NIC, z.s.p.o. (https://www.nic.cz/) # Copyright (C) 2025 CZ.NIC, z.s.p.o. (https://www.nic.cz/)
# This file is distributed under the same license as the Foris JS project. # This file is distributed under the same license as the Foris JS project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024. # FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-08-23 14:02+0200\n" "POT-Creation-Date: 2025-04-04 15:14+0200\n"
"PO-Revision-Date: 2023-01-17 22:51+0000\n" "PO-Revision-Date: 2024-12-14 10:00+0000\n"
"Last-Translator: Atec <dr.atec@gmail.com>\n" "Last-Translator: Atec <dr.atec@gmail.com>\n"
"Language: sk\n" "Language: sk\n"
"Language-Team: Slovak <https://hosted.weblate.org/projects/turris/foris-" "Language-Team: Slovak <https://hosted.weblate.org/projects/turris/foris-"
"js/sk/>\n" "js/sk/>\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.16.0\n" "Generated-By: Babel 2.17.0\n"
#: src/api/utils.js:61 #: src/api/utils.js:61
msgid "The session is expired. Please log in again." msgid "The session is expired. Please log in again."
@ -35,41 +35,110 @@ msgstr "Nenastala žiadna odozva."
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "Nastala neznáma chyba v API." msgstr "Nastala neznáma chyba v API."
#: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98 #: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:103
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr "Zatvoriť"
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copied!" msgid "Copied!"
msgstr "Skopírované!" msgstr "Skopírované!"
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copy" msgid "Copy"
msgstr "Kopírovať" msgstr "Kopírovať"
#: src/common/RebootButton.js:27 #: src/bootstrap/NumberInput.js:84 src/bootstrap/NumberInput.js:85
msgid "Reboot request failed." msgid "Increase value. Hint: Hold to increase faster."
msgstr "Požiadavka na reštart neúspešná." msgstr ""
#: src/common/RebootButton.js:51 #: src/bootstrap/NumberInput.js:101 src/bootstrap/NumberInput.js:102
msgid "Reboot" msgid "Decrease value. Hint: Hold to decrease faster."
msgstr "Reštartovať" msgstr ""
#: src/common/RebootButton.js:66 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:67
msgid "Warning!" msgid "Action successful."
msgstr "Výstraha!" msgstr "Akcia úspešná."
#: src/common/RebootButton.js:68 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:76
msgid "Are you sure you want to restart the router?" msgid "Action failed."
msgstr "Naozaj sa má router reštartovať?" msgstr "Akcia neúspešná."
#: src/common/RebootButton.js:71 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:147
msgid "Cancel" msgid "Cancel"
msgstr "Zrušiť" msgstr "Zrušiť"
#: src/common/RebootButton.js:73 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:150
msgid "Confirm reboot" msgid "Confirm"
msgstr "Potvrdiť reštart" msgstr "Potvrdiť"
#: src/common/RichTable/RichTable.js:87
msgid "Search…"
msgstr ""
#: src/common/RichTable/RichTableBody.js:50
msgid "No results."
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:27
msgid "Columns"
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:80
msgid "Reset"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr "Zoradiť vzostupne"
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr "Zoradiť zostupne"
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr "Vymazať zoradenie"
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr "Navigačný pás stránkovania"
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr "Prvá strana"
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr "Predchádzajúca strana"
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr "Nasledujúca strana"
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr "Posledná strana"
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr "Strana"
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr "z"
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr "Počet riadkov na stranu:"
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr "Vyberte počet riadkov na stranu"
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr "Všetky"
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
msgid "An error occurred during resetting Wi-Fi settings." msgid "An error occurred during resetting Wi-Fi settings."
@ -95,11 +164,12 @@ msgstr ""
"Wi-Fi a obnovia sa predvolené hodnoty." "Wi-Fi a obnovia sa predvolené hodnoty."
#: src/common/WiFiSettings/WiFiForm.js:97 #: src/common/WiFiSettings/WiFiForm.js:97
#, python-brace-format
msgid "Wi-Fi ${deviceID + 1}" msgid "Wi-Fi ${deviceID + 1}"
msgstr "Wi-Fi ${deviceID + 1}" msgstr "Wi-Fi ${deviceID + 1}"
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:81 #: src/common/WiFiSettings/WiFiGuestForm.js:80
msgid "Password" msgid "Password"
msgstr "Heslo" msgstr "Heslo"
@ -107,6 +177,10 @@ msgstr "Heslo"
msgid "Hide SSID" msgid "Hide SSID"
msgstr "Skryť SSID" msgstr "Skryť SSID"
#: src/common/WiFiSettings/WiFiForm.js:159
msgid "Band"
msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:186 #: src/common/WiFiSettings/WiFiForm.js:186
msgid "802.11n/ac/ax mode" msgid "802.11n/ac/ax mode"
msgstr "802.11 n/ac/ax mód" msgstr "802.11 n/ac/ax mód"
@ -116,6 +190,7 @@ msgid "Channel"
msgstr "Kanál" msgstr "Kanál"
#: src/common/WiFiSettings/WiFiForm.js:211 #: src/common/WiFiSettings/WiFiForm.js:211
#: src/common/WiFiSettings/WiFiGuestForm.js:95
msgid "Encryption" msgid "Encryption"
msgstr "Šifrovanie" msgstr "Šifrovanie"
@ -139,21 +214,20 @@ msgstr "automaticky"
msgid "Custom" msgid "Custom"
msgstr "Vlastné" msgstr "Vlastné"
#: src/common/WiFiSettings/WiFiGuestForm.js:43 #: src/common/WiFiSettings/WiFiGuestForm.js:45
msgid "Enable Guest Wi-Fi" msgid "Enable Guest Wi-Fi"
msgstr "Povoliť Wi-Fi pre hostí" msgstr "Povoliť Wi-Fi pre hostí"
#: src/common/WiFiSettings/WiFiQRCode.js:43 #: src/common/WiFiSettings/WiFiQRCode.js:43
#: src/common/WiFiSettings/WiFiQRCode.js:44 #: src/common/WiFiSettings/WiFiQRCode.js:44
#, fuzzy
msgid "Show QR code" msgid "Show QR code"
msgstr "Wi-Fi QR kód" msgstr "Zobraziť QR kód"
#: src/common/WiFiSettings/WiFiQRCode.js:70 #: src/common/WiFiSettings/WiFiQRCode.js:70
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "Wi-Fi QR kód" msgstr "Wi-Fi QR kód"
#: src/common/WiFiSettings/WiFiQRCode.js:93 #: src/common/WiFiSettings/WiFiQRCode.js:102
msgid "Download PDF" msgid "Download PDF"
msgstr "Stiahnuť PDF" msgstr "Stiahnuť PDF"
@ -184,7 +258,7 @@ msgstr "Heslo nesmie obsahovať viac ako 63 znakov"
#: src/common/WiFiSettings/constants.js:9 #: src/common/WiFiSettings/constants.js:9
msgid "Disabled" msgid "Disabled"
msgstr "Zakázané" msgstr "Vypnuté"
#: src/common/WiFiSettings/constants.js:10 #: src/common/WiFiSettings/constants.js:10
msgid "802.11n - 20 MHz wide channel" msgid "802.11n - 20 MHz wide channel"
@ -207,38 +281,48 @@ msgid "802.11ac - 80 MHz wide channel"
msgstr "802.11ac šírka kanála 80 MHz" msgstr "802.11ac šírka kanála 80 MHz"
#: src/common/WiFiSettings/constants.js:15 #: src/common/WiFiSettings/constants.js:15
#, fuzzy
msgid "802.11ac - 80+80 MHz wide channel"
msgstr "802.11ac šírka kanála 80 MHz"
#: src/common/WiFiSettings/constants.js:16
msgid "802.11ac - 160 MHz wide channel" msgid "802.11ac - 160 MHz wide channel"
msgstr "802.11ac šírka kanála 160 MHz" msgstr "802.11ac šírka kanála 160 MHz"
#: src/common/WiFiSettings/constants.js:16 #: src/common/WiFiSettings/constants.js:17
msgid "802.11ax - 20 MHz wide channel" msgid "802.11ax - 20 MHz wide channel"
msgstr "802.11ax šírka kanála 20 MHz" msgstr "802.11ax šírka kanála 20 MHz"
#: src/common/WiFiSettings/constants.js:17 #: src/common/WiFiSettings/constants.js:18
msgid "802.11ax - 40 MHz wide channel" msgid "802.11ax - 40 MHz wide channel"
msgstr "802.11ax šírka kanála 40 MHz" msgstr "802.11ax šírka kanála 40 MHz"
#: src/common/WiFiSettings/constants.js:18 #: src/common/WiFiSettings/constants.js:19
msgid "802.11ax - 80 MHz wide channel" msgid "802.11ax - 80 MHz wide channel"
msgstr "802.11ax šírka kanála 80 MHz" msgstr "802.11ax šírka kanála 80 MHz"
#: src/common/WiFiSettings/constants.js:19 #: src/common/WiFiSettings/constants.js:20
#, fuzzy
msgid "802.11ax - 80+80 MHz wide channel"
msgstr "802.11ax šírka kanála 80 MHz"
#: src/common/WiFiSettings/constants.js:21
msgid "802.11ax - 160 MHz wide channel" msgid "802.11ax - 160 MHz wide channel"
msgstr "802.11ax šírka kanála 160 MHz" msgstr "802.11ax šírka kanála 160 MHz"
#: src/common/WiFiSettings/constants.js:26 #: src/common/WiFiSettings/constants.js:29
msgid "WPA3 only" msgid "WPA3 only"
msgstr "len WPA3" msgstr "len WPA3"
#: src/common/WiFiSettings/constants.js:27 #: src/common/WiFiSettings/constants.js:30
msgid "WPA3 with WPA2 as fallback (default)" msgid "WPA3 with WPA2 as fallback (default)"
msgstr "WPA3 s WPA2 ako náhradným riešením (predvolené)" msgstr "WPA3 s WPA2 ako náhradným riešením (predvolené)"
#: src/common/WiFiSettings/constants.js:28 #: src/common/WiFiSettings/constants.js:31
msgid "WPA2 only" msgid "WPA2 only"
msgstr "Len WPA2" msgstr "Len WPA2"
#: src/common/WiFiSettings/constants.js:31 #: src/common/WiFiSettings/constants.js:34
msgid "" msgid ""
"SSID which contains non-standard characters could cause problems on some " "SSID which contains non-standard characters could cause problems on some "
"devices." "devices."
@ -246,17 +330,17 @@ msgstr ""
"SSID s neštandardnými znakmi môže na niektorých zariadeniach spôsobovať " "SSID s neštandardnými znakmi môže na niektorých zariadeniach spôsobovať "
"problémy." "problémy."
#: src/common/WiFiSettings/constants.js:34 #: src/common/WiFiSettings/constants.js:37
msgid "WPA2/3 pre-shared key, that is required to connect to the network." msgid "WPA2/3 pre-shared key, that is required to connect to the network."
msgstr "WPA2/3 vopred zdieľaný kľúč, ktorý sa vyžaduje na pripojenie k sieti." msgstr "WPA2/3 vopred zdieľaný kľúč, ktorý sa vyžaduje na pripojenie k sieti."
#: src/common/WiFiSettings/constants.js:37 #: src/common/WiFiSettings/constants.js:40
msgid "If set, network is not visible when scanning for available networks." msgid "If set, network is not visible when scanning for available networks."
msgstr "" msgstr ""
"Pri zapnutí tejto voľby sa sieť zariadeniam pri vyhľadávaní dostupných " "Pri zapnutí tejto voľby sa sieť zariadeniam pri vyhľadávaní dostupných "
"sietí nezobrazí." "sietí nezobrazí."
#: src/common/WiFiSettings/constants.js:40 #: src/common/WiFiSettings/constants.js:43
msgid "" msgid ""
"The 2.4 GHz band is more widely supported by clients, but tends to have " "The 2.4 GHz band is more widely supported by clients, but tends to have "
"more interference. The 5 GHz band is a newer standard and may not be " "more interference. The 5 GHz band is a newer standard and may not be "
@ -268,7 +352,7 @@ msgstr ""
"zariadenia. Zvyčajne je rušením postihnuté menej, ale signál sa vnútri " "zariadenia. Zvyčajne je rušením postihnuté menej, ale signál sa vnútri "
"budov šíri horšie." "budov šíri horšie."
#: src/common/WiFiSettings/constants.js:43 #: src/common/WiFiSettings/constants.js:46
msgid "" msgid ""
"Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 " "Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 "
"MHz wide channels can yield higher throughput but can cause more " "MHz wide channels can yield higher throughput but can cause more "
@ -280,7 +364,7 @@ msgstr ""
"môže spôsobiť väčšie rušenie. Ak si nie ste istí, použite predvolenú " "môže spôsobiť väčšie rušenie. Ak si nie ste istí, použite predvolenú "
"možnosť so šírkou kanála 20 MHz." "možnosť so šírkou kanála 20 MHz."
#: src/common/WiFiSettings/constants.js:46 #: src/common/WiFiSettings/constants.js:49
msgid "" msgid ""
"Enables Wi-Fi for guests, which is separated from LAN network. Devices " "Enables Wi-Fi for guests, which is separated from LAN network. Devices "
"connected to this network are allowed to access the internet, but aren't " "connected to this network are allowed to access the internet, but aren't "
@ -293,7 +377,7 @@ msgstr ""
" nemajú prístup k iným zariadeniam a ku konfiguračnému rozhraniu routera." " nemajú prístup k iným zariadeniam a ku konfiguračnému rozhraniu routera."
" Parametre siete pre hostí je možné nastaviť na karte Sieť pre hostí." " Parametre siete pre hostí je možné nastaviť na karte Sieť pre hostí."
#: src/common/WiFiSettings/constants.js:49 #: src/common/WiFiSettings/constants.js:52
msgid "" msgid ""
"The WPA3 standard is the new most secure encryption method that is " "The WPA3 standard is the new most secure encryption method that is "
"suggested to be used with any device that supports it. The older devices " "suggested to be used with any device that supports it. The older devices "
@ -313,15 +397,15 @@ msgstr "Nastavenia boli úspešne uložené"
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "Vykonané zmeny neboli uložené. Naozaj chcete opustiť stránku?" msgstr "Vykonané zmeny neboli uložené. Naozaj chcete opustiť stránku?"
#: src/form/components/SubmitButton.js:32 #: src/form/components/SubmitButton.js:34
msgid "Updating" msgid "Updating"
msgstr "Prebieha aktualizácia" msgstr "Prebieha aktualizácia"
#: src/form/components/SubmitButton.js:35 #: src/form/components/SubmitButton.js:37
msgid "Load settings" msgid "Load settings"
msgstr "Načítavanie nastavení" msgstr "Načítavanie nastavení"
#: src/form/components/SubmitButton.js:38 #: src/form/components/SubmitButton.js:40
msgid "Save" msgid "Save"
msgstr "Uložiť" msgstr "Uložiť"
@ -390,3 +474,15 @@ msgstr "Neobsahuje zoznam e-mailov oddelených čiarkami."
#~ " a obnovia sa východiskové hodnoty.\n" #~ " a obnovia sa východiskové hodnoty.\n"
#~ " " #~ " "
#~ msgid "Reboot request failed."
#~ msgstr "Požiadavka na reštart neúspešná."
#~ msgid "Reboot"
#~ msgstr "Reštartovať"
#~ msgid "Warning!"
#~ msgstr "Výstraha!"
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr "Naozaj sa má router reštartovať?"

View File

@ -1,13 +1,13 @@
# Swedish translations for Foris JS. # Swedish translations for Foris JS.
# Copyright (C) 2024 CZ.NIC, z.s.p.o. (https://www.nic.cz/) # Copyright (C) 2025 CZ.NIC, z.s.p.o. (https://www.nic.cz/)
# This file is distributed under the same license as the Foris JS project. # This file is distributed under the same license as the Foris JS project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024. # FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-08-23 14:02+0200\n" "POT-Creation-Date: 2025-04-04 15:14+0200\n"
"PO-Revision-Date: 2023-09-22 21:00+0000\n" "PO-Revision-Date: 2023-09-22 21:00+0000\n"
"Last-Translator: Kristoffer Grundström " "Last-Translator: Kristoffer Grundström "
"<swedishsailfishosuser@tutanota.com>\n" "<swedishsailfishosuser@tutanota.com>\n"
@ -18,7 +18,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.16.0\n" "Generated-By: Babel 2.17.0\n"
#: src/api/utils.js:61 #: src/api/utils.js:61
msgid "The session is expired. Please log in again." msgid "The session is expired. Please log in again."
@ -36,42 +36,112 @@ msgstr "Inget svar togs emot."
msgid "An unknown API error occurred." msgid "An unknown API error occurred."
msgstr "Ett okänt API-fel inträffade." msgstr "Ett okänt API-fel inträffade."
#: src/bootstrap/Alert.js:51 src/bootstrap/Modal.js:98 #: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:103
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copied!" msgid "Copied!"
msgstr "Kopierades!" msgstr "Kopierades!"
#: src/bootstrap/CopyInput.js:57 #: src/bootstrap/CopyInput.js:56
msgid "Copy" msgid "Copy"
msgstr "Kopiera" msgstr "Kopiera"
#: src/common/RebootButton.js:27 #: src/bootstrap/NumberInput.js:84 src/bootstrap/NumberInput.js:85
msgid "Reboot request failed." msgid "Increase value. Hint: Hold to increase faster."
msgstr "Förfrågning för omstart misslyckades." msgstr ""
#: src/common/RebootButton.js:51 #: src/bootstrap/NumberInput.js:101 src/bootstrap/NumberInput.js:102
msgid "Reboot" msgid "Decrease value. Hint: Hold to decrease faster."
msgstr "Starta om" msgstr ""
#: src/common/RebootButton.js:66 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:67
msgid "Warning!" msgid "Action successful."
msgstr "Varning!" msgstr ""
#: src/common/RebootButton.js:68 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:76
msgid "Are you sure you want to restart the router?" msgid "Action failed."
msgstr "Är du säker på att du vill starta om routern?" msgstr ""
#: src/common/RebootButton.js:71 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:147
msgid "Cancel" msgid "Cancel"
msgstr "Avbryt" msgstr "Avbryt"
#: src/common/RebootButton.js:73 #: src/common/ActionButtonWithModal/ActionButtonWithModal.js:150
msgid "Confirm reboot" #, fuzzy
msgid "Confirm"
msgstr "Bekräfta omstart" msgstr "Bekräfta omstart"
#: src/common/RichTable/RichTable.js:87
msgid "Search…"
msgstr ""
#: src/common/RichTable/RichTableBody.js:50
msgid "No results."
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:27
msgid "Columns"
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:80
msgid "Reset"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr ""
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr ""
#: src/common/WiFiSettings/ResetWiFiSettings.js:39 #: src/common/WiFiSettings/ResetWiFiSettings.js:39
msgid "An error occurred during resetting Wi-Fi settings." msgid "An error occurred during resetting Wi-Fi settings."
msgstr "Ett fel inträffade under återställningen av Wi-Fi-inställningarna." msgstr "Ett fel inträffade under återställningen av Wi-Fi-inställningarna."
@ -96,11 +166,12 @@ msgstr ""
"nuvarande Wi-Fi-konfigurationen och återställa till standardvärdena." "nuvarande Wi-Fi-konfigurationen och återställa till standardvärdena."
#: src/common/WiFiSettings/WiFiForm.js:97 #: src/common/WiFiSettings/WiFiForm.js:97
#, python-brace-format
msgid "Wi-Fi ${deviceID + 1}" msgid "Wi-Fi ${deviceID + 1}"
msgstr "Wi-Fi ${deviceID + 1}" msgstr "Wi-Fi ${deviceID + 1}"
#: src/common/WiFiSettings/WiFiForm.js:132 #: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:81 #: src/common/WiFiSettings/WiFiGuestForm.js:80
msgid "Password" msgid "Password"
msgstr "Lösenord" msgstr "Lösenord"
@ -108,6 +179,10 @@ msgstr "Lösenord"
msgid "Hide SSID" msgid "Hide SSID"
msgstr "Göm SSID" msgstr "Göm SSID"
#: src/common/WiFiSettings/WiFiForm.js:159
msgid "Band"
msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:186 #: src/common/WiFiSettings/WiFiForm.js:186
msgid "802.11n/ac/ax mode" msgid "802.11n/ac/ax mode"
msgstr "802.11n/ac/ax-läge" msgstr "802.11n/ac/ax-läge"
@ -118,6 +193,7 @@ msgid "Channel"
msgstr "Avbryt" msgstr "Avbryt"
#: src/common/WiFiSettings/WiFiForm.js:211 #: src/common/WiFiSettings/WiFiForm.js:211
#: src/common/WiFiSettings/WiFiGuestForm.js:95
msgid "Encryption" msgid "Encryption"
msgstr "Kryptering" msgstr "Kryptering"
@ -140,7 +216,7 @@ msgstr "auto"
msgid "Custom" msgid "Custom"
msgstr "auto" msgstr "auto"
#: src/common/WiFiSettings/WiFiGuestForm.js:43 #: src/common/WiFiSettings/WiFiGuestForm.js:45
msgid "Enable Guest Wi-Fi" msgid "Enable Guest Wi-Fi"
msgstr "Aktivera Wi-Fi för Gäst" msgstr "Aktivera Wi-Fi för Gäst"
@ -154,7 +230,7 @@ msgstr "QR-kod för Wi-Fi"
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
msgstr "QR-kod för Wi-Fi" msgstr "QR-kod för Wi-Fi"
#: src/common/WiFiSettings/WiFiQRCode.js:93 #: src/common/WiFiSettings/WiFiQRCode.js:102
msgid "Download PDF" msgid "Download PDF"
msgstr "Ladda ner PDF" msgstr "Ladda ner PDF"
@ -209,42 +285,52 @@ msgid "802.11ac - 80 MHz wide channel"
msgstr "802.11ac - 80 MHz bred kanal" msgstr "802.11ac - 80 MHz bred kanal"
#: src/common/WiFiSettings/constants.js:15 #: src/common/WiFiSettings/constants.js:15
#, fuzzy
msgid "802.11ac - 80+80 MHz wide channel"
msgstr "802.11ac - 80 MHz bred kanal"
#: src/common/WiFiSettings/constants.js:16
msgid "802.11ac - 160 MHz wide channel" msgid "802.11ac - 160 MHz wide channel"
msgstr "802.11ac - 160 MHz bred kanal" msgstr "802.11ac - 160 MHz bred kanal"
#: src/common/WiFiSettings/constants.js:16 #: src/common/WiFiSettings/constants.js:17
#, fuzzy #, fuzzy
msgid "802.11ax - 20 MHz wide channel" msgid "802.11ax - 20 MHz wide channel"
msgstr "802.11ac - 20 MHz bred kanal" msgstr "802.11ac - 20 MHz bred kanal"
#: src/common/WiFiSettings/constants.js:17 #: src/common/WiFiSettings/constants.js:18
#, fuzzy #, fuzzy
msgid "802.11ax - 40 MHz wide channel" msgid "802.11ax - 40 MHz wide channel"
msgstr "802.11ac - 40 MHz bred kanal" msgstr "802.11ac - 40 MHz bred kanal"
#: src/common/WiFiSettings/constants.js:18 #: src/common/WiFiSettings/constants.js:19
#, fuzzy #, fuzzy
msgid "802.11ax - 80 MHz wide channel" msgid "802.11ax - 80 MHz wide channel"
msgstr "802.11ac - 80 MHz bred kanal" msgstr "802.11ac - 80 MHz bred kanal"
#: src/common/WiFiSettings/constants.js:19 #: src/common/WiFiSettings/constants.js:20
#, fuzzy
msgid "802.11ax - 80+80 MHz wide channel"
msgstr "802.11ac - 80 MHz bred kanal"
#: src/common/WiFiSettings/constants.js:21
#, fuzzy #, fuzzy
msgid "802.11ax - 160 MHz wide channel" msgid "802.11ax - 160 MHz wide channel"
msgstr "802.11ac - 160 MHz bred kanal" msgstr "802.11ac - 160 MHz bred kanal"
#: src/common/WiFiSettings/constants.js:26 #: src/common/WiFiSettings/constants.js:29
msgid "WPA3 only" msgid "WPA3 only"
msgstr "Endast WPA3" msgstr "Endast WPA3"
#: src/common/WiFiSettings/constants.js:27 #: src/common/WiFiSettings/constants.js:30
msgid "WPA3 with WPA2 as fallback (default)" msgid "WPA3 with WPA2 as fallback (default)"
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:28 #: src/common/WiFiSettings/constants.js:31
msgid "WPA2 only" msgid "WPA2 only"
msgstr "Endast WPA2" msgstr "Endast WPA2"
#: src/common/WiFiSettings/constants.js:31 #: src/common/WiFiSettings/constants.js:34
msgid "" msgid ""
"SSID which contains non-standard characters could cause problems on some " "SSID which contains non-standard characters could cause problems on some "
"devices." "devices."
@ -252,15 +338,15 @@ msgstr ""
"SSID som innehåller icke-standardiserade tecken kan orsaka problem i en " "SSID som innehåller icke-standardiserade tecken kan orsaka problem i en "
"del enheter." "del enheter."
#: src/common/WiFiSettings/constants.js:34 #: src/common/WiFiSettings/constants.js:37
msgid "WPA2/3 pre-shared key, that is required to connect to the network." msgid "WPA2/3 pre-shared key, that is required to connect to the network."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:37 #: src/common/WiFiSettings/constants.js:40
msgid "If set, network is not visible when scanning for available networks." msgid "If set, network is not visible when scanning for available networks."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:40 #: src/common/WiFiSettings/constants.js:43
msgid "" msgid ""
"The 2.4 GHz band is more widely supported by clients, but tends to have " "The 2.4 GHz band is more widely supported by clients, but tends to have "
"more interference. The 5 GHz band is a newer standard and may not be " "more interference. The 5 GHz band is a newer standard and may not be "
@ -268,7 +354,7 @@ msgid ""
"signal does not carry so well indoors." "signal does not carry so well indoors."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:43 #: src/common/WiFiSettings/constants.js:46
msgid "" msgid ""
"Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 " "Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 "
"MHz wide channels can yield higher throughput but can cause more " "MHz wide channels can yield higher throughput but can cause more "
@ -276,7 +362,7 @@ msgid ""
"default option with 20 MHz wide channel." "default option with 20 MHz wide channel."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:46 #: src/common/WiFiSettings/constants.js:49
msgid "" msgid ""
"Enables Wi-Fi for guests, which is separated from LAN network. Devices " "Enables Wi-Fi for guests, which is separated from LAN network. Devices "
"connected to this network are allowed to access the internet, but aren't " "connected to this network are allowed to access the internet, but aren't "
@ -285,7 +371,7 @@ msgid ""
"tab." "tab."
msgstr "" msgstr ""
#: src/common/WiFiSettings/constants.js:49 #: src/common/WiFiSettings/constants.js:52
msgid "" msgid ""
"The WPA3 standard is the new most secure encryption method that is " "The WPA3 standard is the new most secure encryption method that is "
"suggested to be used with any device that supports it. The older devices " "suggested to be used with any device that supports it. The older devices "
@ -301,15 +387,15 @@ msgstr ""
msgid "Changes you made may not be saved. Are you sure you want to leave?" msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:32 #: src/form/components/SubmitButton.js:34
msgid "Updating" msgid "Updating"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:35 #: src/form/components/SubmitButton.js:37
msgid "Load settings" msgid "Load settings"
msgstr "" msgstr ""
#: src/form/components/SubmitButton.js:38 #: src/form/components/SubmitButton.js:40
msgid "Save" msgid "Save"
msgstr "Spara" msgstr "Spara"
@ -440,3 +526,15 @@ msgstr ""
#~ "channel." #~ "channel."
#~ msgstr "" #~ msgstr ""
#~ msgid "Reboot request failed."
#~ msgstr "Förfrågning för omstart misslyckades."
#~ msgid "Reboot"
#~ msgstr "Starta om"
#~ msgid "Warning!"
#~ msgstr "Varning!"
#~ msgid "Are you sure you want to restart the router?"
#~ msgstr "Är du säker på att du vill starta om routern?"

View File

@ -0,0 +1,452 @@
# Tamil translations for Foris JS.
# Copyright (C) 2025 CZ.NIC, z.s.p.o. (https://www.nic.cz/)
# This file is distributed under the same license as the Foris JS project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
#
msgid ""
msgstr ""
"Project-Id-Version: Foris JS 6.5.0\n"
"Report-Msgid-Bugs-To: tech.support@turris.cz\n"
"POT-Creation-Date: 2025-04-04 15:14+0200\n"
"PO-Revision-Date: 2025-03-19 13:25+0000\n"
"Last-Translator: தமிழ்நேரம் <anishprabu.t@gmail.com>\n"
"Language: ta\n"
"Language-Team: Tamil <https://hosted.weblate.org/projects/turris/foris-"
"js/ta/>\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.17.0\n"
#: src/api/utils.js:61
msgid "The session is expired. Please log in again."
msgstr "அமர்வு காலாவதியானது. மீண்டும் உள்நுழைக."
#: src/api/utils.js:66
msgid "Timeout error occurred."
msgstr "காலக்கெடு பிழை ஏற்பட்டது."
#: src/api/utils.js:69
msgid "No response received."
msgstr "எந்த பதிலும் கிடைக்கவில்லை."
#: src/api/utils.js:79
msgid "An unknown API error occurred."
msgstr "அறியப்படாத பநிஇ பிழை ஏற்பட்டது."
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:103
#: src/common/WiFiSettings/WiFiQRCode.js:89
msgid "Close"
msgstr "மூடு"
#: src/bootstrap/CopyInput.js:56
msgid "Copied!"
msgstr "நகலெடுக்கப்பட்டது!"
#: src/bootstrap/CopyInput.js:56
msgid "Copy"
msgstr "நகலெடு"
#: src/bootstrap/NumberInput.js:84 src/bootstrap/NumberInput.js:85
msgid "Increase value. Hint: Hold to increase faster."
msgstr ""
#: src/bootstrap/NumberInput.js:101 src/bootstrap/NumberInput.js:102
msgid "Decrease value. Hint: Hold to decrease faster."
msgstr ""
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:67
msgid "Action successful."
msgstr "நடவடிக்கை வெற்றிகரமாக."
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:76
msgid "Action failed."
msgstr "நடவடிக்கை தோல்வியடைந்தது."
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:147
msgid "Cancel"
msgstr "ரத்துசெய்"
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:150
msgid "Confirm"
msgstr "உறுதிப்படுத்தவும்"
#: src/common/RichTable/RichTable.js:87
msgid "Search…"
msgstr ""
#: src/common/RichTable/RichTableBody.js:50
msgid "No results."
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:27
msgid "Columns"
msgstr ""
#: src/common/RichTable/RichTableColumnsDropdown.js:80
msgid "Reset"
msgstr ""
#: src/common/RichTable/RichTableHeader.js:29
msgid "Sort ascending"
msgstr "ஏறும் வரிசைப்படுத்துதல்"
#: src/common/RichTable/RichTableHeader.js:30
msgid "Sort descending"
msgstr "இறங்கு வரிசைப்படுத்துதல்"
#: src/common/RichTable/RichTableHeader.js:31
msgid "Clear sort"
msgstr "அழி வரிசைப்படுத்துதல்"
#: src/common/RichTable/RichTablePagination.js:65
msgid "Pagination navigation bar"
msgstr "மண்பாண்ட வழிசெலுத்தல் பட்டி"
#: src/common/RichTable/RichTablePagination.js:71
msgid "First page"
msgstr "முதல் பக்கம்"
#: src/common/RichTable/RichTablePagination.js:77
msgid "Previous page"
msgstr "முந்தைய பக்கம்"
#: src/common/RichTable/RichTablePagination.js:83
msgid "Next page"
msgstr "அடுத்த பக்கம்"
#: src/common/RichTable/RichTablePagination.js:89
msgid "Last page"
msgstr "கடைசி பக்கம்"
#: src/common/RichTable/RichTablePagination.js:95
msgid "Page"
msgstr "பக்கம்"
#: src/common/RichTable/RichTablePagination.js:98
msgid "of"
msgstr "of"
#: src/common/RichTable/RichTablePagination.js:106
msgid "Rows per page:"
msgstr "ஒரு பக்கத்திற்கு வரிசைகள்:"
#: src/common/RichTable/RichTablePagination.js:109
msgid "Select rows per page"
msgstr "ஒரு பக்கத்திற்கு வரிசைகளைத் தேர்ந்தெடுக்கவும்"
#: src/common/RichTable/RichTablePagination.js:121
msgid "All"
msgstr "அனைத்தும்"
#: src/common/WiFiSettings/ResetWiFiSettings.js:39
msgid "An error occurred during resetting Wi-Fi settings."
msgstr "வைஃபை அமைப்புகளை மீட்டமைக்கும் போது பிழை ஏற்பட்டது."
#: src/common/WiFiSettings/ResetWiFiSettings.js:42
msgid "Wi-Fi settings are set to defaults."
msgstr "வைஃபை அமைப்புகள் இயல்புநிலையாக அமைக்கப்பட்டுள்ளன."
#: src/common/WiFiSettings/ResetWiFiSettings.js:56
#: src/common/WiFiSettings/ResetWiFiSettings.js:70
msgid "Reset Wi-Fi Settings"
msgstr "வைஃபை அமைப்புகளை மீட்டமைக்கவும்"
#: src/common/WiFiSettings/ResetWiFiSettings.js:58
msgid ""
"If a number of wireless cards doesn't match, you may try to reset the Wi-"
"Fi settings. Note that this will remove the current Wi-Fi configuration "
"and restore the default values."
msgstr ""
"பல வயர்லெச் கார்டுகள் பொருந்தவில்லை என்றால், நீங்கள் வைஃபை அமைப்புகளை "
"மீட்டமைக்க முயற்சி செய்யலாம். இது தற்போதைய வைஃபை உள்ளமைவை அகற்றி "
"இயல்புநிலை மதிப்புகளை மீட்டெடுக்கும் என்பதை நினைவில் கொள்க."
#: src/common/WiFiSettings/WiFiForm.js:97
#, python-brace-format
msgid "Wi-Fi ${deviceID + 1}"
msgstr "Wi-fi $ {deviceID + 1}"
#: src/common/WiFiSettings/WiFiForm.js:132
#: src/common/WiFiSettings/WiFiGuestForm.js:80
msgid "Password"
msgstr "கடவுச்சொல்"
#: src/common/WiFiSettings/WiFiForm.js:146
msgid "Hide SSID"
msgstr "SSID ஐ மறைக்கவும்"
#: src/common/WiFiSettings/WiFiForm.js:159
msgid "Band"
msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:186
msgid "802.11n/ac/ax mode"
msgstr "802.11n/ac/ax பயன்முறை"
#: src/common/WiFiSettings/WiFiForm.js:199
msgid "Channel"
msgstr "வாய்க்கால்"
#: src/common/WiFiSettings/WiFiForm.js:211
#: src/common/WiFiSettings/WiFiGuestForm.js:95
msgid "Encryption"
msgstr "குறியாக்கம்"
#: src/common/WiFiSettings/WiFiForm.js:226
msgid "Disable Management Frame Protection"
msgstr "மேலாண்மை பிரேம் பாதுகாப்பை முடக்கு"
#: src/common/WiFiSettings/WiFiForm.js:227
msgid ""
"In case you have trouble connecting to WiFi Access Point, try disabling "
"Management Frame Protection."
msgstr ""
"வைஃபை அணுகல் புள்ளியுடன் இணைப்பதில் சிக்கல் இருந்தால், மேலாண்மை பிரேம் "
"பாதுகாப்பை முடக்க முயற்சிக்கவும்."
#: src/common/WiFiSettings/WiFiForm.js:262
msgid "auto"
msgstr "தானி"
#: src/common/WiFiSettings/WiFiForm.js:303
msgid "Custom"
msgstr "தனிப்பயன்"
#: src/common/WiFiSettings/WiFiGuestForm.js:45
msgid "Enable Guest Wi-Fi"
msgstr "விருந்தினர் வைஃபை இயக்கவும்"
#: src/common/WiFiSettings/WiFiQRCode.js:43
#: src/common/WiFiSettings/WiFiQRCode.js:44
msgid "Show QR code"
msgstr "QR குறியீட்டைக் காட்டு"
#: src/common/WiFiSettings/WiFiQRCode.js:70
msgid "Wi-Fi QR Code"
msgstr "வைஃபை கியூஆர் குறியீடு"
#: src/common/WiFiSettings/WiFiQRCode.js:102
msgid "Download PDF"
msgstr "PDF ஐ பதிவிறக்கவும்"
#: src/common/WiFiSettings/WiFiSettings.js:83
#: src/common/WiFiSettings/WiFiSettings.js:99
msgid "SSID can't be longer than 32 symbols"
msgstr "SSID 32 சின்னங்களை விட நீளமாக இருக்க முடியாது"
#: src/common/WiFiSettings/WiFiSettings.js:84
#: src/common/WiFiSettings/WiFiSettings.js:101
msgid "SSID can't be empty"
msgstr "SSID காலியாக இருக்க முடியாது"
#: src/common/WiFiSettings/WiFiSettings.js:86
#: src/common/WiFiSettings/WiFiSettings.js:103
msgid "SSID can't be longer than 32 bytes"
msgstr "SSID 32 பைட்டுகளை விட நீளமாக இருக்க முடியாது"
#: src/common/WiFiSettings/WiFiSettings.js:89
#: src/common/WiFiSettings/WiFiSettings.js:106
msgid "Password must contain at least 8 symbols"
msgstr "கடவுச்சொல்லில் குறைந்தது 8 சின்னங்கள் இருக்க வேண்டும்"
#: src/common/WiFiSettings/WiFiSettings.js:91
#: src/common/WiFiSettings/WiFiSettings.js:110
msgid "Password must not contain more than 63 symbols"
msgstr "கடவுச்சொல்லில் 63 க்கும் மேற்பட்ட சின்னங்கள் இருக்கக்கூடாது"
#: src/common/WiFiSettings/constants.js:9
msgid "Disabled"
msgstr "முடக்கப்பட்டது"
#: src/common/WiFiSettings/constants.js:10
msgid "802.11n - 20 MHz wide channel"
msgstr "802.11n - 20 மெகா எர்ட்ச் அகல சேனல்"
#: src/common/WiFiSettings/constants.js:11
msgid "802.11n - 40 MHz wide channel"
msgstr "802.11n - 40 மெகா எர்ட்ச் அகல சேனல்"
#: src/common/WiFiSettings/constants.js:12
msgid "802.11ac - 20 MHz wide channel"
msgstr "802.11ac - 20 மெகா எர்ட்ச் அகல சேனல்"
#: src/common/WiFiSettings/constants.js:13
msgid "802.11ac - 40 MHz wide channel"
msgstr "802.11ac - 40 மெகா எர்ட்ச் அகல சேனல்"
#: src/common/WiFiSettings/constants.js:14
msgid "802.11ac - 80 MHz wide channel"
msgstr "802.11ac - 80 மெகா எர்ட்ச் அகல சேனல்"
#: src/common/WiFiSettings/constants.js:15
#, fuzzy
msgid "802.11ac - 80+80 MHz wide channel"
msgstr "802.11ac - 80 மெகா எர்ட்ச் அகல சேனல்"
#: src/common/WiFiSettings/constants.js:16
msgid "802.11ac - 160 MHz wide channel"
msgstr "802.11ac - 160 மெகா எர்ட்ச் அகல சேனல்"
#: src/common/WiFiSettings/constants.js:17
msgid "802.11ax - 20 MHz wide channel"
msgstr "802.11ax - 20 மெகா எர்ட்ச் அகல சேனல்"
#: src/common/WiFiSettings/constants.js:18
msgid "802.11ax - 40 MHz wide channel"
msgstr "802.11ax - 40 மெகா எர்ட்ச் அகல சேனல்"
#: src/common/WiFiSettings/constants.js:19
msgid "802.11ax - 80 MHz wide channel"
msgstr "802.11ax - 80 மெகா எர்ட்ச் அகல சேனல்"
#: src/common/WiFiSettings/constants.js:20
#, fuzzy
msgid "802.11ax - 80+80 MHz wide channel"
msgstr "802.11ax - 80 மெகா எர்ட்ச் அகல சேனல்"
#: src/common/WiFiSettings/constants.js:21
msgid "802.11ax - 160 MHz wide channel"
msgstr "802.11ax - 160 மெகா எர்ட்ச் அகல சேனல்"
#: src/common/WiFiSettings/constants.js:29
msgid "WPA3 only"
msgstr "WPA3 மட்டும்"
#: src/common/WiFiSettings/constants.js:30
msgid "WPA3 with WPA2 as fallback (default)"
msgstr "WPA2 WPA2 உடன் குறைவடையும் (இயல்புநிலை)"
#: src/common/WiFiSettings/constants.js:31
msgid "WPA2 only"
msgstr "WPA2 மட்டும்"
#: src/common/WiFiSettings/constants.js:34
msgid ""
"SSID which contains non-standard characters could cause problems on some "
"devices."
msgstr ""
"தரமற்ற எழுத்துக்களைக் கொண்ட SSID சில சாதனங்களில் சிக்கல்களை "
"ஏற்படுத்தக்கூடும்."
#: src/common/WiFiSettings/constants.js:37
msgid "WPA2/3 pre-shared key, that is required to connect to the network."
msgstr "WPA2/3 முன் பகிரப்பட்ட விசை, இது பிணையத்துடன் இணைக்க வேண்டும்."
#: src/common/WiFiSettings/constants.js:40
msgid "If set, network is not visible when scanning for available networks."
msgstr ""
"அமைக்கப்பட்டால், கிடைக்கக்கூடிய நெட்வொர்க்குகளுக்கு ச்கேன் செய்யும் போது "
"பிணையம் தெரியவில்லை."
#: src/common/WiFiSettings/constants.js:43
msgid ""
"The 2.4 GHz band is more widely supported by clients, but tends to have "
"more interference. The 5 GHz band is a newer standard and may not be "
"supported by all your devices. It usually has less interference, but the "
"signal does not carry so well indoors."
msgstr ""
"2.4 சிகாஎர்ட்ச் இசைக்குழு வாடிக்கையாளர்களால் மிகவும் பரவலாக "
"ஆதரிக்கப்படுகிறது, ஆனால் அதிக குறுக்கீடு உள்ளது. 5 சிகாஎர்ட்ச் இசைக்குழு "
"ஒரு புதிய தரநிலை மற்றும் உங்கள் எல்லா சாதனங்களாலும் ஆதரிக்கப்படாமல் "
"போகலாம். இது பொதுவாக குறைவான குறுக்கீட்டைக் கொண்டுள்ளது, ஆனால் சமிக்ஞை "
"வீட்டிற்குள் அவ்வளவு சிறப்பாகச் செல்லாது."
#: src/common/WiFiSettings/constants.js:46
msgid ""
"Change this to adjust 802.11n/ac/ax mode of operation. 802.11n with 40 "
"MHz wide channels can yield higher throughput but can cause more "
"interference in the network. If you don't know what to choose, use the "
"default option with 20 MHz wide channel."
msgstr ""
"802.11n/AC/AX செயல்பாட்டு முறை சரிசெய்ய இதை மாற்றவும். 40 மெகா எர்ட்ச் "
"அகலமான சேனல்களைக் கொண்ட 802.11n அதிக செயல்திறனை அளிக்கும், ஆனால் "
"பிணையத்தில் அதிக குறுக்கீட்டை ஏற்படுத்தும். எதை தேர்வு செய்வது என்று "
"உங்களுக்குத் தெரியாவிட்டால், இயல்புநிலை விருப்பத்தை 20 மெகா எர்ட்ச் அகல "
"சேனலுடன் பயன்படுத்தவும்."
#: src/common/WiFiSettings/constants.js:49
msgid ""
"Enables Wi-Fi for guests, which is separated from LAN network. Devices "
"connected to this network are allowed to access the internet, but aren't "
"allowed to access other devices and the configuration interface of the "
"router. Parameters of the guest network can be set in the Guest network "
"tab."
msgstr ""
"லேன் நெட்வொர்க்கிலிருந்து பிரிக்கப்பட்ட விருந்தினர்களுக்கு வைஃபை "
"இயக்குகிறது. இந்த நெட்வொர்க்குடன் இணைக்கப்பட்ட சாதனங்கள் இணையத்தை அணுக "
"அனுமதிக்கப்படுகின்றன, ஆனால் பிற சாதனங்களையும் திசைவியின் உள்ளமைவு "
"இடைமுகத்தையும் அணுக அனுமதிக்கப்படவில்லை. விருந்தினர் நெட்வொர்க்கின் "
"அளவுருக்கள் விருந்தினர் பிணையம் தாவலில் அமைக்கப்படலாம்."
#: src/common/WiFiSettings/constants.js:52
msgid ""
"The WPA3 standard is the new most secure encryption method that is "
"suggested to be used with any device that supports it. The older devices "
"without WPA3 support require older WPA2. If you experience issues with "
"connecting older devices, try to enable WPA2."
msgstr ""
"WPA3 தரநிலை என்பது புதிய மிகவும் பாதுகாப்பான குறியாக்க முறையாகும், அதை "
"ஆதரிக்கும் எந்தவொரு சாதனத்துடனும் பயன்படுத்த பரிந்துரைக்கப்படுகிறது. WPA3"
" உதவி இல்லாத பழைய சாதனங்களுக்கு பழைய WPA2 தேவைப்படுகிறது. பழைய சாதனங்களை "
"இணைப்பதில் சிக்கல்களை நீங்கள் அனுபவித்தால், WPA2 ஐ இயக்க முயற்சிக்கவும்."
#: src/form/components/ForisForm.js:121
msgid "Settings saved successfully"
msgstr "அமைப்புகள் வெற்றிகரமாக சேமிக்கப்பட்டன"
#: src/form/components/ForisForm.js:183
msgid "Changes you made may not be saved. Are you sure you want to leave?"
msgstr ""
"நீங்கள் செய்த மாற்றங்கள் சேமிக்கப்படாமல் போகலாம். நீங்கள் நிச்சயமாக "
"வெளியேற விரும்புகிறீர்களா?"
#: src/form/components/SubmitButton.js:34
msgid "Updating"
msgstr "புதுப்பித்தல்"
#: src/form/components/SubmitButton.js:37
msgid "Load settings"
msgstr "அமைப்புகளை ஏற்றவும்"
#: src/form/components/SubmitButton.js:40
msgid "Save"
msgstr "சேமி"
#: src/utils/ErrorMessage.js:17
msgid "An error occurred while fetching data."
msgstr "தரவைப் பெறும்போது பிழை ஏற்பட்டது."
#: src/utils/validations.js:13
msgid "This is not a valid IPv4 address."
msgstr "இது சரியான ஐபிவி 4 முகவரி அல்ல."
#: src/utils/validations.js:14
msgid "This is not a valid IPv6 address."
msgstr "இது சரியான ஐபிவி 6 முகவரி அல்ல."
#: src/utils/validations.js:15
msgid "This is not a valid IPv6 prefix."
msgstr "இது சரியான ஐபிவி 6 முன்னொட்டு அல்ல."
#: src/utils/validations.js:16
msgid "This is not a valid domain name."
msgstr "இது சரியான டொமைன் பெயர் அல்ல."
#: src/utils/validations.js:17
msgid "This is not a valid hostname."
msgstr "இது சரியான ஓச்ட்பெயர் அல்ல."
#: src/utils/validations.js:18
msgid "This is not a valid DUID."
msgstr "இது செல்லுபடியாகும் டியூட் அல்ல."
#: src/utils/validations.js:19
msgid "This is not a valid MAC address."
msgstr "இது செல்லுபடியாகும் MAC முகவரி அல்ல."
#: src/utils/validations.js:20
msgid "Doesn't contain a list of emails separated by commas."
msgstr "காற்புள்ளிகளால் பிரிக்கப்பட்ட மின்னஞ்சல்களின் பட்டியல் இல்லை."