mirror of
				https://gitlab.nic.cz/turris/reforis/foris-js.git
				synced 2025-11-03 23:00:31 +01:00 
			
		
		
		
	Compare commits
	
		
			28 Commits
		
	
	
		
			v6.3.0
			...
			29e7ac4e34
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					29e7ac4e34 | ||
| 
						 | 
					605f61bdd6 | ||
| 
						 | 
					25181db628 | ||
| 
						 | 
					10c328f15f | ||
| 
						 | 
					a7f36be30c | ||
| 
						 | 
					30fa79b55e | ||
| 
						 | 
					01d4ae74e4 | ||
| 
						 | 
					30fd6f91b4 | ||
| 
						 | 
					5a53eca138 | ||
| 
						 | 
					8d2a4dc108 | ||
| 
						 | 
					2481a0c025 | ||
| 
						 | 
					71697424c5 | ||
| 
						 | 
					07f8e3b9de | ||
| 
						 | 
					c9f2b24095 | ||
| 
						 | 
					087ecfa670 | ||
| 
						 | 
					e6365ecac4 | ||
| 
						 | 
					e57722caa0 | ||
| 
						 | 
					babdf92ddd | ||
| 
						 | 
					42294316d9 | ||
| 
						 | 
					b65e034b04 | ||
| 
						 | 
					14b90bbbd4 | ||
| 
						 | 
					85b207b1dd | ||
| 
						 | 
					79e61d9507 | ||
| 
						 | 
					6795c3941b | ||
| 
						 | 
					969e8e6411 | ||
| 
						 | 
					0099759279 | ||
| 
						 | 
					87c81a2a2d | ||
| 
						 | 
					81b71f8153 | 
							
								
								
									
										25
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -8,6 +8,27 @@ and this project adheres to
 | 
			
		||||
 | 
			
		||||
## [Unreleased]
 | 
			
		||||
 | 
			
		||||
## [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
 | 
			
		||||
@@ -398,7 +419,9 @@ and this project adheres to
 | 
			
		||||
## [0.0.7] - 2019-09-02
 | 
			
		||||
 | 
			
		||||
[unreleased]:
 | 
			
		||||
    https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.3.0...dev
 | 
			
		||||
    https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.5.0...dev
 | 
			
		||||
[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
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										55
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										55
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -1,18 +1,19 @@
 | 
			
		||||
{
 | 
			
		||||
    "name": "foris",
 | 
			
		||||
    "version": "6.3.0",
 | 
			
		||||
    "version": "6.5.0",
 | 
			
		||||
    "lockfileVersion": 2,
 | 
			
		||||
    "requires": true,
 | 
			
		||||
    "packages": {
 | 
			
		||||
        "": {
 | 
			
		||||
            "name": "foris",
 | 
			
		||||
            "version": "6.3.0",
 | 
			
		||||
            "version": "6.5.0",
 | 
			
		||||
            "license": "GPL-3.0",
 | 
			
		||||
            "dependencies": {
 | 
			
		||||
                "@fortawesome/fontawesome-svg-core": "^6.6.0",
 | 
			
		||||
                "@fortawesome/free-regular-svg-icons": "^6.6.0",
 | 
			
		||||
                "@fortawesome/free-solid-svg-icons": "^6.6.0",
 | 
			
		||||
                "@fortawesome/react-fontawesome": "^0.2.2",
 | 
			
		||||
                "@tanstack/react-table": "^8.20.5",
 | 
			
		||||
                "axios": "^1.7.2",
 | 
			
		||||
                "immutability-helper": "^3.1.1",
 | 
			
		||||
                "moment": "^2.30.1",
 | 
			
		||||
@@ -3583,6 +3584,39 @@
 | 
			
		||||
                "@sinonjs/commons": "^3.0.0"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/@tanstack/react-table": {
 | 
			
		||||
            "version": "8.20.5",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/@tanstack/react-table/-/react-table-8.20.5.tgz",
 | 
			
		||||
            "integrity": "sha512-WEHopKw3znbUZ61s9i0+i9g8drmDo6asTWbrQh8Us63DAk/M0FkmIqERew6P71HI75ksZ2Pxyuf4vvKh9rAkiA==",
 | 
			
		||||
            "license": "MIT",
 | 
			
		||||
            "dependencies": {
 | 
			
		||||
                "@tanstack/table-core": "8.20.5"
 | 
			
		||||
            },
 | 
			
		||||
            "engines": {
 | 
			
		||||
                "node": ">=12"
 | 
			
		||||
            },
 | 
			
		||||
            "funding": {
 | 
			
		||||
                "type": "github",
 | 
			
		||||
                "url": "https://github.com/sponsors/tannerlinsley"
 | 
			
		||||
            },
 | 
			
		||||
            "peerDependencies": {
 | 
			
		||||
                "react": ">=16.8",
 | 
			
		||||
                "react-dom": ">=16.8"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/@tanstack/table-core": {
 | 
			
		||||
            "version": "8.20.5",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/@tanstack/table-core/-/table-core-8.20.5.tgz",
 | 
			
		||||
            "integrity": "sha512-P9dF7XbibHph2PFRz8gfBKEXEY/HJPOhym8CHmjF8y3q5mWpKx9xtZapXQUWCgkqvsK0R46Azuz+VaxD4Xl+Tg==",
 | 
			
		||||
            "license": "MIT",
 | 
			
		||||
            "engines": {
 | 
			
		||||
                "node": ">=12"
 | 
			
		||||
            },
 | 
			
		||||
            "funding": {
 | 
			
		||||
                "type": "github",
 | 
			
		||||
                "url": "https://github.com/sponsors/tannerlinsley"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/@testing-library/dom": {
 | 
			
		||||
            "version": "5.6.1",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-5.6.1.tgz",
 | 
			
		||||
@@ -15493,7 +15527,6 @@
 | 
			
		||||
            "version": "16.9.0",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.9.0.tgz",
 | 
			
		||||
            "integrity": "sha512-YFT2rxO9hM70ewk9jq0y6sQk8cL02xm4+IzYBz75CQGlClQQ1Bxq0nhHF6OtSbit+AIahujJgb/CPRibFkMNJQ==",
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "dependencies": {
 | 
			
		||||
                "loose-envify": "^1.1.0",
 | 
			
		||||
                "object-assign": "^4.1.1",
 | 
			
		||||
@@ -16247,7 +16280,6 @@
 | 
			
		||||
            "version": "0.15.0",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.15.0.tgz",
 | 
			
		||||
            "integrity": "sha512-xAefmSfN6jqAa7Kuq7LIJY0bwAPG3xlCj0HMEBQk1lxYiDKZscY2xJ5U/61ZTrYbmNQbXa+gc7czPkVo11tnCg==",
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "dependencies": {
 | 
			
		||||
                "loose-envify": "^1.1.0",
 | 
			
		||||
                "object-assign": "^4.1.1"
 | 
			
		||||
@@ -21102,6 +21134,19 @@
 | 
			
		||||
                "@sinonjs/commons": "^3.0.0"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "@tanstack/react-table": {
 | 
			
		||||
            "version": "8.20.5",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/@tanstack/react-table/-/react-table-8.20.5.tgz",
 | 
			
		||||
            "integrity": "sha512-WEHopKw3znbUZ61s9i0+i9g8drmDo6asTWbrQh8Us63DAk/M0FkmIqERew6P71HI75ksZ2Pxyuf4vvKh9rAkiA==",
 | 
			
		||||
            "requires": {
 | 
			
		||||
                "@tanstack/table-core": "8.20.5"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "@tanstack/table-core": {
 | 
			
		||||
            "version": "8.20.5",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/@tanstack/table-core/-/table-core-8.20.5.tgz",
 | 
			
		||||
            "integrity": "sha512-P9dF7XbibHph2PFRz8gfBKEXEY/HJPOhym8CHmjF8y3q5mWpKx9xtZapXQUWCgkqvsK0R46Azuz+VaxD4Xl+Tg=="
 | 
			
		||||
        },
 | 
			
		||||
        "@testing-library/dom": {
 | 
			
		||||
            "version": "5.6.1",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-5.6.1.tgz",
 | 
			
		||||
@@ -30083,7 +30128,6 @@
 | 
			
		||||
            "version": "16.9.0",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.9.0.tgz",
 | 
			
		||||
            "integrity": "sha512-YFT2rxO9hM70ewk9jq0y6sQk8cL02xm4+IzYBz75CQGlClQQ1Bxq0nhHF6OtSbit+AIahujJgb/CPRibFkMNJQ==",
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "requires": {
 | 
			
		||||
                "loose-envify": "^1.1.0",
 | 
			
		||||
                "object-assign": "^4.1.1",
 | 
			
		||||
@@ -30648,7 +30692,6 @@
 | 
			
		||||
            "version": "0.15.0",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.15.0.tgz",
 | 
			
		||||
            "integrity": "sha512-xAefmSfN6jqAa7Kuq7LIJY0bwAPG3xlCj0HMEBQk1lxYiDKZscY2xJ5U/61ZTrYbmNQbXa+gc7czPkVo11tnCg==",
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "requires": {
 | 
			
		||||
                "loose-envify": "^1.1.0",
 | 
			
		||||
                "object-assign": "^4.1.1"
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
    "name": "foris",
 | 
			
		||||
    "version": "6.3.0",
 | 
			
		||||
    "version": "6.5.0",
 | 
			
		||||
    "description": "Foris JS library is a set of components and utils for reForis application and plugins.",
 | 
			
		||||
    "author": "CZ.NIC, z.s.p.o.",
 | 
			
		||||
    "repository": {
 | 
			
		||||
@@ -18,6 +18,7 @@
 | 
			
		||||
        "@fortawesome/free-regular-svg-icons": "^6.6.0",
 | 
			
		||||
        "@fortawesome/free-solid-svg-icons": "^6.6.0",
 | 
			
		||||
        "@fortawesome/react-fontawesome": "^0.2.2",
 | 
			
		||||
        "@tanstack/react-table": "^8.20.5",
 | 
			
		||||
        "axios": "^1.7.2",
 | 
			
		||||
        "immutability-helper": "^3.1.1",
 | 
			
		||||
        "moment": "^2.30.1",
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@
 | 
			
		||||
 * See /LICENSE for more information.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
import React, { useRef } from "react";
 | 
			
		||||
import React, { useRef, useEffect, useState } from "react";
 | 
			
		||||
 | 
			
		||||
import PropTypes from "prop-types";
 | 
			
		||||
 | 
			
		||||
@@ -40,20 +40,36 @@ Alert.defaultProps = {
 | 
			
		||||
 | 
			
		||||
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 (
 | 
			
		||||
        <div
 | 
			
		||||
            ref={alertRef}
 | 
			
		||||
            className={`alert alert-${type} ${
 | 
			
		||||
            className={`alert alert-${type} ${isVisible ? "alert-fade-in" : "alert-slide-out-top"} ${
 | 
			
		||||
                onDismiss ? "alert-dismissible" : ""
 | 
			
		||||
            }`.trim()}
 | 
			
		||||
            role="alert"
 | 
			
		||||
            onAnimationEnd={handleAnimationEnd}
 | 
			
		||||
        >
 | 
			
		||||
            {onDismiss && (
 | 
			
		||||
                <button
 | 
			
		||||
                    type="button"
 | 
			
		||||
                    className="btn-close"
 | 
			
		||||
                    onClick={onDismiss}
 | 
			
		||||
                    onClick={() => setIsVisible(false)}
 | 
			
		||||
                    aria-label={_("Close")}
 | 
			
		||||
                />
 | 
			
		||||
            )}
 | 
			
		||||
 
 | 
			
		||||
@@ -18,9 +18,9 @@ ThreeDotsMenu.propTypes = {
 | 
			
		||||
    children: PropTypes.arrayOf(PropTypes.node).isRequired,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
function ThreeDotsMenu({ children }) {
 | 
			
		||||
function ThreeDotsMenu({ children, ...props }) {
 | 
			
		||||
    return (
 | 
			
		||||
        <div className="dropdown">
 | 
			
		||||
        <div className="dropdown position-static" {...props}>
 | 
			
		||||
            <Button
 | 
			
		||||
                className="btn-sm btn-link text-body"
 | 
			
		||||
                data-bs-toggle="dropdown"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										135
									
								
								src/common/ActionButtonWithModal/ActionButtonWithModal.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										135
									
								
								src/common/ActionButtonWithModal/ActionButtonWithModal.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,135 @@
 | 
			
		||||
/*
 | 
			
		||||
 * 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";
 | 
			
		||||
 | 
			
		||||
ActionButtonWithModal.propTypes = {
 | 
			
		||||
    /** Component that triggers the action. */
 | 
			
		||||
    actionTrigger: PropTypes.elementType.isRequired,
 | 
			
		||||
    /** 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,
 | 
			
		||||
    actionUrl,
 | 
			
		||||
    modalTitle,
 | 
			
		||||
    modalMessage,
 | 
			
		||||
    modalActionText,
 | 
			
		||||
    modalActionProps,
 | 
			
		||||
    successMessage,
 | 
			
		||||
    errorMessage,
 | 
			
		||||
}) {
 | 
			
		||||
    const [triggered, setTriggered] = useState(false);
 | 
			
		||||
    const [modalShown, setModalShown] = useState(false);
 | 
			
		||||
    const [triggerActionStatus, triggerAction] = useAPIPost(actionUrl);
 | 
			
		||||
 | 
			
		||||
    const [setAlert] = useAlert();
 | 
			
		||||
    useEffect(() => {
 | 
			
		||||
        if (triggerActionStatus.state === API_STATE.SUCCESS) {
 | 
			
		||||
            setAlert(
 | 
			
		||||
                successMessage || _("Action successful."),
 | 
			
		||||
                API_STATE.SUCCESS
 | 
			
		||||
            );
 | 
			
		||||
        }
 | 
			
		||||
        if (triggerActionStatus.state === API_STATE.ERROR) {
 | 
			
		||||
            setAlert(errorMessage || _("Action failed."));
 | 
			
		||||
        }
 | 
			
		||||
    }, [triggerActionStatus, setAlert, successMessage, errorMessage]);
 | 
			
		||||
 | 
			
		||||
    const actionHandler = () => {
 | 
			
		||||
        setTriggered(true);
 | 
			
		||||
        triggerAction();
 | 
			
		||||
        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;
 | 
			
		||||
							
								
								
									
										39
									
								
								src/common/ActionButtonWithModal/ActionButtonWithModal.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								src/common/ActionButtonWithModal/ActionButtonWithModal.md
									
									
									
									
									
										Normal 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 />;
 | 
			
		||||
```
 | 
			
		||||
@@ -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;
 | 
			
		||||
							
								
								
									
										84
									
								
								src/common/RichTable/RichTable.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										84
									
								
								src/common/RichTable/RichTable.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,84 @@
 | 
			
		||||
/*
 | 
			
		||||
 * 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, { useMemo, useState } from "react";
 | 
			
		||||
 | 
			
		||||
import {
 | 
			
		||||
    flexRender,
 | 
			
		||||
    getCoreRowModel,
 | 
			
		||||
    getSortedRowModel,
 | 
			
		||||
    getPaginationRowModel,
 | 
			
		||||
    useReactTable,
 | 
			
		||||
} from "@tanstack/react-table";
 | 
			
		||||
import PropTypes from "prop-types";
 | 
			
		||||
 | 
			
		||||
import RichTableBody from "./RichTableBody";
 | 
			
		||||
import RichTableHeader from "./RichTableHeader";
 | 
			
		||||
import RichTablePagination from "./RichTablePagination";
 | 
			
		||||
 | 
			
		||||
const fallbackData = [];
 | 
			
		||||
 | 
			
		||||
RichTable.propTypes = {
 | 
			
		||||
    /** Columns to be displayed in the table */
 | 
			
		||||
    columns: PropTypes.array.isRequired,
 | 
			
		||||
    /** Data to be displayed in the table */
 | 
			
		||||
    data: PropTypes.array.isRequired,
 | 
			
		||||
    /** Whether to display pagination */
 | 
			
		||||
    withPagination: PropTypes.bool,
 | 
			
		||||
    /** Number of rows per page */
 | 
			
		||||
    pageSize: PropTypes.number,
 | 
			
		||||
    /** Index of the current page */
 | 
			
		||||
    pageIndex: PropTypes.number,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
function RichTable({
 | 
			
		||||
    columns,
 | 
			
		||||
    data,
 | 
			
		||||
    withPagination,
 | 
			
		||||
    pageSize = 5,
 | 
			
		||||
    pageIndex = 0,
 | 
			
		||||
}) {
 | 
			
		||||
    const tableColumns = useMemo(() => columns, [columns]);
 | 
			
		||||
    const [tableData] = useState(data ?? fallbackData);
 | 
			
		||||
    const [sorting, setSorting] = useState([]);
 | 
			
		||||
    const [pagination, setPagination] = useState({
 | 
			
		||||
        pageIndex,
 | 
			
		||||
        pageSize,
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    const table = useReactTable({
 | 
			
		||||
        data: tableData,
 | 
			
		||||
        columns: tableColumns,
 | 
			
		||||
        getCoreRowModel: getCoreRowModel(),
 | 
			
		||||
        getSortedRowModel: getSortedRowModel(),
 | 
			
		||||
        getPaginationRowModel: getPaginationRowModel(),
 | 
			
		||||
        onPaginationChange: setPagination,
 | 
			
		||||
        onSortingChange: setSorting,
 | 
			
		||||
        state: {
 | 
			
		||||
            sorting,
 | 
			
		||||
            pagination,
 | 
			
		||||
        },
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    return (
 | 
			
		||||
        <div className="table-responsive">
 | 
			
		||||
            <table className="table table-hover text-nowrap">
 | 
			
		||||
                <RichTableHeader table={table} flexRender={flexRender} />
 | 
			
		||||
                <RichTableBody table={table} flexRender={flexRender} />
 | 
			
		||||
            </table>
 | 
			
		||||
            {withPagination && (
 | 
			
		||||
                <RichTablePagination
 | 
			
		||||
                    table={table}
 | 
			
		||||
                    tablePageSize={pageSize}
 | 
			
		||||
                    allRows={tableData.length}
 | 
			
		||||
                />
 | 
			
		||||
            )}
 | 
			
		||||
        </div>
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export default RichTable;
 | 
			
		||||
							
								
								
									
										135
									
								
								src/common/RichTable/RichTable.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										135
									
								
								src/common/RichTable/RichTable.md
									
									
									
									
									
										Normal 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 />;
 | 
			
		||||
```
 | 
			
		||||
							
								
								
									
										48
									
								
								src/common/RichTable/RichTableBody.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								src/common/RichTable/RichTableBody.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,48 @@
 | 
			
		||||
/*
 | 
			
		||||
 * 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,
 | 
			
		||||
    flexRender: propTypes.func.isRequired,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
function RichTableBody({ table, flexRender }) {
 | 
			
		||||
    return (
 | 
			
		||||
        <tbody>
 | 
			
		||||
            {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>
 | 
			
		||||
                );
 | 
			
		||||
            })}
 | 
			
		||||
        </tbody>
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export default RichTableBody;
 | 
			
		||||
							
								
								
									
										96
									
								
								src/common/RichTable/RichTableHeader.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										96
									
								
								src/common/RichTable/RichTableHeader.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,96 @@
 | 
			
		||||
/*
 | 
			
		||||
 * 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 {
 | 
			
		||||
    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="thead-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"
 | 
			
		||||
                                    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;
 | 
			
		||||
							
								
								
									
										128
									
								
								src/common/RichTable/RichTablePagination.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										128
									
								
								src/common/RichTable/RichTablePagination.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,128 @@
 | 
			
		||||
/*
 | 
			
		||||
 * 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, { 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")} 
 | 
			
		||||
                <span className="fw-bold">
 | 
			
		||||
                    {pagination.pageIndex + 1}
 | 
			
		||||
                     {_("of")} 
 | 
			
		||||
                    {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;
 | 
			
		||||
@@ -9,7 +9,7 @@ import React from "react";
 | 
			
		||||
 | 
			
		||||
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 WiFiQRCode from "./WiFiQRCode";
 | 
			
		||||
import PasswordInput from "../../bootstrap/PasswordInput";
 | 
			
		||||
@@ -60,7 +60,7 @@ DeviceForm.propTypes = {
 | 
			
		||||
        SSID: PropTypes.string.isRequired,
 | 
			
		||||
        password: PropTypes.string.isRequired,
 | 
			
		||||
        hidden: PropTypes.bool.isRequired,
 | 
			
		||||
        hwmode: PropTypes.string.isRequired,
 | 
			
		||||
        band: PropTypes.string.isRequired,
 | 
			
		||||
        htmode: PropTypes.string.isRequired,
 | 
			
		||||
        channel: PropTypes.string.isRequired,
 | 
			
		||||
        guest_wifi: PropTypes.object.isRequired,
 | 
			
		||||
@@ -155,26 +155,26 @@ function DeviceForm({
 | 
			
		||||
                    />
 | 
			
		||||
 | 
			
		||||
                    <RadioSet
 | 
			
		||||
                        name={`hwmode-${deviceID}`}
 | 
			
		||||
                        label="GHz"
 | 
			
		||||
                        choices={getHwmodeChoices(formData)}
 | 
			
		||||
                        value={formData.hwmode}
 | 
			
		||||
                        helpText={HELP_TEXTS.hwmode}
 | 
			
		||||
                        name={`band-${deviceID}`}
 | 
			
		||||
                        label={_("Band")}
 | 
			
		||||
                        choices={getBandChoices(formData)}
 | 
			
		||||
                        value={formData.band}
 | 
			
		||||
                        helpText={HELP_TEXTS.band}
 | 
			
		||||
                        inline
 | 
			
		||||
                        onChange={setFormValue((value) => {
 | 
			
		||||
                            // Get the last item in an array of available HT modes
 | 
			
		||||
                            const [best2] = bnds[0].available_htmodes.slice(-1);
 | 
			
		||||
                            const [best5] = bnds[1].available_htmodes.slice(-1);
 | 
			
		||||
                            // Find the selected band
 | 
			
		||||
                            const selectedBand = bnds.find(
 | 
			
		||||
                                (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 {
 | 
			
		||||
                                devices: {
 | 
			
		||||
                                    [deviceIndex]: {
 | 
			
		||||
                                        hwmode: { $set: value },
 | 
			
		||||
                                        band: { $set: value },
 | 
			
		||||
                                        channel: { $set: "0" },
 | 
			
		||||
                                        htmode: {
 | 
			
		||||
                                            $set:
 | 
			
		||||
                                                // Set HT mode depending on checked frequency
 | 
			
		||||
                                                value === "11a" ? best5 : best2,
 | 
			
		||||
                                        },
 | 
			
		||||
                                        htmode: { $set: bestHtmode },
 | 
			
		||||
                                    },
 | 
			
		||||
                                },
 | 
			
		||||
                            };
 | 
			
		||||
@@ -263,7 +263,7 @@ function getChannelChoices(device) {
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    device.available_bands.forEach((availableBand) => {
 | 
			
		||||
        if (availableBand.hwmode !== device.hwmode) return;
 | 
			
		||||
        if (availableBand.band !== device.band) return;
 | 
			
		||||
 | 
			
		||||
        availableBand.available_channels.forEach((availableChannel) => {
 | 
			
		||||
            channelChoices[availableChannel.number.toString()] = `
 | 
			
		||||
@@ -282,7 +282,7 @@ function getHtmodeChoices(device) {
 | 
			
		||||
    const htmodeChoices = {};
 | 
			
		||||
 | 
			
		||||
    device.available_bands.forEach((availableBand) => {
 | 
			
		||||
        if (availableBand.hwmode !== device.hwmode) return;
 | 
			
		||||
        if (availableBand.band !== device.band) return;
 | 
			
		||||
 | 
			
		||||
        availableBand.available_htmodes.forEach((availableHtmod) => {
 | 
			
		||||
            htmodeChoices[availableHtmod] = HTMODES[availableHtmod];
 | 
			
		||||
@@ -291,10 +291,10 @@ function getHtmodeChoices(device) {
 | 
			
		||||
    return htmodeChoices;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function getHwmodeChoices(device) {
 | 
			
		||||
function getBandChoices(device) {
 | 
			
		||||
    return device.available_bands.map((availableBand) => ({
 | 
			
		||||
        label: HWMODES[availableBand.hwmode],
 | 
			
		||||
        value: availableBand.hwmode,
 | 
			
		||||
        label: `${BANDS[availableBand.band]} GHz`,
 | 
			
		||||
        value: availableBand.band,
 | 
			
		||||
    }));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -77,7 +77,7 @@ describe("<WiFiSettings/>", () => {
 | 
			
		||||
    it("Snapshot 2.4 GHz", () => {
 | 
			
		||||
        fireEvent.click(getByText("Wi-Fi 1"));
 | 
			
		||||
        const enabledRender = asFragment();
 | 
			
		||||
        fireEvent.click(getAllByText("2.4")[0]);
 | 
			
		||||
        fireEvent.click(getAllByText(/2.4/)[0]);
 | 
			
		||||
        expect(diffSnapshot(enabledRender, asFragment())).toMatchSnapshot();
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
@@ -118,7 +118,7 @@ describe("<WiFiSettings/>", () => {
 | 
			
		||||
                    guest_wifi: { enabled: false },
 | 
			
		||||
                    hidden: false,
 | 
			
		||||
                    htmode: "HT80",
 | 
			
		||||
                    hwmode: "11a",
 | 
			
		||||
                    band: "5g",
 | 
			
		||||
                    id: 0,
 | 
			
		||||
                    password: "TestPass",
 | 
			
		||||
                    encryption: "WPA3",
 | 
			
		||||
@@ -135,7 +135,7 @@ describe("<WiFiSettings/>", () => {
 | 
			
		||||
 | 
			
		||||
    it("Post form: 2.4 GHz", () => {
 | 
			
		||||
        fireEvent.click(getByText("Wi-Fi 1"));
 | 
			
		||||
        fireEvent.click(getAllByText("2.4")[0]);
 | 
			
		||||
        fireEvent.click(getAllByText(/2.4/)[0]);
 | 
			
		||||
 | 
			
		||||
        fireEvent.click(getByText("Save"));
 | 
			
		||||
        expect(mockAxios.post).toBeCalled();
 | 
			
		||||
@@ -148,7 +148,7 @@ describe("<WiFiSettings/>", () => {
 | 
			
		||||
                    guest_wifi: { enabled: false },
 | 
			
		||||
                    hidden: false,
 | 
			
		||||
                    htmode: "VHT80",
 | 
			
		||||
                    hwmode: "11g",
 | 
			
		||||
                    band: "2g",
 | 
			
		||||
                    id: 0,
 | 
			
		||||
                    password: "TestPass",
 | 
			
		||||
                    encryption: "WPA3",
 | 
			
		||||
@@ -185,7 +185,7 @@ describe("<WiFiSettings/>", () => {
 | 
			
		||||
                    },
 | 
			
		||||
                    hidden: false,
 | 
			
		||||
                    htmode: "HT80",
 | 
			
		||||
                    hwmode: "11a",
 | 
			
		||||
                    band: "5g",
 | 
			
		||||
                    id: 0,
 | 
			
		||||
                    password: "TestPass",
 | 
			
		||||
                    encryption: "WPA3",
 | 
			
		||||
 
 | 
			
		||||
@@ -77,7 +77,7 @@ export function wifiSettingsFixture() {
 | 
			
		||||
                            "VHT40",
 | 
			
		||||
                            "VHT80",
 | 
			
		||||
                        ],
 | 
			
		||||
                        hwmode: "11g",
 | 
			
		||||
                        band: "2g",
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        available_channels: [
 | 
			
		||||
@@ -215,7 +215,7 @@ export function wifiSettingsFixture() {
 | 
			
		||||
                            "VHT40",
 | 
			
		||||
                            "VHT80",
 | 
			
		||||
                        ],
 | 
			
		||||
                        hwmode: "11a",
 | 
			
		||||
                        band: "5g",
 | 
			
		||||
                    },
 | 
			
		||||
                ],
 | 
			
		||||
                channel: 60,
 | 
			
		||||
@@ -227,7 +227,7 @@ export function wifiSettingsFixture() {
 | 
			
		||||
                },
 | 
			
		||||
                hidden: false,
 | 
			
		||||
                htmode: "HT80",
 | 
			
		||||
                hwmode: "11a",
 | 
			
		||||
                band: "5g",
 | 
			
		||||
                id: 0,
 | 
			
		||||
                password: "TestPass",
 | 
			
		||||
                encryption: "WPA3",
 | 
			
		||||
@@ -294,7 +294,7 @@ export function wifiSettingsFixture() {
 | 
			
		||||
                            },
 | 
			
		||||
                        ],
 | 
			
		||||
                        available_htmodes: ["NOHT", "HT20", "HT40"],
 | 
			
		||||
                        hwmode: "11g",
 | 
			
		||||
                        band: "2g",
 | 
			
		||||
                    },
 | 
			
		||||
                ],
 | 
			
		||||
                channel: 11,
 | 
			
		||||
@@ -306,7 +306,7 @@ export function wifiSettingsFixture() {
 | 
			
		||||
                },
 | 
			
		||||
                hidden: false,
 | 
			
		||||
                htmode: "HT40",
 | 
			
		||||
                hwmode: "11g",
 | 
			
		||||
                band: "2g",
 | 
			
		||||
                id: 1,
 | 
			
		||||
                password: "TestPass",
 | 
			
		||||
                encryption: "WPA3",
 | 
			
		||||
@@ -323,7 +323,7 @@ const oneDevice = {
 | 
			
		||||
            guest_wifi: { enabled: false },
 | 
			
		||||
            hidden: false,
 | 
			
		||||
            htmode: "HT40",
 | 
			
		||||
            hwmode: "11a",
 | 
			
		||||
            band: "5g",
 | 
			
		||||
            id: 0,
 | 
			
		||||
            password: "TestPass",
 | 
			
		||||
            encryption: "WPA3",
 | 
			
		||||
@@ -340,7 +340,7 @@ const twoDevices = {
 | 
			
		||||
            guest_wifi: { enabled: false },
 | 
			
		||||
            hidden: false,
 | 
			
		||||
            htmode: "HT40",
 | 
			
		||||
            hwmode: "11a",
 | 
			
		||||
            band: "5g",
 | 
			
		||||
            id: 0,
 | 
			
		||||
            password: "TestPass",
 | 
			
		||||
            encryption: "WPA3",
 | 
			
		||||
@@ -352,7 +352,7 @@ const twoDevices = {
 | 
			
		||||
            guest_wifi: { enabled: false },
 | 
			
		||||
            hidden: false,
 | 
			
		||||
            htmode: "HT40",
 | 
			
		||||
            hwmode: "11a",
 | 
			
		||||
            band: "5g",
 | 
			
		||||
            id: 1,
 | 
			
		||||
            password: "TestPass",
 | 
			
		||||
            encryption: "WPA3",
 | 
			
		||||
@@ -369,7 +369,7 @@ const threeDevices = {
 | 
			
		||||
            guest_wifi: { enabled: false },
 | 
			
		||||
            hidden: false,
 | 
			
		||||
            htmode: "HT40",
 | 
			
		||||
            hwmode: "11a",
 | 
			
		||||
            band: "5g",
 | 
			
		||||
            id: 0,
 | 
			
		||||
            password: "TestPass",
 | 
			
		||||
            encryption: "WPA3",
 | 
			
		||||
@@ -381,7 +381,7 @@ const threeDevices = {
 | 
			
		||||
            guest_wifi: { enabled: false },
 | 
			
		||||
            hidden: false,
 | 
			
		||||
            htmode: "HT40",
 | 
			
		||||
            hwmode: "11a",
 | 
			
		||||
            band: "5g",
 | 
			
		||||
            id: 1,
 | 
			
		||||
            password: "TestPass",
 | 
			
		||||
            encryption: "WPA3",
 | 
			
		||||
@@ -393,7 +393,7 @@ const threeDevices = {
 | 
			
		||||
            guest_wifi: { enabled: false },
 | 
			
		||||
            hidden: false,
 | 
			
		||||
            htmode: "HT40",
 | 
			
		||||
            hwmode: "11a",
 | 
			
		||||
            band: "5g",
 | 
			
		||||
            id: 2,
 | 
			
		||||
            password: "",
 | 
			
		||||
            encryption: "WPA3",
 | 
			
		||||
 
 | 
			
		||||
@@ -555,23 +555,23 @@ exports[`<WiFiSettings/> Snapshot one module enabled. 1`] = `
 | 
			
		||||
+           class="d-block"
 | 
			
		||||
+           for="6"
 | 
			
		||||
+         >
 | 
			
		||||
+           GHz
 | 
			
		||||
+           Band
 | 
			
		||||
+         </label>
 | 
			
		||||
+         <div
 | 
			
		||||
+           class="mb-3 form-check form-check-inline"
 | 
			
		||||
+         >
 | 
			
		||||
+           <input
 | 
			
		||||
+             class="form-check-input me-2"
 | 
			
		||||
+             id="hwmode-0-0"
 | 
			
		||||
+             name="hwmode-0"
 | 
			
		||||
+             id="band-0-0"
 | 
			
		||||
+             name="band-0"
 | 
			
		||||
+             type="radio"
 | 
			
		||||
+             value="11g"
 | 
			
		||||
+             value="2g"
 | 
			
		||||
+           />
 | 
			
		||||
+           <label
 | 
			
		||||
+             class="form-check-label"
 | 
			
		||||
+             for="hwmode-0-0"
 | 
			
		||||
+             for="band-0-0"
 | 
			
		||||
+           >
 | 
			
		||||
+             2.4
 | 
			
		||||
+             2.4 GHz
 | 
			
		||||
+           </label>
 | 
			
		||||
+         </div>
 | 
			
		||||
+         <div
 | 
			
		||||
@@ -580,16 +580,16 @@ exports[`<WiFiSettings/> Snapshot one module enabled. 1`] = `
 | 
			
		||||
+           <input
 | 
			
		||||
+             checked=""
 | 
			
		||||
+             class="form-check-input me-2"
 | 
			
		||||
+             id="hwmode-0-1"
 | 
			
		||||
+             name="hwmode-0"
 | 
			
		||||
+             id="band-0-1"
 | 
			
		||||
+             name="band-0"
 | 
			
		||||
+             type="radio"
 | 
			
		||||
+             value="11a"
 | 
			
		||||
+             value="5g"
 | 
			
		||||
+           />
 | 
			
		||||
+           <label
 | 
			
		||||
+             class="form-check-label"
 | 
			
		||||
+             for="hwmode-0-1"
 | 
			
		||||
+             for="band-0-1"
 | 
			
		||||
+           >
 | 
			
		||||
+             5
 | 
			
		||||
+             5 GHz
 | 
			
		||||
+           </label>
 | 
			
		||||
+         </div>
 | 
			
		||||
+         <div
 | 
			
		||||
 
 | 
			
		||||
@@ -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.
 | 
			
		||||
 * See /LICENSE for more information.
 | 
			
		||||
@@ -18,9 +18,10 @@ export const HTMODES = {
 | 
			
		||||
    HE80: _("802.11ax - 80 MHz wide channel"),
 | 
			
		||||
    HE160: _("802.11ax - 160 MHz wide channel"),
 | 
			
		||||
};
 | 
			
		||||
export const HWMODES = {
 | 
			
		||||
    "11g": "2.4",
 | 
			
		||||
    "11a": "5",
 | 
			
		||||
export const BANDS = {
 | 
			
		||||
    "2g": "2.4",
 | 
			
		||||
    "5g": "5",
 | 
			
		||||
    "6g": "6",
 | 
			
		||||
};
 | 
			
		||||
export const ENCRYPTIONMODES = {
 | 
			
		||||
    WPA3: _("WPA3 only"),
 | 
			
		||||
@@ -37,7 +38,7 @@ export const HELP_TEXTS = {
 | 
			
		||||
    hidden: _(
 | 
			
		||||
        "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."
 | 
			
		||||
    ),
 | 
			
		||||
    htmode: _(
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										92
									
								
								src/common/__tests__/ActionButtonWithModal.test.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										92
									
								
								src/common/__tests__/ActionButtonWithModal.test.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,92 @@
 | 
			
		||||
/*
 | 
			
		||||
 * 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 Button from "bootstrap/Button";
 | 
			
		||||
 | 
			
		||||
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 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 wait(() =>
 | 
			
		||||
            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 wait(() =>
 | 
			
		||||
            expect(mockSetAlert).toBeCalledWith(
 | 
			
		||||
                "Action request succeeded.",
 | 
			
		||||
                "success"
 | 
			
		||||
            )
 | 
			
		||||
        );
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
@@ -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.")
 | 
			
		||||
        );
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
@@ -1,6 +1,25 @@
 | 
			
		||||
// 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
 | 
			
		||||
    id="modal-container"
 | 
			
		||||
@@ -35,15 +54,17 @@ exports[`<RebootButton/> Render modal. 1`] = `
 | 
			
		||||
          <div
 | 
			
		||||
            class="modal-body"
 | 
			
		||||
          >
 | 
			
		||||
            <p>
 | 
			
		||||
              Are you sure you want to restart the router?
 | 
			
		||||
            <p
 | 
			
		||||
              class="mb-0"
 | 
			
		||||
            >
 | 
			
		||||
              Are you sure you want to perform this action?
 | 
			
		||||
            </p>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div
 | 
			
		||||
            class="modal-footer"
 | 
			
		||||
          >
 | 
			
		||||
            <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"
 | 
			
		||||
            >
 | 
			
		||||
              <span>
 | 
			
		||||
@@ -55,7 +76,7 @@ exports[`<RebootButton/> Render modal. 1`] = `
 | 
			
		||||
              type="button"
 | 
			
		||||
            >
 | 
			
		||||
              <span>
 | 
			
		||||
                Confirm reboot
 | 
			
		||||
                Confirm action
 | 
			
		||||
              </span>
 | 
			
		||||
            </button>
 | 
			
		||||
          </div>
 | 
			
		||||
@@ -63,28 +84,15 @@ exports[`<RebootButton/> Render modal. 1`] = `
 | 
			
		||||
      </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
 | 
			
		||||
    id="modal-container"
 | 
			
		||||
    id="alert-container"
 | 
			
		||||
  />
 | 
			
		||||
  <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"
 | 
			
		||||
  >
 | 
			
		||||
    <span>
 | 
			
		||||
      Reboot
 | 
			
		||||
      Action
 | 
			
		||||
    </span>
 | 
			
		||||
  </button>
 | 
			
		||||
</div>
 | 
			
		||||
@@ -43,14 +43,17 @@ describe("AlertContext", () => {
 | 
			
		||||
        expect(componentContainer).toMatchSnapshot();
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it("should dismiss alert with alert button", () => {
 | 
			
		||||
    it("should dismiss alert with alert button", async () => {
 | 
			
		||||
        fireEvent.click(getByText(componentContainer, "Set alert"));
 | 
			
		||||
        // Alert is present
 | 
			
		||||
        expect(getByText(componentContainer, "Alert content")).toBeDefined();
 | 
			
		||||
 | 
			
		||||
        fireEvent.click(componentContainer.querySelector(".btn-close"));
 | 
			
		||||
        // Alert is gone
 | 
			
		||||
        expect(queryByText(componentContainer, "Alert content")).toBeNull();
 | 
			
		||||
        await (() =>
 | 
			
		||||
            expect(
 | 
			
		||||
                queryByText(componentContainer, "Alert content")
 | 
			
		||||
            ).toBeNull());
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it("should dismiss alert with external button", () => {
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@ exports[`AlertContext should render alert 1`] = `
 | 
			
		||||
    id="alert-container"
 | 
			
		||||
  >
 | 
			
		||||
    <div
 | 
			
		||||
      class="alert alert-danger alert-dismissible"
 | 
			
		||||
      class="alert alert-danger alert-fade-in alert-dismissible"
 | 
			
		||||
      role="alert"
 | 
			
		||||
    >
 | 
			
		||||
      <button
 | 
			
		||||
 
 | 
			
		||||
@@ -40,9 +40,10 @@ export { Spinner, SpinnerElement } from "./bootstrap/Spinner";
 | 
			
		||||
export { Modal, ModalBody, ModalFooter, ModalHeader } from "./bootstrap/Modal";
 | 
			
		||||
 | 
			
		||||
// 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 ResetWiFiSettings } from "./common/WiFiSettings/ResetWiFiSettings";
 | 
			
		||||
export { default as RichTable } from "./common/RichTable/RichTable";
 | 
			
		||||
// Form
 | 
			
		||||
export { default as ForisForm } from "./form/components/ForisForm";
 | 
			
		||||
export {
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@ import { render } from "@testing-library/react";
 | 
			
		||||
import PropTypes from "prop-types";
 | 
			
		||||
 | 
			
		||||
import { AlertContextMock } from "./alertContextMock";
 | 
			
		||||
import { CustomizationContextMock } from "./cutomizationContextMock";
 | 
			
		||||
import { CustomizationContextMock } from "./customizationContextMock";
 | 
			
		||||
 | 
			
		||||
Wrapper.propTypes = {
 | 
			
		||||
    children: PropTypes.oneOfType([
 | 
			
		||||
 
 | 
			
		||||
@@ -28,11 +28,11 @@ module.exports = {
 | 
			
		||||
            content: "docs/development.md",
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            name: "Components",
 | 
			
		||||
            name: "Common Components",
 | 
			
		||||
            description: "Set of main components.",
 | 
			
		||||
            sections: [
 | 
			
		||||
                {
 | 
			
		||||
                    name: "Foris forms",
 | 
			
		||||
                    name: "ForisForm",
 | 
			
		||||
                    components: [
 | 
			
		||||
                        "src/form/components/ForisForm.js",
 | 
			
		||||
                        "src/form/components/alerts.js",
 | 
			
		||||
@@ -42,25 +42,24 @@ module.exports = {
 | 
			
		||||
                    usageMode: "expand",
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    name: "Alert Context",
 | 
			
		||||
                    components: ["src/context/alertContext/AlertContext.js"],
 | 
			
		||||
                    name: "RichTable",
 | 
			
		||||
                    components: ["src/common/RichTable/RichTable.js"],
 | 
			
		||||
                    exampleMode: "expand",
 | 
			
		||||
                    usageMode: "expand",
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    name: "ActionButtonWithModal",
 | 
			
		||||
                    components: [
 | 
			
		||||
                        "src/common/ActionButtonWithModal/ActionButtonWithModal.js",
 | 
			
		||||
                    ],
 | 
			
		||||
                    exampleMode: "expand",
 | 
			
		||||
                    usageMode: "expand",
 | 
			
		||||
                },
 | 
			
		||||
            ],
 | 
			
		||||
            sectionDepth: 1,
 | 
			
		||||
        },
 | 
			
		||||
 | 
			
		||||
        {
 | 
			
		||||
            name: "Customization Context",
 | 
			
		||||
            components: [
 | 
			
		||||
                "src/context/customizationContext/CustomizationContext.js",
 | 
			
		||||
            ],
 | 
			
		||||
            exampleMode: "expand",
 | 
			
		||||
            usageMode: "expand",
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            name: "Bootstrap components",
 | 
			
		||||
            name: "Bootstrap Components",
 | 
			
		||||
            description: "Set of bootstrap components.",
 | 
			
		||||
            components: "src/bootstrap/*.js",
 | 
			
		||||
            exampleMode: "expand",
 | 
			
		||||
@@ -68,13 +67,22 @@ module.exports = {
 | 
			
		||||
            ignore: ["src/bootstrap/constants.js", "src/bootstrap/Radio.js"],
 | 
			
		||||
            sectionDepth: 0,
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            name: "Contexts",
 | 
			
		||||
            components: [
 | 
			
		||||
                "src/context/alertContext/AlertContext.js",
 | 
			
		||||
                "src/context/customizationContext/CustomizationContext.js",
 | 
			
		||||
            ],
 | 
			
		||||
            exampleMode: "expand",
 | 
			
		||||
            usageMode: "expand",
 | 
			
		||||
        },
 | 
			
		||||
    ],
 | 
			
		||||
    template: {
 | 
			
		||||
        favicon: "/docs/components/logo.svg",
 | 
			
		||||
    },
 | 
			
		||||
    require: [
 | 
			
		||||
        "babel-polyfill",
 | 
			
		||||
        path.join(__dirname, "src/testUtils/mockGlobals"),
 | 
			
		||||
        path.join(__dirname, "src/testUtils/mockGlobals.js"),
 | 
			
		||||
        path.join(
 | 
			
		||||
            __dirname,
 | 
			
		||||
            "node_modules/bootstrap/dist/css/bootstrap.min.css"
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: PROJECT VERSION\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
 | 
			
		||||
"POT-Creation-Date: 2024-09-25 16:10+0200\n"
 | 
			
		||||
"POT-Creation-Date: 2024-11-13 14:06+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2024-09-25 10:15+0000\n"
 | 
			
		||||
"Last-Translator: Lukas Jelinek <lukas.jelinek@nic.cz>\n"
 | 
			
		||||
"Language: cs\n"
 | 
			
		||||
@@ -35,43 +35,89 @@ msgstr "Neobdržena žádná odezva."
 | 
			
		||||
msgid "An unknown API error occurred."
 | 
			
		||||
msgstr "Došlo k neznámé chybě v aplikačním programovém rozhraní."
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/Alert.js:57 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/common/WiFiSettings/WiFiQRCode.js:89
 | 
			
		||||
msgid "Close"
 | 
			
		||||
msgstr "Zavřít"
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copied!"
 | 
			
		||||
msgstr "Zkopírováno!"
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copy"
 | 
			
		||||
msgstr "Kopírovat"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:27
 | 
			
		||||
msgid "Reboot request failed."
 | 
			
		||||
msgstr "Vyžadován restart."
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60
 | 
			
		||||
#, fuzzy
 | 
			
		||||
msgid "Action successful."
 | 
			
		||||
msgstr "Nastavení úspěšně uložena"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:51
 | 
			
		||||
msgid "Reboot"
 | 
			
		||||
msgstr "Restartovat"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65
 | 
			
		||||
msgid "Action failed."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:66
 | 
			
		||||
msgid "Warning!"
 | 
			
		||||
msgstr "Varování!"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:68
 | 
			
		||||
msgid "Are you sure you want to restart the router?"
 | 
			
		||||
msgstr "Opravdu chcete router restartovat?"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:71
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125
 | 
			
		||||
msgid "Cancel"
 | 
			
		||||
msgstr "Zrušit"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:73
 | 
			
		||||
msgid "Confirm reboot"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128
 | 
			
		||||
#, fuzzy
 | 
			
		||||
msgid "Confirm"
 | 
			
		||||
msgstr "Potvrdit restart"
 | 
			
		||||
 | 
			
		||||
#: 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
 | 
			
		||||
msgid "An error occurred during resetting Wi-Fi settings."
 | 
			
		||||
msgstr "Při resetu nastavení Wi-Fi došlo k chybě."
 | 
			
		||||
@@ -389,3 +435,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"
 | 
			
		||||
#~ "        "
 | 
			
		||||
 | 
			
		||||
#~ 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?"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: PROJECT VERSION\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
 | 
			
		||||
"POT-Creation-Date: 2024-09-25 16:10+0200\n"
 | 
			
		||||
"POT-Creation-Date: 2024-11-13 14:06+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2019-02-19 13:34+0100\n"
 | 
			
		||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 | 
			
		||||
"Language: da\n"
 | 
			
		||||
@@ -34,41 +34,85 @@ msgstr ""
 | 
			
		||||
msgid "An unknown API error occurred."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/Alert.js:57 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/common/WiFiSettings/WiFiQRCode.js:89
 | 
			
		||||
msgid "Close"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copied!"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copy"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:27
 | 
			
		||||
msgid "Reboot request failed."
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60
 | 
			
		||||
msgid "Action successful."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:51
 | 
			
		||||
msgid "Reboot"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65
 | 
			
		||||
msgid "Action failed."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:66
 | 
			
		||||
msgid "Warning!"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:68
 | 
			
		||||
msgid "Are you sure you want to restart the router?"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:71
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125
 | 
			
		||||
msgid "Cancel"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:73
 | 
			
		||||
msgid "Confirm reboot"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128
 | 
			
		||||
msgid "Confirm"
 | 
			
		||||
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
 | 
			
		||||
@@ -425,3 +469,18 @@ msgstr ""
 | 
			
		||||
#~ "channel."
 | 
			
		||||
#~ 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 ""
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: PROJECT VERSION\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
 | 
			
		||||
"POT-Creation-Date: 2024-09-25 16:10+0200\n"
 | 
			
		||||
"POT-Creation-Date: 2024-11-13 14:06+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2024-01-04 21:08+0000\n"
 | 
			
		||||
"Last-Translator: Erik Pfannenstein <debianignatz@gmx.de>\n"
 | 
			
		||||
"Language: de\n"
 | 
			
		||||
@@ -35,43 +35,89 @@ msgstr "Keine Antwort erhalten."
 | 
			
		||||
msgid "An unknown API error occurred."
 | 
			
		||||
msgstr "Ein unbekannter API-Fehler ist aufgetreten."
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/Alert.js:57 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/common/WiFiSettings/WiFiQRCode.js:89
 | 
			
		||||
msgid "Close"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copied!"
 | 
			
		||||
msgstr "Kopiert!"
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copy"
 | 
			
		||||
msgstr "Kopieren"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:27
 | 
			
		||||
msgid "Reboot request failed."
 | 
			
		||||
msgstr "Neustart-Einleitung fehlgeschlagen."
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60
 | 
			
		||||
#, fuzzy
 | 
			
		||||
msgid "Action successful."
 | 
			
		||||
msgstr "Einstellungen erfolgreich gespeichert"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:51
 | 
			
		||||
msgid "Reboot"
 | 
			
		||||
msgstr "Systemneustart"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65
 | 
			
		||||
msgid "Action failed."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:66
 | 
			
		||||
msgid "Warning!"
 | 
			
		||||
msgstr "Warnung!"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:68
 | 
			
		||||
msgid "Are you sure you want to restart the router?"
 | 
			
		||||
msgstr "Sind Sie sicher, dass Sie den Router neu starten wollen?"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:71
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125
 | 
			
		||||
msgid "Cancel"
 | 
			
		||||
msgstr "Abbrechen"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:73
 | 
			
		||||
msgid "Confirm reboot"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128
 | 
			
		||||
#, fuzzy
 | 
			
		||||
msgid "Confirm"
 | 
			
		||||
msgstr "Neustart bestätigen"
 | 
			
		||||
 | 
			
		||||
#: 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
 | 
			
		||||
msgid "An error occurred during resetting Wi-Fi settings."
 | 
			
		||||
msgstr ""
 | 
			
		||||
@@ -388,3 +434,15 @@ msgstr "Enthält keine Liste von E-Mails, die durch Kommas getrennt sind."
 | 
			
		||||
#~ "        "
 | 
			
		||||
#~ msgstr ""
 | 
			
		||||
 | 
			
		||||
#~ msgid "Reboot request failed."
 | 
			
		||||
#~ msgstr "Neustart-Einleitung fehlgeschlagen."
 | 
			
		||||
 | 
			
		||||
#~ msgid "Reboot"
 | 
			
		||||
#~ msgstr "Systemneustart"
 | 
			
		||||
 | 
			
		||||
#~ msgid "Warning!"
 | 
			
		||||
#~ msgstr "Warnung!"
 | 
			
		||||
 | 
			
		||||
#~ msgid "Are you sure you want to restart the router?"
 | 
			
		||||
#~ msgstr "Sind Sie sicher, dass Sie den Router neu starten wollen?"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: PROJECT VERSION\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
 | 
			
		||||
"POT-Creation-Date: 2024-09-25 16:10+0200\n"
 | 
			
		||||
"POT-Creation-Date: 2024-11-13 14:06+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2021-02-09 16:50+0000\n"
 | 
			
		||||
"Last-Translator: Michalis <michalisntovas@yahoo.gr>\n"
 | 
			
		||||
"Language: el\n"
 | 
			
		||||
@@ -35,43 +35,88 @@ msgstr ""
 | 
			
		||||
msgid "An unknown API error occurred."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/Alert.js:57 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/common/WiFiSettings/WiFiQRCode.js:89
 | 
			
		||||
msgid "Close"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copied!"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copy"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:27
 | 
			
		||||
msgid "Reboot request failed."
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60
 | 
			
		||||
msgid "Action successful."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:51
 | 
			
		||||
msgid "Reboot"
 | 
			
		||||
msgstr "Επανεκκίνηση"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:66
 | 
			
		||||
msgid "Warning!"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65
 | 
			
		||||
msgid "Action failed."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:68
 | 
			
		||||
msgid "Are you sure you want to restart the router?"
 | 
			
		||||
msgstr "Είστε βέβαιοι ότι θέλετε να κάνετε επανεκκίνηση του δρομολογητή;"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:71
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125
 | 
			
		||||
msgid "Cancel"
 | 
			
		||||
msgstr "Άκυρο"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:73
 | 
			
		||||
msgid "Confirm reboot"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128
 | 
			
		||||
#, fuzzy
 | 
			
		||||
msgid "Confirm"
 | 
			
		||||
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
 | 
			
		||||
msgid "An error occurred during resetting Wi-Fi settings."
 | 
			
		||||
msgstr ""
 | 
			
		||||
@@ -427,3 +472,15 @@ msgstr ""
 | 
			
		||||
#~ "channel."
 | 
			
		||||
#~ msgstr ""
 | 
			
		||||
 | 
			
		||||
#~ msgid "Reboot request failed."
 | 
			
		||||
#~ msgstr ""
 | 
			
		||||
 | 
			
		||||
#~ msgid "Reboot"
 | 
			
		||||
#~ msgstr "Επανεκκίνηση"
 | 
			
		||||
 | 
			
		||||
#~ msgid "Warning!"
 | 
			
		||||
#~ msgstr ""
 | 
			
		||||
 | 
			
		||||
#~ msgid "Are you sure you want to restart the router?"
 | 
			
		||||
#~ msgstr "Είστε βέβαιοι ότι θέλετε να κάνετε επανεκκίνηση του δρομολογητή;"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: PROJECT VERSION\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
 | 
			
		||||
"POT-Creation-Date: 2024-09-25 16:10+0200\n"
 | 
			
		||||
"POT-Creation-Date: 2024-11-13 14:06+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2019-10-17 09:28+0000\n"
 | 
			
		||||
"Last-Translator: Scott Anecito <scott.anecito@protonmail.com>\n"
 | 
			
		||||
"Language: en\n"
 | 
			
		||||
@@ -35,41 +35,85 @@ msgstr ""
 | 
			
		||||
msgid "An unknown API error occurred."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/Alert.js:57 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/common/WiFiSettings/WiFiQRCode.js:89
 | 
			
		||||
msgid "Close"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copied!"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copy"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:27
 | 
			
		||||
msgid "Reboot request failed."
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60
 | 
			
		||||
msgid "Action successful."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:51
 | 
			
		||||
msgid "Reboot"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65
 | 
			
		||||
msgid "Action failed."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:66
 | 
			
		||||
msgid "Warning!"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:68
 | 
			
		||||
msgid "Are you sure you want to restart the router?"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:71
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125
 | 
			
		||||
msgid "Cancel"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:73
 | 
			
		||||
msgid "Confirm reboot"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128
 | 
			
		||||
msgid "Confirm"
 | 
			
		||||
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
 | 
			
		||||
@@ -423,3 +467,18 @@ msgstr ""
 | 
			
		||||
#~ "channel."
 | 
			
		||||
#~ 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 ""
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: PROJECT VERSION\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
 | 
			
		||||
"POT-Creation-Date: 2024-09-25 16:10+0200\n"
 | 
			
		||||
"POT-Creation-Date: 2024-11-13 14:06+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2024-08-24 13:09+0000\n"
 | 
			
		||||
"Last-Translator: gallegonovato <fran-carro@hotmail.es>\n"
 | 
			
		||||
"Language: es\n"
 | 
			
		||||
@@ -37,43 +37,89 @@ msgstr ""
 | 
			
		||||
"Un error desconocido ha ocurrido. Compruebe la consola para mas "
 | 
			
		||||
"informaciòn."
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/Alert.js:57 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/common/WiFiSettings/WiFiQRCode.js:89
 | 
			
		||||
msgid "Close"
 | 
			
		||||
msgstr "Cerrar"
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copied!"
 | 
			
		||||
msgstr "¡Copiado!"
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copy"
 | 
			
		||||
msgstr "Copiar"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:27
 | 
			
		||||
msgid "Reboot request failed."
 | 
			
		||||
msgstr "La petición de reinicio ha fallado."
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60
 | 
			
		||||
#, fuzzy
 | 
			
		||||
msgid "Action successful."
 | 
			
		||||
msgstr "Los ajustes se han guardado correctamente"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:51
 | 
			
		||||
msgid "Reboot"
 | 
			
		||||
msgstr "Reiniciar"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65
 | 
			
		||||
msgid "Action failed."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:66
 | 
			
		||||
msgid "Warning!"
 | 
			
		||||
msgstr "¡Atención!"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:68
 | 
			
		||||
msgid "Are you sure you want to restart the router?"
 | 
			
		||||
msgstr "¿Estás seguro de que quieres reiniciar el router?"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:71
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125
 | 
			
		||||
msgid "Cancel"
 | 
			
		||||
msgstr "Cancelar"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:73
 | 
			
		||||
msgid "Confirm reboot"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128
 | 
			
		||||
#, fuzzy
 | 
			
		||||
msgid "Confirm"
 | 
			
		||||
msgstr "Confirmar reinicio"
 | 
			
		||||
 | 
			
		||||
#: 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
 | 
			
		||||
msgid "An error occurred during resetting Wi-Fi settings."
 | 
			
		||||
msgstr "Ocurrió un error durante el reseteo de los ajustes Wi-Fi."
 | 
			
		||||
@@ -447,3 +493,15 @@ msgstr "No contiene una lista de correos electrónicos separados por comas."
 | 
			
		||||
#~ "channel."
 | 
			
		||||
#~ 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?"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: PROJECT VERSION\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
 | 
			
		||||
"POT-Creation-Date: 2024-09-25 16:10+0200\n"
 | 
			
		||||
"POT-Creation-Date: 2024-11-13 14:06+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2019-02-19 13:34+0100\n"
 | 
			
		||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 | 
			
		||||
"Language: fi\n"
 | 
			
		||||
@@ -34,41 +34,85 @@ msgstr ""
 | 
			
		||||
msgid "An unknown API error occurred."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/Alert.js:57 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/common/WiFiSettings/WiFiQRCode.js:89
 | 
			
		||||
msgid "Close"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copied!"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copy"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:27
 | 
			
		||||
msgid "Reboot request failed."
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60
 | 
			
		||||
msgid "Action successful."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:51
 | 
			
		||||
msgid "Reboot"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65
 | 
			
		||||
msgid "Action failed."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:66
 | 
			
		||||
msgid "Warning!"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:68
 | 
			
		||||
msgid "Are you sure you want to restart the router?"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:71
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125
 | 
			
		||||
msgid "Cancel"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:73
 | 
			
		||||
msgid "Confirm reboot"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128
 | 
			
		||||
msgid "Confirm"
 | 
			
		||||
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
 | 
			
		||||
@@ -425,3 +469,18 @@ msgstr ""
 | 
			
		||||
#~ "channel."
 | 
			
		||||
#~ 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 ""
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: PROJECT VERSION\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
 | 
			
		||||
"POT-Creation-Date: 2024-09-25 16:10+0200\n"
 | 
			
		||||
"POT-Creation-Date: 2024-11-13 14:06+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2019-02-19 13:34+0100\n"
 | 
			
		||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 | 
			
		||||
"Language: fo\n"
 | 
			
		||||
@@ -34,41 +34,85 @@ msgstr ""
 | 
			
		||||
msgid "An unknown API error occurred."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/Alert.js:57 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/common/WiFiSettings/WiFiQRCode.js:89
 | 
			
		||||
msgid "Close"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copied!"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copy"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:27
 | 
			
		||||
msgid "Reboot request failed."
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60
 | 
			
		||||
msgid "Action successful."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:51
 | 
			
		||||
msgid "Reboot"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65
 | 
			
		||||
msgid "Action failed."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:66
 | 
			
		||||
msgid "Warning!"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:68
 | 
			
		||||
msgid "Are you sure you want to restart the router?"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:71
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125
 | 
			
		||||
msgid "Cancel"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:73
 | 
			
		||||
msgid "Confirm reboot"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128
 | 
			
		||||
msgid "Confirm"
 | 
			
		||||
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
 | 
			
		||||
@@ -425,3 +469,18 @@ msgstr ""
 | 
			
		||||
#~ "channel."
 | 
			
		||||
#~ 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 ""
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -6,9 +6,9 @@
 | 
			
		||||
#, fuzzy
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: Foris JS 6.2.0\n"
 | 
			
		||||
"Project-Id-Version: Foris JS 6.5.0\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: tech.support@turris.cz\n"
 | 
			
		||||
"POT-Creation-Date: 2024-09-25 16:10+0200\n"
 | 
			
		||||
"POT-Creation-Date: 2024-11-13 14:06+0100\n"
 | 
			
		||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 | 
			
		||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 | 
			
		||||
"Language-Team: LANGUAGE <LL@li.org>\n"
 | 
			
		||||
@@ -33,41 +33,85 @@ msgstr ""
 | 
			
		||||
msgid "An unknown API error occurred."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/Alert.js:57 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/common/WiFiSettings/WiFiQRCode.js:89
 | 
			
		||||
msgid "Close"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copied!"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copy"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:27
 | 
			
		||||
msgid "Reboot request failed."
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60
 | 
			
		||||
msgid "Action successful."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:51
 | 
			
		||||
msgid "Reboot"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65
 | 
			
		||||
msgid "Action failed."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:66
 | 
			
		||||
msgid "Warning!"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:68
 | 
			
		||||
msgid "Are you sure you want to restart the router?"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:71
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125
 | 
			
		||||
msgid "Cancel"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:73
 | 
			
		||||
msgid "Confirm reboot"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128
 | 
			
		||||
msgid "Confirm"
 | 
			
		||||
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
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: PROJECT VERSION\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
 | 
			
		||||
"POT-Creation-Date: 2024-09-25 16:10+0200\n"
 | 
			
		||||
"POT-Creation-Date: 2024-11-13 14:06+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2024-07-27 01:09+0000\n"
 | 
			
		||||
"Last-Translator: Moha684 <nahil82466@gmail.com>\n"
 | 
			
		||||
"Language: fr\n"
 | 
			
		||||
@@ -35,43 +35,89 @@ msgstr "Aucun réponse reçue."
 | 
			
		||||
msgid "An unknown API error occurred."
 | 
			
		||||
msgstr "Une erreur d’API inconnue s’est produite."
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/Alert.js:57 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/common/WiFiSettings/WiFiQRCode.js:89
 | 
			
		||||
msgid "Close"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copied!"
 | 
			
		||||
msgstr "Copié!"
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copy"
 | 
			
		||||
msgstr "Copier"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:27
 | 
			
		||||
msgid "Reboot request failed."
 | 
			
		||||
msgstr "La demande de redémarrage a échoué."
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60
 | 
			
		||||
#, fuzzy
 | 
			
		||||
msgid "Action successful."
 | 
			
		||||
msgstr "Paramètres enregistrés avec succès"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:51
 | 
			
		||||
msgid "Reboot"
 | 
			
		||||
msgstr "Redémarrer"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65
 | 
			
		||||
msgid "Action failed."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:66
 | 
			
		||||
msgid "Warning!"
 | 
			
		||||
msgstr "Attention !"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:68
 | 
			
		||||
msgid "Are you sure you want to restart the router?"
 | 
			
		||||
msgstr "Voulez-vous vraiment redémarrer le routeur ?"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:71
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125
 | 
			
		||||
msgid "Cancel"
 | 
			
		||||
msgstr "Annuler"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:73
 | 
			
		||||
msgid "Confirm reboot"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128
 | 
			
		||||
#, fuzzy
 | 
			
		||||
msgid "Confirm"
 | 
			
		||||
msgstr "Confirmer le redémarrage"
 | 
			
		||||
 | 
			
		||||
#: 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
 | 
			
		||||
msgid "An error occurred during resetting Wi-Fi settings."
 | 
			
		||||
msgstr ""
 | 
			
		||||
@@ -416,3 +462,15 @@ 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 ?"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: PROJECT VERSION\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
 | 
			
		||||
"POT-Creation-Date: 2024-09-25 16:10+0200\n"
 | 
			
		||||
"POT-Creation-Date: 2024-11-13 14:06+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2022-09-29 14:17+0000\n"
 | 
			
		||||
"Last-Translator: Milo Ivir <mail@milotype.de>\n"
 | 
			
		||||
"Language: hr\n"
 | 
			
		||||
@@ -36,41 +36,85 @@ msgstr ""
 | 
			
		||||
msgid "An unknown API error occurred."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/Alert.js:57 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/common/WiFiSettings/WiFiQRCode.js:89
 | 
			
		||||
msgid "Close"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copied!"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copy"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:27
 | 
			
		||||
msgid "Reboot request failed."
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60
 | 
			
		||||
msgid "Action successful."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:51
 | 
			
		||||
msgid "Reboot"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65
 | 
			
		||||
msgid "Action failed."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:66
 | 
			
		||||
msgid "Warning!"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:68
 | 
			
		||||
msgid "Are you sure you want to restart the router?"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:71
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125
 | 
			
		||||
msgid "Cancel"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:73
 | 
			
		||||
msgid "Confirm reboot"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128
 | 
			
		||||
msgid "Confirm"
 | 
			
		||||
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
 | 
			
		||||
@@ -427,3 +471,18 @@ msgstr ""
 | 
			
		||||
#~ "channel."
 | 
			
		||||
#~ 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 ""
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: PROJECT VERSION\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
 | 
			
		||||
"POT-Creation-Date: 2024-09-25 16:10+0200\n"
 | 
			
		||||
"POT-Creation-Date: 2024-11-13 14:06+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2021-01-07 01:26+0000\n"
 | 
			
		||||
"Last-Translator: Zoli <boritek@gmail.com>\n"
 | 
			
		||||
"Language: hu\n"
 | 
			
		||||
@@ -35,41 +35,86 @@ msgstr "Nem érkezett válasz."
 | 
			
		||||
msgid "An unknown API error occurred."
 | 
			
		||||
msgstr "Ismeretlen API-hiba történt."
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/Alert.js:57 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/common/WiFiSettings/WiFiQRCode.js:89
 | 
			
		||||
msgid "Close"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copied!"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copy"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:27
 | 
			
		||||
msgid "Reboot request failed."
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60
 | 
			
		||||
#, fuzzy
 | 
			
		||||
msgid "Action successful."
 | 
			
		||||
msgstr "Beállítások sikeresen elmentve"
 | 
			
		||||
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65
 | 
			
		||||
msgid "Action failed."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:51
 | 
			
		||||
msgid "Reboot"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:66
 | 
			
		||||
msgid "Warning!"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:68
 | 
			
		||||
msgid "Are you sure you want to restart the router?"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:71
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125
 | 
			
		||||
msgid "Cancel"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:73
 | 
			
		||||
msgid "Confirm reboot"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128
 | 
			
		||||
msgid "Confirm"
 | 
			
		||||
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
 | 
			
		||||
@@ -420,3 +465,18 @@ msgstr "Nem tartalmaz vesszővel elválasztott e-mail listát."
 | 
			
		||||
#~ "channel."
 | 
			
		||||
#~ 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 ""
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: PROJECT VERSION\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
 | 
			
		||||
"POT-Creation-Date: 2024-09-25 16:10+0200\n"
 | 
			
		||||
"POT-Creation-Date: 2024-11-13 14:06+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2022-12-31 23:48+0000\n"
 | 
			
		||||
"Last-Translator: Anselmo <anselmo@casinadicornia.com>\n"
 | 
			
		||||
"Language: it\n"
 | 
			
		||||
@@ -35,41 +35,85 @@ msgstr ""
 | 
			
		||||
msgid "An unknown API error occurred."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/Alert.js:57 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/common/WiFiSettings/WiFiQRCode.js:89
 | 
			
		||||
msgid "Close"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copied!"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copy"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:27
 | 
			
		||||
msgid "Reboot request failed."
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60
 | 
			
		||||
msgid "Action successful."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:51
 | 
			
		||||
msgid "Reboot"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65
 | 
			
		||||
msgid "Action failed."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:66
 | 
			
		||||
msgid "Warning!"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:68
 | 
			
		||||
msgid "Are you sure you want to restart the router?"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:71
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125
 | 
			
		||||
msgid "Cancel"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:73
 | 
			
		||||
msgid "Confirm reboot"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128
 | 
			
		||||
msgid "Confirm"
 | 
			
		||||
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
 | 
			
		||||
@@ -426,3 +470,18 @@ msgstr ""
 | 
			
		||||
#~ "channel."
 | 
			
		||||
#~ 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 ""
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: PROJECT VERSION\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
 | 
			
		||||
"POT-Creation-Date: 2024-09-25 16:10+0200\n"
 | 
			
		||||
"POT-Creation-Date: 2024-11-13 14:06+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2019-10-16 10:08+0000\n"
 | 
			
		||||
"Last-Translator: Scott Anecito <scott.anecito@protonmail.com>\n"
 | 
			
		||||
"Language: ja\n"
 | 
			
		||||
@@ -35,41 +35,85 @@ msgstr ""
 | 
			
		||||
msgid "An unknown API error occurred."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/Alert.js:57 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/common/WiFiSettings/WiFiQRCode.js:89
 | 
			
		||||
msgid "Close"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copied!"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copy"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:27
 | 
			
		||||
msgid "Reboot request failed."
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60
 | 
			
		||||
msgid "Action successful."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:51
 | 
			
		||||
msgid "Reboot"
 | 
			
		||||
msgstr "再起動"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:66
 | 
			
		||||
msgid "Warning!"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65
 | 
			
		||||
msgid "Action failed."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:68
 | 
			
		||||
msgid "Are you sure you want to restart the router?"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:71
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125
 | 
			
		||||
msgid "Cancel"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:73
 | 
			
		||||
msgid "Confirm reboot"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128
 | 
			
		||||
msgid "Confirm"
 | 
			
		||||
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
 | 
			
		||||
@@ -427,3 +471,18 @@ msgstr ""
 | 
			
		||||
#~ "channel."
 | 
			
		||||
#~ 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 ""
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: PROJECT VERSION\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
 | 
			
		||||
"POT-Creation-Date: 2024-09-25 16:10+0200\n"
 | 
			
		||||
"POT-Creation-Date: 2024-11-13 14:06+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2019-02-19 13:34+0100\n"
 | 
			
		||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 | 
			
		||||
"Language: ko\n"
 | 
			
		||||
@@ -34,41 +34,85 @@ msgstr ""
 | 
			
		||||
msgid "An unknown API error occurred."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/Alert.js:57 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/common/WiFiSettings/WiFiQRCode.js:89
 | 
			
		||||
msgid "Close"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copied!"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copy"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:27
 | 
			
		||||
msgid "Reboot request failed."
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60
 | 
			
		||||
msgid "Action successful."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:51
 | 
			
		||||
msgid "Reboot"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65
 | 
			
		||||
msgid "Action failed."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:66
 | 
			
		||||
msgid "Warning!"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:68
 | 
			
		||||
msgid "Are you sure you want to restart the router?"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:71
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125
 | 
			
		||||
msgid "Cancel"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:73
 | 
			
		||||
msgid "Confirm reboot"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128
 | 
			
		||||
msgid "Confirm"
 | 
			
		||||
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
 | 
			
		||||
@@ -425,3 +469,18 @@ msgstr ""
 | 
			
		||||
#~ "channel."
 | 
			
		||||
#~ 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 ""
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: PROJECT VERSION\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
 | 
			
		||||
"POT-Creation-Date: 2024-09-25 16:10+0200\n"
 | 
			
		||||
"POT-Creation-Date: 2024-11-13 14:06+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2019-02-19 13:34+0100\n"
 | 
			
		||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 | 
			
		||||
"Language: lt\n"
 | 
			
		||||
@@ -35,41 +35,85 @@ msgstr ""
 | 
			
		||||
msgid "An unknown API error occurred."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/Alert.js:57 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/common/WiFiSettings/WiFiQRCode.js:89
 | 
			
		||||
msgid "Close"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copied!"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copy"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:27
 | 
			
		||||
msgid "Reboot request failed."
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60
 | 
			
		||||
msgid "Action successful."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:51
 | 
			
		||||
msgid "Reboot"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65
 | 
			
		||||
msgid "Action failed."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:66
 | 
			
		||||
msgid "Warning!"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:68
 | 
			
		||||
msgid "Are you sure you want to restart the router?"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:71
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125
 | 
			
		||||
msgid "Cancel"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:73
 | 
			
		||||
msgid "Confirm reboot"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128
 | 
			
		||||
msgid "Confirm"
 | 
			
		||||
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
 | 
			
		||||
@@ -426,3 +470,18 @@ msgstr ""
 | 
			
		||||
#~ "channel."
 | 
			
		||||
#~ 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 ""
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: PROJECT VERSION\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
 | 
			
		||||
"POT-Creation-Date: 2024-09-25 16:10+0200\n"
 | 
			
		||||
"POT-Creation-Date: 2024-11-13 14:06+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2023-03-02 11:40+0000\n"
 | 
			
		||||
"Last-Translator: Allan Nordhøy <epost@anotheragency.no>\n"
 | 
			
		||||
"Language: nb_NO\n"
 | 
			
		||||
@@ -36,44 +36,89 @@ msgstr "Fikk ikke svar."
 | 
			
		||||
msgid "An unknown API error occurred."
 | 
			
		||||
msgstr "Ukjent API-feil."
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/Alert.js:57 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/common/WiFiSettings/WiFiQRCode.js:89
 | 
			
		||||
msgid "Close"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copied!"
 | 
			
		||||
msgstr "Kopiert"
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copy"
 | 
			
		||||
msgstr "Kopier"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:27
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60
 | 
			
		||||
#, fuzzy
 | 
			
		||||
msgid "Reboot request failed."
 | 
			
		||||
msgstr "Omstart kreves"
 | 
			
		||||
msgid "Action successful."
 | 
			
		||||
msgstr "Innstillinger lagret"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:51
 | 
			
		||||
msgid "Reboot"
 | 
			
		||||
msgstr "Start på ny"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65
 | 
			
		||||
msgid "Action failed."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:66
 | 
			
		||||
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
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125
 | 
			
		||||
msgid "Cancel"
 | 
			
		||||
msgstr "Avbryt"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:73
 | 
			
		||||
msgid "Confirm reboot"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128
 | 
			
		||||
#, fuzzy
 | 
			
		||||
msgid "Confirm"
 | 
			
		||||
msgstr "Bekreft omstart"
 | 
			
		||||
 | 
			
		||||
#: 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
 | 
			
		||||
#, fuzzy
 | 
			
		||||
msgid "An error occurred during resetting Wi-Fi settings."
 | 
			
		||||
@@ -404,3 +449,15 @@ msgstr "Inneholder ikke en kommainndelt liste med e-postadresser."
 | 
			
		||||
#~ "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?"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: PROJECT VERSION\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
 | 
			
		||||
"POT-Creation-Date: 2024-09-25 16:10+0200\n"
 | 
			
		||||
"POT-Creation-Date: 2024-11-13 14:06+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2024-01-04 21:08+0000\n"
 | 
			
		||||
"Last-Translator: powerburner-nl <peter.mulder.1981@gmail.com>\n"
 | 
			
		||||
"Language: nl\n"
 | 
			
		||||
@@ -35,44 +35,88 @@ msgstr ""
 | 
			
		||||
msgid "An unknown API error occurred."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/Alert.js:57 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/common/WiFiSettings/WiFiQRCode.js:89
 | 
			
		||||
msgid "Close"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copied!"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copy"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:27
 | 
			
		||||
#, fuzzy
 | 
			
		||||
msgid "Reboot request failed."
 | 
			
		||||
msgstr "Opnieuw opstarten is vereist"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60
 | 
			
		||||
msgid "Action successful."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:51
 | 
			
		||||
msgid "Reboot"
 | 
			
		||||
msgstr "Opnieuw opstarten"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65
 | 
			
		||||
msgid "Action failed."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:66
 | 
			
		||||
msgid "Warning!"
 | 
			
		||||
msgstr "Waarschuwing!"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:68
 | 
			
		||||
msgid "Are you sure you want to restart the router?"
 | 
			
		||||
msgstr "Weet u zeker dat u de router opnieuw wilt opstarten?"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:71
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125
 | 
			
		||||
msgid "Cancel"
 | 
			
		||||
msgstr "Annuleren"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:73
 | 
			
		||||
msgid "Confirm reboot"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128
 | 
			
		||||
#, fuzzy
 | 
			
		||||
msgid "Confirm"
 | 
			
		||||
msgstr "Opnieuw opstarten bevestigen"
 | 
			
		||||
 | 
			
		||||
#: 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
 | 
			
		||||
msgid "An error occurred during resetting Wi-Fi settings."
 | 
			
		||||
msgstr ""
 | 
			
		||||
@@ -429,3 +473,15 @@ msgstr "Bevat geen lijst met e-mails gescheiden door komma's."
 | 
			
		||||
#~ "channel."
 | 
			
		||||
#~ 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?"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: PROJECT VERSION\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
 | 
			
		||||
"POT-Creation-Date: 2024-09-25 16:10+0200\n"
 | 
			
		||||
"POT-Creation-Date: 2024-11-13 14:06+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2023-03-07 16:37+0000\n"
 | 
			
		||||
"Last-Translator: Arusekk <arek_koz@o2.pl>\n"
 | 
			
		||||
"Language: pl\n"
 | 
			
		||||
@@ -36,43 +36,89 @@ msgstr "Brak odpowiedzi."
 | 
			
		||||
msgid "An unknown API error occurred."
 | 
			
		||||
msgstr "Wystąpił nieznany błąd API."
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/Alert.js:57 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/common/WiFiSettings/WiFiQRCode.js:89
 | 
			
		||||
msgid "Close"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copied!"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copy"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:27
 | 
			
		||||
msgid "Reboot request failed."
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60
 | 
			
		||||
#, fuzzy
 | 
			
		||||
msgid "Action successful."
 | 
			
		||||
msgstr "Ustawienia zostały zapisane"
 | 
			
		||||
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65
 | 
			
		||||
msgid "Action failed."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:51
 | 
			
		||||
msgid "Reboot"
 | 
			
		||||
msgstr "Restart"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:66
 | 
			
		||||
msgid "Warning!"
 | 
			
		||||
msgstr "Ostrzeżenie!"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:68
 | 
			
		||||
msgid "Are you sure you want to restart the router?"
 | 
			
		||||
msgstr "Czy na pewno zrestartować router?"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:71
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125
 | 
			
		||||
msgid "Cancel"
 | 
			
		||||
msgstr "Anuluj"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:73
 | 
			
		||||
msgid "Confirm reboot"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128
 | 
			
		||||
#, fuzzy
 | 
			
		||||
msgid "Confirm"
 | 
			
		||||
msgstr "Potwierdź restart"
 | 
			
		||||
 | 
			
		||||
#: 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
 | 
			
		||||
msgid "An error occurred during resetting Wi-Fi settings."
 | 
			
		||||
msgstr ""
 | 
			
		||||
@@ -427,3 +473,15 @@ msgstr "Nie zawiera listy e-maili oddzielonych przecinkami."
 | 
			
		||||
#~ "channel."
 | 
			
		||||
#~ 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?"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: PROJECT VERSION\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
 | 
			
		||||
"POT-Creation-Date: 2024-09-25 16:10+0200\n"
 | 
			
		||||
"POT-Creation-Date: 2024-11-13 14:06+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2021-12-21 12:52+0000\n"
 | 
			
		||||
"Last-Translator: c10l <weblate.org@a.c10l.cc>\n"
 | 
			
		||||
"Language: pt_BR\n"
 | 
			
		||||
@@ -35,43 +35,88 @@ msgstr ""
 | 
			
		||||
msgid "An unknown API error occurred."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/Alert.js:57 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/common/WiFiSettings/WiFiQRCode.js:89
 | 
			
		||||
msgid "Close"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copied!"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copy"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:27
 | 
			
		||||
msgid "Reboot request failed."
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60
 | 
			
		||||
msgid "Action successful."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:51
 | 
			
		||||
msgid "Reboot"
 | 
			
		||||
msgstr "Reinício"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65
 | 
			
		||||
msgid "Action failed."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:66
 | 
			
		||||
msgid "Warning!"
 | 
			
		||||
msgstr "Atenção!"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:68
 | 
			
		||||
msgid "Are you sure you want to restart the router?"
 | 
			
		||||
msgstr "Você tem certeza de que quer reiniciar o roteador?"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:71
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125
 | 
			
		||||
msgid "Cancel"
 | 
			
		||||
msgstr "Cancelar"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:73
 | 
			
		||||
msgid "Confirm reboot"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128
 | 
			
		||||
#, fuzzy
 | 
			
		||||
msgid "Confirm"
 | 
			
		||||
msgstr "Confirma reinício"
 | 
			
		||||
 | 
			
		||||
#: 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
 | 
			
		||||
msgid "An error occurred during resetting Wi-Fi settings."
 | 
			
		||||
msgstr ""
 | 
			
		||||
@@ -404,3 +449,15 @@ msgstr ""
 | 
			
		||||
#~ "channel."
 | 
			
		||||
#~ 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?"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: PROJECT VERSION\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
 | 
			
		||||
"POT-Creation-Date: 2024-09-25 16:10+0200\n"
 | 
			
		||||
"POT-Creation-Date: 2024-11-13 14:06+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2019-02-19 13:35+0100\n"
 | 
			
		||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 | 
			
		||||
"Language: ro\n"
 | 
			
		||||
@@ -35,41 +35,85 @@ msgstr ""
 | 
			
		||||
msgid "An unknown API error occurred."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/Alert.js:57 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/common/WiFiSettings/WiFiQRCode.js:89
 | 
			
		||||
msgid "Close"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copied!"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copy"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:27
 | 
			
		||||
msgid "Reboot request failed."
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60
 | 
			
		||||
msgid "Action successful."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:51
 | 
			
		||||
msgid "Reboot"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65
 | 
			
		||||
msgid "Action failed."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:66
 | 
			
		||||
msgid "Warning!"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:68
 | 
			
		||||
msgid "Are you sure you want to restart the router?"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:71
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125
 | 
			
		||||
msgid "Cancel"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:73
 | 
			
		||||
msgid "Confirm reboot"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128
 | 
			
		||||
msgid "Confirm"
 | 
			
		||||
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
 | 
			
		||||
@@ -426,3 +470,18 @@ msgstr ""
 | 
			
		||||
#~ "channel."
 | 
			
		||||
#~ 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 ""
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: PROJECT VERSION\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
 | 
			
		||||
"POT-Creation-Date: 2024-09-25 16:10+0200\n"
 | 
			
		||||
"POT-Creation-Date: 2024-11-13 14:06+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2022-12-07 12:47+0000\n"
 | 
			
		||||
"Last-Translator: Алексей Леньшин <alenshin@gmail.com>\n"
 | 
			
		||||
"Language: ru\n"
 | 
			
		||||
@@ -36,43 +36,89 @@ msgstr "Ответ не получен."
 | 
			
		||||
msgid "An unknown API error occurred."
 | 
			
		||||
msgstr "Неизвестная ошибка программного интерфейса приложения."
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/Alert.js:57 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/common/WiFiSettings/WiFiQRCode.js:89
 | 
			
		||||
msgid "Close"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copied!"
 | 
			
		||||
msgstr "Скопировано!"
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copy"
 | 
			
		||||
msgstr "Копировать"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:27
 | 
			
		||||
msgid "Reboot request failed."
 | 
			
		||||
msgstr "Запрос на перезагрузку не выполнен."
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60
 | 
			
		||||
#, fuzzy
 | 
			
		||||
msgid "Action successful."
 | 
			
		||||
msgstr "Настройки были успешно сохранены"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:51
 | 
			
		||||
msgid "Reboot"
 | 
			
		||||
msgstr "Перезагрузка"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65
 | 
			
		||||
msgid "Action failed."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:66
 | 
			
		||||
msgid "Warning!"
 | 
			
		||||
msgstr "Предупреждение!"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:68
 | 
			
		||||
msgid "Are you sure you want to restart the router?"
 | 
			
		||||
msgstr "Вы уверены, что хотите перезагрузить маршрутизатор?"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:71
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125
 | 
			
		||||
msgid "Cancel"
 | 
			
		||||
msgstr "Отмена"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:73
 | 
			
		||||
msgid "Confirm reboot"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128
 | 
			
		||||
#, fuzzy
 | 
			
		||||
msgid "Confirm"
 | 
			
		||||
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
 | 
			
		||||
msgid "An error occurred during resetting Wi-Fi settings."
 | 
			
		||||
msgstr "При сбросе настроек Wi-Fi произошла ошибка."
 | 
			
		||||
@@ -395,3 +441,15 @@ msgstr "Не содержит списка электронных адресов
 | 
			
		||||
#~ "значений по умолчанию.\n"
 | 
			
		||||
#~ "        "
 | 
			
		||||
 | 
			
		||||
#~ msgid "Reboot request failed."
 | 
			
		||||
#~ msgstr "Запрос на перезагрузку не выполнен."
 | 
			
		||||
 | 
			
		||||
#~ msgid "Reboot"
 | 
			
		||||
#~ msgstr "Перезагрузка"
 | 
			
		||||
 | 
			
		||||
#~ msgid "Warning!"
 | 
			
		||||
#~ msgstr "Предупреждение!"
 | 
			
		||||
 | 
			
		||||
#~ msgid "Are you sure you want to restart the router?"
 | 
			
		||||
#~ msgstr "Вы уверены, что хотите перезагрузить маршрутизатор?"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: PROJECT VERSION\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
 | 
			
		||||
"POT-Creation-Date: 2024-09-25 16:10+0200\n"
 | 
			
		||||
"POT-Creation-Date: 2024-11-13 14:06+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2024-09-09 18:09+0000\n"
 | 
			
		||||
"Last-Translator: Atec <dr.atec@gmail.com>\n"
 | 
			
		||||
"Language: sk\n"
 | 
			
		||||
@@ -35,43 +35,89 @@ msgstr "Nenastala žiadna odozva."
 | 
			
		||||
msgid "An unknown API error occurred."
 | 
			
		||||
msgstr "Nastala neznáma chyba v API."
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/Alert.js:57 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/common/WiFiSettings/WiFiQRCode.js:89
 | 
			
		||||
msgid "Close"
 | 
			
		||||
msgstr "Zatvoriť"
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copied!"
 | 
			
		||||
msgstr "Skopírované!"
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copy"
 | 
			
		||||
msgstr "Kopírovať"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:27
 | 
			
		||||
msgid "Reboot request failed."
 | 
			
		||||
msgstr "Požiadavka na reštart neúspešná."
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60
 | 
			
		||||
#, fuzzy
 | 
			
		||||
msgid "Action successful."
 | 
			
		||||
msgstr "Nastavenia boli úspešne uložené"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:51
 | 
			
		||||
msgid "Reboot"
 | 
			
		||||
msgstr "Reštartovať"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65
 | 
			
		||||
msgid "Action failed."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:66
 | 
			
		||||
msgid "Warning!"
 | 
			
		||||
msgstr "Výstraha!"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:68
 | 
			
		||||
msgid "Are you sure you want to restart the router?"
 | 
			
		||||
msgstr "Naozaj sa má router reštartovať?"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:71
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125
 | 
			
		||||
msgid "Cancel"
 | 
			
		||||
msgstr "Zrušiť"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:73
 | 
			
		||||
msgid "Confirm reboot"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128
 | 
			
		||||
#, fuzzy
 | 
			
		||||
msgid "Confirm"
 | 
			
		||||
msgstr "Potvrdiť reštart"
 | 
			
		||||
 | 
			
		||||
#: 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
 | 
			
		||||
msgid "An error occurred during resetting Wi-Fi settings."
 | 
			
		||||
msgstr "Pri resete nastavení Wi-Fi nastala chyba."
 | 
			
		||||
@@ -390,3 +436,15 @@ msgstr "Neobsahuje zoznam e-mailov oddelených čiarkami."
 | 
			
		||||
#~ " 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ť?"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: PROJECT VERSION\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
 | 
			
		||||
"POT-Creation-Date: 2024-09-25 16:10+0200\n"
 | 
			
		||||
"POT-Creation-Date: 2024-11-13 14:06+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2023-09-22 21:00+0000\n"
 | 
			
		||||
"Last-Translator: Kristoffer Grundström "
 | 
			
		||||
"<swedishsailfishosuser@tutanota.com>\n"
 | 
			
		||||
@@ -36,43 +36,88 @@ msgstr "Inget svar togs emot."
 | 
			
		||||
msgid "An unknown API error occurred."
 | 
			
		||||
msgstr "Ett okänt API-fel inträffade."
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/Alert.js:57 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/bootstrap/Alert.js:73 src/bootstrap/Modal.js:101
 | 
			
		||||
#: src/common/WiFiSettings/WiFiQRCode.js:89
 | 
			
		||||
msgid "Close"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copied!"
 | 
			
		||||
msgstr "Kopierades!"
 | 
			
		||||
 | 
			
		||||
#: src/bootstrap/CopyInput.js:57
 | 
			
		||||
#: src/bootstrap/CopyInput.js:56
 | 
			
		||||
msgid "Copy"
 | 
			
		||||
msgstr "Kopiera"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:27
 | 
			
		||||
msgid "Reboot request failed."
 | 
			
		||||
msgstr "Förfrågning för omstart misslyckades."
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:60
 | 
			
		||||
msgid "Action successful."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:51
 | 
			
		||||
msgid "Reboot"
 | 
			
		||||
msgstr "Starta om"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:65
 | 
			
		||||
msgid "Action failed."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:66
 | 
			
		||||
msgid "Warning!"
 | 
			
		||||
msgstr "Varning!"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:68
 | 
			
		||||
msgid "Are you sure you want to restart the router?"
 | 
			
		||||
msgstr "Är du säker på att du vill starta om routern?"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:71
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:125
 | 
			
		||||
msgid "Cancel"
 | 
			
		||||
msgstr "Avbryt"
 | 
			
		||||
 | 
			
		||||
#: src/common/RebootButton.js:73
 | 
			
		||||
msgid "Confirm reboot"
 | 
			
		||||
#: src/common/ActionButtonWithModal/ActionButtonWithModal.js:128
 | 
			
		||||
#, fuzzy
 | 
			
		||||
msgid "Confirm"
 | 
			
		||||
msgstr "Bekräfta omstart"
 | 
			
		||||
 | 
			
		||||
#: 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
 | 
			
		||||
msgid "An error occurred during resetting Wi-Fi settings."
 | 
			
		||||
msgstr "Ett fel inträffade under återställningen av Wi-Fi-inställningarna."
 | 
			
		||||
@@ -441,3 +486,15 @@ msgstr ""
 | 
			
		||||
#~ "channel."
 | 
			
		||||
#~ 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?"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user