mirror of
https://gitlab.nic.cz/turris/reforis/foris-js.git
synced 2025-06-15 13:36:35 +02:00
Compare commits
126 Commits
Author | SHA1 | Date | |
---|---|---|---|
71beeb46f1 | |||
060a0489e1 | |||
ae49b246cd | |||
27c37eb74b | |||
cd708fa294 | |||
8ec0392852 | |||
27a5e62d9a | |||
aeaad4aa72 | |||
256a000d61 | |||
c78ed9a5d0 | |||
bded10211a | |||
25ac6cf1e9 | |||
9a2547a6c2 | |||
7968c7af4a | |||
4b94c470c3 | |||
e1b5a25ddd | |||
95af86c776 | |||
02b5583712 | |||
2f4d757a1a | |||
3c7a67783f | |||
4500e85a40 | |||
ce955095fd | |||
00b861531e | |||
fad5b97a2e | |||
aa639596d4 | |||
1ee41f4f14 | |||
bf8c2d28bf | |||
dbb840d51c | |||
ba772be869 | |||
70da1c3c00 | |||
8e68bbc91f | |||
0af8c4aa28 | |||
a9114caf9e | |||
3c81264024 | |||
0330b39f2e | |||
a7dcced08b | |||
c453a35763 | |||
d97248c6ec | |||
9fbc4e8383 | |||
57bebc92c7 | |||
5939e9dd0e | |||
0665869c30 | |||
199b27d63a | |||
2b28434712 | |||
388860d51e | |||
8b7c459855 | |||
83409b0118 | |||
c1cd90dff6 | |||
01fb897180 | |||
716c323b28 | |||
55dbf8f8bb | |||
85e42980ec | |||
3dee532ea2 | |||
3aac48d2bf | |||
ee33d33738 | |||
605f682356 | |||
a0a775996e | |||
532acf9d86 | |||
cbc3c2f3e7 | |||
556e12c964 | |||
813a865f62 | |||
c495aa97ac | |||
2d375b1690 | |||
e7e389e843 | |||
8679749e0f | |||
6d8e0cec70 | |||
5091eecedf | |||
75bfbb88ae | |||
e5cbbc9019 | |||
7ab1d2aaa4 | |||
e62accc4b3 | |||
03e071d5ee | |||
d83ba3bfd3 | |||
3e2c89cac7 | |||
e3d159d6a3 | |||
afa9b5a402 | |||
b8555247f2 | |||
de8462429b | |||
5fd0d3626a | |||
9dcc689491 | |||
35f307200d | |||
afb5366dd7 | |||
1e6278abdf | |||
6769e84e62 | |||
71b0a9a5fa | |||
418e38de31 | |||
56a4c47948 | |||
c67ad164ce | |||
6374fd5adf | |||
cc13e9c164 | |||
bb90800945 | |||
6d4bff2b4f | |||
92f560b69f | |||
a318f12352 | |||
32e3a57bd7 | |||
dd27802056 | |||
bd4e1953e3 | |||
68e4368ae3 | |||
51ba380cf0 | |||
4eae1ed8d2 | |||
3d290114fa | |||
3f87e9e4b4 | |||
6d5cb6a951 | |||
8d3be8df67 | |||
90509f2a23 | |||
73f84a2d81 | |||
cea7325427 | |||
a8d8c872f9 | |||
cda7898a96 | |||
26bea9c7c4 | |||
fd1518265f | |||
61d10e91e0 | |||
aac6c6bf2a | |||
d55615abcc | |||
9d322811c3 | |||
f30685d9c2 | |||
5bb298270b | |||
8d0c640994 | |||
25ddb5949c | |||
7b739f55a0 | |||
d71f638bd5 | |||
1064277cd9 | |||
cffa0a2b80 | |||
8d1d5b57fd | |||
7579fc3b8c | |||
6601cd55e0 |
3
.weblate
Normal file
3
.weblate
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
[weblate]
|
||||||
|
url = https://hosted.weblate.org/api/
|
||||||
|
translation = turris/foris-js
|
7
Makefile
7
Makefile
@ -35,11 +35,6 @@ $(VENV_NAME)/bin/activate:
|
|||||||
install-js: package.json
|
install-js: package.json
|
||||||
npm install --save-dev
|
npm install --save-dev
|
||||||
|
|
||||||
watch-js:
|
|
||||||
npm run build:watch
|
|
||||||
build-js:
|
|
||||||
npm run build
|
|
||||||
|
|
||||||
collect-files:
|
collect-files:
|
||||||
sh scripts/collect_files.sh
|
sh scripts/collect_files.sh
|
||||||
pack: collect-files
|
pack: collect-files
|
||||||
@ -51,6 +46,8 @@ publish-latest: collect-files
|
|||||||
|
|
||||||
lint:
|
lint:
|
||||||
npm run lint
|
npm run lint
|
||||||
|
lint-js-fix:
|
||||||
|
npm run lint:fix
|
||||||
|
|
||||||
test:
|
test:
|
||||||
npm test
|
npm test
|
||||||
|
18
README.md
18
README.md
@ -1,4 +1,5 @@
|
|||||||
# foris-js
|
# foris-js
|
||||||
|
Set of utils and common React elements for reForis.
|
||||||
|
|
||||||
## Publishing package
|
## Publishing package
|
||||||
|
|
||||||
@ -15,3 +16,20 @@ tagged `beta`. Versions names are based on commit SHA, e.g.
|
|||||||
unnecessary version
|
unnecessary version
|
||||||
3. Create a merge request from `dev` to `master` branch
|
3. Create a merge request from `dev` to `master` branch
|
||||||
4. New version should be published automatically
|
4. New version should be published automatically
|
||||||
|
|
||||||
|
## Manually managed dependencies
|
||||||
|
Because of `<ForisForm />` component it's required to use exposed `ReactRouterDOM`
|
||||||
|
object from `react-router-dom` library. `ReactRouterDOM` is exposed by
|
||||||
|
[reForis](https://gitlab.labs.nic.cz/turris/reforis/reforis/blob/master/js/webpack.config.js).
|
||||||
|
It can be done by following steps:
|
||||||
|
|
||||||
|
1. Setting `react-router-dom` as `peerDependencies` and `devDependencies` in `package.json`.
|
||||||
|
2. Adding the following rules to `externals` in `webpack.conf.js` of the plugin:
|
||||||
|
|
||||||
|
```js
|
||||||
|
externals: {
|
||||||
|
...
|
||||||
|
"react-router-dom": "ReactRouterDOM",
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
@ -5,21 +5,5 @@ module.exports = {
|
|||||||
],
|
],
|
||||||
plugins: [
|
plugins: [
|
||||||
"@babel/plugin-transform-runtime",
|
"@babel/plugin-transform-runtime",
|
||||||
"@babel/plugin-syntax-export-default-from",
|
|
||||||
["module-resolver", {
|
|
||||||
root: ["./src"],
|
|
||||||
alias: {
|
|
||||||
test: "./test",
|
|
||||||
underscore: "lodash",
|
|
||||||
},
|
|
||||||
}],
|
|
||||||
],
|
],
|
||||||
env: {
|
|
||||||
development: {
|
|
||||||
ignore: ["**/__tests__/**", "**/__mocks__/**"],
|
|
||||||
},
|
|
||||||
test: {
|
|
||||||
ignore: [],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
@ -12,10 +12,13 @@ module.exports = {
|
|||||||
"<rootDir>/src/testUtils",
|
"<rootDir>/src/testUtils",
|
||||||
"<rootDir>/src/",
|
"<rootDir>/src/",
|
||||||
],
|
],
|
||||||
|
moduleNameMapper: {
|
||||||
|
"\\.(css|less)$": "<rootDir>/src/__mocks__/styleMock.js",
|
||||||
|
},
|
||||||
clearMocks: true,
|
clearMocks: true,
|
||||||
collectCoverageFrom: ["src/**/*.{js,jsx}"],
|
collectCoverageFrom: ["src/**/*.{js,jsx}"],
|
||||||
coverageDirectory: "coverage",
|
coverageDirectory: "coverage",
|
||||||
testPathIgnorePatterns: ["/node_modules/", "/__fixtures__/"],
|
testPathIgnorePatterns: ["/node_modules/", "/__fixtures__/", "/dist/"],
|
||||||
verbose: false,
|
verbose: false,
|
||||||
setupFilesAfterEnv: [
|
setupFilesAfterEnv: [
|
||||||
"@testing-library/react/cleanup-after-each",
|
"@testing-library/react/cleanup-after-each",
|
||||||
@ -24,8 +27,7 @@ module.exports = {
|
|||||||
globals: {
|
globals: {
|
||||||
TZ: "utc",
|
TZ: "utc",
|
||||||
},
|
},
|
||||||
transform: {
|
transformIgnorePatterns: [
|
||||||
"^.+\\.js$": "babel-jest",
|
"node_modules/(?!(react-datetime)/)",
|
||||||
"^.+\\.css$": "jest-transform-css",
|
],
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
12347
package-lock.json
generated
12347
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
76
package.json
76
package.json
@ -1,70 +1,58 @@
|
|||||||
{
|
{
|
||||||
"name": "foris",
|
"name": "foris",
|
||||||
"version": "1.4.0",
|
"version": "4.5.1",
|
||||||
"description": "Set of components and utils for Foris and its plugins.",
|
"description": "Set of components and utils for Foris and its plugins.",
|
||||||
"author": "CZ.NIC, z.s.p.o.",
|
"author": "CZ.NIC, z.s.p.o.",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://gitlab.labs.nic.cz/turris/reforis/forisjs.git"
|
"url": "https://gitlab.labs.nic.cz/turris/reforis/foris-js.git"
|
||||||
},
|
},
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"foris",
|
"foris",
|
||||||
"reforis"
|
"reforis"
|
||||||
],
|
],
|
||||||
"license": "GPL-3.0",
|
"license": "GPL-3.0",
|
||||||
"main": "index.js",
|
"main": "./src/index.js",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"axios": "^0.19.0",
|
"axios": "^0.19.2",
|
||||||
"jest-transform-css": "^2.0.0",
|
"immutability-helper": "3.0.1",
|
||||||
"moment": "^2.24.0",
|
"moment": "^2.24.0",
|
||||||
"moment-timezone": "^0.5.25",
|
"qrcode.react": "^0.9.3",
|
||||||
"prop-types": "^15.7.2",
|
|
||||||
"react-datetime": "^2.16.3",
|
"react-datetime": "^2.16.3",
|
||||||
"react-router": "^5.0.1",
|
|
||||||
"react-uid": "^2.2.0"
|
"react-uid": "^2.2.0"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"immutability-helper": "3.0.1",
|
"bootstrap": "4.4.1",
|
||||||
"react": "16.9.0",
|
"prop-types": "15.7.2",
|
||||||
"react-dom": "16.9.0"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@babel/cli": "^7.4.4",
|
|
||||||
"@babel/core": "^7.4.5",
|
|
||||||
"@babel/plugin-proposal-class-properties": "^7.4.4",
|
|
||||||
"@babel/plugin-syntax-export-default-from": "^7.2.0",
|
|
||||||
"@babel/plugin-transform-runtime": "^7.4.4",
|
|
||||||
"@babel/preset-env": "^7.4.5",
|
|
||||||
"@babel/preset-react": "^7.0.0",
|
|
||||||
"@fortawesome/fontawesome-free": "^5.11.2",
|
|
||||||
"@testing-library/react": "^8.0.9",
|
|
||||||
"babel-jest": "^24.8.0",
|
|
||||||
"babel-loader": "^8.0.6",
|
|
||||||
"babel-plugin-module-resolver": "^3.2.0",
|
|
||||||
"babel-plugin-react-transform": "^3.0.0",
|
|
||||||
"babel-polyfill": "^6.26.0",
|
|
||||||
"bootstrap": "^4.3.1",
|
|
||||||
"copy-webpack-plugin": "^5.0.4",
|
|
||||||
"css-loader": "^3.2.0",
|
|
||||||
"eslint": "^6.1.0",
|
|
||||||
"eslint-config-reforis": "^1.0.0",
|
|
||||||
"file-loader": "^4.2.0",
|
|
||||||
"immutability-helper": "3.0.1",
|
|
||||||
"jest": "^24.8.0",
|
|
||||||
"jest-mock-axios": "^3.0.0",
|
|
||||||
"moment": "^2.24.0",
|
|
||||||
"moment-timezone": "^0.5.25",
|
|
||||||
"react": "16.9.0",
|
"react": "16.9.0",
|
||||||
"react-dom": "16.9.0",
|
"react-dom": "16.9.0",
|
||||||
"react-styleguidist": "^9.1.16",
|
"react-router-dom": "^5.1.2"
|
||||||
"snapshot-diff": "^0.5.1",
|
},
|
||||||
"style-loader": "^1.0.0",
|
"devDependencies": {
|
||||||
"webpack": "^4.41.0"
|
"@babel/cli": "^7.8.4",
|
||||||
|
"@babel/core": "^7.9.0",
|
||||||
|
"@babel/plugin-transform-runtime": "^7.9.0",
|
||||||
|
"@babel/preset-env": "^7.9.0",
|
||||||
|
"@babel/preset-react": "^7.9.4",
|
||||||
|
"@fortawesome/fontawesome-free": "^5.13.0",
|
||||||
|
"@testing-library/react": "^8.0.9",
|
||||||
|
"babel-loader": "^8.1.0",
|
||||||
|
"babel-polyfill": "^6.26.0",
|
||||||
|
"eslint": "^6.8.0",
|
||||||
|
"eslint-config-reforis": "^1.0.0",
|
||||||
|
"jest": "^25.2.0",
|
||||||
|
"jest-mock-axios": "^3.2.0",
|
||||||
|
"moment-timezone": "^0.5.28",
|
||||||
|
"prop-types": "15.7.2",
|
||||||
|
"react": "16.9.0",
|
||||||
|
"react-dom": "16.9.0",
|
||||||
|
"react-router-dom": "^5.1.2",
|
||||||
|
"react-styleguidist": "^10.6.2",
|
||||||
|
"snapshot-diff": "^0.7.0"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "rm -rf dist; babel src --out-dir dist --source-maps inline --copy-files",
|
|
||||||
"build:watch": "babel src --verbose --watch --out-dir dist --source-maps inline --copy-files",
|
|
||||||
"lint": "eslint src",
|
"lint": "eslint src",
|
||||||
|
"lint:fix": "eslint --fix src",
|
||||||
"test": "jest",
|
"test": "jest",
|
||||||
"test:watch": "jest --watch",
|
"test:watch": "jest --watch",
|
||||||
"test:coverage": "jest --coverage --colors",
|
"test:coverage": "jest --coverage --colors",
|
||||||
|
@ -1,9 +1,13 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
# Collect files
|
# Collect files
|
||||||
npm run build
|
mkdir -p dist
|
||||||
cp package.json dist
|
cp -rf ./src/* dist
|
||||||
|
cp package.json package-lock.json README.md dist
|
||||||
|
sed -i 's/\/src//g' dist/package.json # remove ./src from main js file path
|
||||||
|
|
||||||
cp -rf translations dist
|
cp -rf translations dist
|
||||||
|
|
||||||
# Remove unwanted files
|
# Remove unwanted files
|
||||||
rm -rf dist/**/__tests__
|
find dist -type d -name __tests__ -exec rm -r {} +
|
||||||
rm -rf dist/__mocks__
|
rm -rf dist/__mocks__
|
||||||
|
8
src/__mocks__/styleMock.js
Normal file
8
src/__mocks__/styleMock.js
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
module.exports = {};
|
@ -8,8 +8,8 @@
|
|||||||
import React, { useState, useContext, useCallback } from "react";
|
import React, { useState, useContext, useCallback } from "react";
|
||||||
import PropTypes from "prop-types";
|
import PropTypes from "prop-types";
|
||||||
|
|
||||||
import { Alert, ALERT_TYPES } from "bootstrap/Alert";
|
import { Alert, ALERT_TYPES } from "../bootstrap/Alert";
|
||||||
import { Portal } from "utils/Portal";
|
import { Portal } from "../utils/Portal";
|
||||||
|
|
||||||
AlertContextProvider.propTypes = {
|
AlertContextProvider.propTypes = {
|
||||||
children: PropTypes.oneOfType([
|
children: PropTypes.oneOfType([
|
||||||
|
@ -6,7 +6,9 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { render, getByText, queryByText, fireEvent } from "customTestRender";
|
import {
|
||||||
|
render, getByText, queryByText, fireEvent,
|
||||||
|
} from "customTestRender";
|
||||||
|
|
||||||
import { useAlert, AlertContextProvider } from "../AlertContext";
|
import { useAlert, AlertContextProvider } from "../AlertContext";
|
||||||
|
|
||||||
@ -20,7 +22,7 @@ function AlertTest() {
|
|||||||
<button onClick={dismissAlert}>Dismiss alert</button>
|
<button onClick={dismissAlert}>Dismiss alert</button>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
}
|
||||||
|
|
||||||
describe("AlertContext", () => {
|
describe("AlertContext", () => {
|
||||||
let componentContainer;
|
let componentContainer;
|
||||||
@ -29,7 +31,7 @@ describe("AlertContext", () => {
|
|||||||
const { container } = render(
|
const { container } = render(
|
||||||
<AlertContextProvider>
|
<AlertContextProvider>
|
||||||
<AlertTest />
|
<AlertTest />
|
||||||
</AlertContextProvider>
|
</AlertContextProvider>,
|
||||||
);
|
);
|
||||||
componentContainer = container;
|
componentContainer = container;
|
||||||
});
|
});
|
||||||
|
@ -9,7 +9,7 @@ import {
|
|||||||
useCallback, useEffect, useReducer, useState,
|
useCallback, useEffect, useReducer, useState,
|
||||||
} from "react";
|
} from "react";
|
||||||
|
|
||||||
import { ForisURLs } from "forisUrls";
|
import { ForisURLs } from "../utils/forisUrls";
|
||||||
import {
|
import {
|
||||||
API_ACTIONS, API_METHODS, API_STATE, getErrorPayload, HEADERS, TIMEOUT,
|
API_ACTIONS, API_METHODS, API_STATE, getErrorPayload, HEADERS, TIMEOUT,
|
||||||
} from "./utils";
|
} from "./utils";
|
||||||
@ -17,13 +17,13 @@ import {
|
|||||||
const DATA_METHODS = ["POST", "PATCH", "PUT"];
|
const DATA_METHODS = ["POST", "PATCH", "PUT"];
|
||||||
|
|
||||||
function createAPIHook(method) {
|
function createAPIHook(method) {
|
||||||
return (url, contentType) => {
|
return (urlRoot, contentType) => {
|
||||||
const [state, dispatch] = useReducer(APIReducer, {
|
const [state, dispatch] = useReducer(APIReducer, {
|
||||||
state: API_STATE.INIT,
|
state: API_STATE.INIT,
|
||||||
data: null,
|
data: null,
|
||||||
});
|
});
|
||||||
|
|
||||||
const sendRequest = useCallback(async (data) => {
|
const sendRequest = useCallback(async ({ data, suffix } = {}) => {
|
||||||
const headers = { ...HEADERS };
|
const headers = { ...HEADERS };
|
||||||
if (contentType) {
|
if (contentType) {
|
||||||
headers["Content-Type"] = contentType;
|
headers["Content-Type"] = contentType;
|
||||||
@ -31,29 +31,36 @@ function createAPIHook(method) {
|
|||||||
|
|
||||||
dispatch({ type: API_ACTIONS.INIT });
|
dispatch({ type: API_ACTIONS.INIT });
|
||||||
try {
|
try {
|
||||||
|
// Prepare request
|
||||||
const request = API_METHODS[method];
|
const request = API_METHODS[method];
|
||||||
const config = {
|
const config = {
|
||||||
timeout: TIMEOUT,
|
timeout: TIMEOUT,
|
||||||
headers,
|
headers,
|
||||||
};
|
};
|
||||||
|
const url = suffix ? `${urlRoot}/${suffix}` : urlRoot;
|
||||||
|
|
||||||
|
// Make request
|
||||||
let result;
|
let result;
|
||||||
if (DATA_METHODS.includes(method)) {
|
if (DATA_METHODS.includes(method)) {
|
||||||
result = await request(url, data, config);
|
result = await request(url, data, config);
|
||||||
} else {
|
} else {
|
||||||
result = await request(url, config);
|
result = await request(url, config);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Process request result
|
||||||
dispatch({
|
dispatch({
|
||||||
type: API_ACTIONS.SUCCESS,
|
type: API_ACTIONS.SUCCESS,
|
||||||
payload: result.data,
|
payload: result.data,
|
||||||
});
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
const errorPayload = getErrorPayload(error);
|
||||||
dispatch({
|
dispatch({
|
||||||
type: API_ACTIONS.FAILURE,
|
type: API_ACTIONS.FAILURE,
|
||||||
status: error.response && error.response.status,
|
status: error.response && error.response.status,
|
||||||
payload: getErrorPayload(error),
|
payload: errorPayload,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}, [url, contentType]);
|
}, [urlRoot, contentType]);
|
||||||
return [state, sendRequest];
|
return [state, sendRequest];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@ -74,6 +81,12 @@ function APIReducer(state, action) {
|
|||||||
if (action.status === 403) {
|
if (action.status === 403) {
|
||||||
window.location.assign(ForisURLs.login);
|
window.location.assign(ForisURLs.login);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Not an API error - should be rethrown.
|
||||||
|
if (action.payload && action.payload.stack && action.payload.message) {
|
||||||
|
throw (action.payload);
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
state: API_STATE.ERROR,
|
state: API_STATE.ERROR,
|
||||||
data: action.payload,
|
data: action.payload,
|
||||||
|
@ -13,7 +13,7 @@ export const HEADERS = {
|
|||||||
"X-CSRFToken": getCookie("_csrf_token"),
|
"X-CSRFToken": getCookie("_csrf_token"),
|
||||||
};
|
};
|
||||||
|
|
||||||
export const TIMEOUT = 5000;
|
export const TIMEOUT = 30500;
|
||||||
|
|
||||||
export const API_ACTIONS = {
|
export const API_ACTIONS = {
|
||||||
INIT: 1,
|
INIT: 1,
|
||||||
@ -65,9 +65,8 @@ export function getErrorPayload(error) {
|
|||||||
if (error.request) {
|
if (error.request) {
|
||||||
return _("No response received.");
|
return _("No response received.");
|
||||||
}
|
}
|
||||||
/* eslint no-console: "off" */
|
// Return original error because it's not directly related to API request/response.
|
||||||
console.error(error);
|
return error;
|
||||||
return _("An unknown error occurred. Check the console for more info.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getJSONErrorMessage(error) {
|
export function getJSONErrorMessage(error) {
|
||||||
|
@ -8,11 +8,6 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import PropTypes from "prop-types";
|
import PropTypes from "prop-types";
|
||||||
|
|
||||||
const OFFSET = 8;
|
|
||||||
const SIZE = 3;
|
|
||||||
const SIZE_CLASS = ` offset-lg-${OFFSET} col-lg-${SIZE}`;
|
|
||||||
const SIZE_CLASS_SM = " col-sm-12";
|
|
||||||
|
|
||||||
Button.propTypes = {
|
Button.propTypes = {
|
||||||
/** Additional class name. */
|
/** Additional class name. */
|
||||||
className: PropTypes.string,
|
className: PropTypes.string,
|
||||||
@ -32,14 +27,16 @@ Button.propTypes = {
|
|||||||
export function Button({
|
export function Button({
|
||||||
className, loading, forisFormSize, children, ...props
|
className, loading, forisFormSize, children, ...props
|
||||||
}) {
|
}) {
|
||||||
className = className ? `btn ${className}` : "btn btn-primary ";
|
let buttonClass = className ? `btn ${className}` : "btn btn-primary ";
|
||||||
if (forisFormSize) className += SIZE_CLASS + SIZE_CLASS_SM;
|
if (forisFormSize) {
|
||||||
|
buttonClass = `${buttonClass} col-sm-12 col-lg-3`;
|
||||||
|
}
|
||||||
|
|
||||||
const span = loading
|
const span = loading
|
||||||
? <span className="spinner-border spinner-border-sm" role="status" aria-hidden="true" /> : null;
|
? <span className="spinner-border spinner-border-sm" role="status" aria-hidden="true" /> : null;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<button type="button" className={className} {...props}>
|
<button type="button" className={buttonClass} {...props}>
|
||||||
{span}
|
{span}
|
||||||
{" "}
|
{" "}
|
||||||
{span ? " " : null}
|
{span ? " " : null}
|
||||||
|
@ -9,30 +9,25 @@ import React from "react";
|
|||||||
import PropTypes from "prop-types";
|
import PropTypes from "prop-types";
|
||||||
import { useUID } from "react-uid";
|
import { useUID } from "react-uid";
|
||||||
|
|
||||||
import { formFieldsSize } from "./constants";
|
|
||||||
|
|
||||||
CheckBox.propTypes = {
|
CheckBox.propTypes = {
|
||||||
/** Label message */
|
/** Label message */
|
||||||
label: PropTypes.string.isRequired,
|
label: PropTypes.string.isRequired,
|
||||||
/** Help text message */
|
/** Help text message */
|
||||||
helpText: PropTypes.string,
|
helpText: PropTypes.string,
|
||||||
/** Apply default size (full-width) */
|
|
||||||
useDefaultSize: PropTypes.bool,
|
|
||||||
/** Control if checkbox is clickable */
|
/** Control if checkbox is clickable */
|
||||||
disabled: PropTypes.bool,
|
disabled: PropTypes.bool,
|
||||||
};
|
};
|
||||||
|
|
||||||
CheckBox.defaultProps = {
|
CheckBox.defaultProps = {
|
||||||
useDefaultSize: true,
|
|
||||||
disabled: false,
|
disabled: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
export function CheckBox({
|
export function CheckBox({
|
||||||
label, helpText, useDefaultSize, disabled, ...props
|
label, helpText, disabled, ...props
|
||||||
}) {
|
}) {
|
||||||
const uid = useUID();
|
const uid = useUID();
|
||||||
return (
|
return (
|
||||||
<div className={`form-group ${useDefaultSize ? formFieldsSize : ""}`.trim()}>
|
<div className="form-group">
|
||||||
<div className="custom-control custom-checkbox ">
|
<div className="custom-control custom-checkbox ">
|
||||||
<input
|
<input
|
||||||
className="custom-control-input"
|
className="custom-control-input"
|
||||||
|
4
src/bootstrap/DataTimeInput.css
Normal file
4
src/bootstrap/DataTimeInput.css
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
/* Override defaults from "react-datetime" - display picker above input */
|
||||||
|
.rdtPicker {
|
||||||
|
bottom: 0;
|
||||||
|
}
|
@ -10,6 +10,7 @@ import PropTypes from "prop-types";
|
|||||||
import Datetime from "react-datetime/DateTime";
|
import Datetime from "react-datetime/DateTime";
|
||||||
import moment from "moment/moment";
|
import moment from "moment/moment";
|
||||||
import "react-datetime/css/react-datetime.css";
|
import "react-datetime/css/react-datetime.css";
|
||||||
|
import "./DataTimeInput.css";
|
||||||
|
|
||||||
import { Input } from "./Input";
|
import { Input } from "./Input";
|
||||||
|
|
||||||
|
@ -10,12 +10,25 @@ import PropTypes from "prop-types";
|
|||||||
|
|
||||||
DownloadButton.propTypes = {
|
DownloadButton.propTypes = {
|
||||||
href: PropTypes.string.isRequired,
|
href: PropTypes.string.isRequired,
|
||||||
|
className: PropTypes.string,
|
||||||
children: PropTypes.oneOfType([
|
children: PropTypes.oneOfType([
|
||||||
PropTypes.arrayOf(PropTypes.node),
|
PropTypes.arrayOf(PropTypes.node),
|
||||||
PropTypes.node,
|
PropTypes.node,
|
||||||
]),
|
]),
|
||||||
};
|
};
|
||||||
|
|
||||||
export function DownloadButton({ href, children }) {
|
DownloadButton.defaultProps = {
|
||||||
return <a href={href} className="btn btn-primary" download>{children}</a>;
|
className: "btn-primary",
|
||||||
|
};
|
||||||
|
|
||||||
|
export function DownloadButton({ href, className, children }) {
|
||||||
|
return (
|
||||||
|
<a
|
||||||
|
href={href}
|
||||||
|
className={`btn ${className}`.trim()}
|
||||||
|
download
|
||||||
|
>
|
||||||
|
{children}
|
||||||
|
</a>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
@ -6,8 +6,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import React from "react";
|
import React from "react";
|
||||||
|
|
||||||
import PropTypes from "prop-types";
|
import PropTypes from "prop-types";
|
||||||
|
|
||||||
import { Input } from "./Input";
|
import { Input } from "./Input";
|
||||||
|
|
||||||
export const EmailInput = ({ ...props }) => <Input type="email" {...props} />;
|
export const EmailInput = ({ ...props }) => <Input type="email" {...props} />;
|
||||||
|
@ -9,8 +9,6 @@ import React from "react";
|
|||||||
import { useUID } from "react-uid";
|
import { useUID } from "react-uid";
|
||||||
import PropTypes from "prop-types";
|
import PropTypes from "prop-types";
|
||||||
|
|
||||||
import { formFieldsSize } from "./constants";
|
|
||||||
|
|
||||||
Input.propTypes = {
|
Input.propTypes = {
|
||||||
type: PropTypes.string.isRequired,
|
type: PropTypes.string.isRequired,
|
||||||
label: PropTypes.string.isRequired,
|
label: PropTypes.string.isRequired,
|
||||||
@ -32,7 +30,7 @@ export function Input({
|
|||||||
const uid = useUID();
|
const uid = useUID();
|
||||||
const inputClassName = `form-control ${className || ""} ${(error ? "is-invalid" : "")}`.trim();
|
const inputClassName = `form-control ${className || ""} ${(error ? "is-invalid" : "")}`.trim();
|
||||||
return (
|
return (
|
||||||
<div className={`form-group ${formFieldsSize}`}>
|
<div className="form-group">
|
||||||
<label className={labelClassName} htmlFor={uid}>{label}</label>
|
<label className={labelClassName} htmlFor={uid}>{label}</label>
|
||||||
<div className={`input-group ${groupClassName || ""}`.trim()}>
|
<div className={`input-group ${groupClassName || ""}`.trim()}>
|
||||||
<input
|
<input
|
||||||
|
15
src/bootstrap/Modal.css
Normal file
15
src/bootstrap/Modal.css
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
@keyframes modalFade {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal.show {
|
||||||
|
display: block;
|
||||||
|
animation-name: modalFade;
|
||||||
|
animation-duration: .3s;
|
||||||
|
background: rgba(0, 0, 0, 0.2);
|
||||||
|
}
|
@ -5,16 +5,19 @@
|
|||||||
* See /LICENSE for more information.
|
* See /LICENSE for more information.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import React, { useEffect, useRef } from "react";
|
import React, { useRef } from "react";
|
||||||
import PropTypes from "prop-types";
|
import PropTypes from "prop-types";
|
||||||
|
|
||||||
import { Portal } from "utils/Portal";
|
import { Portal } from "../utils/Portal";
|
||||||
|
import { useClickOutside } from "../utils/hooks";
|
||||||
|
import "./Modal.css";
|
||||||
|
|
||||||
Modal.propTypes = {
|
Modal.propTypes = {
|
||||||
/** Is modal shown value */
|
/** Is modal shown value */
|
||||||
shown: PropTypes.bool.isRequired,
|
shown: PropTypes.bool.isRequired,
|
||||||
/** Callback to manage modal visibility */
|
/** Callback to manage modal visibility */
|
||||||
setShown: PropTypes.func.isRequired,
|
setShown: PropTypes.func.isRequired,
|
||||||
|
scrollable: PropTypes.bool,
|
||||||
|
|
||||||
/** Modal content use following: `ModalHeader`, `ModalBody`, `ModalFooter` */
|
/** Modal content use following: `ModalHeader`, `ModalBody`, `ModalFooter` */
|
||||||
children: PropTypes.oneOfType([
|
children: PropTypes.oneOfType([
|
||||||
@ -23,24 +26,21 @@ Modal.propTypes = {
|
|||||||
]).isRequired,
|
]).isRequired,
|
||||||
};
|
};
|
||||||
|
|
||||||
export function Modal({ shown, setShown, children }) {
|
export function Modal({
|
||||||
|
shown, setShown, scrollable, children,
|
||||||
|
}) {
|
||||||
const dialogRef = useRef();
|
const dialogRef = useRef();
|
||||||
|
|
||||||
useEffect(() => {
|
useClickOutside(dialogRef, () => setShown(false));
|
||||||
function handleClickOutsideDialog(e) {
|
|
||||||
if (!dialogRef.current.contains(e.target)) setShown(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
document.addEventListener("mousedown", handleClickOutsideDialog);
|
|
||||||
return () => {
|
|
||||||
document.removeEventListener("mousedown", handleClickOutsideDialog);
|
|
||||||
};
|
|
||||||
}, [setShown]);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Portal containerId="modal-container">
|
<Portal containerId="modal-container">
|
||||||
<div className={`modal fade ${shown ? "show" : ""}`} role="dialog">
|
<div className={`modal fade ${shown ? "show" : ""}`} role="dialog">
|
||||||
<div ref={dialogRef} className="modal-dialog modal-dialog-centered" role="document">
|
<div
|
||||||
|
ref={dialogRef}
|
||||||
|
className={`modal-dialog modal-dialog-centered${scrollable ? " modal-dialog-scrollable" : ""}`}
|
||||||
|
role="document"
|
||||||
|
>
|
||||||
<div className="modal-content">
|
<div className="modal-content">
|
||||||
{children}
|
{children}
|
||||||
</div>
|
</div>
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import PropTypes from "prop-types";
|
import PropTypes from "prop-types";
|
||||||
|
|
||||||
import { useConditionalTimeout } from "utils/hooks";
|
import { useConditionalTimeout } from "../utils/hooks";
|
||||||
import { Input } from "./Input";
|
import { Input } from "./Input";
|
||||||
import "./NumberInput.css";
|
import "./NumberInput.css";
|
||||||
|
|
||||||
|
@ -9,8 +9,6 @@ import React from "react";
|
|||||||
import PropTypes from "prop-types";
|
import PropTypes from "prop-types";
|
||||||
import { useUID } from "react-uid";
|
import { useUID } from "react-uid";
|
||||||
|
|
||||||
import { formFieldsSize } from "./constants";
|
|
||||||
|
|
||||||
RadioSet.propTypes = {
|
RadioSet.propTypes = {
|
||||||
/** Name attribute of the input HTML tag. */
|
/** Name attribute of the input HTML tag. */
|
||||||
name: PropTypes.string.isRequired,
|
name: PropTypes.string.isRequired,
|
||||||
@ -19,7 +17,12 @@ RadioSet.propTypes = {
|
|||||||
/** Choices . */
|
/** Choices . */
|
||||||
choices: PropTypes.arrayOf(PropTypes.shape({
|
choices: PropTypes.arrayOf(PropTypes.shape({
|
||||||
/** Choice lable . */
|
/** Choice lable . */
|
||||||
label: PropTypes.string.isRequired,
|
label: PropTypes.oneOfType([
|
||||||
|
PropTypes.string,
|
||||||
|
PropTypes.element,
|
||||||
|
PropTypes.node,
|
||||||
|
PropTypes.arrayOf(PropTypes.node),
|
||||||
|
]).isRequired,
|
||||||
/** Choice value . */
|
/** Choice value . */
|
||||||
value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
|
value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
|
||||||
})).isRequired,
|
})).isRequired,
|
||||||
@ -51,7 +54,7 @@ export function RadioSet({
|
|||||||
});
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={`form-group ${formFieldsSize}`}>
|
<div className="form-group">
|
||||||
{label && <label htmlFor={uid} className="d-block">{label}</label>}
|
{label && <label htmlFor={uid} className="d-block">{label}</label>}
|
||||||
{radios}
|
{radios}
|
||||||
{helpText && <small className="form-text text-muted">{helpText}</small>}
|
{helpText && <small className="form-text text-muted">{helpText}</small>}
|
||||||
@ -60,12 +63,17 @@ export function RadioSet({
|
|||||||
}
|
}
|
||||||
|
|
||||||
Radio.propTypes = {
|
Radio.propTypes = {
|
||||||
label: PropTypes.string.isRequired,
|
label: PropTypes.oneOfType([
|
||||||
|
PropTypes.string,
|
||||||
|
PropTypes.element,
|
||||||
|
PropTypes.node,
|
||||||
|
PropTypes.arrayOf(PropTypes.node),
|
||||||
|
]).isRequired,
|
||||||
id: PropTypes.string.isRequired,
|
id: PropTypes.string.isRequired,
|
||||||
helpText: PropTypes.string,
|
helpText: PropTypes.string,
|
||||||
};
|
};
|
||||||
|
|
||||||
function Radio({
|
export function Radio({
|
||||||
label, id, helpText, ...props
|
label, id, helpText, ...props
|
||||||
}) {
|
}) {
|
||||||
return (
|
return (
|
||||||
|
@ -33,7 +33,7 @@ export function Select({
|
|||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="form-group col-sm-12 offset-lg-1 col-lg-10">
|
<div className="form-group">
|
||||||
<label htmlFor={uid}>{label}</label>
|
<label htmlFor={uid}>{label}</label>
|
||||||
<select
|
<select
|
||||||
className="custom-select"
|
className="custom-select"
|
||||||
|
33
src/bootstrap/Spinner.css
Normal file
33
src/bootstrap/Spinner.css
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
.spinner-wrapper .spinner-border {
|
||||||
|
width: 4rem;
|
||||||
|
height: 4rem;
|
||||||
|
color: #00a2e2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.spinner-fs-background {
|
||||||
|
background-color: rgba(2, 2, 2, .5);
|
||||||
|
color: rgb(230, 230, 230);
|
||||||
|
position: fixed;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
top: 0;
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
flex-direction: column;
|
||||||
|
/*
|
||||||
|
* Set to high value to me sure that it always overlaps all components
|
||||||
|
* https://getbootstrap.com/docs/4.3/layout/overview/#z-index
|
||||||
|
*/
|
||||||
|
z-index: 1100;
|
||||||
|
}
|
||||||
|
|
||||||
|
.spinner-fs-wrapper .spinner-border {
|
||||||
|
width: 6rem;
|
||||||
|
height: 6rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.spinner-fs-wrapper .spinner-text {
|
||||||
|
margin: 1rem;
|
||||||
|
}
|
@ -8,6 +8,8 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import PropTypes from "prop-types";
|
import PropTypes from "prop-types";
|
||||||
|
|
||||||
|
import "./Spinner.css";
|
||||||
|
|
||||||
Spinner.propTypes = {
|
Spinner.propTypes = {
|
||||||
/** Children components put into `div` with "spinner-text" class. */
|
/** Children components put into `div` with "spinner-text" class. */
|
||||||
children: PropTypes.oneOfType([
|
children: PropTypes.oneOfType([
|
||||||
@ -46,6 +48,8 @@ export function Spinner({
|
|||||||
SpinnerElement.propTypes = {
|
SpinnerElement.propTypes = {
|
||||||
/** Spinner's size */
|
/** Spinner's size */
|
||||||
small: PropTypes.bool,
|
small: PropTypes.bool,
|
||||||
|
/** Additional className */
|
||||||
|
className: PropTypes.string,
|
||||||
/** Children components */
|
/** Children components */
|
||||||
children: PropTypes.oneOfType([
|
children: PropTypes.oneOfType([
|
||||||
PropTypes.arrayOf(PropTypes.node),
|
PropTypes.arrayOf(PropTypes.node),
|
||||||
@ -53,13 +57,16 @@ SpinnerElement.propTypes = {
|
|||||||
]),
|
]),
|
||||||
};
|
};
|
||||||
|
|
||||||
export function SpinnerElement({ small, children }) {
|
export function SpinnerElement({ small, className, children }) {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className={`spinner-border ${small ? "spinner-border-sm" : ""}`} role="status">
|
<div
|
||||||
|
className={`spinner-border ${small ? "spinner-border-sm" : ""} ${className || ""}`.trim()}
|
||||||
|
role="status"
|
||||||
|
>
|
||||||
<span className="sr-only" />
|
<span className="sr-only" />
|
||||||
</div>
|
</div>
|
||||||
<div className="spinner-text">{children}</div>
|
{children && <div className="spinner-text">{children}</div>}
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ describe("<Button />", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("Render button with spinner", () => {
|
it("Render button with spinner", () => {
|
||||||
const { container } = render(<Button loading={true}>Test Button</Button>);
|
const { container } = render(<Button loading>Test Button</Button>);
|
||||||
expect(container.firstChild)
|
expect(container.firstChild)
|
||||||
.toMatchSnapshot();
|
.toMatchSnapshot();
|
||||||
});
|
});
|
||||||
|
@ -20,7 +20,7 @@ describe("<Checkbox/>", () => {
|
|||||||
helpText="Some help text"
|
helpText="Some help text"
|
||||||
onChange={() => {
|
onChange={() => {
|
||||||
}}
|
}}
|
||||||
/>
|
/>,
|
||||||
);
|
);
|
||||||
expect(container.firstChild)
|
expect(container.firstChild)
|
||||||
.toMatchSnapshot();
|
.toMatchSnapshot();
|
||||||
@ -31,7 +31,7 @@ describe("<Checkbox/>", () => {
|
|||||||
<CheckBox
|
<CheckBox
|
||||||
label="Test label"
|
label="Test label"
|
||||||
helpText="Some help text"
|
helpText="Some help text"
|
||||||
/>
|
/>,
|
||||||
);
|
);
|
||||||
expect(container.firstChild)
|
expect(container.firstChild)
|
||||||
.toMatchSnapshot();
|
.toMatchSnapshot();
|
||||||
|
@ -7,7 +7,9 @@
|
|||||||
|
|
||||||
import React from "react";
|
import React from "react";
|
||||||
|
|
||||||
import { render, fireEvent, getByLabelText, wait } from "customTestRender";
|
import {
|
||||||
|
render, fireEvent, getByLabelText, wait,
|
||||||
|
} from "customTestRender";
|
||||||
|
|
||||||
import { NumberInput } from "../NumberInput";
|
import { NumberInput } from "../NumberInput";
|
||||||
|
|
||||||
@ -22,7 +24,7 @@ describe("<NumberInput/>", () => {
|
|||||||
helpText="Some help text"
|
helpText="Some help text"
|
||||||
value={1}
|
value={1}
|
||||||
onChange={onChangeMock}
|
onChange={onChangeMock}
|
||||||
/>
|
/>,
|
||||||
);
|
);
|
||||||
componentContainer = container;
|
componentContainer = container;
|
||||||
});
|
});
|
||||||
@ -34,12 +36,12 @@ describe("<NumberInput/>", () => {
|
|||||||
it("Increase number with button", async () => {
|
it("Increase number with button", async () => {
|
||||||
const increaseButton = getByLabelText(componentContainer, "Increase");
|
const increaseButton = getByLabelText(componentContainer, "Increase");
|
||||||
fireEvent.mouseDown(increaseButton);
|
fireEvent.mouseDown(increaseButton);
|
||||||
await wait(() => expect(onChangeMock).toHaveBeenCalledWith({"target": {"value": 2}}));
|
await wait(() => expect(onChangeMock).toHaveBeenCalledWith({ target: { value: 2 } }));
|
||||||
});
|
});
|
||||||
|
|
||||||
it("Decrease number with button", async () => {
|
it("Decrease number with button", async () => {
|
||||||
const decreaseButton = getByLabelText(componentContainer, "Decrease");
|
const decreaseButton = getByLabelText(componentContainer, "Decrease");
|
||||||
fireEvent.mouseDown(decreaseButton);
|
fireEvent.mouseDown(decreaseButton);
|
||||||
await wait(() => expect(onChangeMock).toHaveBeenCalledWith({"target": {"value": 0}}));
|
await wait(() => expect(onChangeMock).toHaveBeenCalledWith({ target: { value: 0 } }));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -20,7 +20,7 @@ describe("<PasswordInput/>", () => {
|
|||||||
value="Some password"
|
value="Some password"
|
||||||
onChange={() => {
|
onChange={() => {
|
||||||
}}
|
}}
|
||||||
/>
|
/>,
|
||||||
);
|
);
|
||||||
expect(container.firstChild)
|
expect(container.firstChild)
|
||||||
.toMatchSnapshot();
|
.toMatchSnapshot();
|
||||||
|
@ -14,30 +14,30 @@ import { RadioSet } from "../RadioSet";
|
|||||||
const TEST_CHOICES = [
|
const TEST_CHOICES = [
|
||||||
{
|
{
|
||||||
label: "label",
|
label: "label",
|
||||||
value: "value"
|
value: "value",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "another label",
|
label: "another label",
|
||||||
value: "another value"
|
value: "another value",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "another one label",
|
label: "another one label",
|
||||||
value: "another on value"
|
value: "another on value",
|
||||||
}
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
describe("<RadioSet/>", () => {
|
describe("<RadioSet/>", () => {
|
||||||
it("Render radio set", () => {
|
it("Render radio set", () => {
|
||||||
const { container } = render(
|
const { container } = render(
|
||||||
<RadioSet
|
<RadioSet
|
||||||
name={"test_name"}
|
name="test_name"
|
||||||
label='Radios set label'
|
label="Radios set label"
|
||||||
value='value'
|
value="value"
|
||||||
choices={TEST_CHOICES}
|
choices={TEST_CHOICES}
|
||||||
helpText={"Some help text"}
|
helpText="Some help text"
|
||||||
onChange={() => {
|
onChange={() => {
|
||||||
}}
|
}}
|
||||||
/>
|
/>,
|
||||||
);
|
);
|
||||||
expect(container.firstChild)
|
expect(container.firstChild)
|
||||||
.toMatchSnapshot();
|
.toMatchSnapshot();
|
||||||
|
@ -7,29 +7,31 @@
|
|||||||
|
|
||||||
import React from "react";
|
import React from "react";
|
||||||
|
|
||||||
import { fireEvent, getByDisplayValue, getByText, render } from "customTestRender";
|
import {
|
||||||
|
fireEvent, getByDisplayValue, getByText, render,
|
||||||
|
} from "customTestRender";
|
||||||
|
|
||||||
import { Select } from "../Select";
|
import { Select } from "../Select";
|
||||||
|
|
||||||
const TEST_CHOICES = {
|
const TEST_CHOICES = {
|
||||||
"1": "one",
|
1: "one",
|
||||||
"2": "two",
|
2: "two",
|
||||||
"3": "three",
|
3: "three",
|
||||||
};
|
};
|
||||||
|
|
||||||
describe("<Select/>", () => {
|
describe("<Select/>", () => {
|
||||||
var selectContainer;
|
let selectContainer;
|
||||||
const onChangeHandler = jest.fn();
|
const onChangeHandler = jest.fn();
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
const { container } = render(
|
const { container } = render(
|
||||||
<Select
|
<Select
|
||||||
label='Test label'
|
label="Test label"
|
||||||
value='1'
|
value="1"
|
||||||
choices={TEST_CHOICES}
|
choices={TEST_CHOICES}
|
||||||
helpText='Help text'
|
helpText="Help text"
|
||||||
|
|
||||||
onChange={onChangeHandler}
|
onChange={onChangeHandler}
|
||||||
/>
|
/>,
|
||||||
);
|
);
|
||||||
selectContainer = container;
|
selectContainer = container;
|
||||||
});
|
});
|
||||||
|
@ -20,7 +20,7 @@ describe("<TextInput/>", () => {
|
|||||||
value="Some text"
|
value="Some text"
|
||||||
onChange={() => {
|
onChange={() => {
|
||||||
}}
|
}}
|
||||||
/>
|
/>,
|
||||||
);
|
);
|
||||||
expect(container.firstChild)
|
expect(container.firstChild)
|
||||||
.toMatchSnapshot();
|
.toMatchSnapshot();
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
exports[`<Checkbox/> Render checkbox 1`] = `
|
exports[`<Checkbox/> Render checkbox 1`] = `
|
||||||
<div
|
<div
|
||||||
class="form-group col-sm-12 offset-lg-1 col-lg-10"
|
class="form-group"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="custom-control custom-checkbox "
|
class="custom-control custom-checkbox "
|
||||||
@ -30,7 +30,7 @@ exports[`<Checkbox/> Render checkbox 1`] = `
|
|||||||
|
|
||||||
exports[`<Checkbox/> Render uncheked checkbox 1`] = `
|
exports[`<Checkbox/> Render uncheked checkbox 1`] = `
|
||||||
<div
|
<div
|
||||||
class="form-group col-sm-12 offset-lg-1 col-lg-10"
|
class="form-group"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="custom-control custom-checkbox "
|
class="custom-control custom-checkbox "
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
exports[`<NumberInput/> Render number input 1`] = `
|
exports[`<NumberInput/> Render number input 1`] = `
|
||||||
<div
|
<div
|
||||||
class="form-group col-sm-12 offset-lg-1 col-lg-10"
|
class="form-group"
|
||||||
>
|
>
|
||||||
<label
|
<label
|
||||||
for="1"
|
for="1"
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
exports[`<PasswordInput/> Render password input 1`] = `
|
exports[`<PasswordInput/> Render password input 1`] = `
|
||||||
<div
|
<div
|
||||||
class="form-group col-sm-12 offset-lg-1 col-lg-10"
|
class="form-group"
|
||||||
>
|
>
|
||||||
<label
|
<label
|
||||||
for="1"
|
for="1"
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
exports[`<RadioSet/> Render radio set 1`] = `
|
exports[`<RadioSet/> Render radio set 1`] = `
|
||||||
<div
|
<div
|
||||||
class="form-group col-sm-12 offset-lg-1 col-lg-10"
|
class="form-group"
|
||||||
>
|
>
|
||||||
<label
|
<label
|
||||||
class="d-block"
|
class="d-block"
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
exports[`<Select/> Test with snapshot. 1`] = `
|
exports[`<Select/> Test with snapshot. 1`] = `
|
||||||
<div>
|
<div>
|
||||||
<div
|
<div
|
||||||
class="form-group col-sm-12 offset-lg-1 col-lg-10"
|
class="form-group"
|
||||||
>
|
>
|
||||||
<label
|
<label
|
||||||
for="1"
|
for="1"
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
exports[`<TextInput/> Render text input 1`] = `
|
exports[`<TextInput/> Render text input 1`] = `
|
||||||
<div
|
<div
|
||||||
class="form-group col-sm-12 offset-lg-1 col-lg-10"
|
class="form-group"
|
||||||
>
|
>
|
||||||
<label
|
<label
|
||||||
for="1"
|
for="1"
|
||||||
|
@ -7,4 +7,4 @@
|
|||||||
|
|
||||||
/** Bootstrap column size for form fields */
|
/** Bootstrap column size for form fields */
|
||||||
// eslint-disable-next-line import/prefer-default-export
|
// eslint-disable-next-line import/prefer-default-export
|
||||||
export const formFieldsSize = "col-sm-12 offset-lg-1 col-lg-10";
|
export const formFieldsSize = "col-sm-12 offset-lg-1 col-lg-10 p-0 mb-3";
|
||||||
|
@ -8,15 +8,15 @@
|
|||||||
import React, { useState, useEffect } from "react";
|
import React, { useState, useEffect } from "react";
|
||||||
import PropTypes from "prop-types";
|
import PropTypes from "prop-types";
|
||||||
|
|
||||||
import { useAPIPost } from "api/hooks";
|
import { useAPIPost } from "../api/hooks";
|
||||||
import { API_STATE } from "api/utils";
|
import { API_STATE } from "../api/utils";
|
||||||
import { ForisURLs } from "forisUrls";
|
import { ForisURLs } from "../utils/forisUrls";
|
||||||
|
|
||||||
import { Button } from "bootstrap/Button";
|
import { Button } from "../bootstrap/Button";
|
||||||
import {
|
import {
|
||||||
Modal, ModalHeader, ModalBody, ModalFooter,
|
Modal, ModalHeader, ModalBody, ModalFooter,
|
||||||
} from "bootstrap/Modal";
|
} from "../bootstrap/Modal";
|
||||||
import { useAlert } from "alertContext/AlertContext";
|
import { useAlert } from "../alertContext/AlertContext";
|
||||||
|
|
||||||
RebootButton.propTypes = {
|
RebootButton.propTypes = {
|
||||||
forisFormSize: PropTypes.bool,
|
forisFormSize: PropTypes.bool,
|
||||||
|
74
src/common/WiFiSettings/ResetWiFiSettings.js
Normal file
74
src/common/WiFiSettings/ResetWiFiSettings.js
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
/*
|
||||||
|
* 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, { useEffect, useState } from "react";
|
||||||
|
import PropTypes from "prop-types";
|
||||||
|
|
||||||
|
import { Button } from "../../bootstrap/Button";
|
||||||
|
import { useAlert } from "../../alertContext/AlertContext";
|
||||||
|
import { ALERT_TYPES } from "../../bootstrap/Alert";
|
||||||
|
import { useAPIPost } from "../../api/hooks";
|
||||||
|
import { API_STATE } from "../../api/utils";
|
||||||
|
import { formFieldsSize } from "../../bootstrap/constants";
|
||||||
|
|
||||||
|
ResetWiFiSettings.propTypes = {
|
||||||
|
ws: PropTypes.object.isRequired,
|
||||||
|
endpoint: PropTypes.string.isRequired,
|
||||||
|
};
|
||||||
|
|
||||||
|
export default function ResetWiFiSettings({ ws, endpoint }) {
|
||||||
|
const [isLoading, setIsLoading] = useState(false);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const module = "wifi";
|
||||||
|
ws.subscribe(module)
|
||||||
|
.bind(module, "reset", () => {
|
||||||
|
// eslint-disable-next-line no-restricted-globals
|
||||||
|
setTimeout(() => location.reload(), 1000);
|
||||||
|
});
|
||||||
|
}, [ws]);
|
||||||
|
|
||||||
|
const [postResetResponse, postReset] = useAPIPost(endpoint);
|
||||||
|
const [setAlert, dismissAlert] = useAlert();
|
||||||
|
useEffect(() => {
|
||||||
|
if (postResetResponse.state === API_STATE.ERROR) {
|
||||||
|
setAlert(_("An error occurred during resetting Wi-Fi settings."));
|
||||||
|
} else if (postResetResponse.state === API_STATE.SUCCESS) {
|
||||||
|
setAlert(_("Wi-Fi settings are set to defaults."), ALERT_TYPES.SUCCESS);
|
||||||
|
}
|
||||||
|
}, [postResetResponse, setAlert]);
|
||||||
|
|
||||||
|
function onReset() {
|
||||||
|
dismissAlert();
|
||||||
|
setIsLoading(true);
|
||||||
|
postReset();
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<h4>{_("Reset Wi-Fi Settings")}</h4>
|
||||||
|
<p>
|
||||||
|
{_(`
|
||||||
|
If a number of wireless cards doesn't match, you may try to reset the Wi-Fi settings. Note that this will remove the
|
||||||
|
current Wi-Fi configuration and restore the default values.
|
||||||
|
`)}
|
||||||
|
</p>
|
||||||
|
<div className={`${formFieldsSize} text-right`}>
|
||||||
|
<Button
|
||||||
|
className="btn-warning"
|
||||||
|
forisFormSize
|
||||||
|
loading={isLoading}
|
||||||
|
disabled={isLoading}
|
||||||
|
|
||||||
|
onClick={onReset}
|
||||||
|
>
|
||||||
|
{_("Reset Wi-Fi Settings")}
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
249
src/common/WiFiSettings/WiFiForm.js
Normal file
249
src/common/WiFiSettings/WiFiForm.js
Normal file
@ -0,0 +1,249 @@
|
|||||||
|
/*
|
||||||
|
* 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 PropTypes from "prop-types";
|
||||||
|
|
||||||
|
import { CheckBox } from "../../bootstrap/CheckBox";
|
||||||
|
import { PasswordInput } from "../../bootstrap/PasswordInput";
|
||||||
|
import { RadioSet } from "../../bootstrap/RadioSet";
|
||||||
|
import { Select } from "../../bootstrap/Select";
|
||||||
|
import { TextInput } from "../../bootstrap/TextInput";
|
||||||
|
import WiFiQRCode from "./WiFiQRCode";
|
||||||
|
import WifiGuestForm from "./WiFiGuestForm";
|
||||||
|
import { HELP_TEXTS, HTMODES, HWMODES } from "./constants";
|
||||||
|
|
||||||
|
WiFiForm.propTypes = {
|
||||||
|
formData: PropTypes.shape(
|
||||||
|
{ devices: PropTypes.arrayOf(PropTypes.object) },
|
||||||
|
).isRequired,
|
||||||
|
formErrors: PropTypes.oneOfType([
|
||||||
|
PropTypes.object,
|
||||||
|
PropTypes.array,
|
||||||
|
]),
|
||||||
|
setFormValue: PropTypes.func.isRequired,
|
||||||
|
hasGuestNetwork: PropTypes.bool,
|
||||||
|
};
|
||||||
|
|
||||||
|
WiFiForm.defaultProps = {
|
||||||
|
formData: { devices: [] },
|
||||||
|
setFormValue: () => {},
|
||||||
|
hasGuestNetwork: true,
|
||||||
|
};
|
||||||
|
|
||||||
|
export default function WiFiForm({
|
||||||
|
formData, formErrors, setFormValue, hasGuestNetwork, disabled,
|
||||||
|
}) {
|
||||||
|
return formData.devices.map((device) => (
|
||||||
|
<DeviceForm
|
||||||
|
key={device.id}
|
||||||
|
formData={device}
|
||||||
|
formErrors={(formErrors || [])[device.id]}
|
||||||
|
setFormValue={setFormValue}
|
||||||
|
hasGuestNetwork={hasGuestNetwork}
|
||||||
|
disabled={disabled}
|
||||||
|
/>
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
DeviceForm.propTypes = {
|
||||||
|
formData: PropTypes.shape({
|
||||||
|
id: PropTypes.number.isRequired,
|
||||||
|
enabled: PropTypes.bool.isRequired,
|
||||||
|
SSID: PropTypes.string.isRequired,
|
||||||
|
password: PropTypes.string.isRequired,
|
||||||
|
hidden: PropTypes.bool.isRequired,
|
||||||
|
hwmode: PropTypes.string.isRequired,
|
||||||
|
htmode: PropTypes.string.isRequired,
|
||||||
|
channel: PropTypes.string.isRequired,
|
||||||
|
guest_wifi: PropTypes.object.isRequired,
|
||||||
|
}),
|
||||||
|
formErrors: PropTypes.object.isRequired,
|
||||||
|
setFormValue: PropTypes.func.isRequired,
|
||||||
|
hasGuestNetwork: PropTypes.bool,
|
||||||
|
};
|
||||||
|
|
||||||
|
DeviceForm.defaultProps = {
|
||||||
|
formErrors: {},
|
||||||
|
hasGuestNetwork: true,
|
||||||
|
};
|
||||||
|
|
||||||
|
function DeviceForm({
|
||||||
|
formData, formErrors, setFormValue, hasGuestNetwork, ...props
|
||||||
|
}) {
|
||||||
|
const deviceID = formData.id;
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<h3>{_(`Wi-Fi ${deviceID + 1}`)}</h3>
|
||||||
|
<CheckBox
|
||||||
|
label={_("Enable")}
|
||||||
|
checked={formData.enabled}
|
||||||
|
|
||||||
|
onChange={setFormValue(
|
||||||
|
(value) => ({ devices: { [deviceID]: { enabled: { $set: value } } } }),
|
||||||
|
)}
|
||||||
|
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
{formData.enabled
|
||||||
|
? (
|
||||||
|
<>
|
||||||
|
<TextInput
|
||||||
|
label="SSID"
|
||||||
|
value={formData.SSID}
|
||||||
|
error={formErrors.SSID || null}
|
||||||
|
required
|
||||||
|
onChange={setFormValue(
|
||||||
|
(value) => ({ devices: { [deviceID]: { SSID: { $set: value } } } }),
|
||||||
|
)}
|
||||||
|
|
||||||
|
{...props}
|
||||||
|
>
|
||||||
|
<div className="input-group-append">
|
||||||
|
<WiFiQRCode
|
||||||
|
SSID={formData.SSID}
|
||||||
|
password={formData.password}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</TextInput>
|
||||||
|
|
||||||
|
<PasswordInput
|
||||||
|
withEye
|
||||||
|
label="Password"
|
||||||
|
value={formData.password}
|
||||||
|
error={formErrors.password}
|
||||||
|
helpText={HELP_TEXTS.password}
|
||||||
|
required
|
||||||
|
|
||||||
|
onChange={setFormValue(
|
||||||
|
(value) => (
|
||||||
|
{ devices: { [deviceID]: { password: { $set: value } } } }
|
||||||
|
),
|
||||||
|
)}
|
||||||
|
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<CheckBox
|
||||||
|
label="Hide SSID"
|
||||||
|
helpText={HELP_TEXTS.hidden}
|
||||||
|
checked={formData.hidden}
|
||||||
|
|
||||||
|
onChange={setFormValue(
|
||||||
|
(value) => (
|
||||||
|
{ devices: { [deviceID]: { hidden: { $set: value } } } }
|
||||||
|
),
|
||||||
|
)}
|
||||||
|
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<RadioSet
|
||||||
|
name={`hwmode-${deviceID}`}
|
||||||
|
label="GHz"
|
||||||
|
choices={getHwmodeChoices(formData)}
|
||||||
|
value={formData.hwmode}
|
||||||
|
helpText={HELP_TEXTS.hwmode}
|
||||||
|
|
||||||
|
onChange={setFormValue(
|
||||||
|
(value) => ({
|
||||||
|
devices: {
|
||||||
|
[deviceID]: {
|
||||||
|
hwmode: { $set: value },
|
||||||
|
channel: { $set: "0" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
)}
|
||||||
|
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<Select
|
||||||
|
label="802.11n/ac mode"
|
||||||
|
choices={getHtmodeChoices(formData)}
|
||||||
|
value={formData.htmode}
|
||||||
|
helpText={HELP_TEXTS.htmode}
|
||||||
|
|
||||||
|
onChange={setFormValue(
|
||||||
|
(value) => (
|
||||||
|
{ devices: { [deviceID]: { htmode: { $set: value } } } }
|
||||||
|
),
|
||||||
|
)}
|
||||||
|
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<Select
|
||||||
|
label="Channel"
|
||||||
|
choices={getChannelChoices(formData)}
|
||||||
|
value={formData.channel}
|
||||||
|
|
||||||
|
onChange={setFormValue(
|
||||||
|
(value) => (
|
||||||
|
{ devices: { [deviceID]: { channel: { $set: value } } } }
|
||||||
|
),
|
||||||
|
)}
|
||||||
|
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
|
||||||
|
{hasGuestNetwork && (
|
||||||
|
<WifiGuestForm
|
||||||
|
formData={{ id: deviceID, ...formData.guest_wifi }}
|
||||||
|
formErrors={formErrors.guest_wifi || {}}
|
||||||
|
|
||||||
|
setFormValue={setFormValue}
|
||||||
|
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
: null}
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function getChannelChoices(device) {
|
||||||
|
const channelChoices = {
|
||||||
|
0: _("auto"),
|
||||||
|
};
|
||||||
|
|
||||||
|
device.available_bands.forEach((availableBand) => {
|
||||||
|
if (availableBand.hwmode !== device.hwmode) return;
|
||||||
|
|
||||||
|
availableBand.available_channels.forEach((availableChannel) => {
|
||||||
|
channelChoices[availableChannel.number.toString()] = `
|
||||||
|
${availableChannel.number}
|
||||||
|
(${availableChannel.frequency} MHz ${availableChannel.radar ? " ,DFS" : ""})
|
||||||
|
`;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
return channelChoices;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getHtmodeChoices(device) {
|
||||||
|
const htmodeChoices = {};
|
||||||
|
|
||||||
|
device.available_bands.forEach((availableBand) => {
|
||||||
|
if (availableBand.hwmode !== device.hwmode) return;
|
||||||
|
|
||||||
|
availableBand.available_htmodes.forEach((availableHtmod) => {
|
||||||
|
htmodeChoices[availableHtmod] = HTMODES[availableHtmod];
|
||||||
|
});
|
||||||
|
});
|
||||||
|
return htmodeChoices;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getHwmodeChoices(device) {
|
||||||
|
return device.available_bands.map((availableBand) => ({
|
||||||
|
label: HWMODES[availableBand.hwmode],
|
||||||
|
value: availableBand.hwmode,
|
||||||
|
}));
|
||||||
|
}
|
100
src/common/WiFiSettings/WiFiGuestForm.js
Normal file
100
src/common/WiFiSettings/WiFiGuestForm.js
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
/*
|
||||||
|
* 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 PropTypes from "prop-types";
|
||||||
|
|
||||||
|
import { CheckBox } from "../../bootstrap/CheckBox";
|
||||||
|
import { TextInput } from "../../bootstrap/TextInput";
|
||||||
|
import { PasswordInput } from "../../bootstrap/PasswordInput";
|
||||||
|
import WiFiQRCode from "./WiFiQRCode";
|
||||||
|
import { HELP_TEXTS } from "./constants";
|
||||||
|
|
||||||
|
WifiGuestForm.propTypes = {
|
||||||
|
formData: PropTypes.shape({
|
||||||
|
id: PropTypes.number.isRequired,
|
||||||
|
SSID: PropTypes.string.isRequired,
|
||||||
|
password: PropTypes.string.isRequired,
|
||||||
|
enabled: PropTypes.bool.isRequired,
|
||||||
|
}),
|
||||||
|
formErrors: PropTypes.shape({
|
||||||
|
SSID: PropTypes.string,
|
||||||
|
password: PropTypes.string,
|
||||||
|
}),
|
||||||
|
setFormValue: PropTypes.func.isRequired,
|
||||||
|
};
|
||||||
|
|
||||||
|
export default function WifiGuestForm({
|
||||||
|
formData, formErrors, setFormValue, ...props
|
||||||
|
}) {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<CheckBox
|
||||||
|
label={_("Enable Guest Wifi")}
|
||||||
|
checked={formData.enabled}
|
||||||
|
helpText={HELP_TEXTS.guest_wifi_enabled}
|
||||||
|
|
||||||
|
onChange={setFormValue(
|
||||||
|
(value) => (
|
||||||
|
{ devices: { [formData.id]: { guest_wifi: { enabled: { $set: value } } } } }
|
||||||
|
),
|
||||||
|
)}
|
||||||
|
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
{formData.enabled
|
||||||
|
? (
|
||||||
|
<>
|
||||||
|
<TextInput
|
||||||
|
label="SSID"
|
||||||
|
value={formData.SSID}
|
||||||
|
error={formErrors.SSID}
|
||||||
|
|
||||||
|
onChange={setFormValue(
|
||||||
|
(value) => ({
|
||||||
|
devices: {
|
||||||
|
[formData.id]: { guest_wifi: { SSID: { $set: value } } },
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
)}
|
||||||
|
|
||||||
|
{...props}
|
||||||
|
>
|
||||||
|
<div className="input-group-append">
|
||||||
|
<WiFiQRCode
|
||||||
|
SSID={formData.SSID}
|
||||||
|
password={formData.password}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</TextInput>
|
||||||
|
|
||||||
|
<PasswordInput
|
||||||
|
withEye
|
||||||
|
label={_("Password")}
|
||||||
|
value={formData.password}
|
||||||
|
helpText={HELP_TEXTS.password}
|
||||||
|
error={formErrors.password}
|
||||||
|
required
|
||||||
|
|
||||||
|
onChange={setFormValue(
|
||||||
|
(value) => ({
|
||||||
|
devices: {
|
||||||
|
[formData.id]: {
|
||||||
|
guest_wifi: { password: { $set: value } },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
)}
|
||||||
|
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
: null}
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
85
src/common/WiFiSettings/WiFiQRCode.js
Normal file
85
src/common/WiFiSettings/WiFiQRCode.js
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
/*
|
||||||
|
* 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, { useState } from "react";
|
||||||
|
import QRCode from "qrcode.react";
|
||||||
|
import PropTypes from "prop-types";
|
||||||
|
|
||||||
|
import { ForisURLs } from "../../utils/forisUrls";
|
||||||
|
import { Button } from "../../bootstrap/Button";
|
||||||
|
import {
|
||||||
|
Modal, ModalBody, ModalFooter, ModalHeader,
|
||||||
|
} from "../../bootstrap/Modal";
|
||||||
|
import { createAndDownloadPdf, toQRCodeContent } from "./qrCodeHelpers";
|
||||||
|
|
||||||
|
WiFiQRCode.propTypes = {
|
||||||
|
SSID: PropTypes.string.isRequired,
|
||||||
|
password: PropTypes.string.isRequired,
|
||||||
|
};
|
||||||
|
|
||||||
|
const QR_ICON_PATH = `${ForisURLs.static}/imgs/QR_icon.svg`;
|
||||||
|
|
||||||
|
export default function WiFiQRCode({ SSID, password }) {
|
||||||
|
const [modal, setModal] = useState(false);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
className="input-group-text"
|
||||||
|
onClick={(e) => {
|
||||||
|
e.preventDefault();
|
||||||
|
setModal(true);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<img width="20" src={QR_ICON_PATH} alt="QR" style={{ opacity: 0.67 }} />
|
||||||
|
</button>
|
||||||
|
{modal
|
||||||
|
? <QRCodeModal setShown={setModal} shown={modal} SSID={SSID} password={password} />
|
||||||
|
: null}
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
QRCodeModal.propTypes = {
|
||||||
|
SSID: PropTypes.string.isRequired,
|
||||||
|
password: PropTypes.string.isRequired,
|
||||||
|
shown: PropTypes.bool.isRequired,
|
||||||
|
setShown: PropTypes.func.isRequired,
|
||||||
|
};
|
||||||
|
|
||||||
|
function QRCodeModal({
|
||||||
|
shown, setShown, SSID, password,
|
||||||
|
}) {
|
||||||
|
return (
|
||||||
|
<Modal setShown={setShown} shown={shown}>
|
||||||
|
<ModalHeader setShown={setShown} title={_("Wi-Fi QR Code")} />
|
||||||
|
<ModalBody>
|
||||||
|
<QRCode
|
||||||
|
renderAs="svg"
|
||||||
|
value={toQRCodeContent(SSID, password)}
|
||||||
|
level="M"
|
||||||
|
size={350}
|
||||||
|
includeMargin
|
||||||
|
style={{ display: "block", margin: "auto" }}
|
||||||
|
/>
|
||||||
|
</ModalBody>
|
||||||
|
<ModalFooter>
|
||||||
|
<Button
|
||||||
|
className="btn-outline-primary"
|
||||||
|
onClick={(e) => {
|
||||||
|
e.preventDefault();
|
||||||
|
createAndDownloadPdf(SSID, password);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<i className="fas fa-arrow-down mr-2" />
|
||||||
|
{_("Download PDF")}
|
||||||
|
</Button>
|
||||||
|
</ModalFooter>
|
||||||
|
</Modal>
|
||||||
|
);
|
||||||
|
}
|
93
src/common/WiFiSettings/WiFiSettings.js
Normal file
93
src/common/WiFiSettings/WiFiSettings.js
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
/*
|
||||||
|
* 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 PropTypes from "prop-types";
|
||||||
|
|
||||||
|
import { ForisForm } from "../../form/components/ForisForm";
|
||||||
|
import WiFiForm from "./WiFiForm";
|
||||||
|
import ResetWiFiSettings from "./ResetWiFiSettings";
|
||||||
|
|
||||||
|
WiFiSettings.propTypes = {
|
||||||
|
ws: PropTypes.object.isRequired,
|
||||||
|
endpoint: PropTypes.string.isRequired,
|
||||||
|
resetEndpoint: PropTypes.string.isRequired,
|
||||||
|
hasGuestNetwork: PropTypes.bool,
|
||||||
|
};
|
||||||
|
|
||||||
|
export function WiFiSettings({
|
||||||
|
ws, endpoint, resetEndpoint, hasGuestNetwork,
|
||||||
|
}) {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<ForisForm
|
||||||
|
ws={ws}
|
||||||
|
forisConfig={{
|
||||||
|
endpoint,
|
||||||
|
wsModule: "wifi",
|
||||||
|
}}
|
||||||
|
prepData={prepData}
|
||||||
|
prepDataToSubmit={prepDataToSubmit}
|
||||||
|
validator={validator}
|
||||||
|
>
|
||||||
|
<WiFiForm hasGuestNetwork={hasGuestNetwork} />
|
||||||
|
</ForisForm>
|
||||||
|
<ResetWiFiSettings ws={ws} endpoint={resetEndpoint} />
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function prepData(formData) {
|
||||||
|
formData.devices.forEach((device, idx) => {
|
||||||
|
formData.devices[idx].channel = device.channel.toString();
|
||||||
|
});
|
||||||
|
return formData;
|
||||||
|
}
|
||||||
|
|
||||||
|
function prepDataToSubmit(formData) {
|
||||||
|
formData.devices.forEach((device, idx) => {
|
||||||
|
delete device.available_bands;
|
||||||
|
|
||||||
|
formData.devices[idx].channel = parseInt(device.channel);
|
||||||
|
|
||||||
|
if (!device.enabled) {
|
||||||
|
formData.devices[idx] = { id: device.id, enabled: false };
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!device.guest_wifi.enabled) formData.devices[idx].guest_wifi = { enabled: false };
|
||||||
|
});
|
||||||
|
return formData;
|
||||||
|
}
|
||||||
|
|
||||||
|
function validator(formData) {
|
||||||
|
const formErrors = formData.devices.map(
|
||||||
|
(device) => {
|
||||||
|
if (!device.enabled) return {};
|
||||||
|
|
||||||
|
const errors = {};
|
||||||
|
if (device.SSID.length > 32) errors.SSID = _("SSID can't be longer than 32 symbols");
|
||||||
|
if (device.SSID.length === 0) errors.SSID = _("SSID can't be empty");
|
||||||
|
|
||||||
|
if (device.password.length < 8) errors.password = _("Password must contain at least 8 symbols");
|
||||||
|
|
||||||
|
if (!device.guest_wifi.enabled) return errors;
|
||||||
|
|
||||||
|
const guest_wifi_errors = {};
|
||||||
|
if (device.guest_wifi.SSID.length > 32) guest_wifi_errors.SSID = _("SSID can't be longer than 32 symbols");
|
||||||
|
if (device.guest_wifi.SSID.length === 0) guest_wifi_errors.SSID = _("SSID can't be empty");
|
||||||
|
|
||||||
|
if (device.guest_wifi.password.length < 8) guest_wifi_errors.password = _("Password must contain at least 8 symbols");
|
||||||
|
|
||||||
|
if (guest_wifi_errors.SSID || guest_wifi_errors.password) {
|
||||||
|
errors.guest_wifi = guest_wifi_errors;
|
||||||
|
}
|
||||||
|
return errors;
|
||||||
|
},
|
||||||
|
);
|
||||||
|
return JSON.stringify(formErrors) === "[{},{}]" ? null : formErrors;
|
||||||
|
}
|
40
src/common/WiFiSettings/__tests__/ResetWiFiSettings.test.js
Normal file
40
src/common/WiFiSettings/__tests__/ResetWiFiSettings.test.js
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
/*
|
||||||
|
* 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 { render, fireEvent, wait } from "customTestRender";
|
||||||
|
|
||||||
|
import mockAxios from "jest-mock-axios";
|
||||||
|
import { WebSockets } from "webSockets/WebSockets";
|
||||||
|
import { mockJSONError } from "testUtils/network";
|
||||||
|
import { mockSetAlert } from "testUtils/alertContextMock";
|
||||||
|
import { ALERT_TYPES } from "../../../bootstrap/Alert";
|
||||||
|
|
||||||
|
import ResetWiFiSettings from "../ResetWiFiSettings";
|
||||||
|
|
||||||
|
describe("<ResetWiFiSettings/>", () => {
|
||||||
|
const webSockets = new WebSockets();
|
||||||
|
const endpoint = "/reforis/api/wifi-reset";
|
||||||
|
let getAllByText;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
({ getAllByText } = render(<ResetWiFiSettings ws={webSockets} endpoint={endpoint} />));
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should display alert on open ports - success", async () => {
|
||||||
|
fireEvent.click(getAllByText("Reset Wi-Fi Settings")[1]);
|
||||||
|
expect(mockAxios.post).toBeCalledWith(endpoint, undefined, expect.anything());
|
||||||
|
mockAxios.mockResponse({ data: { foo: "bar" } });
|
||||||
|
await wait(() => expect(mockSetAlert).toBeCalledWith("Wi-Fi settings are set to defaults.", ALERT_TYPES.SUCCESS));
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should display alert on open ports - failure", async () => {
|
||||||
|
fireEvent.click(getAllByText("Reset Wi-Fi Settings")[1]);
|
||||||
|
mockJSONError();
|
||||||
|
await wait(() => expect(mockSetAlert).toBeCalledWith("An error occurred during resetting Wi-Fi settings."));
|
||||||
|
});
|
||||||
|
});
|
162
src/common/WiFiSettings/__tests__/WiFiSettings.test.js
Normal file
162
src/common/WiFiSettings/__tests__/WiFiSettings.test.js
Normal file
@ -0,0 +1,162 @@
|
|||||||
|
/*
|
||||||
|
* 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 diffSnapshot from "snapshot-diff";
|
||||||
|
import mockAxios from "jest-mock-axios";
|
||||||
|
|
||||||
|
import { fireEvent, render, wait } from "customTestRender";
|
||||||
|
import { WebSockets } from "webSockets/WebSockets";
|
||||||
|
import { mockJSONError } from "testUtils/network";
|
||||||
|
|
||||||
|
import { wifiSettingsFixture } from "./__fixtures__/wifiSettings";
|
||||||
|
import { WiFiSettings } from "../WiFiSettings";
|
||||||
|
|
||||||
|
describe("<WiFiSettings/>", () => {
|
||||||
|
let firstRender;
|
||||||
|
let getAllByText;
|
||||||
|
let getAllByLabelText;
|
||||||
|
let getByText;
|
||||||
|
let asFragment;
|
||||||
|
const endpoint = "/reforis/api/wifi";
|
||||||
|
|
||||||
|
beforeEach(async () => {
|
||||||
|
const webSockets = new WebSockets();
|
||||||
|
const renderRes = render(<WiFiSettings ws={webSockets} endpoint={endpoint} resetEndpoint="foo" />);
|
||||||
|
asFragment = renderRes.asFragment;
|
||||||
|
getAllByText = renderRes.getAllByText;
|
||||||
|
getAllByLabelText = renderRes.getAllByLabelText;
|
||||||
|
getByText = renderRes.getByText;
|
||||||
|
mockAxios.mockResponse({ data: wifiSettingsFixture() });
|
||||||
|
await wait(() => renderRes.getByText("Wi-Fi 1"));
|
||||||
|
firstRender = renderRes.asFragment();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should handle error", async () => {
|
||||||
|
const webSockets = new WebSockets();
|
||||||
|
const { getByText } = render(<WiFiSettings ws={webSockets} ws={webSockets} endpoint={endpoint} resetEndpoint="foo" />);
|
||||||
|
const errorMessage = "An API error occurred.";
|
||||||
|
mockJSONError(errorMessage);
|
||||||
|
await wait(() => {
|
||||||
|
expect(getByText(errorMessage)).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Snapshot both modules disabled.", () => {
|
||||||
|
expect(firstRender).toMatchSnapshot();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Snapshot one module enabled.", () => {
|
||||||
|
fireEvent.click(getAllByText("Enable")[0]);
|
||||||
|
expect(diffSnapshot(firstRender, asFragment())).toMatchSnapshot();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Snapshot 2.4 GHz", () => {
|
||||||
|
fireEvent.click(getAllByText("Enable")[0]);
|
||||||
|
const enabledRender = asFragment();
|
||||||
|
fireEvent.click(getAllByText("2.4")[0]);
|
||||||
|
expect(diffSnapshot(enabledRender, asFragment())).toMatchSnapshot();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Snapshot guest network.", () => {
|
||||||
|
fireEvent.click(getAllByText("Enable")[0]);
|
||||||
|
const enabledRender = asFragment();
|
||||||
|
fireEvent.click(getAllByText("Enable Guest Wifi")[0]);
|
||||||
|
expect(diffSnapshot(enabledRender, asFragment())).toMatchSnapshot();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Post form: both modules disabled.", () => {
|
||||||
|
fireEvent.click(getByText("Save"));
|
||||||
|
expect(mockAxios.post).toBeCalled();
|
||||||
|
const data = {
|
||||||
|
devices: [
|
||||||
|
{ enabled: false, id: 0 },
|
||||||
|
{ enabled: false, id: 1 },
|
||||||
|
],
|
||||||
|
};
|
||||||
|
expect(mockAxios.post).toHaveBeenCalledWith(endpoint, data, expect.anything());
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Post form: one module enabled.", () => {
|
||||||
|
fireEvent.click(getAllByText("Enable")[0]);
|
||||||
|
|
||||||
|
fireEvent.click(getByText("Save"));
|
||||||
|
expect(mockAxios.post).toBeCalled();
|
||||||
|
const data = {
|
||||||
|
devices: [
|
||||||
|
{
|
||||||
|
SSID: "TestSSID1",
|
||||||
|
channel: 60,
|
||||||
|
enabled: true,
|
||||||
|
guest_wifi: { enabled: false },
|
||||||
|
hidden: false,
|
||||||
|
htmode: "HT40",
|
||||||
|
hwmode: "11a",
|
||||||
|
id: 0,
|
||||||
|
password: "TestPass",
|
||||||
|
},
|
||||||
|
{ enabled: false, id: 1 },
|
||||||
|
],
|
||||||
|
};
|
||||||
|
expect(mockAxios.post).toHaveBeenCalledWith(endpoint, data, expect.anything());
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Post form: 2.4 GHz", () => {
|
||||||
|
fireEvent.click(getAllByText("Enable")[0]);
|
||||||
|
fireEvent.click(getAllByText("2.4")[0]);
|
||||||
|
|
||||||
|
fireEvent.click(getByText("Save"));
|
||||||
|
expect(mockAxios.post).toBeCalled();
|
||||||
|
const data = {
|
||||||
|
devices: [
|
||||||
|
{
|
||||||
|
SSID: "TestSSID1",
|
||||||
|
channel: 0,
|
||||||
|
enabled: true,
|
||||||
|
guest_wifi: { enabled: false },
|
||||||
|
hidden: false,
|
||||||
|
htmode: "HT40",
|
||||||
|
hwmode: "11g",
|
||||||
|
id: 0,
|
||||||
|
password: "TestPass",
|
||||||
|
},
|
||||||
|
{ enabled: false, id: 1 },
|
||||||
|
],
|
||||||
|
};
|
||||||
|
expect(mockAxios.post).toHaveBeenCalledWith(endpoint, data, expect.anything());
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Post form: guest network.", () => {
|
||||||
|
fireEvent.click(getAllByText("Enable")[0]);
|
||||||
|
fireEvent.click(getAllByText("Enable Guest Wifi")[0]);
|
||||||
|
fireEvent.change(getAllByLabelText("Password")[1], { target: { value: "test_password" } });
|
||||||
|
|
||||||
|
fireEvent.click(getByText("Save"));
|
||||||
|
expect(mockAxios.post).toBeCalled();
|
||||||
|
const data = {
|
||||||
|
devices: [
|
||||||
|
{
|
||||||
|
SSID: "TestSSID1",
|
||||||
|
channel: 60,
|
||||||
|
enabled: true,
|
||||||
|
guest_wifi: {
|
||||||
|
SSID: "TestGuestSSID",
|
||||||
|
enabled: true,
|
||||||
|
password: "test_password",
|
||||||
|
},
|
||||||
|
hidden: false,
|
||||||
|
htmode: "HT40",
|
||||||
|
hwmode: "11a",
|
||||||
|
id: 0,
|
||||||
|
password: "TestPass",
|
||||||
|
},
|
||||||
|
{ enabled: false, id: 1 },
|
||||||
|
],
|
||||||
|
};
|
||||||
|
expect(mockAxios.post).toHaveBeenCalledWith(endpoint, data, expect.anything());
|
||||||
|
});
|
||||||
|
});
|
318
src/common/WiFiSettings/__tests__/__fixtures__/wifiSettings.js
Normal file
318
src/common/WiFiSettings/__tests__/__fixtures__/wifiSettings.js
Normal file
@ -0,0 +1,318 @@
|
|||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export function wifiSettingsFixture() {
|
||||||
|
return {
|
||||||
|
devices: [
|
||||||
|
{
|
||||||
|
SSID: "TestSSID1",
|
||||||
|
available_bands: [
|
||||||
|
{
|
||||||
|
available_channels: [
|
||||||
|
{
|
||||||
|
frequency: 2412,
|
||||||
|
number: 1,
|
||||||
|
radar: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 2417,
|
||||||
|
number: 2,
|
||||||
|
radar: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 2422,
|
||||||
|
number: 3,
|
||||||
|
radar: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 2427,
|
||||||
|
number: 4,
|
||||||
|
radar: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 2432,
|
||||||
|
number: 5,
|
||||||
|
radar: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 2437,
|
||||||
|
number: 6,
|
||||||
|
radar: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 2442,
|
||||||
|
number: 7,
|
||||||
|
radar: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 2447,
|
||||||
|
number: 8,
|
||||||
|
radar: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 2452,
|
||||||
|
number: 9,
|
||||||
|
radar: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 2457,
|
||||||
|
number: 10,
|
||||||
|
radar: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 2462,
|
||||||
|
number: 11,
|
||||||
|
radar: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
available_htmodes: [
|
||||||
|
"NOHT",
|
||||||
|
"HT20",
|
||||||
|
"HT40",
|
||||||
|
"VHT20",
|
||||||
|
"VHT40",
|
||||||
|
"VHT80",
|
||||||
|
],
|
||||||
|
hwmode: "11g",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
available_channels: [
|
||||||
|
{
|
||||||
|
frequency: 5180,
|
||||||
|
number: 36,
|
||||||
|
radar: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 5200,
|
||||||
|
number: 40,
|
||||||
|
radar: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 5220,
|
||||||
|
number: 44,
|
||||||
|
radar: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 5240,
|
||||||
|
number: 48,
|
||||||
|
radar: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 5260,
|
||||||
|
number: 52,
|
||||||
|
radar: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 5280,
|
||||||
|
number: 56,
|
||||||
|
radar: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 5300,
|
||||||
|
number: 60,
|
||||||
|
radar: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 5320,
|
||||||
|
number: 64,
|
||||||
|
radar: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 5500,
|
||||||
|
number: 100,
|
||||||
|
radar: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 5520,
|
||||||
|
number: 104,
|
||||||
|
radar: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 5540,
|
||||||
|
number: 108,
|
||||||
|
radar: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 5560,
|
||||||
|
number: 112,
|
||||||
|
radar: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 5580,
|
||||||
|
number: 116,
|
||||||
|
radar: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 5600,
|
||||||
|
number: 120,
|
||||||
|
radar: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 5620,
|
||||||
|
number: 124,
|
||||||
|
radar: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 5640,
|
||||||
|
number: 128,
|
||||||
|
radar: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 5660,
|
||||||
|
number: 132,
|
||||||
|
radar: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 5680,
|
||||||
|
number: 136,
|
||||||
|
radar: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 5700,
|
||||||
|
number: 140,
|
||||||
|
radar: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 5720,
|
||||||
|
number: 144,
|
||||||
|
radar: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 5745,
|
||||||
|
number: 149,
|
||||||
|
radar: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 5765,
|
||||||
|
number: 153,
|
||||||
|
radar: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 5785,
|
||||||
|
number: 157,
|
||||||
|
radar: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 5805,
|
||||||
|
number: 161,
|
||||||
|
radar: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 5825,
|
||||||
|
number: 165,
|
||||||
|
radar: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
available_htmodes: [
|
||||||
|
"NOHT",
|
||||||
|
"HT20",
|
||||||
|
"HT40",
|
||||||
|
"VHT20",
|
||||||
|
"VHT40",
|
||||||
|
"VHT80",
|
||||||
|
],
|
||||||
|
hwmode: "11a",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
channel: 60,
|
||||||
|
enabled: false,
|
||||||
|
guest_wifi: {
|
||||||
|
SSID: "TestGuestSSID",
|
||||||
|
enabled: false,
|
||||||
|
password: "",
|
||||||
|
},
|
||||||
|
hidden: false,
|
||||||
|
htmode: "HT40",
|
||||||
|
hwmode: "11a",
|
||||||
|
id: 0,
|
||||||
|
password: "TestPass",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
SSID: "Turris",
|
||||||
|
available_bands: [
|
||||||
|
{
|
||||||
|
available_channels: [
|
||||||
|
{
|
||||||
|
frequency: 2412,
|
||||||
|
number: 1,
|
||||||
|
radar: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 2417,
|
||||||
|
number: 2,
|
||||||
|
radar: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 2422,
|
||||||
|
number: 3,
|
||||||
|
radar: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 2427,
|
||||||
|
number: 4,
|
||||||
|
radar: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 2432,
|
||||||
|
number: 5,
|
||||||
|
radar: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 2437,
|
||||||
|
number: 6,
|
||||||
|
radar: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 2442,
|
||||||
|
number: 7,
|
||||||
|
radar: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 2447,
|
||||||
|
number: 8,
|
||||||
|
radar: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 2452,
|
||||||
|
number: 9,
|
||||||
|
radar: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 2457,
|
||||||
|
number: 10,
|
||||||
|
radar: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
frequency: 2462,
|
||||||
|
number: 11,
|
||||||
|
radar: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
available_htmodes: [
|
||||||
|
"NOHT",
|
||||||
|
"HT20",
|
||||||
|
"HT40",
|
||||||
|
],
|
||||||
|
hwmode: "11g",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
channel: 11,
|
||||||
|
enabled: false,
|
||||||
|
guest_wifi: {
|
||||||
|
SSID: "TestSSID",
|
||||||
|
enabled: false,
|
||||||
|
password: "",
|
||||||
|
},
|
||||||
|
hidden: false,
|
||||||
|
htmode: "HT40",
|
||||||
|
hwmode: "11g",
|
||||||
|
id: 1,
|
||||||
|
password: "TestPass",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
}
|
@ -0,0 +1,912 @@
|
|||||||
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||||
|
|
||||||
|
exports[`<WiFiSettings/> Snapshot 2.4 GHz 1`] = `
|
||||||
|
"Snapshot Diff:
|
||||||
|
- First value
|
||||||
|
+ Second value
|
||||||
|
|
||||||
|
@@ -246,207 +246,95 @@
|
||||||
|
value=\\"0\\"
|
||||||
|
>
|
||||||
|
auto
|
||||||
|
</option>
|
||||||
|
<option
|
||||||
|
- value=\\"36\\"
|
||||||
|
+ value=\\"1\\"
|
||||||
|
>
|
||||||
|
|
||||||
|
- 36
|
||||||
|
- (5180 MHz )
|
||||||
|
+ 1
|
||||||
|
+ (2412 MHz )
|
||||||
|
|
||||||
|
</option>
|
||||||
|
<option
|
||||||
|
- value=\\"40\\"
|
||||||
|
+ value=\\"2\\"
|
||||||
|
>
|
||||||
|
|
||||||
|
- 40
|
||||||
|
- (5200 MHz )
|
||||||
|
+ 2
|
||||||
|
+ (2417 MHz )
|
||||||
|
|
||||||
|
</option>
|
||||||
|
<option
|
||||||
|
- value=\\"44\\"
|
||||||
|
+ value=\\"3\\"
|
||||||
|
>
|
||||||
|
|
||||||
|
- 44
|
||||||
|
- (5220 MHz )
|
||||||
|
+ 3
|
||||||
|
+ (2422 MHz )
|
||||||
|
|
||||||
|
</option>
|
||||||
|
<option
|
||||||
|
- value=\\"48\\"
|
||||||
|
- >
|
||||||
|
-
|
||||||
|
- 48
|
||||||
|
- (5240 MHz )
|
||||||
|
-
|
||||||
|
- </option>
|
||||||
|
- <option
|
||||||
|
- value=\\"52\\"
|
||||||
|
- >
|
||||||
|
-
|
||||||
|
- 52
|
||||||
|
- (5260 MHz ,DFS)
|
||||||
|
-
|
||||||
|
- </option>
|
||||||
|
- <option
|
||||||
|
- value=\\"56\\"
|
||||||
|
- >
|
||||||
|
-
|
||||||
|
- 56
|
||||||
|
- (5280 MHz ,DFS)
|
||||||
|
-
|
||||||
|
- </option>
|
||||||
|
- <option
|
||||||
|
- value=\\"60\\"
|
||||||
|
+ value=\\"4\\"
|
||||||
|
>
|
||||||
|
|
||||||
|
- 60
|
||||||
|
- (5300 MHz ,DFS)
|
||||||
|
+ 4
|
||||||
|
+ (2427 MHz )
|
||||||
|
|
||||||
|
</option>
|
||||||
|
<option
|
||||||
|
- value=\\"64\\"
|
||||||
|
+ value=\\"5\\"
|
||||||
|
>
|
||||||
|
|
||||||
|
- 64
|
||||||
|
- (5320 MHz ,DFS)
|
||||||
|
+ 5
|
||||||
|
+ (2432 MHz )
|
||||||
|
|
||||||
|
</option>
|
||||||
|
<option
|
||||||
|
- value=\\"100\\"
|
||||||
|
+ value=\\"6\\"
|
||||||
|
>
|
||||||
|
|
||||||
|
- 100
|
||||||
|
- (5500 MHz ,DFS)
|
||||||
|
+ 6
|
||||||
|
+ (2437 MHz )
|
||||||
|
|
||||||
|
</option>
|
||||||
|
<option
|
||||||
|
- value=\\"104\\"
|
||||||
|
+ value=\\"7\\"
|
||||||
|
>
|
||||||
|
|
||||||
|
- 104
|
||||||
|
- (5520 MHz ,DFS)
|
||||||
|
+ 7
|
||||||
|
+ (2442 MHz )
|
||||||
|
|
||||||
|
</option>
|
||||||
|
<option
|
||||||
|
- value=\\"108\\"
|
||||||
|
+ value=\\"8\\"
|
||||||
|
>
|
||||||
|
|
||||||
|
- 108
|
||||||
|
- (5540 MHz ,DFS)
|
||||||
|
+ 8
|
||||||
|
+ (2447 MHz )
|
||||||
|
|
||||||
|
</option>
|
||||||
|
<option
|
||||||
|
- value=\\"112\\"
|
||||||
|
+ value=\\"9\\"
|
||||||
|
>
|
||||||
|
|
||||||
|
- 112
|
||||||
|
- (5560 MHz ,DFS)
|
||||||
|
+ 9
|
||||||
|
+ (2452 MHz )
|
||||||
|
|
||||||
|
</option>
|
||||||
|
<option
|
||||||
|
- value=\\"116\\"
|
||||||
|
+ value=\\"10\\"
|
||||||
|
>
|
||||||
|
|
||||||
|
- 116
|
||||||
|
- (5580 MHz ,DFS)
|
||||||
|
+ 10
|
||||||
|
+ (2457 MHz )
|
||||||
|
|
||||||
|
</option>
|
||||||
|
<option
|
||||||
|
- value=\\"120\\"
|
||||||
|
+ value=\\"11\\"
|
||||||
|
>
|
||||||
|
|
||||||
|
- 120
|
||||||
|
- (5600 MHz ,DFS)
|
||||||
|
-
|
||||||
|
- </option>
|
||||||
|
- <option
|
||||||
|
- value=\\"124\\"
|
||||||
|
- >
|
||||||
|
-
|
||||||
|
- 124
|
||||||
|
- (5620 MHz ,DFS)
|
||||||
|
-
|
||||||
|
- </option>
|
||||||
|
- <option
|
||||||
|
- value=\\"128\\"
|
||||||
|
- >
|
||||||
|
-
|
||||||
|
- 128
|
||||||
|
- (5640 MHz ,DFS)
|
||||||
|
-
|
||||||
|
- </option>
|
||||||
|
- <option
|
||||||
|
- value=\\"132\\"
|
||||||
|
- >
|
||||||
|
-
|
||||||
|
- 132
|
||||||
|
- (5660 MHz ,DFS)
|
||||||
|
-
|
||||||
|
- </option>
|
||||||
|
- <option
|
||||||
|
- value=\\"136\\"
|
||||||
|
- >
|
||||||
|
-
|
||||||
|
- 136
|
||||||
|
- (5680 MHz ,DFS)
|
||||||
|
-
|
||||||
|
- </option>
|
||||||
|
- <option
|
||||||
|
- value=\\"140\\"
|
||||||
|
- >
|
||||||
|
-
|
||||||
|
- 140
|
||||||
|
- (5700 MHz ,DFS)
|
||||||
|
-
|
||||||
|
- </option>
|
||||||
|
- <option
|
||||||
|
- value=\\"144\\"
|
||||||
|
- >
|
||||||
|
-
|
||||||
|
- 144
|
||||||
|
- (5720 MHz ,DFS)
|
||||||
|
-
|
||||||
|
- </option>
|
||||||
|
- <option
|
||||||
|
- value=\\"149\\"
|
||||||
|
- >
|
||||||
|
-
|
||||||
|
- 149
|
||||||
|
- (5745 MHz )
|
||||||
|
-
|
||||||
|
- </option>
|
||||||
|
- <option
|
||||||
|
- value=\\"153\\"
|
||||||
|
- >
|
||||||
|
-
|
||||||
|
- 153
|
||||||
|
- (5765 MHz )
|
||||||
|
-
|
||||||
|
- </option>
|
||||||
|
- <option
|
||||||
|
- value=\\"157\\"
|
||||||
|
- >
|
||||||
|
-
|
||||||
|
- 157
|
||||||
|
- (5785 MHz )
|
||||||
|
-
|
||||||
|
- </option>
|
||||||
|
- <option
|
||||||
|
- value=\\"161\\"
|
||||||
|
- >
|
||||||
|
-
|
||||||
|
- 161
|
||||||
|
- (5805 MHz )
|
||||||
|
-
|
||||||
|
- </option>
|
||||||
|
- <option
|
||||||
|
- value=\\"165\\"
|
||||||
|
- >
|
||||||
|
-
|
||||||
|
- 165
|
||||||
|
- (5825 MHz )
|
||||||
|
+ 11
|
||||||
|
+ (2462 MHz )
|
||||||
|
|
||||||
|
</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`<WiFiSettings/> Snapshot both modules disabled. 1`] = `
|
||||||
|
<DocumentFragment>
|
||||||
|
<div
|
||||||
|
class="col-sm-12 offset-lg-1 col-lg-10 p-0 mb-3"
|
||||||
|
>
|
||||||
|
<form>
|
||||||
|
<h3>
|
||||||
|
Wi-Fi 1
|
||||||
|
</h3>
|
||||||
|
<div
|
||||||
|
class="form-group"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="custom-control custom-checkbox "
|
||||||
|
>
|
||||||
|
<input
|
||||||
|
class="custom-control-input"
|
||||||
|
id="1"
|
||||||
|
type="checkbox"
|
||||||
|
/>
|
||||||
|
<label
|
||||||
|
class="custom-control-label"
|
||||||
|
for="1"
|
||||||
|
>
|
||||||
|
Enable
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<h3>
|
||||||
|
Wi-Fi 2
|
||||||
|
</h3>
|
||||||
|
<div
|
||||||
|
class="form-group"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="custom-control custom-checkbox "
|
||||||
|
>
|
||||||
|
<input
|
||||||
|
class="custom-control-input"
|
||||||
|
id="2"
|
||||||
|
type="checkbox"
|
||||||
|
/>
|
||||||
|
<label
|
||||||
|
class="custom-control-label"
|
||||||
|
for="2"
|
||||||
|
>
|
||||||
|
Enable
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="text-right"
|
||||||
|
>
|
||||||
|
<button
|
||||||
|
class="btn btn-primary col-sm-12 col-lg-3"
|
||||||
|
type="submit"
|
||||||
|
>
|
||||||
|
Save
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<h4>
|
||||||
|
Reset Wi-Fi Settings
|
||||||
|
</h4>
|
||||||
|
<p>
|
||||||
|
|
||||||
|
If a number of wireless cards doesn't match, you may try to reset the Wi-Fi settings. Note that this will remove the
|
||||||
|
current Wi-Fi configuration and restore the default values.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<div
|
||||||
|
class="col-sm-12 offset-lg-1 col-lg-10 p-0 mb-3 text-right"
|
||||||
|
>
|
||||||
|
<button
|
||||||
|
class="btn btn-warning col-sm-12 col-lg-3"
|
||||||
|
type="button"
|
||||||
|
>
|
||||||
|
Reset Wi-Fi Settings
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</DocumentFragment>
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`<WiFiSettings/> Snapshot guest network. 1`] = `
|
||||||
|
"Snapshot Diff:
|
||||||
|
- First value
|
||||||
|
+ Second value
|
||||||
|
|
||||||
|
@@ -475,10 +475,89 @@
|
||||||
|
|
||||||
|
</small>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
+ <div
|
||||||
|
+ class=\\"form-group\\"
|
||||||
|
+ >
|
||||||
|
+ <label
|
||||||
|
+ for=\\"20\\"
|
||||||
|
+ >
|
||||||
|
+ SSID
|
||||||
|
+ </label>
|
||||||
|
+ <div
|
||||||
|
+ class=\\"input-group\\"
|
||||||
|
+ >
|
||||||
|
+ <input
|
||||||
|
+ class=\\"form-control\\"
|
||||||
|
+ id=\\"20\\"
|
||||||
|
+ type=\\"text\\"
|
||||||
|
+ value=\\"TestGuestSSID\\"
|
||||||
|
+ />
|
||||||
|
+ <div
|
||||||
|
+ class=\\"input-group-append\\"
|
||||||
|
+ >
|
||||||
|
+ <button
|
||||||
|
+ class=\\"input-group-text\\"
|
||||||
|
+ type=\\"button\\"
|
||||||
|
+ >
|
||||||
|
+ <img
|
||||||
|
+ alt=\\"QR\\"
|
||||||
|
+ src=\\"/reforis/static/reforis/imgs/QR_icon.svg\\"
|
||||||
|
+ style=\\"opacity: 0.67;\\"
|
||||||
|
+ width=\\"20\\"
|
||||||
|
+ />
|
||||||
|
+ </button>
|
||||||
|
+ </div>
|
||||||
|
+ </div>
|
||||||
|
+ </div>
|
||||||
|
+ <div
|
||||||
|
+ class=\\"form-group\\"
|
||||||
|
+ >
|
||||||
|
+ <label
|
||||||
|
+ for=\\"21\\"
|
||||||
|
+ >
|
||||||
|
+ Password
|
||||||
|
+ </label>
|
||||||
|
+ <div
|
||||||
|
+ class=\\"input-group\\"
|
||||||
|
+ >
|
||||||
|
+ <input
|
||||||
|
+ autocomplete=\\"new-password\\"
|
||||||
|
+ class=\\"form-control is-invalid\\"
|
||||||
|
+ id=\\"21\\"
|
||||||
|
+ required=\\"\\"
|
||||||
|
+ type=\\"password\\"
|
||||||
|
+ value=\\"\\"
|
||||||
|
+ />
|
||||||
|
+ <div
|
||||||
|
+ class=\\"input-group-append\\"
|
||||||
|
+ >
|
||||||
|
+ <button
|
||||||
|
+ class=\\"input-group-text\\"
|
||||||
|
+ type=\\"button\\"
|
||||||
|
+ >
|
||||||
|
+ <i
|
||||||
|
+ class=\\"fa fa-eye\\"
|
||||||
|
+ />
|
||||||
|
+ </button>
|
||||||
|
+ </div>
|
||||||
|
+ </div>
|
||||||
|
+ <div
|
||||||
|
+ class=\\"invalid-feedback\\"
|
||||||
|
+ >
|
||||||
|
+ Password must contain at least 8 symbols
|
||||||
|
+ </div>
|
||||||
|
+ <small
|
||||||
|
+ class=\\"form-text text-muted\\"
|
||||||
|
+ >
|
||||||
|
+
|
||||||
|
+ WPA2 pre-shared key, that is required to connect to the network.
|
||||||
|
+
|
||||||
|
+ </small>
|
||||||
|
+ </div>
|
||||||
|
<h3>
|
||||||
|
Wi-Fi 2
|
||||||
|
</h3>
|
||||||
|
<div
|
||||||
|
class=\\"form-group\\"
|
||||||
|
@@ -502,10 +581,11 @@
|
||||||
|
<div
|
||||||
|
class=\\"text-right\\"
|
||||||
|
>
|
||||||
|
<button
|
||||||
|
class=\\"btn btn-primary col-sm-12 col-lg-3\\"
|
||||||
|
+ disabled=\\"\\"
|
||||||
|
type=\\"submit\\"
|
||||||
|
>
|
||||||
|
Save
|
||||||
|
</button>
|
||||||
|
</div>"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`<WiFiSettings/> Snapshot one module enabled. 1`] = `
|
||||||
|
"Snapshot Diff:
|
||||||
|
- First value
|
||||||
|
+ Second value
|
||||||
|
|
||||||
|
@@ -23,10 +23,462 @@
|
||||||
|
>
|
||||||
|
Enable
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
+ <div
|
||||||
|
+ class=\\"form-group\\"
|
||||||
|
+ >
|
||||||
|
+ <label
|
||||||
|
+ for=\\"4\\"
|
||||||
|
+ >
|
||||||
|
+ SSID
|
||||||
|
+ </label>
|
||||||
|
+ <div
|
||||||
|
+ class=\\"input-group\\"
|
||||||
|
+ >
|
||||||
|
+ <input
|
||||||
|
+ class=\\"form-control\\"
|
||||||
|
+ id=\\"4\\"
|
||||||
|
+ required=\\"\\"
|
||||||
|
+ type=\\"text\\"
|
||||||
|
+ value=\\"TestSSID1\\"
|
||||||
|
+ />
|
||||||
|
+ <div
|
||||||
|
+ class=\\"input-group-append\\"
|
||||||
|
+ >
|
||||||
|
+ <button
|
||||||
|
+ class=\\"input-group-text\\"
|
||||||
|
+ type=\\"button\\"
|
||||||
|
+ >
|
||||||
|
+ <img
|
||||||
|
+ alt=\\"QR\\"
|
||||||
|
+ src=\\"/reforis/static/reforis/imgs/QR_icon.svg\\"
|
||||||
|
+ style=\\"opacity: 0.67;\\"
|
||||||
|
+ width=\\"20\\"
|
||||||
|
+ />
|
||||||
|
+ </button>
|
||||||
|
+ </div>
|
||||||
|
+ </div>
|
||||||
|
+ </div>
|
||||||
|
+ <div
|
||||||
|
+ class=\\"form-group\\"
|
||||||
|
+ >
|
||||||
|
+ <label
|
||||||
|
+ for=\\"5\\"
|
||||||
|
+ >
|
||||||
|
+ Password
|
||||||
|
+ </label>
|
||||||
|
+ <div
|
||||||
|
+ class=\\"input-group\\"
|
||||||
|
+ >
|
||||||
|
+ <input
|
||||||
|
+ autocomplete=\\"new-password\\"
|
||||||
|
+ class=\\"form-control\\"
|
||||||
|
+ id=\\"5\\"
|
||||||
|
+ required=\\"\\"
|
||||||
|
+ type=\\"password\\"
|
||||||
|
+ value=\\"TestPass\\"
|
||||||
|
+ />
|
||||||
|
+ <div
|
||||||
|
+ class=\\"input-group-append\\"
|
||||||
|
+ >
|
||||||
|
+ <button
|
||||||
|
+ class=\\"input-group-text\\"
|
||||||
|
+ type=\\"button\\"
|
||||||
|
+ >
|
||||||
|
+ <i
|
||||||
|
+ class=\\"fa fa-eye\\"
|
||||||
|
+ />
|
||||||
|
+ </button>
|
||||||
|
+ </div>
|
||||||
|
+ </div>
|
||||||
|
+ <small
|
||||||
|
+ class=\\"form-text text-muted\\"
|
||||||
|
+ >
|
||||||
|
+
|
||||||
|
+ WPA2 pre-shared key, that is required to connect to the network.
|
||||||
|
+
|
||||||
|
+ </small>
|
||||||
|
+ </div>
|
||||||
|
+ <div
|
||||||
|
+ class=\\"form-group\\"
|
||||||
|
+ >
|
||||||
|
+ <div
|
||||||
|
+ class=\\"custom-control custom-checkbox \\"
|
||||||
|
+ >
|
||||||
|
+ <input
|
||||||
|
+ class=\\"custom-control-input\\"
|
||||||
|
+ id=\\"6\\"
|
||||||
|
+ type=\\"checkbox\\"
|
||||||
|
+ />
|
||||||
|
+ <label
|
||||||
|
+ class=\\"custom-control-label\\"
|
||||||
|
+ for=\\"6\\"
|
||||||
|
+ >
|
||||||
|
+ Hide SSID
|
||||||
|
+ <small
|
||||||
|
+ class=\\"form-text text-muted\\"
|
||||||
|
+ >
|
||||||
|
+ If set, network is not visible when scanning for available networks.
|
||||||
|
+ </small>
|
||||||
|
+ </label>
|
||||||
|
+ </div>
|
||||||
|
+ </div>
|
||||||
|
+ <div
|
||||||
|
+ class=\\"form-group\\"
|
||||||
|
+ >
|
||||||
|
+ <label
|
||||||
|
+ class=\\"d-block\\"
|
||||||
|
+ for=\\"7\\"
|
||||||
|
+ >
|
||||||
|
+ GHz
|
||||||
|
+ </label>
|
||||||
|
+ <div
|
||||||
|
+ class=\\"custom-control custom-radio custom-control-inline\\"
|
||||||
|
+ >
|
||||||
|
+ <input
|
||||||
|
+ class=\\"custom-control-input\\"
|
||||||
|
+ id=\\"hwmode-0-0\\"
|
||||||
|
+ name=\\"hwmode-0\\"
|
||||||
|
+ type=\\"radio\\"
|
||||||
|
+ value=\\"11g\\"
|
||||||
|
+ />
|
||||||
|
+ <label
|
||||||
|
+ class=\\"custom-control-label\\"
|
||||||
|
+ for=\\"hwmode-0-0\\"
|
||||||
|
+ >
|
||||||
|
+ 2.4
|
||||||
|
+ </label>
|
||||||
|
+ </div>
|
||||||
|
+ <div
|
||||||
|
+ class=\\"custom-control custom-radio custom-control-inline\\"
|
||||||
|
+ >
|
||||||
|
+ <input
|
||||||
|
+ checked=\\"\\"
|
||||||
|
+ class=\\"custom-control-input\\"
|
||||||
|
+ id=\\"hwmode-0-1\\"
|
||||||
|
+ name=\\"hwmode-0\\"
|
||||||
|
+ type=\\"radio\\"
|
||||||
|
+ value=\\"11a\\"
|
||||||
|
+ />
|
||||||
|
+ <label
|
||||||
|
+ class=\\"custom-control-label\\"
|
||||||
|
+ for=\\"hwmode-0-1\\"
|
||||||
|
+ >
|
||||||
|
+ 5
|
||||||
|
+ </label>
|
||||||
|
+ </div>
|
||||||
|
+ <small
|
||||||
|
+ class=\\"form-text text-muted\\"
|
||||||
|
+ >
|
||||||
|
+
|
||||||
|
+ 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.
|
||||||
|
+ </small>
|
||||||
|
+ </div>
|
||||||
|
+ <div
|
||||||
|
+ class=\\"form-group\\"
|
||||||
|
+ >
|
||||||
|
+ <label
|
||||||
|
+ for=\\"8\\"
|
||||||
|
+ >
|
||||||
|
+ 802.11n/ac mode
|
||||||
|
+ </label>
|
||||||
|
+ <select
|
||||||
|
+ class=\\"custom-select\\"
|
||||||
|
+ id=\\"8\\"
|
||||||
|
+ >
|
||||||
|
+ <option
|
||||||
|
+ value=\\"NOHT\\"
|
||||||
|
+ >
|
||||||
|
+ Disabled
|
||||||
|
+ </option>
|
||||||
|
+ <option
|
||||||
|
+ value=\\"HT20\\"
|
||||||
|
+ >
|
||||||
|
+ 802.11n - 20 MHz wide channel
|
||||||
|
+ </option>
|
||||||
|
+ <option
|
||||||
|
+ value=\\"HT40\\"
|
||||||
|
+ >
|
||||||
|
+ 802.11n - 40 MHz wide channel
|
||||||
|
+ </option>
|
||||||
|
+ <option
|
||||||
|
+ value=\\"VHT20\\"
|
||||||
|
+ >
|
||||||
|
+ 802.11ac - 20 MHz wide channel
|
||||||
|
+ </option>
|
||||||
|
+ <option
|
||||||
|
+ value=\\"VHT40\\"
|
||||||
|
+ >
|
||||||
|
+ 802.11ac - 40 MHz wide channel
|
||||||
|
+ </option>
|
||||||
|
+ <option
|
||||||
|
+ value=\\"VHT80\\"
|
||||||
|
+ >
|
||||||
|
+ 802.11ac - 80 MHz wide channel
|
||||||
|
+ </option>
|
||||||
|
+ </select>
|
||||||
|
+ <small
|
||||||
|
+ class=\\"form-text text-muted\\"
|
||||||
|
+ >
|
||||||
|
+
|
||||||
|
+ Change this to adjust 802.11n/ac mode of operation. 802.11n with 40 MHz wide channels can yield higher
|
||||||
|
+ throughput but can cause more interference in the network. If you don't know what to choose, use the default
|
||||||
|
+ option with 20 MHz wide channel.
|
||||||
|
+
|
||||||
|
+ </small>
|
||||||
|
+ </div>
|
||||||
|
+ <div
|
||||||
|
+ class=\\"form-group\\"
|
||||||
|
+ >
|
||||||
|
+ <label
|
||||||
|
+ for=\\"9\\"
|
||||||
|
+ >
|
||||||
|
+ Channel
|
||||||
|
+ </label>
|
||||||
|
+ <select
|
||||||
|
+ class=\\"custom-select\\"
|
||||||
|
+ id=\\"9\\"
|
||||||
|
+ >
|
||||||
|
+ <option
|
||||||
|
+ value=\\"0\\"
|
||||||
|
+ >
|
||||||
|
+ auto
|
||||||
|
+ </option>
|
||||||
|
+ <option
|
||||||
|
+ value=\\"36\\"
|
||||||
|
+ >
|
||||||
|
+
|
||||||
|
+ 36
|
||||||
|
+ (5180 MHz )
|
||||||
|
+
|
||||||
|
+ </option>
|
||||||
|
+ <option
|
||||||
|
+ value=\\"40\\"
|
||||||
|
+ >
|
||||||
|
+
|
||||||
|
+ 40
|
||||||
|
+ (5200 MHz )
|
||||||
|
+
|
||||||
|
+ </option>
|
||||||
|
+ <option
|
||||||
|
+ value=\\"44\\"
|
||||||
|
+ >
|
||||||
|
+
|
||||||
|
+ 44
|
||||||
|
+ (5220 MHz )
|
||||||
|
+
|
||||||
|
+ </option>
|
||||||
|
+ <option
|
||||||
|
+ value=\\"48\\"
|
||||||
|
+ >
|
||||||
|
+
|
||||||
|
+ 48
|
||||||
|
+ (5240 MHz )
|
||||||
|
+
|
||||||
|
+ </option>
|
||||||
|
+ <option
|
||||||
|
+ value=\\"52\\"
|
||||||
|
+ >
|
||||||
|
+
|
||||||
|
+ 52
|
||||||
|
+ (5260 MHz ,DFS)
|
||||||
|
+
|
||||||
|
+ </option>
|
||||||
|
+ <option
|
||||||
|
+ value=\\"56\\"
|
||||||
|
+ >
|
||||||
|
+
|
||||||
|
+ 56
|
||||||
|
+ (5280 MHz ,DFS)
|
||||||
|
+
|
||||||
|
+ </option>
|
||||||
|
+ <option
|
||||||
|
+ value=\\"60\\"
|
||||||
|
+ >
|
||||||
|
+
|
||||||
|
+ 60
|
||||||
|
+ (5300 MHz ,DFS)
|
||||||
|
+
|
||||||
|
+ </option>
|
||||||
|
+ <option
|
||||||
|
+ value=\\"64\\"
|
||||||
|
+ >
|
||||||
|
+
|
||||||
|
+ 64
|
||||||
|
+ (5320 MHz ,DFS)
|
||||||
|
+
|
||||||
|
+ </option>
|
||||||
|
+ <option
|
||||||
|
+ value=\\"100\\"
|
||||||
|
+ >
|
||||||
|
+
|
||||||
|
+ 100
|
||||||
|
+ (5500 MHz ,DFS)
|
||||||
|
+
|
||||||
|
+ </option>
|
||||||
|
+ <option
|
||||||
|
+ value=\\"104\\"
|
||||||
|
+ >
|
||||||
|
+
|
||||||
|
+ 104
|
||||||
|
+ (5520 MHz ,DFS)
|
||||||
|
+
|
||||||
|
+ </option>
|
||||||
|
+ <option
|
||||||
|
+ value=\\"108\\"
|
||||||
|
+ >
|
||||||
|
+
|
||||||
|
+ 108
|
||||||
|
+ (5540 MHz ,DFS)
|
||||||
|
+
|
||||||
|
+ </option>
|
||||||
|
+ <option
|
||||||
|
+ value=\\"112\\"
|
||||||
|
+ >
|
||||||
|
+
|
||||||
|
+ 112
|
||||||
|
+ (5560 MHz ,DFS)
|
||||||
|
+
|
||||||
|
+ </option>
|
||||||
|
+ <option
|
||||||
|
+ value=\\"116\\"
|
||||||
|
+ >
|
||||||
|
+
|
||||||
|
+ 116
|
||||||
|
+ (5580 MHz ,DFS)
|
||||||
|
+
|
||||||
|
+ </option>
|
||||||
|
+ <option
|
||||||
|
+ value=\\"120\\"
|
||||||
|
+ >
|
||||||
|
+
|
||||||
|
+ 120
|
||||||
|
+ (5600 MHz ,DFS)
|
||||||
|
+
|
||||||
|
+ </option>
|
||||||
|
+ <option
|
||||||
|
+ value=\\"124\\"
|
||||||
|
+ >
|
||||||
|
+
|
||||||
|
+ 124
|
||||||
|
+ (5620 MHz ,DFS)
|
||||||
|
+
|
||||||
|
+ </option>
|
||||||
|
+ <option
|
||||||
|
+ value=\\"128\\"
|
||||||
|
+ >
|
||||||
|
+
|
||||||
|
+ 128
|
||||||
|
+ (5640 MHz ,DFS)
|
||||||
|
+
|
||||||
|
+ </option>
|
||||||
|
+ <option
|
||||||
|
+ value=\\"132\\"
|
||||||
|
+ >
|
||||||
|
+
|
||||||
|
+ 132
|
||||||
|
+ (5660 MHz ,DFS)
|
||||||
|
+
|
||||||
|
+ </option>
|
||||||
|
+ <option
|
||||||
|
+ value=\\"136\\"
|
||||||
|
+ >
|
||||||
|
+
|
||||||
|
+ 136
|
||||||
|
+ (5680 MHz ,DFS)
|
||||||
|
+
|
||||||
|
+ </option>
|
||||||
|
+ <option
|
||||||
|
+ value=\\"140\\"
|
||||||
|
+ >
|
||||||
|
+
|
||||||
|
+ 140
|
||||||
|
+ (5700 MHz ,DFS)
|
||||||
|
+
|
||||||
|
+ </option>
|
||||||
|
+ <option
|
||||||
|
+ value=\\"144\\"
|
||||||
|
+ >
|
||||||
|
+
|
||||||
|
+ 144
|
||||||
|
+ (5720 MHz ,DFS)
|
||||||
|
+
|
||||||
|
+ </option>
|
||||||
|
+ <option
|
||||||
|
+ value=\\"149\\"
|
||||||
|
+ >
|
||||||
|
+
|
||||||
|
+ 149
|
||||||
|
+ (5745 MHz )
|
||||||
|
+
|
||||||
|
+ </option>
|
||||||
|
+ <option
|
||||||
|
+ value=\\"153\\"
|
||||||
|
+ >
|
||||||
|
+
|
||||||
|
+ 153
|
||||||
|
+ (5765 MHz )
|
||||||
|
+
|
||||||
|
+ </option>
|
||||||
|
+ <option
|
||||||
|
+ value=\\"157\\"
|
||||||
|
+ >
|
||||||
|
+
|
||||||
|
+ 157
|
||||||
|
+ (5785 MHz )
|
||||||
|
+
|
||||||
|
+ </option>
|
||||||
|
+ <option
|
||||||
|
+ value=\\"161\\"
|
||||||
|
+ >
|
||||||
|
+
|
||||||
|
+ 161
|
||||||
|
+ (5805 MHz )
|
||||||
|
+
|
||||||
|
+ </option>
|
||||||
|
+ <option
|
||||||
|
+ value=\\"165\\"
|
||||||
|
+ >
|
||||||
|
+
|
||||||
|
+ 165
|
||||||
|
+ (5825 MHz )
|
||||||
|
+
|
||||||
|
+ </option>
|
||||||
|
+ </select>
|
||||||
|
+ </div>
|
||||||
|
+ <div
|
||||||
|
+ class=\\"form-group\\"
|
||||||
|
+ >
|
||||||
|
+ <div
|
||||||
|
+ class=\\"custom-control custom-checkbox \\"
|
||||||
|
+ >
|
||||||
|
+ <input
|
||||||
|
+ class=\\"custom-control-input\\"
|
||||||
|
+ id=\\"10\\"
|
||||||
|
+ type=\\"checkbox\\"
|
||||||
|
+ />
|
||||||
|
+ <label
|
||||||
|
+ class=\\"custom-control-label\\"
|
||||||
|
+ for=\\"10\\"
|
||||||
|
+ >
|
||||||
|
+ Enable Guest Wifi
|
||||||
|
+ <small
|
||||||
|
+ class=\\"form-text text-muted\\"
|
||||||
|
+ >
|
||||||
|
+
|
||||||
|
+ Enables Wi-Fi for guests, which is separated from LAN network. Devices connected to this network are allowed to
|
||||||
|
+ access the internet, but aren't allowed to access other devices and the configuration interface of the router.
|
||||||
|
+ Parameters of the guest network can be set in the Guest network tab.
|
||||||
|
+
|
||||||
|
+ </small>
|
||||||
|
+ </label>
|
||||||
|
+ </div>
|
||||||
|
+ </div>
|
||||||
|
<h3>
|
||||||
|
Wi-Fi 2
|
||||||
|
</h3>
|
||||||
|
<div
|
||||||
|
class=\\"form-group\\""
|
||||||
|
`;
|
39
src/common/WiFiSettings/constants.js
Normal file
39
src/common/WiFiSettings/constants.js
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export const HTMODES = {
|
||||||
|
NOHT: _("Disabled"),
|
||||||
|
HT20: _("802.11n - 20 MHz wide channel"),
|
||||||
|
HT40: _("802.11n - 40 MHz wide channel"),
|
||||||
|
VHT20: _("802.11ac - 20 MHz wide channel"),
|
||||||
|
VHT40: _("802.11ac - 40 MHz wide channel"),
|
||||||
|
VHT80: _("802.11ac - 80 MHz wide channel"),
|
||||||
|
};
|
||||||
|
export const HWMODES = {
|
||||||
|
"11g": "2.4",
|
||||||
|
"11a": "5",
|
||||||
|
};
|
||||||
|
export const HELP_TEXTS = {
|
||||||
|
password: _(`
|
||||||
|
WPA2 pre-shared key, that is required to connect to the network.
|
||||||
|
`),
|
||||||
|
hidden: _("If set, network is not visible when scanning for available networks."),
|
||||||
|
hwmode: _(`
|
||||||
|
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: _(`
|
||||||
|
Change this to adjust 802.11n/ac mode of operation. 802.11n with 40 MHz wide channels can yield higher
|
||||||
|
throughput but can cause more interference in the network. If you don't know what to choose, use the default
|
||||||
|
option with 20 MHz wide channel.
|
||||||
|
`),
|
||||||
|
guest_wifi_enabled: _(`
|
||||||
|
Enables Wi-Fi for guests, which is separated from LAN network. Devices connected to this network are allowed to
|
||||||
|
access the internet, but aren't allowed to access other devices and the configuration interface of the router.
|
||||||
|
Parameters of the guest network can be set in the Guest network tab.
|
||||||
|
`),
|
||||||
|
};
|
42
src/common/WiFiSettings/qrCodeHelpers.js
Normal file
42
src/common/WiFiSettings/qrCodeHelpers.js
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export function createAndDownloadPdf(SSID, password) {
|
||||||
|
const docDefinition = {
|
||||||
|
content: [
|
||||||
|
{
|
||||||
|
text: "Wi-Fi",
|
||||||
|
style: "header",
|
||||||
|
fontSize: 55,
|
||||||
|
alignment: "center",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
qr: toQRCodeContent(SSID, password),
|
||||||
|
fit: "350",
|
||||||
|
margin: [0, 80],
|
||||||
|
alignment: "center",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: `SSID: ${SSID}`,
|
||||||
|
fontSize: 25,
|
||||||
|
alignment: "center",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: `Password: ${password}`,
|
||||||
|
fontSize: 25,
|
||||||
|
alignment: "center",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
// pdfmake is exposed by reForis main application. Thus we can use it from globals.
|
||||||
|
window.pdfMake.createPdf(docDefinition).download("wifi.pdf");
|
||||||
|
}
|
||||||
|
|
||||||
|
export function toQRCodeContent(SSID, password) {
|
||||||
|
return `WIFI:S:${SSID};T:WPA2;P:${password};;`;
|
||||||
|
}
|
@ -7,7 +7,9 @@
|
|||||||
|
|
||||||
import React from "react";
|
import React from "react";
|
||||||
|
|
||||||
import { fireEvent, getByText, queryByText, render, wait } from "customTestRender";
|
import {
|
||||||
|
fireEvent, getByText, queryByText, render, wait,
|
||||||
|
} from "customTestRender";
|
||||||
import mockAxios from "jest-mock-axios";
|
import mockAxios from "jest-mock-axios";
|
||||||
import { mockJSONError } from "testUtils/network";
|
import { mockJSONError } from "testUtils/network";
|
||||||
import { mockSetAlert } from "testUtils/alertContextMock";
|
import { mockSetAlert } from "testUtils/alertContextMock";
|
||||||
@ -18,8 +20,8 @@ describe("<RebootButton/>", () => {
|
|||||||
let componentContainer;
|
let componentContainer;
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
const { container } = render(<>
|
const { container } = render(<>
|
||||||
<div id="modal-container"/>
|
<div id="modal-container" />
|
||||||
<RebootButton/>
|
<RebootButton />
|
||||||
</>);
|
</>);
|
||||||
componentContainer = container;
|
componentContainer = container;
|
||||||
});
|
});
|
||||||
@ -51,5 +53,4 @@ describe("<RebootButton/>", () => {
|
|||||||
await wait(() => expect(mockSetAlert)
|
await wait(() => expect(mockSetAlert)
|
||||||
.toBeCalledWith("Reboot request failed."));
|
.toBeCalledWith("Reboot request failed."));
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
@ -12,17 +12,17 @@ import { STATES, SubmitButton } from "../components/SubmitButton";
|
|||||||
|
|
||||||
describe("<SubmitButton/>", () => {
|
describe("<SubmitButton/>", () => {
|
||||||
it("Render ready", () => {
|
it("Render ready", () => {
|
||||||
const { container } = render(<SubmitButton state={STATES.READY}/>);
|
const { container } = render(<SubmitButton state={STATES.READY} />);
|
||||||
expect(container)
|
expect(container)
|
||||||
.toMatchSnapshot();
|
.toMatchSnapshot();
|
||||||
});
|
});
|
||||||
it("Render saving", () => {
|
it("Render saving", () => {
|
||||||
const { container } = render(<SubmitButton state={STATES.SAVING}/>);
|
const { container } = render(<SubmitButton state={STATES.SAVING} />);
|
||||||
expect(container)
|
expect(container)
|
||||||
.toMatchSnapshot();
|
.toMatchSnapshot();
|
||||||
});
|
});
|
||||||
it("Render load", () => {
|
it("Render load", () => {
|
||||||
const { container } = render(<SubmitButton state={STATES.LOAD}/>);
|
const { container } = render(<SubmitButton state={STATES.LOAD} />);
|
||||||
expect(container)
|
expect(container)
|
||||||
.toMatchSnapshot();
|
.toMatchSnapshot();
|
||||||
});
|
});
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
exports[`<SubmitButton/> Render load 1`] = `
|
exports[`<SubmitButton/> Render load 1`] = `
|
||||||
<div>
|
<div>
|
||||||
<button
|
<button
|
||||||
class="btn btn-primary offset-lg-8 col-lg-3 col-sm-12"
|
class="btn btn-primary col-sm-12 col-lg-3"
|
||||||
disabled=""
|
disabled=""
|
||||||
type="submit"
|
type="submit"
|
||||||
>
|
>
|
||||||
@ -23,7 +23,7 @@ exports[`<SubmitButton/> Render load 1`] = `
|
|||||||
exports[`<SubmitButton/> Render ready 1`] = `
|
exports[`<SubmitButton/> Render ready 1`] = `
|
||||||
<div>
|
<div>
|
||||||
<button
|
<button
|
||||||
class="btn btn-primary offset-lg-8 col-lg-3 col-sm-12"
|
class="btn btn-primary col-sm-12 col-lg-3"
|
||||||
type="submit"
|
type="submit"
|
||||||
>
|
>
|
||||||
|
|
||||||
@ -36,7 +36,7 @@ exports[`<SubmitButton/> Render ready 1`] = `
|
|||||||
exports[`<SubmitButton/> Render saving 1`] = `
|
exports[`<SubmitButton/> Render saving 1`] = `
|
||||||
<div>
|
<div>
|
||||||
<button
|
<button
|
||||||
class="btn btn-primary offset-lg-8 col-lg-3 col-sm-12"
|
class="btn btn-primary col-sm-12 col-lg-3"
|
||||||
disabled=""
|
disabled=""
|
||||||
type="submit"
|
type="submit"
|
||||||
>
|
>
|
||||||
|
@ -5,99 +5,98 @@
|
|||||||
* See /LICENSE for more information.
|
* See /LICENSE for more information.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import React from 'react';
|
import React from "react";
|
||||||
|
|
||||||
import { act, fireEvent, render, waitForElement } from 'customTestRender';
|
import {
|
||||||
import mockAxios from 'jest-mock-axios';
|
act, fireEvent, render, waitForElement,
|
||||||
|
} from "customTestRender";
|
||||||
|
import mockAxios from "jest-mock-axios";
|
||||||
|
import { WebSockets } from "webSockets/WebSockets";
|
||||||
import { ForisForm } from "../components/ForisForm";
|
import { ForisForm } from "../components/ForisForm";
|
||||||
|
|
||||||
|
|
||||||
// It's possible to unittest each hooks via react-hooks-testing-library.
|
// It's possible to unittest each hooks via react-hooks-testing-library.
|
||||||
// But it's better and easier to test it by test components which uses this hooks.
|
// But it's better and easier to test it by test components which uses this hooks.
|
||||||
|
|
||||||
const TestForm = ({formData, formErrors, setFormValue}) => {
|
const TestForm = ({ formData, formErrors, setFormValue }) => (
|
||||||
return <>
|
<>
|
||||||
<input
|
<input
|
||||||
data-testid='test-input'
|
data-testid="test-input"
|
||||||
value={formData.field}
|
value={formData.field}
|
||||||
onChange={setFormValue(value => ({field: {$set: value}}))}
|
onChange={setFormValue((value) => ({ field: { $set: value } }))}
|
||||||
/>
|
/>
|
||||||
<p>{formErrors.field}</p>
|
<p>{formErrors.field}</p>
|
||||||
</>
|
</>
|
||||||
};
|
);
|
||||||
|
|
||||||
describe('useForm hook.', () => {
|
describe("useForm hook.", () => {
|
||||||
let mockValidator;
|
let mockValidator;
|
||||||
let mockPrepData;
|
let mockPrepData;
|
||||||
let mockPrepDataToSubmit;
|
let mockPrepDataToSubmit;
|
||||||
let mockWebSockets;
|
|
||||||
let input;
|
let input;
|
||||||
let form;
|
let form;
|
||||||
const Child = jest.fn(props => <TestForm {...props}/>);
|
const Child = jest.fn((props) => <TestForm {...props} />);
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
mockPrepData = jest.fn(() => ({field: 'preparedData'}));
|
mockPrepData = jest.fn(() => ({ field: "preparedData" }));
|
||||||
mockPrepDataToSubmit = jest.fn(() => ({field: 'preparedDataToSubmit'}));
|
mockPrepDataToSubmit = jest.fn(() => ({ field: "preparedDataToSubmit" }));
|
||||||
mockValidator = jest.fn(data => data.field === 'invalidValue' ? {field: 'Error'} : {});
|
mockValidator = jest.fn((data) => (data.field === "invalidValue" ? { field: "Error" } : {}));
|
||||||
const {getByTestId, container} = render(
|
const { getByTestId, container } = render(
|
||||||
<ForisForm
|
<ForisForm
|
||||||
ws={mockWebSockets}
|
ws={new WebSockets()}
|
||||||
// Just some module which exists...
|
// Just some module which exists...
|
||||||
forisConfig={{
|
forisConfig={{
|
||||||
endpoint: 'testEndpoint',
|
endpoint: "testEndpoint",
|
||||||
wsModule: 'testWSModule'
|
wsModule: "testWSModule",
|
||||||
}}
|
}}
|
||||||
prepData={mockPrepData}
|
prepData={mockPrepData}
|
||||||
prepDataToSubmit={mockPrepDataToSubmit}
|
prepDataToSubmit={mockPrepDataToSubmit}
|
||||||
validator={mockValidator}
|
validator={mockValidator}
|
||||||
>
|
>
|
||||||
<Child/>
|
<Child />
|
||||||
</ForisForm>
|
</ForisForm>,
|
||||||
);
|
);
|
||||||
mockAxios.mockResponse({field: 'fetchedData'});
|
mockAxios.mockResponse({ field: "fetchedData" });
|
||||||
|
|
||||||
input = await waitForElement(() =>
|
input = await waitForElement(() => getByTestId("test-input"));
|
||||||
getByTestId('test-input')
|
form = container.firstChild.firstChild;
|
||||||
);
|
|
||||||
form = container.firstChild
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Validation on changing.', () => {
|
it("Validation on changing.", () => {
|
||||||
expect(mockValidator).toHaveBeenCalledTimes(1);
|
expect(mockValidator).toHaveBeenCalledTimes(1);
|
||||||
expect(Child).toHaveBeenCalledTimes(1);
|
expect(Child).toHaveBeenCalledTimes(1);
|
||||||
expect(Child.mock.calls[0][0].formErrors).toMatchObject({});
|
expect(Child.mock.calls[0][0].formErrors).toMatchObject({});
|
||||||
|
|
||||||
act(() => {
|
act(() => {
|
||||||
fireEvent.change(input, {target: {value: 'invalidValue', type: 'text'}});
|
fireEvent.change(input, { target: { value: "invalidValue", type: "text" } });
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(Child).toHaveBeenCalledTimes(2);
|
expect(Child).toHaveBeenCalledTimes(2);
|
||||||
expect(mockValidator).toHaveBeenCalledTimes(2);
|
expect(mockValidator).toHaveBeenCalledTimes(2);
|
||||||
expect(Child.mock.calls[1][0].formErrors).toMatchObject({field: 'Error'});
|
expect(Child.mock.calls[1][0].formErrors).toMatchObject({ field: "Error" });
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Update text value.', () => {
|
it("Update text value.", () => {
|
||||||
fireEvent.change(input, {target: {value: 'newValue', type: 'text'}})
|
fireEvent.change(input, { target: { value: "newValue", type: "text" } });
|
||||||
expect(input.value).toBe('newValue');
|
expect(input.value).toBe("newValue");
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Update text value.', () => {
|
it("Update text value.", () => {
|
||||||
fireEvent.change(input, {target: {value: 123, type: 'number'}})
|
fireEvent.change(input, { target: { value: 123, type: "number" } });
|
||||||
expect(input.value).toBe('123');
|
expect(input.value).toBe("123");
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Update checkbox value.', () => {
|
it("Update checkbox value.", () => {
|
||||||
fireEvent.change(input, {target: {checked: true, type: 'checkbox'}})
|
fireEvent.change(input, { target: { checked: true, type: "checkbox" } });
|
||||||
expect(input.checked).toBe(true);
|
expect(input.checked).toBe(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Fetch data.', () => {
|
it("Fetch data.", () => {
|
||||||
expect(mockAxios.get).toHaveBeenCalledWith('testEndpoint', expect.anything());
|
expect(mockAxios.get).toHaveBeenCalledWith("testEndpoint", expect.anything());
|
||||||
expect(mockPrepData).toHaveBeenCalledTimes(1);
|
expect(mockPrepData).toHaveBeenCalledTimes(1);
|
||||||
expect(Child.mock.calls[0][0].formData).toMatchObject({field: 'preparedData'});
|
expect(Child.mock.calls[0][0].formData).toMatchObject({ field: "preparedData" });
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Submit.', () => {
|
it("Submit.", () => {
|
||||||
expect(mockAxios.get).toHaveBeenCalledTimes(1);
|
expect(mockAxios.get).toHaveBeenCalledTimes(1);
|
||||||
expect(mockPrepDataToSubmit).toHaveBeenCalledTimes(0);
|
expect(mockPrepDataToSubmit).toHaveBeenCalledTimes(0);
|
||||||
|
|
||||||
@ -106,8 +105,8 @@ describe('useForm hook.', () => {
|
|||||||
expect(mockPrepDataToSubmit).toHaveBeenCalledTimes(1);
|
expect(mockPrepDataToSubmit).toHaveBeenCalledTimes(1);
|
||||||
expect(mockAxios.post).toHaveBeenCalledTimes(1);
|
expect(mockAxios.post).toHaveBeenCalledTimes(1);
|
||||||
expect(mockAxios.post).toHaveBeenCalledWith(
|
expect(mockAxios.post).toHaveBeenCalledWith(
|
||||||
'testEndpoint',
|
"testEndpoint",
|
||||||
{'field': 'preparedDataToSubmit'},
|
{ field: "preparedDataToSubmit" },
|
||||||
expect.anything(),
|
expect.anything(),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
@ -11,8 +11,8 @@ import {
|
|||||||
validateIPv4Address,
|
validateIPv4Address,
|
||||||
validateIPv6Address,
|
validateIPv6Address,
|
||||||
validateIPv6Prefix,
|
validateIPv6Prefix,
|
||||||
validateMAC
|
validateMAC,
|
||||||
} from "validations";
|
} from "utils/validations";
|
||||||
|
|
||||||
describe("Validation functions", () => {
|
describe("Validation functions", () => {
|
||||||
it("validateIPv4Address valid", () => {
|
it("validateIPv4Address valid", () => {
|
||||||
@ -50,7 +50,6 @@ describe("Validation functions", () => {
|
|||||||
.toBe(undefined);
|
.toBe(undefined);
|
||||||
expect(validateIPv6Address("::"))
|
expect(validateIPv6Address("::"))
|
||||||
.toBe(undefined);
|
.toBe(undefined);
|
||||||
|
|
||||||
});
|
});
|
||||||
it("validateIPv6Address invalid", () => {
|
it("validateIPv6Address invalid", () => {
|
||||||
expect(validateIPv6Address("invalid"))
|
expect(validateIPv6Address("invalid"))
|
||||||
@ -85,7 +84,6 @@ describe("Validation functions", () => {
|
|||||||
.toBe(undefined);
|
.toBe(undefined);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
it("validateDomain valid", () => {
|
it("validateDomain valid", () => {
|
||||||
expect(validateDomain("example.com"))
|
expect(validateDomain("example.com"))
|
||||||
.toBe(undefined);
|
.toBe(undefined);
|
||||||
@ -108,7 +106,6 @@ describe("Validation functions", () => {
|
|||||||
.toBe(undefined);
|
.toBe(undefined);
|
||||||
expect(validateDUID("ABCDEF12AB"))
|
expect(validateDUID("ABCDEF12AB"))
|
||||||
.toBe(undefined);
|
.toBe(undefined);
|
||||||
|
|
||||||
});
|
});
|
||||||
it("validateDUID invalid", () => {
|
it("validateDUID invalid", () => {
|
||||||
expect(validateDUID("gggggggg"))
|
expect(validateDUID("gggggggg"))
|
||||||
|
@ -7,27 +7,30 @@
|
|||||||
|
|
||||||
import React, { useEffect } from "react";
|
import React, { useEffect } from "react";
|
||||||
import PropTypes from "prop-types";
|
import PropTypes from "prop-types";
|
||||||
|
import { Prompt } from "react-router-dom";
|
||||||
|
|
||||||
import { Spinner } from "bootstrap/Spinner";
|
import { ALERT_TYPES } from "../../bootstrap/Alert";
|
||||||
import { useAPIPost } from "api/hooks";
|
import { API_STATE } from "../../api/utils";
|
||||||
|
import { formFieldsSize } from "../../bootstrap/constants";
|
||||||
|
import { Spinner } from "../../bootstrap/Spinner";
|
||||||
|
import { useAlert } from "../../alertContext/AlertContext";
|
||||||
|
import { useAPIPost } from "../../api/hooks";
|
||||||
|
|
||||||
import { Prompt } from "react-router";
|
|
||||||
import { API_STATE } from "api/utils";
|
|
||||||
import { ErrorMessage } from "utils/ErrorMessage";
|
|
||||||
import { useAlert } from "alertContext/AlertContext";
|
|
||||||
import { ALERT_TYPES } from "bootstrap/Alert";
|
|
||||||
import { useForisModule, useForm } from "../hooks";
|
import { useForisModule, useForm } from "../hooks";
|
||||||
import { STATES as SUBMIT_BUTTON_STATES, SubmitButton } from "./SubmitButton";
|
import { STATES as SUBMIT_BUTTON_STATES, SubmitButton } from "./SubmitButton";
|
||||||
|
import { ErrorMessage } from "../../utils/ErrorMessage";
|
||||||
|
|
||||||
ForisForm.propTypes = {
|
ForisForm.propTypes = {
|
||||||
/** WebSocket object see `scr/common/WebSockets.js`. */
|
/** Optional WebSocket object. See `scr/common/WebSockets.js`.
|
||||||
|
* `forisConfig.wsModule` should be specified when it's passed.
|
||||||
|
* */
|
||||||
ws: PropTypes.object,
|
ws: PropTypes.object,
|
||||||
/** Foris configuration object. See usage in main components. */
|
/** Foris configuration object. See usage in main components. */
|
||||||
forisConfig: PropTypes.shape({
|
forisConfig: PropTypes.shape({
|
||||||
/** reForis Flask aplication API endpoint from `src/common/API.js`. */
|
/** reForis Flask application API endpoint from `src/common/API.js`. */
|
||||||
endpoint: PropTypes.string.isRequired,
|
endpoint: PropTypes.string.isRequired,
|
||||||
/** `foris-controller` module name to be used via WebSockets.
|
/** `foris-controller` module name to be used via WebSockets.
|
||||||
* If it's not passed then WebSockets aren't used
|
* It can be use only with `ws` prop.
|
||||||
* */
|
* */
|
||||||
wsModule: PropTypes.string,
|
wsModule: PropTypes.string,
|
||||||
/** `foris-controller` action name to be used via WebSockets.
|
/** `foris-controller` action name to be used via WebSockets.
|
||||||
@ -35,20 +38,35 @@ ForisForm.propTypes = {
|
|||||||
* */
|
* */
|
||||||
wsAction: PropTypes.string,
|
wsAction: PropTypes.string,
|
||||||
}).isRequired,
|
}).isRequired,
|
||||||
/** Function to prepare data recived from the API before using in forms. */
|
/** Function to prepare data received from the API before using in forms. */
|
||||||
prepData: PropTypes.func.isRequired,
|
prepData: PropTypes.func,
|
||||||
/** Function to prepare data from form before submitting. */
|
/** Function to prepare data from form before submitting. */
|
||||||
prepDataToSubmit: PropTypes.func.isRequired,
|
prepDataToSubmit: PropTypes.func,
|
||||||
/** Function to handle response to POST request. */
|
/** Function to handle response to POST request. */
|
||||||
postCallback: PropTypes.func.isRequired,
|
postCallback: PropTypes.func,
|
||||||
/** Validate data and provide validation object. Then validation errors passed to children. */
|
/** Validate data and provide validation object. Then validation errors passed to children. */
|
||||||
validator: PropTypes.func.isRequired,
|
validator: PropTypes.func,
|
||||||
/** Disables form */
|
/** Disables form */
|
||||||
disabled: PropTypes.bool,
|
disabled: PropTypes.bool,
|
||||||
/** reForis form components. */
|
|
||||||
children: PropTypes.node.isRequired,
|
|
||||||
/** Optional override of form submit callback */
|
/** Optional override of form submit callback */
|
||||||
onSubmitOverridden: PropTypes.func,
|
onSubmitOverridden: PropTypes.func,
|
||||||
|
/** Reference to actual form element (useful for programmatically submitting it).
|
||||||
|
* Pass the output of useRef hook to this prop.
|
||||||
|
*/
|
||||||
|
formReference: PropTypes.object,
|
||||||
|
/** reForis form components. */
|
||||||
|
children: PropTypes.node.isRequired,
|
||||||
|
|
||||||
|
// eslint-disable-next-line react/no-unused-prop-types
|
||||||
|
customWSProp(props) {
|
||||||
|
const wsModuleIsSpecified = !!(props.forisConfig && props.forisConfig.wsModule);
|
||||||
|
if (props.ws && !wsModuleIsSpecified) {
|
||||||
|
return new Error("forisConfig.wsModule should be specified when ws object is passed.");
|
||||||
|
}
|
||||||
|
if (!props.ws && wsModuleIsSpecified) {
|
||||||
|
return new Error("forisConfig.wsModule is specified without passing ws object.");
|
||||||
|
}
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
ForisForm.defaultProps = {
|
ForisForm.defaultProps = {
|
||||||
@ -59,7 +77,12 @@ ForisForm.defaultProps = {
|
|||||||
disabled: false,
|
disabled: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Serves as HOC for all foris forms components. */
|
/** Serves as HOC for all foris forms components.
|
||||||
|
*
|
||||||
|
* As `<Prompt />` from `react-router-dom` is used in this component then it required to
|
||||||
|
* use exposed `ReactRouterDOM` object from `react-router-dom` library which is exposed by reForis.
|
||||||
|
* See README for more information.
|
||||||
|
* */
|
||||||
export function ForisForm({
|
export function ForisForm({
|
||||||
ws,
|
ws,
|
||||||
forisConfig,
|
forisConfig,
|
||||||
@ -69,10 +92,11 @@ export function ForisForm({
|
|||||||
validator,
|
validator,
|
||||||
disabled,
|
disabled,
|
||||||
onSubmitOverridden,
|
onSubmitOverridden,
|
||||||
|
formReference,
|
||||||
children,
|
children,
|
||||||
}) {
|
}) {
|
||||||
const [formState, onFormChangeHandler, resetFormData] = useForm(validator, prepData);
|
const [formState, onFormChangeHandler, resetFormData] = useForm(validator, prepData);
|
||||||
const [setAlert] = useAlert();
|
const [setAlert, dismissAlert] = useAlert();
|
||||||
|
|
||||||
const [forisModuleState] = useForisModule(ws, forisConfig);
|
const [forisModuleState] = useForisModule(ws, forisConfig);
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@ -92,7 +116,7 @@ export function ForisForm({
|
|||||||
}, [postCallback, postState.state, postState.data, setAlert]);
|
}, [postCallback, postState.state, postState.data, setAlert]);
|
||||||
|
|
||||||
if (forisModuleState.state === API_STATE.ERROR) {
|
if (forisModuleState.state === API_STATE.ERROR) {
|
||||||
return <ErrorMessage />;
|
return <ErrorMessage message={forisModuleState.data} />;
|
||||||
}
|
}
|
||||||
if (!formState.data) {
|
if (!formState.data) {
|
||||||
return <Spinner />;
|
return <Spinner />;
|
||||||
@ -101,9 +125,10 @@ export function ForisForm({
|
|||||||
function onSubmitHandler(event) {
|
function onSubmitHandler(event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
resetFormData();
|
resetFormData();
|
||||||
|
dismissAlert();
|
||||||
const copiedFormData = JSON.parse(JSON.stringify(formState.data));
|
const copiedFormData = JSON.parse(JSON.stringify(formState.data));
|
||||||
const preparedData = prepDataToSubmit(copiedFormData);
|
const preparedData = prepDataToSubmit(copiedFormData);
|
||||||
post(preparedData);
|
post({ data: preparedData });
|
||||||
}
|
}
|
||||||
|
|
||||||
function getSubmitButtonState() {
|
function getSubmitButtonState() {
|
||||||
@ -124,6 +149,7 @@ export function ForisForm({
|
|||||||
const childrenWithFormProps = React.Children.map(
|
const childrenWithFormProps = React.Children.map(
|
||||||
children,
|
children,
|
||||||
(child) => React.cloneElement(child, {
|
(child) => React.cloneElement(child, {
|
||||||
|
initialData: formState.initialData,
|
||||||
formData: formState.data,
|
formData: formState.data,
|
||||||
formErrors: formState.errors,
|
formErrors: formState.errors,
|
||||||
setFormValue: onFormChangeHandler,
|
setFormValue: onFormChangeHandler,
|
||||||
@ -141,15 +167,17 @@ export function ForisForm({
|
|||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<div className={formFieldsSize}>
|
||||||
<Prompt message={getMessageOnLeavingPage} />
|
<Prompt message={getMessageOnLeavingPage} />
|
||||||
<form onSubmit={onSubmit}>
|
<form onSubmit={onSubmit} ref={formReference}>
|
||||||
{childrenWithFormProps}
|
{childrenWithFormProps}
|
||||||
<SubmitButton
|
<div className="text-right">
|
||||||
state={getSubmitButtonState()}
|
<SubmitButton
|
||||||
disabled={submitButtonIsDisabled}
|
state={getSubmitButtonState()}
|
||||||
/>
|
disabled={submitButtonIsDisabled}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import PropTypes from "prop-types";
|
import PropTypes from "prop-types";
|
||||||
|
|
||||||
import { Button } from "bootstrap/Button";
|
import { Button } from "../../bootstrap/Button";
|
||||||
|
|
||||||
export const STATES = {
|
export const STATES = {
|
||||||
READY: 1,
|
READY: 1,
|
||||||
|
@ -8,8 +8,8 @@
|
|||||||
import { useCallback, useEffect, useReducer } from "react";
|
import { useCallback, useEffect, useReducer } from "react";
|
||||||
import update from "immutability-helper";
|
import update from "immutability-helper";
|
||||||
|
|
||||||
import { useAPIGet } from "api/hooks";
|
import { useAPIGet } from "../api/hooks";
|
||||||
import { useWSForisModule } from "webSockets/hooks";
|
import { useWSForisModule } from "../webSockets/hooks";
|
||||||
|
|
||||||
const FORM_ACTIONS = {
|
const FORM_ACTIONS = {
|
||||||
updateValue: 1,
|
updateValue: 1,
|
||||||
|
65
src/index.js
65
src/index.js
@ -13,58 +13,61 @@ export {
|
|||||||
useAPIPut,
|
useAPIPut,
|
||||||
useAPIDelete,
|
useAPIDelete,
|
||||||
useAPIPolling,
|
useAPIPolling,
|
||||||
} from "api/hooks";
|
} from "./api/hooks";
|
||||||
export { API_STATE } from "api/utils";
|
export { API_STATE } from "./api/utils";
|
||||||
|
|
||||||
// Bootstrap
|
// Bootstrap
|
||||||
export { Alert, ALERT_TYPES } from "bootstrap/Alert";
|
export { Alert, ALERT_TYPES } from "./bootstrap/Alert";
|
||||||
export { Button } from "bootstrap/Button";
|
export { Button } from "./bootstrap/Button";
|
||||||
export { CheckBox } from "bootstrap/CheckBox";
|
export { CheckBox } from "./bootstrap/CheckBox";
|
||||||
export { DownloadButton } from "bootstrap/DownloadButton";
|
export { DownloadButton } from "./bootstrap/DownloadButton";
|
||||||
export { DataTimeInput } from "bootstrap/DataTimeInput";
|
export { DataTimeInput } from "./bootstrap/DataTimeInput";
|
||||||
export { EmailInput } from "bootstrap/EmailInput";
|
export { EmailInput } from "./bootstrap/EmailInput";
|
||||||
export { FileInput } from "bootstrap/FileInput";
|
export { FileInput } from "./bootstrap/FileInput";
|
||||||
export { Input } from "bootstrap/Input";
|
export { Input } from "./bootstrap/Input";
|
||||||
export { NumberInput } from "bootstrap/NumberInput";
|
export { NumberInput } from "./bootstrap/NumberInput";
|
||||||
export { PasswordInput } from "bootstrap/PasswordInput";
|
export { PasswordInput } from "./bootstrap/PasswordInput";
|
||||||
export { RadioSet } from "bootstrap/RadioSet";
|
export { Radio, RadioSet } from "./bootstrap/RadioSet";
|
||||||
export { Select } from "bootstrap/Select";
|
export { Select } from "./bootstrap/Select";
|
||||||
export { TextInput } from "bootstrap/TextInput";
|
export { TextInput } from "./bootstrap/TextInput";
|
||||||
export { formFieldsSize } from "bootstrap/constants";
|
export { formFieldsSize } from "./bootstrap/constants";
|
||||||
|
|
||||||
export {
|
export {
|
||||||
Spinner,
|
Spinner,
|
||||||
SpinnerElement,
|
SpinnerElement,
|
||||||
} from "bootstrap/Spinner";
|
} from "./bootstrap/Spinner";
|
||||||
export {
|
export {
|
||||||
Modal,
|
Modal,
|
||||||
ModalBody,
|
ModalBody,
|
||||||
ModalFooter,
|
ModalFooter,
|
||||||
ModalHeader,
|
ModalHeader,
|
||||||
} from "bootstrap/Modal";
|
} from "./bootstrap/Modal";
|
||||||
|
|
||||||
// Common
|
// Common
|
||||||
export { RebootButton } from "common/RebootButton";
|
export { RebootButton } from "./common/RebootButton";
|
||||||
|
export { WiFiSettings } from "./common/WiFiSettings/WiFiSettings";
|
||||||
|
|
||||||
// Form
|
// Form
|
||||||
export { ForisForm } from "form/components/ForisForm";
|
export { ForisForm } from "./form/components/ForisForm";
|
||||||
export { SubmitButton, STATES as SUBMIT_BUTTON_STATES } from "form/components/SubmitButton";
|
export { SubmitButton, STATES as SUBMIT_BUTTON_STATES } from "./form/components/SubmitButton";
|
||||||
export { useForisModule, useForm } from "form/hooks";
|
export { useForisModule, useForm } from "./form/hooks";
|
||||||
|
|
||||||
// WebSockets
|
// WebSockets
|
||||||
export { useWSForisModule } from "webSockets/hooks";
|
export { useWSForisModule } from "./webSockets/hooks";
|
||||||
export { WebSockets } from "webSockets/WebSockets";
|
export { WebSockets } from "./webSockets/WebSockets";
|
||||||
|
|
||||||
// Utils
|
// Utils
|
||||||
export { Portal } from "utils/Portal";
|
export { Portal } from "./utils/Portal";
|
||||||
export { undefinedIfEmpty, withoutUndefinedKeys, onlySpecifiedKeys } from "utils/objectHelpers";
|
export { undefinedIfEmpty, withoutUndefinedKeys, onlySpecifiedKeys } from "./utils/objectHelpers";
|
||||||
export {
|
export {
|
||||||
withEither, withSpinner, withSending, withSpinnerOnSending, withError, withErrorMessage,
|
withEither, withSpinner, withSending, withSpinnerOnSending, withError, withErrorMessage,
|
||||||
} from "utils/conditionalHOCs";
|
} from "./utils/conditionalHOCs";
|
||||||
export { ErrorMessage } from "utils/ErrorMessage";
|
export { ErrorMessage } from "./utils/ErrorMessage";
|
||||||
|
export { useClickOutside } from "./utils/hooks";
|
||||||
|
export { toLocaleDateString } from "./utils/datetime";
|
||||||
|
|
||||||
// Foris URL
|
// Foris URL
|
||||||
export { ForisURLs, REFORIS_URL_PREFIX } from "forisUrls";
|
export { ForisURLs, REFORIS_URL_PREFIX } from "./utils/forisUrls";
|
||||||
|
|
||||||
// Validation
|
// Validation
|
||||||
export {
|
export {
|
||||||
@ -75,7 +78,7 @@ export {
|
|||||||
validateDUID,
|
validateDUID,
|
||||||
validateMAC,
|
validateMAC,
|
||||||
validateMultipleEmails,
|
validateMultipleEmails,
|
||||||
} from "validations";
|
} from "./utils/validations";
|
||||||
|
|
||||||
// Alert context
|
// Alert context
|
||||||
export { AlertContextProvider, useAlert } from "alertContext/AlertContext";
|
export { AlertContextProvider, useAlert } from "./alertContext/AlertContext";
|
||||||
|
@ -15,7 +15,7 @@ window.AlertContext = React.createContext();
|
|||||||
function AlertContextMock({ children }) {
|
function AlertContextMock({ children }) {
|
||||||
return (
|
return (
|
||||||
<AlertContext.Provider value={[mockSetAlert, mockDismissAlert]}>
|
<AlertContext.Provider value={[mockSetAlert, mockDismissAlert]}>
|
||||||
{ children }
|
{ children }
|
||||||
</AlertContext.Provider>
|
</AlertContext.Provider>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { UIDReset } from "react-uid";
|
import { UIDReset } from "react-uid";
|
||||||
import { StaticRouter } from "react-router";
|
import { StaticRouter } from "react-router-dom";
|
||||||
import { render } from "@testing-library/react";
|
import { render } from "@testing-library/react";
|
||||||
import PropTypes from "prop-types";
|
import PropTypes from "prop-types";
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
* See /LICENSE for more information.
|
* See /LICENSE for more information.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import mockAxios from 'jest-mock-axios';
|
import mockAxios from "jest-mock-axios";
|
||||||
|
|
||||||
export function mockJSONError(data) {
|
export function mockJSONError(data) {
|
||||||
mockAxios.mockError({ response: { data, headers: { "content-type": "application/json" } } });
|
mockAxios.mockError({ response: { data, headers: { "content-type": "application/json" } } });
|
||||||
|
@ -5,8 +5,8 @@
|
|||||||
* See /LICENSE for more information.
|
* See /LICENSE for more information.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import mockAxios from 'jest-mock-axios';
|
import mockAxios from "jest-mock-axios";
|
||||||
import moment from 'moment-timezone';
|
import moment from "moment-timezone";
|
||||||
|
|
||||||
// Setup axios cleanup
|
// Setup axios cleanup
|
||||||
global.afterEach(() => {
|
global.afterEach(() => {
|
||||||
@ -14,10 +14,10 @@ global.afterEach(() => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Mock babel (gettext)
|
// Mock babel (gettext)
|
||||||
global._ = str => str;
|
global._ = (str) => str;
|
||||||
global.ngettext = str => str;
|
global.ngettext = (str) => str;
|
||||||
global.babel = {format: (str) => str};
|
global.babel = { format: (str) => str };
|
||||||
global.ForisTranslations = {};
|
global.ForisTranslations = { locale: "en" };
|
||||||
|
|
||||||
// Mock web sockets
|
// Mock web sockets
|
||||||
window.WebSocket = jest.fn();
|
window.WebSocket = jest.fn();
|
||||||
@ -25,9 +25,9 @@ window.WebSocket = jest.fn();
|
|||||||
// Mock scrollIntoView
|
// Mock scrollIntoView
|
||||||
global.HTMLElement.prototype.scrollIntoView = () => {};
|
global.HTMLElement.prototype.scrollIntoView = () => {};
|
||||||
|
|
||||||
jest.doMock('moment', () => {
|
// Mock timezone utilities
|
||||||
moment.tz.setDefault('UTC');
|
jest.doMock("moment", () => {
|
||||||
|
moment.tz.setDefault("UTC");
|
||||||
return moment;
|
return moment;
|
||||||
});
|
});
|
||||||
|
|
||||||
Date.now = jest.fn(() => new Date(Date.UTC(2019, 1, 1, 12, 13, 14)).valueOf());
|
Date.now = jest.fn(() => new Date(Date.UTC(2019, 1, 1, 12, 13, 14)).valueOf());
|
||||||
|
@ -6,11 +6,18 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import React from "react";
|
import React from "react";
|
||||||
|
import PropTypes from "prop-types";
|
||||||
|
|
||||||
export function ErrorMessage() {
|
ErrorMessage.propTypes = {
|
||||||
|
message: PropTypes.string,
|
||||||
|
};
|
||||||
|
|
||||||
|
ErrorMessage.defaultProps = {
|
||||||
|
message: _("An error occurred while fetching data."),
|
||||||
|
};
|
||||||
|
|
||||||
|
export function ErrorMessage({ message }) {
|
||||||
return (
|
return (
|
||||||
<p className="text-center text-danger">
|
<p className="text-center text-danger">{message}</p>
|
||||||
{_("An error occurred while fetching data.")}
|
|
||||||
</p>
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -26,16 +26,13 @@ exports[`conditional HOCs withSpinner should render spinner 1`] = `
|
|||||||
class="spinner-wrapper my-3 text-center"
|
class="spinner-wrapper my-3 text-center"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="spinner-border "
|
class="spinner-border"
|
||||||
role="status"
|
role="status"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
class="sr-only"
|
class="sr-only"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div
|
|
||||||
class="spinner-text"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
@ -46,16 +43,13 @@ exports[`conditional HOCs withSpinnerOnSending should render spinner 1`] = `
|
|||||||
class="spinner-wrapper my-3 text-center"
|
class="spinner-wrapper my-3 text-center"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="spinner-border "
|
class="spinner-border"
|
||||||
role="status"
|
role="status"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
class="sr-only"
|
class="sr-only"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div
|
|
||||||
class="spinner-text"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
|
@ -7,10 +7,10 @@
|
|||||||
|
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { render } from "customTestRender";
|
import { render } from "customTestRender";
|
||||||
|
import { API_STATE } from "api/utils";
|
||||||
import {
|
import {
|
||||||
withEither, withSpinner, withSending, withSpinnerOnSending, withError, withErrorMessage,
|
withEither, withSpinner, withSending, withSpinnerOnSending, withError, withErrorMessage,
|
||||||
} from "../conditionalHOCs";
|
} from "../conditionalHOCs";
|
||||||
import { API_STATE } from "api/utils";
|
|
||||||
|
|
||||||
describe("conditional HOCs", () => {
|
describe("conditional HOCs", () => {
|
||||||
const First = () => <p>First</p>;
|
const First = () => <p>First</p>;
|
||||||
|
51
src/utils/__tests__/datetime.test.js
Normal file
51
src/utils/__tests__/datetime.test.js
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
/*
|
||||||
|
* 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 { toLocaleDateString } from "../datetime";
|
||||||
|
|
||||||
|
describe("toLocaleDateString", () => {
|
||||||
|
it("should work with different locale", () => {
|
||||||
|
global.ForisTranslations = { locale: "fr" };
|
||||||
|
expect(
|
||||||
|
toLocaleDateString("2020-02-20T12:51:36+00:00")
|
||||||
|
).toBe("20 février 2020 12:51");
|
||||||
|
global.ForisTranslations = { locale: "en" };
|
||||||
|
})
|
||||||
|
|
||||||
|
it("should convert with default format", () => {
|
||||||
|
expect(
|
||||||
|
toLocaleDateString("2020-02-20T12:51:36+00:00")
|
||||||
|
).toBe("February 20, 2020 12:51 PM");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should convert with custom input format", () => {
|
||||||
|
expect(
|
||||||
|
toLocaleDateString(
|
||||||
|
"2020-02-20 12:51:36 +0000",
|
||||||
|
{ inputFormat: "YYYY-MM-DD HH:mm:ss Z" },
|
||||||
|
)
|
||||||
|
).toBe("February 20, 2020 12:51 PM");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should convert with custom output format", () => {
|
||||||
|
expect(
|
||||||
|
toLocaleDateString(
|
||||||
|
"2020-02-20T12:51:36+00:00",
|
||||||
|
{ outputFormat: "LL" },
|
||||||
|
)
|
||||||
|
).toBe("February 20, 2020");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should convert with custom input and output format", () => {
|
||||||
|
expect(
|
||||||
|
toLocaleDateString(
|
||||||
|
"2020-02-20 12:51:36 +0000",
|
||||||
|
{ inputFormat: "YYYY-MM-DD HH:mm:ss Z", outputFormat: "LL" },
|
||||||
|
)
|
||||||
|
).toBe("February 20, 2020");
|
||||||
|
});
|
||||||
|
});
|
@ -7,8 +7,8 @@
|
|||||||
|
|
||||||
import React from "react";
|
import React from "react";
|
||||||
|
|
||||||
import { Spinner } from "bootstrap/Spinner";
|
import { Spinner } from "../bootstrap/Spinner";
|
||||||
import { API_STATE } from "api/utils";
|
import { API_STATE } from "../api/utils";
|
||||||
import { ErrorMessage } from "./ErrorMessage";
|
import { ErrorMessage } from "./ErrorMessage";
|
||||||
|
|
||||||
function withEither(conditionalFn, Either) {
|
function withEither(conditionalFn, Either) {
|
||||||
|
8
src/utils/datetime.js
Normal file
8
src/utils/datetime.js
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
import moment from "moment";
|
||||||
|
|
||||||
|
export function toLocaleDateString(date, { inputFormat, outputFormat = "LLL" } = {}) {
|
||||||
|
const parsedDate = inputFormat ? moment(date, inputFormat) : moment(date);
|
||||||
|
return parsedDate
|
||||||
|
.locale(ForisTranslations.locale)
|
||||||
|
.format(outputFormat);
|
||||||
|
}
|
@ -10,6 +10,8 @@ export const REFORIS_API_URL_PREFIX = `${REFORIS_URL_PREFIX}/api`;
|
|||||||
|
|
||||||
export const ForisURLs = {
|
export const ForisURLs = {
|
||||||
login: `${REFORIS_URL_PREFIX}/login`,
|
login: `${REFORIS_URL_PREFIX}/login`,
|
||||||
|
logout: `${REFORIS_URL_PREFIX}/logout`,
|
||||||
|
|
||||||
static: `${REFORIS_URL_PREFIX}/static/reforis`,
|
static: `${REFORIS_URL_PREFIX}/static/reforis`,
|
||||||
wifi: `${REFORIS_URL_PREFIX}/network-settings/wifi`,
|
wifi: `${REFORIS_URL_PREFIX}/network-settings/wifi`,
|
||||||
|
|
@ -18,3 +18,19 @@ export function useConditionalTimeout({ callback, timeout = 125 }, ...callbackAr
|
|||||||
}, [condition, callback, timeout, callbackArgs]);
|
}, [condition, callback, timeout, callbackArgs]);
|
||||||
return setCondition;
|
return setCondition;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Execute callback when user clicks outside specified element. */
|
||||||
|
export function useClickOutside(element, callback) {
|
||||||
|
function handleClickOutside(event) {
|
||||||
|
if (element.current && !element.current.contains(event.target)) {
|
||||||
|
callback(event);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
document.addEventListener("mousedown", handleClickOutside);
|
||||||
|
return () => {
|
||||||
|
document.removeEventListener("mousedown", handleClickOutside);
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
|
@ -23,7 +23,7 @@ const REs = {
|
|||||||
IPv4: /^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,
|
IPv4: /^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,
|
||||||
IPv6: /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,
|
IPv6: /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,
|
||||||
IPv6Prefix: /^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*(\/([0-9]|[1-9][0-9]|1[0-1][0-9]|12[0-8]))$/,
|
IPv6Prefix: /^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*(\/([0-9]|[1-9][0-9]|1[0-1][0-9]|12[0-8]))$/,
|
||||||
domain: /^([a-zA-Z0-9-]{1,63}\.?)*$/,
|
domain: /^[A-Za-z0-9][A-Za-z0-9.-]{1,255}$/,
|
||||||
DUID: /^([0-9a-fA-F]{2}){4}([0-9a-fA-F]{2})*$/,
|
DUID: /^([0-9a-fA-F]{2}){4}([0-9a-fA-F]{2})*$/,
|
||||||
MAC: /^([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2}$/,
|
MAC: /^([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2}$/,
|
||||||
MultipleEmails: /^([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+ *)( *, *[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+ *)*$/,
|
MultipleEmails: /^([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+ *)( *, *[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+ *)*$/,
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
/* eslint no-console: "off" */
|
/* eslint no-console: "off" */
|
||||||
|
|
||||||
import { ForisURLs } from "forisUrls";
|
import { ForisURLs } from "../utils/forisUrls";
|
||||||
|
|
||||||
const PROTOCOL = window.location.protocol === "http:" ? "ws" : "wss";
|
const PROTOCOL = window.location.protocol === "http:" ? "ws" : "wss";
|
||||||
|
|
||||||
@ -25,18 +25,18 @@ export class WebSockets {
|
|||||||
console.error("WS: Error observed, you aren't logged probably.");
|
console.error("WS: Error observed, you aren't logged probably.");
|
||||||
window.location.replace(ForisURLs.login);
|
window.location.replace(ForisURLs.login);
|
||||||
}
|
}
|
||||||
console.log(`WS: Error: ${e}`);
|
console.error(`WS: Error: ${e}`);
|
||||||
};
|
};
|
||||||
this.ws.onmessage = (e) => {
|
this.ws.onmessage = (e) => {
|
||||||
console.log(`WS: Received Message: ${e.data}`);
|
console.debug(`WS: Received Message: ${e.data}`);
|
||||||
const data = JSON.parse(e.data);
|
const data = JSON.parse(e.data);
|
||||||
this.dispatch(data);
|
this.dispatch(data);
|
||||||
};
|
};
|
||||||
this.ws.onopen = () => {
|
this.ws.onopen = () => {
|
||||||
console.log("WS: Connection open.");
|
console.debug("WS: Connection open.");
|
||||||
};
|
};
|
||||||
this.ws.onclose = () => {
|
this.ws.onclose = () => {
|
||||||
console.log("WS: Connection closed.");
|
console.debug("WS: Connection closed.");
|
||||||
};
|
};
|
||||||
|
|
||||||
// callbacks[module][action]
|
// callbacks[module][action]
|
||||||
@ -61,9 +61,36 @@ export class WebSockets {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
subscribe(params) {
|
subscribe(module) {
|
||||||
this.waitForConnection(() => {
|
this.waitForConnection(() => {
|
||||||
this.send("subscribe", params);
|
this.send("subscribe", module);
|
||||||
|
});
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
unbind(module, action, callback) {
|
||||||
|
const callbacks = this.callbacks[module][action];
|
||||||
|
|
||||||
|
const index = callbacks.indexOf(callback);
|
||||||
|
if (index !== -1) {
|
||||||
|
callbacks.splice(index, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (callbacks.length === 0) {
|
||||||
|
delete this.callbacks[module][action];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Object.keys(this.callbacks[module]).length === 0) {
|
||||||
|
this.unsubscribe(module);
|
||||||
|
}
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsubscribe(module) {
|
||||||
|
this.waitForConnection(() => {
|
||||||
|
this.send("unsubscribe", module);
|
||||||
|
delete this.callbacks[module];
|
||||||
});
|
});
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@ -82,15 +109,15 @@ export class WebSockets {
|
|||||||
let chain;
|
let chain;
|
||||||
try {
|
try {
|
||||||
chain = this.callbacks[json.module][json.action];
|
chain = this.callbacks[json.module][json.action];
|
||||||
} catch (e) {
|
} catch (error) {
|
||||||
if (e instanceof TypeError) {
|
if (error instanceof TypeError) {
|
||||||
console.log(`Callback for this message wasn't found:${e.data}`);
|
console.warn(`Callback for this message wasn't found:${error.data}`);
|
||||||
} else throw e;
|
} else throw error;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof chain === "undefined") return;
|
if (typeof chain === "undefined") return;
|
||||||
|
|
||||||
for (let i = 0; i < chain.length; i++) chain[i](json);
|
chain.forEach((callback) => callback(json));
|
||||||
}
|
}
|
||||||
|
|
||||||
close() {
|
close() {
|
||||||
|
@ -7,17 +7,30 @@
|
|||||||
|
|
||||||
import { useEffect, useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
|
|
||||||
export function useWSForisModule(ws, module, action = "update_settings") {
|
export function useWSForisModule(ws, module, action = "update_settings", controllerID) {
|
||||||
const [data, setData] = useState(null);
|
const [data, setData] = useState(null);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (ws && module) {
|
// Sometimes we want to disable this hook if WS is not passed. We can't make conditional
|
||||||
ws.subscribe(module)
|
// hooks, but we can disable it here. It's used especially in ForisForm when a module
|
||||||
.bind(module, action, (msg) => {
|
// doesn't present any WS endpoint.
|
||||||
setData(msg.data);
|
if (!ws) return;
|
||||||
});
|
|
||||||
|
function callback(message) {
|
||||||
|
// Accept only messages addressed to device with passed controller ID.
|
||||||
|
if (controllerID !== undefined && controllerID !== message.controller_id) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
setData(message.data);
|
||||||
}
|
}
|
||||||
}, [action, module, ws]);
|
|
||||||
|
ws.subscribe(module)
|
||||||
|
.bind(module, action, callback);
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
ws.unbind(module, action, callback);
|
||||||
|
};
|
||||||
|
}, [action, module, ws, controllerID]);
|
||||||
|
|
||||||
return [data];
|
return [data];
|
||||||
}
|
}
|
||||||
|
@ -7,17 +7,17 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2019-11-29 16:27+0100\n"
|
"POT-Creation-Date: 2020-02-20 17:28+0100\n"
|
||||||
"PO-Revision-Date: 2019-11-21 17:04+0000\n"
|
"PO-Revision-Date: 2019-09-29 15:56+0000\n"
|
||||||
"Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>\n"
|
"Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>\n"
|
||||||
"Language: cs\n"
|
"Language: cs\n"
|
||||||
"Language-Team: Czech <https://hosted.weblate.org/projects/turris/foris-"
|
"Language-Team: Czech "
|
||||||
"js/cs/>\n"
|
"<https://hosted.weblate.org/projects/turris/reforis/cs/>\n"
|
||||||
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n"
|
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.7.0\n"
|
"Generated-By: Babel 2.8.0\n"
|
||||||
|
|
||||||
#: src/validations.js:13
|
#: src/validations.js:13
|
||||||
msgid "This is not a valid IPv4 address."
|
msgid "This is not a valid IPv4 address."
|
||||||
@ -59,21 +59,17 @@ msgstr "Došlo k chybě kvůli překročení časového limitu."
|
|||||||
msgid "No response received."
|
msgid "No response received."
|
||||||
msgstr "Neobdržena žádná odezva."
|
msgstr "Neobdržena žádná odezva."
|
||||||
|
|
||||||
#: src/api/utils.js:70
|
#: src/api/utils.js:76
|
||||||
msgid "An unknown error occurred. Check the console for more info."
|
|
||||||
msgstr "Došlo k neznámé chybě. Další informace naleznete v konzoli."
|
|
||||||
|
|
||||||
#: src/api/utils.js:77
|
|
||||||
msgid "An unknown API error occurred."
|
msgid "An unknown API error occurred."
|
||||||
msgstr "Došlo k neznámé chybě v aplikačním programovém rozhraní."
|
msgstr "Došlo k neznámé chybě v aplikačním programovém rozhraní."
|
||||||
|
|
||||||
#: src/common/RebootButton.js:33
|
#: src/common/RebootButton.js:33
|
||||||
msgid "Reboot request failed."
|
msgid "Reboot request failed."
|
||||||
msgstr ""
|
msgstr "Vyžadován restart"
|
||||||
|
|
||||||
#: src/common/RebootButton.js:54
|
#: src/common/RebootButton.js:54
|
||||||
msgid "Reboot"
|
msgid "Reboot"
|
||||||
msgstr ""
|
msgstr "Restartovat"
|
||||||
|
|
||||||
#: src/common/RebootButton.js:69
|
#: src/common/RebootButton.js:69
|
||||||
msgid "Reboot confirmation"
|
msgid "Reboot confirmation"
|
||||||
@ -91,11 +87,171 @@ msgstr ""
|
|||||||
msgid "Confirm reboot"
|
msgid "Confirm reboot"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:88
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:39
|
||||||
|
msgid "An error occurred during resetting Wi-Fi settings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:41
|
||||||
|
msgid "Wi-Fi settings are set to defaults."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:53
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:69
|
||||||
|
msgid "Reset Wi-Fi Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:55
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
"If a number of wireless cards doesn't match, you may try to reset the Wi-"
|
||||||
|
"Fi settings. Note that this will remove the\n"
|
||||||
|
"current Wi-Fi configuration and restore the default values.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:82
|
||||||
|
msgid "Wi-Fi ${deviceID + 1}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:84
|
||||||
|
msgid "Enable"
|
||||||
|
msgstr "Zapnout"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:215
|
||||||
|
msgid "auto"
|
||||||
|
msgstr "automaticky"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:37
|
||||||
|
msgid "Enable Guest Wifi"
|
||||||
|
msgstr "Zapnout WiFi pro hosty"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:77
|
||||||
|
msgid "Password"
|
||||||
|
msgstr "Heslo"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:60
|
||||||
|
msgid "Wi-Fi QR Code"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:80
|
||||||
|
msgid "Download PDF"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:73
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:81
|
||||||
|
msgid "SSID can't be longer than 32 symbols"
|
||||||
|
msgstr "SSID nemůže být delší než 32 znaků"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:74
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:82
|
||||||
|
msgid "SSID can't be empty"
|
||||||
|
msgstr "SSID je třeba vyplnit"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:76
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:84
|
||||||
|
msgid "Password must contain at least 8 symbols"
|
||||||
|
msgstr "Je třeba, aby heslo obsahovalo alespoň 8 znaků"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:9
|
||||||
|
msgid "Disabled"
|
||||||
|
msgstr "Vypnuto"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:10
|
||||||
|
msgid "802.11n - 20 MHz wide channel"
|
||||||
|
msgstr "802.11n – kanál šíře 20 MHz"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:11
|
||||||
|
msgid "802.11n - 40 MHz wide channel"
|
||||||
|
msgstr "802.11n – kanál šíře 40 MHz"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:12
|
||||||
|
msgid "802.11ac - 20 MHz wide channel"
|
||||||
|
msgstr "802.11ac – kanál šíře 20 MHz"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:13
|
||||||
|
msgid "802.11ac - 40 MHz wide channel"
|
||||||
|
msgstr "802.11ac – kanál šíře 40 MHz"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:14
|
||||||
|
msgid "802.11ac - 80 MHz wide channel"
|
||||||
|
msgstr "802.11ac – kanál šíře 80 MHz"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:21
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" WPA2 pre-shared key, that is required to connect to the network.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
" WPA2 předsdílený klíč, který je vyžadován pro připojení se k "
|
||||||
|
"síti.\n"
|
||||||
|
" "
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:24
|
||||||
|
msgid "If set, network is not visible when scanning for available networks."
|
||||||
|
msgstr ""
|
||||||
|
"Při zapnutí této volby se síť nebude zobrazovat zařízením když budou "
|
||||||
|
"vyhledávat dostupné sítě."
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:25
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" The 2.4 GHz band is more widely supported by clients, but tends "
|
||||||
|
"to have more interference. The 5 GHz band is a\n"
|
||||||
|
" newer standard and may not be supported by all your devices. It "
|
||||||
|
"usually has less interference, but the signal\n"
|
||||||
|
" does not carry so well indoors."
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
" Pásmo 2,4 GHz je v klientských zařízeních podporováno nejčastěji,"
|
||||||
|
" ale bývá více zarušené. Pásmo 5 GHz je\n"
|
||||||
|
" novější standard a nemusí být podporováno všemi vámi používanými "
|
||||||
|
"zařízeními. Obvykle bývá méně zarušené,\n"
|
||||||
|
" ale signál se hůře šíři uvnitř budov."
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:29
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Change this to adjust 802.11n/ac mode of operation. 802.11n with "
|
||||||
|
"40 MHz wide channels can yield higher\n"
|
||||||
|
" throughput but can cause more interference in the network. If you"
|
||||||
|
" don't know what to choose, use the default\n"
|
||||||
|
" option with 20 MHz wide channel.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
" Změna tohoto upraví režim fungování 802.11n/ac. 802.11n s kanály "
|
||||||
|
"o šíři 40 MHz kanály může pomoci k vyšší\n"
|
||||||
|
" propustnosti, ale je náchylnější na rušení. Pokud nevíte co "
|
||||||
|
"zvolit, použijte výchozí volbu s kanálem šíře\n"
|
||||||
|
" 20 MHz.\n"
|
||||||
|
" "
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:34
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Enables Wi-Fi for guests, which is separated from LAN network. "
|
||||||
|
"Devices connected to this network are allowed to\n"
|
||||||
|
" access the internet, but aren't allowed to access other devices "
|
||||||
|
"and the configuration interface of the router.\n"
|
||||||
|
" Parameters of the guest network can be set in the Guest network "
|
||||||
|
"tab.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
" Zapíná Wi-Fi pro hosty, která je oddělená od místní sítě (LAN). "
|
||||||
|
"Zařízením připojeným k této síti je umožněn\n"
|
||||||
|
" přístup do Internetu, ale už ne na ostatní zařízení a k rozhraní "
|
||||||
|
"pro nastavování směrovače.\n"
|
||||||
|
" Parametry sítě pro hosty je možné nastavit na panelu „Síť pro "
|
||||||
|
"hosty“.\n"
|
||||||
|
" "
|
||||||
|
|
||||||
|
#: src/form/components/ForisForm.js:112
|
||||||
msgid "Settings saved successfully"
|
msgid "Settings saved successfully"
|
||||||
msgstr "Nastavení úspěšně uložena"
|
msgstr "Nastavení úspěšně uložena"
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:140
|
#: src/form/components/ForisForm.js:165
|
||||||
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Změny, které byly provedeny, nebyly uloženy. Jste si jistý, že chcete "
|
"Změny, které byly provedeny, nebyly uloženy. Jste si jistý, že chcete "
|
||||||
@ -113,25 +269,10 @@ msgstr "Načítám nastavení"
|
|||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr "Uložit"
|
msgstr "Uložit"
|
||||||
|
|
||||||
#: src/utils/ErrorMessage.js:13
|
#: src/utils/ErrorMessage.js:16
|
||||||
msgid "An error occurred while fetching data."
|
msgid "An error occurred while fetching data."
|
||||||
msgstr "Došlo k chybě při získávání dat."
|
msgstr "Došlo k chybě při získávání dat."
|
||||||
|
|
||||||
#~ msgid "Settings were successfully saved."
|
#~ msgid "An unknown error occurred. Check the console for more info."
|
||||||
#~ msgstr "Nastavení bylo úspěšně uloženo."
|
#~ msgstr "Došlo k neznámé chybě. Další informace naleznete v konzoli."
|
||||||
|
|
||||||
#~ msgid "Settings update was failed."
|
|
||||||
#~ msgstr "Ukládání nastavení selhalo."
|
|
||||||
|
|
||||||
#~ msgid "Warning!"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot requestq failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
|
@ -7,8 +7,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2019-11-29 16:27+0100\n"
|
"POT-Creation-Date: 2020-02-20 17:28+0100\n"
|
||||||
"PO-Revision-Date: 2019-08-28 17:54+0200\n"
|
"PO-Revision-Date: 2019-02-19 13:34+0100\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language: da\n"
|
"Language: da\n"
|
||||||
"Language-Team: da <LL@li.org>\n"
|
"Language-Team: da <LL@li.org>\n"
|
||||||
@ -16,7 +16,7 @@ msgstr ""
|
|||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.7.0\n"
|
"Generated-By: Babel 2.8.0\n"
|
||||||
|
|
||||||
#: src/validations.js:13
|
#: src/validations.js:13
|
||||||
msgid "This is not a valid IPv4 address."
|
msgid "This is not a valid IPv4 address."
|
||||||
@ -58,11 +58,7 @@ msgstr ""
|
|||||||
msgid "No response received."
|
msgid "No response received."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/api/utils.js:70
|
#: src/api/utils.js:76
|
||||||
msgid "An unknown error occurred. Check the console for more info."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/api/utils.js:77
|
|
||||||
msgid "An unknown API error occurred."
|
msgid "An unknown API error occurred."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -90,11 +86,144 @@ msgstr ""
|
|||||||
msgid "Confirm reboot"
|
msgid "Confirm reboot"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:88
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:39
|
||||||
|
msgid "An error occurred during resetting Wi-Fi settings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:41
|
||||||
|
msgid "Wi-Fi settings are set to defaults."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:53
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:69
|
||||||
|
msgid "Reset Wi-Fi Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:55
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
"If a number of wireless cards doesn't match, you may try to reset the Wi-"
|
||||||
|
"Fi settings. Note that this will remove the\n"
|
||||||
|
"current Wi-Fi configuration and restore the default values.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:82
|
||||||
|
msgid "Wi-Fi ${deviceID + 1}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:84
|
||||||
|
msgid "Enable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:215
|
||||||
|
msgid "auto"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:37
|
||||||
|
msgid "Enable Guest Wifi"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:77
|
||||||
|
msgid "Password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:60
|
||||||
|
msgid "Wi-Fi QR Code"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:80
|
||||||
|
msgid "Download PDF"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:73
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:81
|
||||||
|
msgid "SSID can't be longer than 32 symbols"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:74
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:82
|
||||||
|
msgid "SSID can't be empty"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:76
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:84
|
||||||
|
msgid "Password must contain at least 8 symbols"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:9
|
||||||
|
msgid "Disabled"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:10
|
||||||
|
msgid "802.11n - 20 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:11
|
||||||
|
msgid "802.11n - 40 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:12
|
||||||
|
msgid "802.11ac - 20 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:13
|
||||||
|
msgid "802.11ac - 40 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:14
|
||||||
|
msgid "802.11ac - 80 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:21
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" WPA2 pre-shared key, that is required to connect to the network.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:24
|
||||||
|
msgid "If set, network is not visible when scanning for available networks."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:25
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" The 2.4 GHz band is more widely supported by clients, but tends "
|
||||||
|
"to have more interference. The 5 GHz band is a\n"
|
||||||
|
" newer standard and may not be supported by all your devices. It "
|
||||||
|
"usually has less interference, but the signal\n"
|
||||||
|
" does not carry so well indoors."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:29
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Change this to adjust 802.11n/ac mode of operation. 802.11n with "
|
||||||
|
"40 MHz wide channels can yield higher\n"
|
||||||
|
" throughput but can cause more interference in the network. If you"
|
||||||
|
" don't know what to choose, use the default\n"
|
||||||
|
" option with 20 MHz wide channel.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:34
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Enables Wi-Fi for guests, which is separated from LAN network. "
|
||||||
|
"Devices connected to this network are allowed to\n"
|
||||||
|
" access the internet, but aren't allowed to access other devices "
|
||||||
|
"and the configuration interface of the router.\n"
|
||||||
|
" Parameters of the guest network can be set in the Guest network "
|
||||||
|
"tab.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/form/components/ForisForm.js:112
|
||||||
msgid "Settings saved successfully"
|
msgid "Settings saved successfully"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:140
|
#: src/form/components/ForisForm.js:165
|
||||||
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -110,25 +239,10 @@ msgstr ""
|
|||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/utils/ErrorMessage.js:13
|
#: src/utils/ErrorMessage.js:16
|
||||||
msgid "An error occurred while fetching data."
|
msgid "An error occurred while fetching data."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Settings were successfully saved."
|
#~ msgid "An unknown error occurred. Check the console for more info."
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Settings update was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Warning!"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot requestq failed."
|
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
@ -7,44 +7,45 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2019-11-29 16:27+0100\n"
|
"POT-Creation-Date: 2020-02-20 17:28+0100\n"
|
||||||
"PO-Revision-Date: 2019-08-28 17:54+0200\n"
|
"PO-Revision-Date: 2019-09-02 07:21+0000\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: Ulrich Günther <mail@ulrich-guenther.at>\n"
|
||||||
"Language: de\n"
|
"Language: de\n"
|
||||||
"Language-Team: de <LL@li.org>\n"
|
"Language-Team: German "
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
"<https://hosted.weblate.org/projects/turris/reforis/de/>\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=n != 1\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.7.0\n"
|
"Generated-By: Babel 2.8.0\n"
|
||||||
|
|
||||||
#: src/validations.js:13
|
#: src/validations.js:13
|
||||||
msgid "This is not a valid IPv4 address."
|
msgid "This is not a valid IPv4 address."
|
||||||
msgstr ""
|
msgstr "Dies ist keine gültige IPv4-Adresse."
|
||||||
|
|
||||||
#: src/validations.js:14
|
#: src/validations.js:14
|
||||||
msgid "This is not a valid IPv6 address."
|
msgid "This is not a valid IPv6 address."
|
||||||
msgstr ""
|
msgstr "Dies ist keine gültige IPv6-Adresse."
|
||||||
|
|
||||||
#: src/validations.js:15
|
#: src/validations.js:15
|
||||||
msgid "This is not a valid IPv6 prefix."
|
msgid "This is not a valid IPv6 prefix."
|
||||||
msgstr ""
|
msgstr "Dies ist kein gültiges IPv6-Präfix."
|
||||||
|
|
||||||
#: src/validations.js:16
|
#: src/validations.js:16
|
||||||
msgid "This is not a valid domain name."
|
msgid "This is not a valid domain name."
|
||||||
msgstr ""
|
msgstr "Dies ist kein gültiger Domainname."
|
||||||
|
|
||||||
#: src/validations.js:17
|
#: src/validations.js:17
|
||||||
msgid "This is not a valid DUID."
|
msgid "This is not a valid DUID."
|
||||||
msgstr ""
|
msgstr "Dies ist keine gültige DUID."
|
||||||
|
|
||||||
#: src/validations.js:18
|
#: src/validations.js:18
|
||||||
msgid "This is not a valid MAC address."
|
msgid "This is not a valid MAC address."
|
||||||
msgstr ""
|
msgstr "Dies ist keine gültige MAC-Adresse."
|
||||||
|
|
||||||
#: src/validations.js:19
|
#: src/validations.js:19
|
||||||
msgid "Doesn't contain a list of emails separated by commas."
|
msgid "Doesn't contain a list of emails separated by commas."
|
||||||
msgstr ""
|
msgstr "Enthält keine Liste von E-Mails, die durch Kommas getrennt sind."
|
||||||
|
|
||||||
#: src/api/utils.js:58
|
#: src/api/utils.js:58
|
||||||
msgid "The session is expired. Please log in again."
|
msgid "The session is expired. Please log in again."
|
||||||
@ -56,23 +57,20 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/api/utils.js:66
|
#: src/api/utils.js:66
|
||||||
msgid "No response received."
|
msgid "No response received."
|
||||||
msgstr ""
|
msgstr "Keine Antwort erhalten."
|
||||||
|
|
||||||
#: src/api/utils.js:70
|
#: src/api/utils.js:76
|
||||||
msgid "An unknown error occurred. Check the console for more info."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/api/utils.js:77
|
|
||||||
msgid "An unknown API error occurred."
|
msgid "An unknown API error occurred."
|
||||||
msgstr ""
|
msgstr "Ein unbekannter API-Fehler ist aufgetreten."
|
||||||
|
|
||||||
#: src/common/RebootButton.js:33
|
#: src/common/RebootButton.js:33
|
||||||
|
#, fuzzy
|
||||||
msgid "Reboot request failed."
|
msgid "Reboot request failed."
|
||||||
msgstr ""
|
msgstr "Neustart ist erforderlich"
|
||||||
|
|
||||||
#: src/common/RebootButton.js:54
|
#: src/common/RebootButton.js:54
|
||||||
msgid "Reboot"
|
msgid "Reboot"
|
||||||
msgstr ""
|
msgstr "Systemneustart"
|
||||||
|
|
||||||
#: src/common/RebootButton.js:69
|
#: src/common/RebootButton.js:69
|
||||||
msgid "Reboot confirmation"
|
msgid "Reboot confirmation"
|
||||||
@ -90,45 +88,191 @@ msgstr ""
|
|||||||
msgid "Confirm reboot"
|
msgid "Confirm reboot"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:88
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:39
|
||||||
msgid "Settings saved successfully"
|
msgid "An error occurred during resetting Wi-Fi settings."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:140
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:41
|
||||||
|
msgid "Wi-Fi settings are set to defaults."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:53
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:69
|
||||||
|
msgid "Reset Wi-Fi Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:55
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
"If a number of wireless cards doesn't match, you may try to reset the Wi-"
|
||||||
|
"Fi settings. Note that this will remove the\n"
|
||||||
|
"current Wi-Fi configuration and restore the default values.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:82
|
||||||
|
msgid "Wi-Fi ${deviceID + 1}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:84
|
||||||
|
msgid "Enable"
|
||||||
|
msgstr "Aktivieren"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:215
|
||||||
|
msgid "auto"
|
||||||
|
msgstr "automatisch"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:37
|
||||||
|
msgid "Enable Guest Wifi"
|
||||||
|
msgstr "Gast-WLAN aktivieren"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:77
|
||||||
|
msgid "Password"
|
||||||
|
msgstr "Passwort"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:60
|
||||||
|
msgid "Wi-Fi QR Code"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:80
|
||||||
|
msgid "Download PDF"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:73
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:81
|
||||||
|
msgid "SSID can't be longer than 32 symbols"
|
||||||
|
msgstr "SSID darf nicht länger als 32 Symbole sein"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:74
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:82
|
||||||
|
msgid "SSID can't be empty"
|
||||||
|
msgstr "SSID darf nicht leer sein"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:76
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:84
|
||||||
|
msgid "Password must contain at least 8 symbols"
|
||||||
|
msgstr "Das Passwort muss mindestens 8 Zeichen enthalten"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:9
|
||||||
|
msgid "Disabled"
|
||||||
|
msgstr "Deaktiviert"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:10
|
||||||
|
msgid "802.11n - 20 MHz wide channel"
|
||||||
|
msgstr "802.11n - 20 MHz breiter Kanal"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:11
|
||||||
|
msgid "802.11n - 40 MHz wide channel"
|
||||||
|
msgstr "802.11n - 40 MHz breiter Kanal"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:12
|
||||||
|
msgid "802.11ac - 20 MHz wide channel"
|
||||||
|
msgstr "802.11ac - 20 MHz breiter Kanal"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:13
|
||||||
|
msgid "802.11ac - 40 MHz wide channel"
|
||||||
|
msgstr "802.11ac - 40 MHz breiter Kanal"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:14
|
||||||
|
msgid "802.11ac - 80 MHz wide channel"
|
||||||
|
msgstr "802.11ac - 80 MHz breiter Kanal"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:21
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" WPA2 pre-shared key, that is required to connect to the network.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
" WPA2 Pre-Shared Key, der für die Verbindung mit dem Netzwerk "
|
||||||
|
"benötigt wird.\n"
|
||||||
|
" "
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:24
|
||||||
|
msgid "If set, network is not visible when scanning for available networks."
|
||||||
|
msgstr ""
|
||||||
|
"Falls aktiviert, wird das Netzwerk nicht in der Liste der verfügbaren "
|
||||||
|
"drahtlosen Netzwerke angezeigt."
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:25
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" The 2.4 GHz band is more widely supported by clients, but tends "
|
||||||
|
"to have more interference. The 5 GHz band is a\n"
|
||||||
|
" newer standard and may not be supported by all your devices. It "
|
||||||
|
"usually has less interference, but the signal\n"
|
||||||
|
" does not carry so well indoors."
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
" Das 2,4 GHz-Band wird stärker von Clients unterstützt, hat aber "
|
||||||
|
"tendenziell mehr Interferenzen. Das 5-GHz-Band ist ein\n"
|
||||||
|
" neuerer Standard und wird möglicherweise nicht von allen Geräten "
|
||||||
|
"unterstützt. Es hat in der Regel weniger Interferenzen, aber das Signal\n"
|
||||||
|
" trägt nicht so gut drinnen."
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:29
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Change this to adjust 802.11n/ac mode of operation. 802.11n with "
|
||||||
|
"40 MHz wide channels can yield higher\n"
|
||||||
|
" throughput but can cause more interference in the network. If you"
|
||||||
|
" don't know what to choose, use the default\n"
|
||||||
|
" option with 20 MHz wide channel.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
" Ändern Sie diese Option, um den Betriebsmodus 802.11n/ac "
|
||||||
|
"anzupassen. 802.11n mit 40 MHz breiten Kanälen können höhere\n"
|
||||||
|
" durchsatz, kann jedoch zu mehr Interferenzen im Netzwerk führen. "
|
||||||
|
"Wenn Sie nicht wissen, was Sie wählen sollen, verwenden Sie die "
|
||||||
|
"Standardeinstellung\n"
|
||||||
|
" Option mit 20 MHz breitem Kanal.\n"
|
||||||
|
" "
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:34
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Enables Wi-Fi for guests, which is separated from LAN network. "
|
||||||
|
"Devices connected to this network are allowed to\n"
|
||||||
|
" access the internet, but aren't allowed to access other devices "
|
||||||
|
"and the configuration interface of the router.\n"
|
||||||
|
" Parameters of the guest network can be set in the Guest network "
|
||||||
|
"tab.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
" Ermöglicht Wi-Fi für Gäste, das vom LAN-Netzwerk getrennt ist. "
|
||||||
|
"Geräte, die mit diesem Netzwerk verbunden sind, dürfen\n"
|
||||||
|
" auf das Internet zugreifen, dürfen aber nicht auf andere Geräte "
|
||||||
|
"und die Konfigurationsschnittstelle des Routers zugreifen.\n"
|
||||||
|
" Die Parameter des Gastnetzwerks können in der Registerkarte "
|
||||||
|
"Gastnetzwerk eingestellt werden.\n"
|
||||||
|
" "
|
||||||
|
|
||||||
|
#: src/form/components/ForisForm.js:112
|
||||||
|
msgid "Settings saved successfully"
|
||||||
|
msgstr "Einstellungen erfolgreich gespeichert"
|
||||||
|
|
||||||
|
#: src/form/components/ForisForm.js:165
|
||||||
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/SubmitButton.js:32
|
#: src/form/components/SubmitButton.js:32
|
||||||
msgid "Updating"
|
msgid "Updating"
|
||||||
msgstr ""
|
msgstr "Aktualisiere"
|
||||||
|
|
||||||
#: src/form/components/SubmitButton.js:35
|
#: src/form/components/SubmitButton.js:35
|
||||||
msgid "Load settings"
|
msgid "Load settings"
|
||||||
msgstr ""
|
msgstr "Einstellungen laden"
|
||||||
|
|
||||||
#: src/form/components/SubmitButton.js:38
|
#: src/form/components/SubmitButton.js:38
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr ""
|
msgstr "Speichern"
|
||||||
|
|
||||||
#: src/utils/ErrorMessage.js:13
|
#: src/utils/ErrorMessage.js:16
|
||||||
msgid "An error occurred while fetching data."
|
msgid "An error occurred while fetching data."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Settings were successfully saved."
|
#~ msgid "An unknown error occurred. Check the console for more info."
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Settings update was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Warning!"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot requestq failed."
|
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
@ -7,8 +7,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2019-11-29 16:27+0100\n"
|
"POT-Creation-Date: 2020-02-20 17:28+0100\n"
|
||||||
"PO-Revision-Date: 2019-08-28 17:54+0200\n"
|
"PO-Revision-Date: 2019-02-19 13:34+0100\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language: el\n"
|
"Language: el\n"
|
||||||
"Language-Team: el <LL@li.org>\n"
|
"Language-Team: el <LL@li.org>\n"
|
||||||
@ -16,7 +16,7 @@ msgstr ""
|
|||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.7.0\n"
|
"Generated-By: Babel 2.8.0\n"
|
||||||
|
|
||||||
#: src/validations.js:13
|
#: src/validations.js:13
|
||||||
msgid "This is not a valid IPv4 address."
|
msgid "This is not a valid IPv4 address."
|
||||||
@ -58,11 +58,7 @@ msgstr ""
|
|||||||
msgid "No response received."
|
msgid "No response received."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/api/utils.js:70
|
#: src/api/utils.js:76
|
||||||
msgid "An unknown error occurred. Check the console for more info."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/api/utils.js:77
|
|
||||||
msgid "An unknown API error occurred."
|
msgid "An unknown API error occurred."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -90,11 +86,144 @@ msgstr ""
|
|||||||
msgid "Confirm reboot"
|
msgid "Confirm reboot"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:88
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:39
|
||||||
|
msgid "An error occurred during resetting Wi-Fi settings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:41
|
||||||
|
msgid "Wi-Fi settings are set to defaults."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:53
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:69
|
||||||
|
msgid "Reset Wi-Fi Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:55
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
"If a number of wireless cards doesn't match, you may try to reset the Wi-"
|
||||||
|
"Fi settings. Note that this will remove the\n"
|
||||||
|
"current Wi-Fi configuration and restore the default values.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:82
|
||||||
|
msgid "Wi-Fi ${deviceID + 1}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:84
|
||||||
|
msgid "Enable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:215
|
||||||
|
msgid "auto"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:37
|
||||||
|
msgid "Enable Guest Wifi"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:77
|
||||||
|
msgid "Password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:60
|
||||||
|
msgid "Wi-Fi QR Code"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:80
|
||||||
|
msgid "Download PDF"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:73
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:81
|
||||||
|
msgid "SSID can't be longer than 32 symbols"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:74
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:82
|
||||||
|
msgid "SSID can't be empty"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:76
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:84
|
||||||
|
msgid "Password must contain at least 8 symbols"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:9
|
||||||
|
msgid "Disabled"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:10
|
||||||
|
msgid "802.11n - 20 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:11
|
||||||
|
msgid "802.11n - 40 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:12
|
||||||
|
msgid "802.11ac - 20 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:13
|
||||||
|
msgid "802.11ac - 40 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:14
|
||||||
|
msgid "802.11ac - 80 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:21
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" WPA2 pre-shared key, that is required to connect to the network.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:24
|
||||||
|
msgid "If set, network is not visible when scanning for available networks."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:25
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" The 2.4 GHz band is more widely supported by clients, but tends "
|
||||||
|
"to have more interference. The 5 GHz band is a\n"
|
||||||
|
" newer standard and may not be supported by all your devices. It "
|
||||||
|
"usually has less interference, but the signal\n"
|
||||||
|
" does not carry so well indoors."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:29
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Change this to adjust 802.11n/ac mode of operation. 802.11n with "
|
||||||
|
"40 MHz wide channels can yield higher\n"
|
||||||
|
" throughput but can cause more interference in the network. If you"
|
||||||
|
" don't know what to choose, use the default\n"
|
||||||
|
" option with 20 MHz wide channel.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:34
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Enables Wi-Fi for guests, which is separated from LAN network. "
|
||||||
|
"Devices connected to this network are allowed to\n"
|
||||||
|
" access the internet, but aren't allowed to access other devices "
|
||||||
|
"and the configuration interface of the router.\n"
|
||||||
|
" Parameters of the guest network can be set in the Guest network "
|
||||||
|
"tab.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/form/components/ForisForm.js:112
|
||||||
msgid "Settings saved successfully"
|
msgid "Settings saved successfully"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:140
|
#: src/form/components/ForisForm.js:165
|
||||||
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -110,25 +239,10 @@ msgstr ""
|
|||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/utils/ErrorMessage.js:13
|
#: src/utils/ErrorMessage.js:16
|
||||||
msgid "An error occurred while fetching data."
|
msgid "An error occurred while fetching data."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Settings were successfully saved."
|
#~ msgid "An unknown error occurred. Check the console for more info."
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Settings update was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Warning!"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot requestq failed."
|
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
@ -7,44 +7,45 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2019-11-29 16:27+0100\n"
|
"POT-Creation-Date: 2020-02-20 17:28+0100\n"
|
||||||
"PO-Revision-Date: 2019-08-28 17:21+0200\n"
|
"PO-Revision-Date: 2019-10-17 09:28+0000\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: Scott Anecito <scott.anecito@protonmail.com>\n"
|
||||||
"Language: en\n"
|
"Language: en\n"
|
||||||
"Language-Team: en <LL@li.org>\n"
|
"Language-Team: English "
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
"<https://hosted.weblate.org/projects/turris/reforis/en/>\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=n != 1\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.7.0\n"
|
"Generated-By: Babel 2.8.0\n"
|
||||||
|
|
||||||
#: src/validations.js:13
|
#: src/validations.js:13
|
||||||
msgid "This is not a valid IPv4 address."
|
msgid "This is not a valid IPv4 address."
|
||||||
msgstr ""
|
msgstr "This is not a valid IPv4 address."
|
||||||
|
|
||||||
#: src/validations.js:14
|
#: src/validations.js:14
|
||||||
msgid "This is not a valid IPv6 address."
|
msgid "This is not a valid IPv6 address."
|
||||||
msgstr ""
|
msgstr "This is not a valid IPv6 address."
|
||||||
|
|
||||||
#: src/validations.js:15
|
#: src/validations.js:15
|
||||||
msgid "This is not a valid IPv6 prefix."
|
msgid "This is not a valid IPv6 prefix."
|
||||||
msgstr ""
|
msgstr "This is not a valid IPv6 prefix."
|
||||||
|
|
||||||
#: src/validations.js:16
|
#: src/validations.js:16
|
||||||
msgid "This is not a valid domain name."
|
msgid "This is not a valid domain name."
|
||||||
msgstr ""
|
msgstr "This is not a valid domain name."
|
||||||
|
|
||||||
#: src/validations.js:17
|
#: src/validations.js:17
|
||||||
msgid "This is not a valid DUID."
|
msgid "This is not a valid DUID."
|
||||||
msgstr ""
|
msgstr "This is not a valid DUID."
|
||||||
|
|
||||||
#: src/validations.js:18
|
#: src/validations.js:18
|
||||||
msgid "This is not a valid MAC address."
|
msgid "This is not a valid MAC address."
|
||||||
msgstr ""
|
msgstr "This is not a valid MAC address."
|
||||||
|
|
||||||
#: src/validations.js:19
|
#: src/validations.js:19
|
||||||
msgid "Doesn't contain a list of emails separated by commas."
|
msgid "Doesn't contain a list of emails separated by commas."
|
||||||
msgstr ""
|
msgstr "Doesn't contain a list of emails separated by commas."
|
||||||
|
|
||||||
#: src/api/utils.js:58
|
#: src/api/utils.js:58
|
||||||
msgid "The session is expired. Please log in again."
|
msgid "The session is expired. Please log in again."
|
||||||
@ -58,21 +59,17 @@ msgstr ""
|
|||||||
msgid "No response received."
|
msgid "No response received."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/api/utils.js:70
|
#: src/api/utils.js:76
|
||||||
msgid "An unknown error occurred. Check the console for more info."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/api/utils.js:77
|
|
||||||
msgid "An unknown API error occurred."
|
msgid "An unknown API error occurred."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/common/RebootButton.js:33
|
#: src/common/RebootButton.js:33
|
||||||
msgid "Reboot request failed."
|
msgid "Reboot request failed."
|
||||||
msgstr ""
|
msgstr "Reboot is required"
|
||||||
|
|
||||||
#: src/common/RebootButton.js:54
|
#: src/common/RebootButton.js:54
|
||||||
msgid "Reboot"
|
msgid "Reboot"
|
||||||
msgstr ""
|
msgstr "Reboot"
|
||||||
|
|
||||||
#: src/common/RebootButton.js:69
|
#: src/common/RebootButton.js:69
|
||||||
msgid "Reboot confirmation"
|
msgid "Reboot confirmation"
|
||||||
@ -90,45 +87,187 @@ msgstr ""
|
|||||||
msgid "Confirm reboot"
|
msgid "Confirm reboot"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:88
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:39
|
||||||
|
msgid "An error occurred during resetting Wi-Fi settings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:41
|
||||||
|
msgid "Wi-Fi settings are set to defaults."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:53
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:69
|
||||||
|
msgid "Reset Wi-Fi Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:55
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
"If a number of wireless cards doesn't match, you may try to reset the Wi-"
|
||||||
|
"Fi settings. Note that this will remove the\n"
|
||||||
|
"current Wi-Fi configuration and restore the default values.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:82
|
||||||
|
msgid "Wi-Fi ${deviceID + 1}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:84
|
||||||
|
msgid "Enable"
|
||||||
|
msgstr "Enable"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:215
|
||||||
|
msgid "auto"
|
||||||
|
msgstr "auto"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:37
|
||||||
|
msgid "Enable Guest Wifi"
|
||||||
|
msgstr "Enable Guest Wifi"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:77
|
||||||
|
msgid "Password"
|
||||||
|
msgstr "Password"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:60
|
||||||
|
msgid "Wi-Fi QR Code"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:80
|
||||||
|
msgid "Download PDF"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:73
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:81
|
||||||
|
msgid "SSID can't be longer than 32 symbols"
|
||||||
|
msgstr "SSID can't be longer than 32 symbols"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:74
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:82
|
||||||
|
msgid "SSID can't be empty"
|
||||||
|
msgstr "SSID can't be empty"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:76
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:84
|
||||||
|
msgid "Password must contain at least 8 symbols"
|
||||||
|
msgstr "Password must contain at least 8 symbols"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:9
|
||||||
|
msgid "Disabled"
|
||||||
|
msgstr "Disabled"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:10
|
||||||
|
msgid "802.11n - 20 MHz wide channel"
|
||||||
|
msgstr "802.11n - 20 MHz wide channel"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:11
|
||||||
|
msgid "802.11n - 40 MHz wide channel"
|
||||||
|
msgstr "802.11n - 40 MHz wide channel"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:12
|
||||||
|
msgid "802.11ac - 20 MHz wide channel"
|
||||||
|
msgstr "802.11ac - 20 MHz wide channel"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:13
|
||||||
|
msgid "802.11ac - 40 MHz wide channel"
|
||||||
|
msgstr "802.11ac - 40 MHz wide channel"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:14
|
||||||
|
msgid "802.11ac - 80 MHz wide channel"
|
||||||
|
msgstr "802.11ac - 80 MHz wide channel"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:21
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" WPA2 pre-shared key, that is required to connect to the network.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
" WPA2 pre-shared key, that is required to connect to the network.\n"
|
||||||
|
" "
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:24
|
||||||
|
msgid "If set, network is not visible when scanning for available networks."
|
||||||
|
msgstr "If set, network is not visible when scanning for available networks."
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:25
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" The 2.4 GHz band is more widely supported by clients, but tends "
|
||||||
|
"to have more interference. The 5 GHz band is a\n"
|
||||||
|
" newer standard and may not be supported by all your devices. It "
|
||||||
|
"usually has less interference, but the signal\n"
|
||||||
|
" does not carry so well indoors."
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
" The 2.4 GHz band is more widely supported by clients, but tends "
|
||||||
|
"to have more interference. The 5 GHz band is a\n"
|
||||||
|
" newer standard and may not be supported by all your devices. It "
|
||||||
|
"usually has less interference, but the signal\n"
|
||||||
|
" does not carry so well indoors."
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:29
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Change this to adjust 802.11n/ac mode of operation. 802.11n with "
|
||||||
|
"40 MHz wide channels can yield higher\n"
|
||||||
|
" throughput but can cause more interference in the network. If you"
|
||||||
|
" don't know what to choose, use the default\n"
|
||||||
|
" option with 20 MHz wide channel.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
" Change this to adjust 802.11n/ac mode of operation. 802.11n with "
|
||||||
|
"40 MHz wide channels can yield higher\n"
|
||||||
|
" throughput but can cause more interference in the network. If you"
|
||||||
|
" don't know what to choose, use the default\n"
|
||||||
|
" option with 20 MHz wide channel.\n"
|
||||||
|
" "
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:34
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Enables Wi-Fi for guests, which is separated from LAN network. "
|
||||||
|
"Devices connected to this network are allowed to\n"
|
||||||
|
" access the internet, but aren't allowed to access other devices "
|
||||||
|
"and the configuration interface of the router.\n"
|
||||||
|
" Parameters of the guest network can be set in the Guest network "
|
||||||
|
"tab.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
" Enables Wi-Fi for guests, which is separated from LAN network. "
|
||||||
|
"Devices connected to this network are allowed to\n"
|
||||||
|
" access the internet, but aren't allowed to access other devices "
|
||||||
|
"and the configuration interface of the router.\n"
|
||||||
|
" Parameters of the guest network can be set in the Guest network "
|
||||||
|
"tab.\n"
|
||||||
|
" "
|
||||||
|
|
||||||
|
#: src/form/components/ForisForm.js:112
|
||||||
msgid "Settings saved successfully"
|
msgid "Settings saved successfully"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:140
|
#: src/form/components/ForisForm.js:165
|
||||||
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/SubmitButton.js:32
|
#: src/form/components/SubmitButton.js:32
|
||||||
msgid "Updating"
|
msgid "Updating"
|
||||||
msgstr ""
|
msgstr "Updating"
|
||||||
|
|
||||||
#: src/form/components/SubmitButton.js:35
|
#: src/form/components/SubmitButton.js:35
|
||||||
msgid "Load settings"
|
msgid "Load settings"
|
||||||
msgstr ""
|
msgstr "Load settings"
|
||||||
|
|
||||||
#: src/form/components/SubmitButton.js:38
|
#: src/form/components/SubmitButton.js:38
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr ""
|
msgstr "Save"
|
||||||
|
|
||||||
#: src/utils/ErrorMessage.js:13
|
#: src/utils/ErrorMessage.js:16
|
||||||
msgid "An error occurred while fetching data."
|
msgid "An error occurred while fetching data."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Settings were successfully saved."
|
#~ msgid "An unknown error occurred. Check the console for more info."
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Settings update was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Warning!"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot requestq failed."
|
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
@ -7,16 +7,17 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2019-11-29 16:27+0100\n"
|
"POT-Creation-Date: 2020-02-20 17:28+0100\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: 2019-10-29 06:53+0000\n"
|
||||||
"Last-Translator: Automatically generated\n"
|
"Last-Translator: Adolfo Jayme Barrientos <fitojb@ubuntu.com>\n"
|
||||||
"Language: es\n"
|
"Language: es\n"
|
||||||
"Language-Team: none\n"
|
"Language-Team: Spanish "
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
"<https://hosted.weblate.org/projects/turris/reforis/es/>\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=n != 1\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.7.0\n"
|
"Generated-By: Babel 2.8.0\n"
|
||||||
|
|
||||||
#: src/validations.js:13
|
#: src/validations.js:13
|
||||||
msgid "This is not a valid IPv4 address."
|
msgid "This is not a valid IPv4 address."
|
||||||
@ -58,21 +59,18 @@ msgstr ""
|
|||||||
msgid "No response received."
|
msgid "No response received."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/api/utils.js:70
|
#: src/api/utils.js:76
|
||||||
msgid "An unknown error occurred. Check the console for more info."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/api/utils.js:77
|
|
||||||
msgid "An unknown API error occurred."
|
msgid "An unknown API error occurred."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/common/RebootButton.js:33
|
#: src/common/RebootButton.js:33
|
||||||
|
#, fuzzy
|
||||||
msgid "Reboot request failed."
|
msgid "Reboot request failed."
|
||||||
msgstr ""
|
msgstr "Se necesita reiniciar"
|
||||||
|
|
||||||
#: src/common/RebootButton.js:54
|
#: src/common/RebootButton.js:54
|
||||||
msgid "Reboot"
|
msgid "Reboot"
|
||||||
msgstr ""
|
msgstr "Reiniciar"
|
||||||
|
|
||||||
#: src/common/RebootButton.js:69
|
#: src/common/RebootButton.js:69
|
||||||
msgid "Reboot confirmation"
|
msgid "Reboot confirmation"
|
||||||
@ -80,49 +78,175 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/common/RebootButton.js:70
|
#: src/common/RebootButton.js:70
|
||||||
msgid "Are you sure you want to restart the router?"
|
msgid "Are you sure you want to restart the router?"
|
||||||
msgstr ""
|
msgstr "¿Confirma que quiere reiniciar el enrutador?"
|
||||||
|
|
||||||
#: src/common/RebootButton.js:72
|
#: src/common/RebootButton.js:72
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr ""
|
msgstr "Cancelar"
|
||||||
|
|
||||||
#: src/common/RebootButton.js:73
|
#: src/common/RebootButton.js:73
|
||||||
msgid "Confirm reboot"
|
msgid "Confirm reboot"
|
||||||
|
msgstr "Confirmar reinicio"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:39
|
||||||
|
msgid "An error occurred during resetting Wi-Fi settings."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:88
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:41
|
||||||
|
msgid "Wi-Fi settings are set to defaults."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:53
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:69
|
||||||
|
msgid "Reset Wi-Fi Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:55
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
"If a number of wireless cards doesn't match, you may try to reset the Wi-"
|
||||||
|
"Fi settings. Note that this will remove the\n"
|
||||||
|
"current Wi-Fi configuration and restore the default values.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:82
|
||||||
|
msgid "Wi-Fi ${deviceID + 1}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:84
|
||||||
|
msgid "Enable"
|
||||||
|
msgstr "Activar"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:215
|
||||||
|
msgid "auto"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:37
|
||||||
|
msgid "Enable Guest Wifi"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:77
|
||||||
|
msgid "Password"
|
||||||
|
msgstr "Contraseña"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:60
|
||||||
|
msgid "Wi-Fi QR Code"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:80
|
||||||
|
msgid "Download PDF"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:73
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:81
|
||||||
|
msgid "SSID can't be longer than 32 symbols"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:74
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:82
|
||||||
|
msgid "SSID can't be empty"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:76
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:84
|
||||||
|
msgid "Password must contain at least 8 symbols"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:9
|
||||||
|
msgid "Disabled"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:10
|
||||||
|
msgid "802.11n - 20 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:11
|
||||||
|
msgid "802.11n - 40 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:12
|
||||||
|
msgid "802.11ac - 20 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:13
|
||||||
|
msgid "802.11ac - 40 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:14
|
||||||
|
msgid "802.11ac - 80 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:21
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" WPA2 pre-shared key, that is required to connect to the network.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:24
|
||||||
|
msgid "If set, network is not visible when scanning for available networks."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:25
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" The 2.4 GHz band is more widely supported by clients, but tends "
|
||||||
|
"to have more interference. The 5 GHz band is a\n"
|
||||||
|
" newer standard and may not be supported by all your devices. It "
|
||||||
|
"usually has less interference, but the signal\n"
|
||||||
|
" does not carry so well indoors."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:29
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Change this to adjust 802.11n/ac mode of operation. 802.11n with "
|
||||||
|
"40 MHz wide channels can yield higher\n"
|
||||||
|
" throughput but can cause more interference in the network. If you"
|
||||||
|
" don't know what to choose, use the default\n"
|
||||||
|
" option with 20 MHz wide channel.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:34
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Enables Wi-Fi for guests, which is separated from LAN network. "
|
||||||
|
"Devices connected to this network are allowed to\n"
|
||||||
|
" access the internet, but aren't allowed to access other devices "
|
||||||
|
"and the configuration interface of the router.\n"
|
||||||
|
" Parameters of the guest network can be set in the Guest network "
|
||||||
|
"tab.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/form/components/ForisForm.js:112
|
||||||
msgid "Settings saved successfully"
|
msgid "Settings saved successfully"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:140
|
#: src/form/components/ForisForm.js:165
|
||||||
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/SubmitButton.js:32
|
#: src/form/components/SubmitButton.js:32
|
||||||
|
#, fuzzy
|
||||||
msgid "Updating"
|
msgid "Updating"
|
||||||
msgstr ""
|
msgstr "Actualizaciones"
|
||||||
|
|
||||||
#: src/form/components/SubmitButton.js:35
|
#: src/form/components/SubmitButton.js:35
|
||||||
|
#, fuzzy
|
||||||
msgid "Load settings"
|
msgid "Load settings"
|
||||||
msgstr ""
|
msgstr "Configuración de LAN"
|
||||||
|
|
||||||
#: src/form/components/SubmitButton.js:38
|
#: src/form/components/SubmitButton.js:38
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/utils/ErrorMessage.js:13
|
#: src/utils/ErrorMessage.js:16
|
||||||
msgid "An error occurred while fetching data."
|
msgid "An error occurred while fetching data."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Warning!"
|
#~ msgid "An unknown error occurred. Check the console for more info."
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot requestq failed."
|
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
@ -7,8 +7,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2019-11-29 16:27+0100\n"
|
"POT-Creation-Date: 2020-02-20 17:28+0100\n"
|
||||||
"PO-Revision-Date: 2019-08-28 17:54+0200\n"
|
"PO-Revision-Date: 2019-02-19 13:34+0100\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language: fi\n"
|
"Language: fi\n"
|
||||||
"Language-Team: fi <LL@li.org>\n"
|
"Language-Team: fi <LL@li.org>\n"
|
||||||
@ -16,7 +16,7 @@ msgstr ""
|
|||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.7.0\n"
|
"Generated-By: Babel 2.8.0\n"
|
||||||
|
|
||||||
#: src/validations.js:13
|
#: src/validations.js:13
|
||||||
msgid "This is not a valid IPv4 address."
|
msgid "This is not a valid IPv4 address."
|
||||||
@ -58,11 +58,7 @@ msgstr ""
|
|||||||
msgid "No response received."
|
msgid "No response received."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/api/utils.js:70
|
#: src/api/utils.js:76
|
||||||
msgid "An unknown error occurred. Check the console for more info."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/api/utils.js:77
|
|
||||||
msgid "An unknown API error occurred."
|
msgid "An unknown API error occurred."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -90,11 +86,144 @@ msgstr ""
|
|||||||
msgid "Confirm reboot"
|
msgid "Confirm reboot"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:88
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:39
|
||||||
|
msgid "An error occurred during resetting Wi-Fi settings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:41
|
||||||
|
msgid "Wi-Fi settings are set to defaults."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:53
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:69
|
||||||
|
msgid "Reset Wi-Fi Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:55
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
"If a number of wireless cards doesn't match, you may try to reset the Wi-"
|
||||||
|
"Fi settings. Note that this will remove the\n"
|
||||||
|
"current Wi-Fi configuration and restore the default values.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:82
|
||||||
|
msgid "Wi-Fi ${deviceID + 1}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:84
|
||||||
|
msgid "Enable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:215
|
||||||
|
msgid "auto"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:37
|
||||||
|
msgid "Enable Guest Wifi"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:77
|
||||||
|
msgid "Password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:60
|
||||||
|
msgid "Wi-Fi QR Code"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:80
|
||||||
|
msgid "Download PDF"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:73
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:81
|
||||||
|
msgid "SSID can't be longer than 32 symbols"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:74
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:82
|
||||||
|
msgid "SSID can't be empty"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:76
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:84
|
||||||
|
msgid "Password must contain at least 8 symbols"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:9
|
||||||
|
msgid "Disabled"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:10
|
||||||
|
msgid "802.11n - 20 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:11
|
||||||
|
msgid "802.11n - 40 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:12
|
||||||
|
msgid "802.11ac - 20 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:13
|
||||||
|
msgid "802.11ac - 40 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:14
|
||||||
|
msgid "802.11ac - 80 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:21
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" WPA2 pre-shared key, that is required to connect to the network.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:24
|
||||||
|
msgid "If set, network is not visible when scanning for available networks."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:25
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" The 2.4 GHz band is more widely supported by clients, but tends "
|
||||||
|
"to have more interference. The 5 GHz band is a\n"
|
||||||
|
" newer standard and may not be supported by all your devices. It "
|
||||||
|
"usually has less interference, but the signal\n"
|
||||||
|
" does not carry so well indoors."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:29
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Change this to adjust 802.11n/ac mode of operation. 802.11n with "
|
||||||
|
"40 MHz wide channels can yield higher\n"
|
||||||
|
" throughput but can cause more interference in the network. If you"
|
||||||
|
" don't know what to choose, use the default\n"
|
||||||
|
" option with 20 MHz wide channel.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:34
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Enables Wi-Fi for guests, which is separated from LAN network. "
|
||||||
|
"Devices connected to this network are allowed to\n"
|
||||||
|
" access the internet, but aren't allowed to access other devices "
|
||||||
|
"and the configuration interface of the router.\n"
|
||||||
|
" Parameters of the guest network can be set in the Guest network "
|
||||||
|
"tab.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/form/components/ForisForm.js:112
|
||||||
msgid "Settings saved successfully"
|
msgid "Settings saved successfully"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:140
|
#: src/form/components/ForisForm.js:165
|
||||||
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -110,25 +239,10 @@ msgstr ""
|
|||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/utils/ErrorMessage.js:13
|
#: src/utils/ErrorMessage.js:16
|
||||||
msgid "An error occurred while fetching data."
|
msgid "An error occurred while fetching data."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Settings were successfully saved."
|
#~ msgid "An unknown error occurred. Check the console for more info."
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Settings update was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Warning!"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot requestq failed."
|
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
@ -7,8 +7,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2019-11-29 16:27+0100\n"
|
"POT-Creation-Date: 2020-02-20 17:28+0100\n"
|
||||||
"PO-Revision-Date: 2019-08-28 17:54+0200\n"
|
"PO-Revision-Date: 2019-02-19 13:34+0100\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language: fo\n"
|
"Language: fo\n"
|
||||||
"Language-Team: fo <LL@li.org>\n"
|
"Language-Team: fo <LL@li.org>\n"
|
||||||
@ -16,7 +16,7 @@ msgstr ""
|
|||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.7.0\n"
|
"Generated-By: Babel 2.8.0\n"
|
||||||
|
|
||||||
#: src/validations.js:13
|
#: src/validations.js:13
|
||||||
msgid "This is not a valid IPv4 address."
|
msgid "This is not a valid IPv4 address."
|
||||||
@ -58,11 +58,7 @@ msgstr ""
|
|||||||
msgid "No response received."
|
msgid "No response received."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/api/utils.js:70
|
#: src/api/utils.js:76
|
||||||
msgid "An unknown error occurred. Check the console for more info."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/api/utils.js:77
|
|
||||||
msgid "An unknown API error occurred."
|
msgid "An unknown API error occurred."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -90,11 +86,144 @@ msgstr ""
|
|||||||
msgid "Confirm reboot"
|
msgid "Confirm reboot"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:88
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:39
|
||||||
|
msgid "An error occurred during resetting Wi-Fi settings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:41
|
||||||
|
msgid "Wi-Fi settings are set to defaults."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:53
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:69
|
||||||
|
msgid "Reset Wi-Fi Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:55
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
"If a number of wireless cards doesn't match, you may try to reset the Wi-"
|
||||||
|
"Fi settings. Note that this will remove the\n"
|
||||||
|
"current Wi-Fi configuration and restore the default values.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:82
|
||||||
|
msgid "Wi-Fi ${deviceID + 1}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:84
|
||||||
|
msgid "Enable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:215
|
||||||
|
msgid "auto"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:37
|
||||||
|
msgid "Enable Guest Wifi"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:77
|
||||||
|
msgid "Password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:60
|
||||||
|
msgid "Wi-Fi QR Code"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:80
|
||||||
|
msgid "Download PDF"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:73
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:81
|
||||||
|
msgid "SSID can't be longer than 32 symbols"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:74
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:82
|
||||||
|
msgid "SSID can't be empty"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:76
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:84
|
||||||
|
msgid "Password must contain at least 8 symbols"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:9
|
||||||
|
msgid "Disabled"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:10
|
||||||
|
msgid "802.11n - 20 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:11
|
||||||
|
msgid "802.11n - 40 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:12
|
||||||
|
msgid "802.11ac - 20 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:13
|
||||||
|
msgid "802.11ac - 40 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:14
|
||||||
|
msgid "802.11ac - 80 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:21
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" WPA2 pre-shared key, that is required to connect to the network.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:24
|
||||||
|
msgid "If set, network is not visible when scanning for available networks."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:25
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" The 2.4 GHz band is more widely supported by clients, but tends "
|
||||||
|
"to have more interference. The 5 GHz band is a\n"
|
||||||
|
" newer standard and may not be supported by all your devices. It "
|
||||||
|
"usually has less interference, but the signal\n"
|
||||||
|
" does not carry so well indoors."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:29
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Change this to adjust 802.11n/ac mode of operation. 802.11n with "
|
||||||
|
"40 MHz wide channels can yield higher\n"
|
||||||
|
" throughput but can cause more interference in the network. If you"
|
||||||
|
" don't know what to choose, use the default\n"
|
||||||
|
" option with 20 MHz wide channel.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:34
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Enables Wi-Fi for guests, which is separated from LAN network. "
|
||||||
|
"Devices connected to this network are allowed to\n"
|
||||||
|
" access the internet, but aren't allowed to access other devices "
|
||||||
|
"and the configuration interface of the router.\n"
|
||||||
|
" Parameters of the guest network can be set in the Guest network "
|
||||||
|
"tab.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/form/components/ForisForm.js:112
|
||||||
msgid "Settings saved successfully"
|
msgid "Settings saved successfully"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:140
|
#: src/form/components/ForisForm.js:165
|
||||||
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -110,25 +239,10 @@ msgstr ""
|
|||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/utils/ErrorMessage.js:13
|
#: src/utils/ErrorMessage.js:16
|
||||||
msgid "An error occurred while fetching data."
|
msgid "An error occurred while fetching data."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Settings were successfully saved."
|
#~ msgid "An unknown error occurred. Check the console for more info."
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Settings update was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Warning!"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot requestq failed."
|
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
@ -1,49 +1,21 @@
|
|||||||
# Translations template for PROJECT.
|
# Translations template for PROJECT.
|
||||||
# Copyright (C) 2019 ORGANIZATION
|
# Copyright (C) 2020 ORGANIZATION
|
||||||
# This file is distributed under the same license as the PROJECT project.
|
# This file is distributed under the same license as the PROJECT project.
|
||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||||
#
|
#
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2019-11-29 16:27+0100\n"
|
"POT-Creation-Date: 2020-05-07 16:12+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.7.0\n"
|
"Generated-By: Babel 2.8.0\n"
|
||||||
|
|
||||||
#: src/validations.js:13
|
|
||||||
msgid "This is not a valid IPv4 address."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/validations.js:14
|
|
||||||
msgid "This is not a valid IPv6 address."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/validations.js:15
|
|
||||||
msgid "This is not a valid IPv6 prefix."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/validations.js:16
|
|
||||||
msgid "This is not a valid domain name."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/validations.js:17
|
|
||||||
msgid "This is not a valid DUID."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/validations.js:18
|
|
||||||
msgid "This is not a valid MAC address."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/validations.js:19
|
|
||||||
msgid "Doesn't contain a list of emails separated by commas."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/api/utils.js:58
|
#: src/api/utils.js:58
|
||||||
msgid "The session is expired. Please log in again."
|
msgid "The session is expired. Please log in again."
|
||||||
@ -57,11 +29,7 @@ msgstr ""
|
|||||||
msgid "No response received."
|
msgid "No response received."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/api/utils.js:70
|
#: src/api/utils.js:76
|
||||||
msgid "An unknown error occurred. Check the console for more info."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/api/utils.js:77
|
|
||||||
msgid "An unknown API error occurred."
|
msgid "An unknown API error occurred."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -89,11 +57,144 @@ msgstr ""
|
|||||||
msgid "Confirm reboot"
|
msgid "Confirm reboot"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:88
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:39
|
||||||
|
msgid "An error occurred during resetting Wi-Fi settings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:41
|
||||||
|
msgid "Wi-Fi settings are set to defaults."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:53
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:69
|
||||||
|
msgid "Reset Wi-Fi Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:55
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
"If a number of wireless cards doesn't match, you may try to reset the Wi-"
|
||||||
|
"Fi settings. Note that this will remove the\n"
|
||||||
|
"current Wi-Fi configuration and restore the default values.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:81
|
||||||
|
msgid "Wi-Fi ${deviceID + 1}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:83
|
||||||
|
msgid "Enable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:214
|
||||||
|
msgid "auto"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:37
|
||||||
|
msgid "Enable Guest Wifi"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:77
|
||||||
|
msgid "Password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:60
|
||||||
|
msgid "Wi-Fi QR Code"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:80
|
||||||
|
msgid "Download PDF"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:73
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:81
|
||||||
|
msgid "SSID can't be longer than 32 symbols"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:74
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:82
|
||||||
|
msgid "SSID can't be empty"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:76
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:84
|
||||||
|
msgid "Password must contain at least 8 symbols"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:9
|
||||||
|
msgid "Disabled"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:10
|
||||||
|
msgid "802.11n - 20 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:11
|
||||||
|
msgid "802.11n - 40 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:12
|
||||||
|
msgid "802.11ac - 20 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:13
|
||||||
|
msgid "802.11ac - 40 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:14
|
||||||
|
msgid "802.11ac - 80 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:21
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" WPA2 pre-shared key, that is required to connect to the network.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:24
|
||||||
|
msgid "If set, network is not visible when scanning for available networks."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:25
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" The 2.4 GHz band is more widely supported by clients, but tends "
|
||||||
|
"to have more interference. The 5 GHz band is a\n"
|
||||||
|
" newer standard and may not be supported by all your devices. It "
|
||||||
|
"usually has less interference, but the signal\n"
|
||||||
|
" does not carry so well indoors."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:29
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Change this to adjust 802.11n/ac mode of operation. 802.11n with "
|
||||||
|
"40 MHz wide channels can yield higher\n"
|
||||||
|
" throughput but can cause more interference in the network. If you"
|
||||||
|
" don't know what to choose, use the default\n"
|
||||||
|
" option with 20 MHz wide channel.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:34
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Enables Wi-Fi for guests, which is separated from LAN network. "
|
||||||
|
"Devices connected to this network are allowed to\n"
|
||||||
|
" access the internet, but aren't allowed to access other devices "
|
||||||
|
"and the configuration interface of the router.\n"
|
||||||
|
" Parameters of the guest network can be set in the Guest network "
|
||||||
|
"tab.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/form/components/ForisForm.js:112
|
||||||
msgid "Settings saved successfully"
|
msgid "Settings saved successfully"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:140
|
#: src/form/components/ForisForm.js:166
|
||||||
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -109,7 +210,35 @@ msgstr ""
|
|||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/utils/ErrorMessage.js:13
|
#: src/utils/ErrorMessage.js:16
|
||||||
msgid "An error occurred while fetching data."
|
msgid "An error occurred while fetching data."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/utils/validations.js:13
|
||||||
|
msgid "This is not a valid IPv4 address."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/utils/validations.js:14
|
||||||
|
msgid "This is not a valid IPv6 address."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/utils/validations.js:15
|
||||||
|
msgid "This is not a valid IPv6 prefix."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/utils/validations.js:16
|
||||||
|
msgid "This is not a valid domain name."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/utils/validations.js:17
|
||||||
|
msgid "This is not a valid DUID."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/utils/validations.js:18
|
||||||
|
msgid "This is not a valid MAC address."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/utils/validations.js:19
|
||||||
|
msgid "Doesn't contain a list of emails separated by commas."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
@ -7,68 +7,68 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2019-11-29 16:27+0100\n"
|
"POT-Creation-Date: 2020-02-20 17:28+0100\n"
|
||||||
"PO-Revision-Date: 2019-08-28 17:54+0200\n"
|
"PO-Revision-Date: 2019-10-14 11:04+0000\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: ButterflyOfFire <ButterflyOfFire@protonmail.com>\n"
|
||||||
"Language: fr\n"
|
"Language: fr\n"
|
||||||
"Language-Team: fr <LL@li.org>\n"
|
"Language-Team: French "
|
||||||
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
|
"<https://hosted.weblate.org/projects/turris/reforis/fr/>\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=n > 1\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.7.0\n"
|
"Generated-By: Babel 2.8.0\n"
|
||||||
|
|
||||||
#: src/validations.js:13
|
#: src/validations.js:13
|
||||||
msgid "This is not a valid IPv4 address."
|
msgid "This is not a valid IPv4 address."
|
||||||
msgstr ""
|
msgstr "Ce n’est pas une adresse IPv4 valide."
|
||||||
|
|
||||||
#: src/validations.js:14
|
#: src/validations.js:14
|
||||||
msgid "This is not a valid IPv6 address."
|
msgid "This is not a valid IPv6 address."
|
||||||
msgstr ""
|
msgstr "Ce n’est pas une adresse IPv6 valide."
|
||||||
|
|
||||||
#: src/validations.js:15
|
#: src/validations.js:15
|
||||||
msgid "This is not a valid IPv6 prefix."
|
msgid "This is not a valid IPv6 prefix."
|
||||||
msgstr ""
|
msgstr "Ce n’est pas un préfixe IPv6 valide."
|
||||||
|
|
||||||
#: src/validations.js:16
|
#: src/validations.js:16
|
||||||
msgid "This is not a valid domain name."
|
msgid "This is not a valid domain name."
|
||||||
msgstr ""
|
msgstr "Ce n’est pas un nom de domaine valide."
|
||||||
|
|
||||||
#: src/validations.js:17
|
#: src/validations.js:17
|
||||||
msgid "This is not a valid DUID."
|
msgid "This is not a valid DUID."
|
||||||
msgstr ""
|
msgstr "Ce n’est pas un DUID valide."
|
||||||
|
|
||||||
#: src/validations.js:18
|
#: src/validations.js:18
|
||||||
msgid "This is not a valid MAC address."
|
msgid "This is not a valid MAC address."
|
||||||
msgstr ""
|
msgstr "Ce n’est pas une adresse MAC valide."
|
||||||
|
|
||||||
#: src/validations.js:19
|
#: src/validations.js:19
|
||||||
msgid "Doesn't contain a list of emails separated by commas."
|
msgid "Doesn't contain a list of emails separated by commas."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Il ne contient pas une liste d’adresses de messagerie séparées par des "
|
||||||
|
"virgules."
|
||||||
|
|
||||||
#: src/api/utils.js:58
|
#: src/api/utils.js:58
|
||||||
msgid "The session is expired. Please log in again."
|
msgid "The session is expired. Please log in again."
|
||||||
msgstr ""
|
msgstr "Cette session a expiré. Veuillez vous reconnecter."
|
||||||
|
|
||||||
#: src/api/utils.js:63
|
#: src/api/utils.js:63
|
||||||
msgid "Timeout error occurred."
|
msgid "Timeout error occurred."
|
||||||
msgstr ""
|
msgstr "Le délai a expiré."
|
||||||
|
|
||||||
#: src/api/utils.js:66
|
#: src/api/utils.js:66
|
||||||
msgid "No response received."
|
msgid "No response received."
|
||||||
msgstr ""
|
msgstr "Aucun réponse reçue."
|
||||||
|
|
||||||
#: src/api/utils.js:70
|
#: src/api/utils.js:76
|
||||||
msgid "An unknown error occurred. Check the console for more info."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/api/utils.js:77
|
|
||||||
msgid "An unknown API error occurred."
|
msgid "An unknown API error occurred."
|
||||||
msgstr ""
|
msgstr "Une erreur d’API inconnue s’est produite."
|
||||||
|
|
||||||
#: src/common/RebootButton.js:33
|
#: src/common/RebootButton.js:33
|
||||||
|
#, fuzzy
|
||||||
msgid "Reboot request failed."
|
msgid "Reboot request failed."
|
||||||
msgstr ""
|
msgstr "Un redémarrage est nécessaire"
|
||||||
|
|
||||||
#: src/common/RebootButton.js:54
|
#: src/common/RebootButton.js:54
|
||||||
msgid "Reboot"
|
msgid "Reboot"
|
||||||
@ -90,45 +90,168 @@ msgstr ""
|
|||||||
msgid "Confirm reboot"
|
msgid "Confirm reboot"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:88
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:39
|
||||||
msgid "Settings saved successfully"
|
msgid "An error occurred during resetting Wi-Fi settings."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:140
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:41
|
||||||
|
msgid "Wi-Fi settings are set to defaults."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:53
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:69
|
||||||
|
msgid "Reset Wi-Fi Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:55
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
"If a number of wireless cards doesn't match, you may try to reset the Wi-"
|
||||||
|
"Fi settings. Note that this will remove the\n"
|
||||||
|
"current Wi-Fi configuration and restore the default values.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:82
|
||||||
|
msgid "Wi-Fi ${deviceID + 1}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:84
|
||||||
|
msgid "Enable"
|
||||||
|
msgstr "Activer"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:215
|
||||||
|
msgid "auto"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:37
|
||||||
|
msgid "Enable Guest Wifi"
|
||||||
|
msgstr "Activer le mode Wi-Fi invité"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:77
|
||||||
|
msgid "Password"
|
||||||
|
msgstr "Mot de passe"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:60
|
||||||
|
msgid "Wi-Fi QR Code"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:80
|
||||||
|
msgid "Download PDF"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:73
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:81
|
||||||
|
msgid "SSID can't be longer than 32 symbols"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:74
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:82
|
||||||
|
msgid "SSID can't be empty"
|
||||||
|
msgstr "Le SSID ne peut pas être vide"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:76
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:84
|
||||||
|
msgid "Password must contain at least 8 symbols"
|
||||||
|
msgstr "Le mot de passe doit contenir au moins 8 symboles"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:9
|
||||||
|
msgid "Disabled"
|
||||||
|
msgstr "Désactivé"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:10
|
||||||
|
msgid "802.11n - 20 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:11
|
||||||
|
msgid "802.11n - 40 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:12
|
||||||
|
msgid "802.11ac - 20 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:13
|
||||||
|
msgid "802.11ac - 40 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:14
|
||||||
|
msgid "802.11ac - 80 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:21
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" WPA2 pre-shared key, that is required to connect to the network.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:24
|
||||||
|
msgid "If set, network is not visible when scanning for available networks."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:25
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" The 2.4 GHz band is more widely supported by clients, but tends "
|
||||||
|
"to have more interference. The 5 GHz band is a\n"
|
||||||
|
" newer standard and may not be supported by all your devices. It "
|
||||||
|
"usually has less interference, but the signal\n"
|
||||||
|
" does not carry so well indoors."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:29
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Change this to adjust 802.11n/ac mode of operation. 802.11n with "
|
||||||
|
"40 MHz wide channels can yield higher\n"
|
||||||
|
" throughput but can cause more interference in the network. If you"
|
||||||
|
" don't know what to choose, use the default\n"
|
||||||
|
" option with 20 MHz wide channel.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:34
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Enables Wi-Fi for guests, which is separated from LAN network. "
|
||||||
|
"Devices connected to this network are allowed to\n"
|
||||||
|
" access the internet, but aren't allowed to access other devices "
|
||||||
|
"and the configuration interface of the router.\n"
|
||||||
|
" Parameters of the guest network can be set in the Guest network "
|
||||||
|
"tab.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/form/components/ForisForm.js:112
|
||||||
|
msgid "Settings saved successfully"
|
||||||
|
msgstr "Paramètres enregistrés avec succès"
|
||||||
|
|
||||||
|
#: src/form/components/ForisForm.js:165
|
||||||
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Il se peut que vos modifications ne soient pas enregistrées. Êtes-vous "
|
||||||
|
"sûr de vouloir quitter ?"
|
||||||
|
|
||||||
#: src/form/components/SubmitButton.js:32
|
#: src/form/components/SubmitButton.js:32
|
||||||
msgid "Updating"
|
msgid "Updating"
|
||||||
msgstr ""
|
msgstr "Mise à jour en cours"
|
||||||
|
|
||||||
#: src/form/components/SubmitButton.js:35
|
#: src/form/components/SubmitButton.js:35
|
||||||
msgid "Load settings"
|
msgid "Load settings"
|
||||||
msgstr ""
|
msgstr "Charger les paramètres"
|
||||||
|
|
||||||
#: src/form/components/SubmitButton.js:38
|
#: src/form/components/SubmitButton.js:38
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr ""
|
msgstr "Enregistrer"
|
||||||
|
|
||||||
#: src/utils/ErrorMessage.js:13
|
#: src/utils/ErrorMessage.js:16
|
||||||
msgid "An error occurred while fetching data."
|
msgid "An error occurred while fetching data."
|
||||||
msgstr ""
|
msgstr "Une erreur s’est produite lors du chargement des données."
|
||||||
|
|
||||||
#~ msgid "Settings were successfully saved."
|
#~ msgid "An unknown error occurred. Check the console for more info."
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Settings update was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Warning!"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot requestq failed."
|
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
#~ "Une erreur inconnue s’est produite. "
|
||||||
|
#~ "Vérifiez la console pour plus "
|
||||||
|
#~ "d’informations."
|
||||||
|
|
||||||
|
@ -7,8 +7,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2019-11-29 16:27+0100\n"
|
"POT-Creation-Date: 2020-02-20 17:28+0100\n"
|
||||||
"PO-Revision-Date: 2019-08-28 17:55+0200\n"
|
"PO-Revision-Date: 2019-02-19 13:34+0100\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language: hr\n"
|
"Language: hr\n"
|
||||||
"Language-Team: hr <LL@li.org>\n"
|
"Language-Team: hr <LL@li.org>\n"
|
||||||
@ -17,7 +17,7 @@ msgstr ""
|
|||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.7.0\n"
|
"Generated-By: Babel 2.8.0\n"
|
||||||
|
|
||||||
#: src/validations.js:13
|
#: src/validations.js:13
|
||||||
msgid "This is not a valid IPv4 address."
|
msgid "This is not a valid IPv4 address."
|
||||||
@ -59,11 +59,7 @@ msgstr ""
|
|||||||
msgid "No response received."
|
msgid "No response received."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/api/utils.js:70
|
#: src/api/utils.js:76
|
||||||
msgid "An unknown error occurred. Check the console for more info."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/api/utils.js:77
|
|
||||||
msgid "An unknown API error occurred."
|
msgid "An unknown API error occurred."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -91,11 +87,144 @@ msgstr ""
|
|||||||
msgid "Confirm reboot"
|
msgid "Confirm reboot"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:88
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:39
|
||||||
|
msgid "An error occurred during resetting Wi-Fi settings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:41
|
||||||
|
msgid "Wi-Fi settings are set to defaults."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:53
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:69
|
||||||
|
msgid "Reset Wi-Fi Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:55
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
"If a number of wireless cards doesn't match, you may try to reset the Wi-"
|
||||||
|
"Fi settings. Note that this will remove the\n"
|
||||||
|
"current Wi-Fi configuration and restore the default values.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:82
|
||||||
|
msgid "Wi-Fi ${deviceID + 1}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:84
|
||||||
|
msgid "Enable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:215
|
||||||
|
msgid "auto"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:37
|
||||||
|
msgid "Enable Guest Wifi"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:77
|
||||||
|
msgid "Password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:60
|
||||||
|
msgid "Wi-Fi QR Code"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:80
|
||||||
|
msgid "Download PDF"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:73
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:81
|
||||||
|
msgid "SSID can't be longer than 32 symbols"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:74
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:82
|
||||||
|
msgid "SSID can't be empty"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:76
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:84
|
||||||
|
msgid "Password must contain at least 8 symbols"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:9
|
||||||
|
msgid "Disabled"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:10
|
||||||
|
msgid "802.11n - 20 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:11
|
||||||
|
msgid "802.11n - 40 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:12
|
||||||
|
msgid "802.11ac - 20 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:13
|
||||||
|
msgid "802.11ac - 40 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:14
|
||||||
|
msgid "802.11ac - 80 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:21
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" WPA2 pre-shared key, that is required to connect to the network.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:24
|
||||||
|
msgid "If set, network is not visible when scanning for available networks."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:25
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" The 2.4 GHz band is more widely supported by clients, but tends "
|
||||||
|
"to have more interference. The 5 GHz band is a\n"
|
||||||
|
" newer standard and may not be supported by all your devices. It "
|
||||||
|
"usually has less interference, but the signal\n"
|
||||||
|
" does not carry so well indoors."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:29
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Change this to adjust 802.11n/ac mode of operation. 802.11n with "
|
||||||
|
"40 MHz wide channels can yield higher\n"
|
||||||
|
" throughput but can cause more interference in the network. If you"
|
||||||
|
" don't know what to choose, use the default\n"
|
||||||
|
" option with 20 MHz wide channel.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:34
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Enables Wi-Fi for guests, which is separated from LAN network. "
|
||||||
|
"Devices connected to this network are allowed to\n"
|
||||||
|
" access the internet, but aren't allowed to access other devices "
|
||||||
|
"and the configuration interface of the router.\n"
|
||||||
|
" Parameters of the guest network can be set in the Guest network "
|
||||||
|
"tab.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/form/components/ForisForm.js:112
|
||||||
msgid "Settings saved successfully"
|
msgid "Settings saved successfully"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:140
|
#: src/form/components/ForisForm.js:165
|
||||||
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -111,25 +240,10 @@ msgstr ""
|
|||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/utils/ErrorMessage.js:13
|
#: src/utils/ErrorMessage.js:16
|
||||||
msgid "An error occurred while fetching data."
|
msgid "An error occurred while fetching data."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Settings were successfully saved."
|
#~ msgid "An unknown error occurred. Check the console for more info."
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Settings update was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Warning!"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot requestq failed."
|
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
@ -7,8 +7,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2019-11-29 16:27+0100\n"
|
"POT-Creation-Date: 2020-02-20 17:28+0100\n"
|
||||||
"PO-Revision-Date: 2019-08-28 17:55+0200\n"
|
"PO-Revision-Date: 2019-02-19 13:34+0100\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language: hu\n"
|
"Language: hu\n"
|
||||||
"Language-Team: hu <LL@li.org>\n"
|
"Language-Team: hu <LL@li.org>\n"
|
||||||
@ -16,7 +16,7 @@ msgstr ""
|
|||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.7.0\n"
|
"Generated-By: Babel 2.8.0\n"
|
||||||
|
|
||||||
#: src/validations.js:13
|
#: src/validations.js:13
|
||||||
msgid "This is not a valid IPv4 address."
|
msgid "This is not a valid IPv4 address."
|
||||||
@ -58,11 +58,7 @@ msgstr ""
|
|||||||
msgid "No response received."
|
msgid "No response received."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/api/utils.js:70
|
#: src/api/utils.js:76
|
||||||
msgid "An unknown error occurred. Check the console for more info."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/api/utils.js:77
|
|
||||||
msgid "An unknown API error occurred."
|
msgid "An unknown API error occurred."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -90,11 +86,144 @@ msgstr ""
|
|||||||
msgid "Confirm reboot"
|
msgid "Confirm reboot"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:88
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:39
|
||||||
|
msgid "An error occurred during resetting Wi-Fi settings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:41
|
||||||
|
msgid "Wi-Fi settings are set to defaults."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:53
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:69
|
||||||
|
msgid "Reset Wi-Fi Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:55
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
"If a number of wireless cards doesn't match, you may try to reset the Wi-"
|
||||||
|
"Fi settings. Note that this will remove the\n"
|
||||||
|
"current Wi-Fi configuration and restore the default values.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:82
|
||||||
|
msgid "Wi-Fi ${deviceID + 1}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:84
|
||||||
|
msgid "Enable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:215
|
||||||
|
msgid "auto"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:37
|
||||||
|
msgid "Enable Guest Wifi"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:77
|
||||||
|
msgid "Password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:60
|
||||||
|
msgid "Wi-Fi QR Code"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:80
|
||||||
|
msgid "Download PDF"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:73
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:81
|
||||||
|
msgid "SSID can't be longer than 32 symbols"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:74
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:82
|
||||||
|
msgid "SSID can't be empty"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:76
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:84
|
||||||
|
msgid "Password must contain at least 8 symbols"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:9
|
||||||
|
msgid "Disabled"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:10
|
||||||
|
msgid "802.11n - 20 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:11
|
||||||
|
msgid "802.11n - 40 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:12
|
||||||
|
msgid "802.11ac - 20 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:13
|
||||||
|
msgid "802.11ac - 40 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:14
|
||||||
|
msgid "802.11ac - 80 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:21
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" WPA2 pre-shared key, that is required to connect to the network.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:24
|
||||||
|
msgid "If set, network is not visible when scanning for available networks."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:25
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" The 2.4 GHz band is more widely supported by clients, but tends "
|
||||||
|
"to have more interference. The 5 GHz band is a\n"
|
||||||
|
" newer standard and may not be supported by all your devices. It "
|
||||||
|
"usually has less interference, but the signal\n"
|
||||||
|
" does not carry so well indoors."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:29
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Change this to adjust 802.11n/ac mode of operation. 802.11n with "
|
||||||
|
"40 MHz wide channels can yield higher\n"
|
||||||
|
" throughput but can cause more interference in the network. If you"
|
||||||
|
" don't know what to choose, use the default\n"
|
||||||
|
" option with 20 MHz wide channel.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:34
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Enables Wi-Fi for guests, which is separated from LAN network. "
|
||||||
|
"Devices connected to this network are allowed to\n"
|
||||||
|
" access the internet, but aren't allowed to access other devices "
|
||||||
|
"and the configuration interface of the router.\n"
|
||||||
|
" Parameters of the guest network can be set in the Guest network "
|
||||||
|
"tab.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/form/components/ForisForm.js:112
|
||||||
msgid "Settings saved successfully"
|
msgid "Settings saved successfully"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:140
|
#: src/form/components/ForisForm.js:165
|
||||||
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -110,25 +239,10 @@ msgstr ""
|
|||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/utils/ErrorMessage.js:13
|
#: src/utils/ErrorMessage.js:16
|
||||||
msgid "An error occurred while fetching data."
|
msgid "An error occurred while fetching data."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Settings were successfully saved."
|
#~ msgid "An unknown error occurred. Check the console for more info."
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Settings update was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Warning!"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot requestq failed."
|
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
@ -7,8 +7,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2019-11-29 16:27+0100\n"
|
"POT-Creation-Date: 2020-02-20 17:28+0100\n"
|
||||||
"PO-Revision-Date: 2019-08-28 17:55+0200\n"
|
"PO-Revision-Date: 2019-02-19 13:34+0100\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language: it\n"
|
"Language: it\n"
|
||||||
"Language-Team: it <LL@li.org>\n"
|
"Language-Team: it <LL@li.org>\n"
|
||||||
@ -16,7 +16,7 @@ msgstr ""
|
|||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.7.0\n"
|
"Generated-By: Babel 2.8.0\n"
|
||||||
|
|
||||||
#: src/validations.js:13
|
#: src/validations.js:13
|
||||||
msgid "This is not a valid IPv4 address."
|
msgid "This is not a valid IPv4 address."
|
||||||
@ -58,11 +58,7 @@ msgstr ""
|
|||||||
msgid "No response received."
|
msgid "No response received."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/api/utils.js:70
|
#: src/api/utils.js:76
|
||||||
msgid "An unknown error occurred. Check the console for more info."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/api/utils.js:77
|
|
||||||
msgid "An unknown API error occurred."
|
msgid "An unknown API error occurred."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -90,11 +86,144 @@ msgstr ""
|
|||||||
msgid "Confirm reboot"
|
msgid "Confirm reboot"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:88
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:39
|
||||||
|
msgid "An error occurred during resetting Wi-Fi settings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:41
|
||||||
|
msgid "Wi-Fi settings are set to defaults."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:53
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:69
|
||||||
|
msgid "Reset Wi-Fi Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:55
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
"If a number of wireless cards doesn't match, you may try to reset the Wi-"
|
||||||
|
"Fi settings. Note that this will remove the\n"
|
||||||
|
"current Wi-Fi configuration and restore the default values.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:82
|
||||||
|
msgid "Wi-Fi ${deviceID + 1}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:84
|
||||||
|
msgid "Enable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:215
|
||||||
|
msgid "auto"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:37
|
||||||
|
msgid "Enable Guest Wifi"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:77
|
||||||
|
msgid "Password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:60
|
||||||
|
msgid "Wi-Fi QR Code"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:80
|
||||||
|
msgid "Download PDF"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:73
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:81
|
||||||
|
msgid "SSID can't be longer than 32 symbols"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:74
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:82
|
||||||
|
msgid "SSID can't be empty"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:76
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:84
|
||||||
|
msgid "Password must contain at least 8 symbols"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:9
|
||||||
|
msgid "Disabled"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:10
|
||||||
|
msgid "802.11n - 20 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:11
|
||||||
|
msgid "802.11n - 40 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:12
|
||||||
|
msgid "802.11ac - 20 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:13
|
||||||
|
msgid "802.11ac - 40 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:14
|
||||||
|
msgid "802.11ac - 80 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:21
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" WPA2 pre-shared key, that is required to connect to the network.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:24
|
||||||
|
msgid "If set, network is not visible when scanning for available networks."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:25
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" The 2.4 GHz band is more widely supported by clients, but tends "
|
||||||
|
"to have more interference. The 5 GHz band is a\n"
|
||||||
|
" newer standard and may not be supported by all your devices. It "
|
||||||
|
"usually has less interference, but the signal\n"
|
||||||
|
" does not carry so well indoors."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:29
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Change this to adjust 802.11n/ac mode of operation. 802.11n with "
|
||||||
|
"40 MHz wide channels can yield higher\n"
|
||||||
|
" throughput but can cause more interference in the network. If you"
|
||||||
|
" don't know what to choose, use the default\n"
|
||||||
|
" option with 20 MHz wide channel.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:34
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Enables Wi-Fi for guests, which is separated from LAN network. "
|
||||||
|
"Devices connected to this network are allowed to\n"
|
||||||
|
" access the internet, but aren't allowed to access other devices "
|
||||||
|
"and the configuration interface of the router.\n"
|
||||||
|
" Parameters of the guest network can be set in the Guest network "
|
||||||
|
"tab.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/form/components/ForisForm.js:112
|
||||||
msgid "Settings saved successfully"
|
msgid "Settings saved successfully"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:140
|
#: src/form/components/ForisForm.js:165
|
||||||
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -110,25 +239,10 @@ msgstr ""
|
|||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/utils/ErrorMessage.js:13
|
#: src/utils/ErrorMessage.js:16
|
||||||
msgid "An error occurred while fetching data."
|
msgid "An error occurred while fetching data."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Settings were successfully saved."
|
#~ msgid "An unknown error occurred. Check the console for more info."
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Settings update was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Warning!"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot requestq failed."
|
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
@ -7,16 +7,17 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2019-11-29 16:27+0100\n"
|
"POT-Creation-Date: 2020-02-20 17:28+0100\n"
|
||||||
"PO-Revision-Date: 2019-08-28 17:55+0200\n"
|
"PO-Revision-Date: 2019-10-16 10:08+0000\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: Scott Anecito <scott.anecito@protonmail.com>\n"
|
||||||
"Language: ja\n"
|
"Language: ja\n"
|
||||||
"Language-Team: ja <LL@li.org>\n"
|
"Language-Team: Japanese "
|
||||||
|
"<https://hosted.weblate.org/projects/turris/reforis/ja/>\n"
|
||||||
"Plural-Forms: nplurals=1; plural=0\n"
|
"Plural-Forms: nplurals=1; plural=0\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.7.0\n"
|
"Generated-By: Babel 2.8.0\n"
|
||||||
|
|
||||||
#: src/validations.js:13
|
#: src/validations.js:13
|
||||||
msgid "This is not a valid IPv4 address."
|
msgid "This is not a valid IPv4 address."
|
||||||
@ -58,11 +59,7 @@ msgstr ""
|
|||||||
msgid "No response received."
|
msgid "No response received."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/api/utils.js:70
|
#: src/api/utils.js:76
|
||||||
msgid "An unknown error occurred. Check the console for more info."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/api/utils.js:77
|
|
||||||
msgid "An unknown API error occurred."
|
msgid "An unknown API error occurred."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -72,7 +69,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/common/RebootButton.js:54
|
#: src/common/RebootButton.js:54
|
||||||
msgid "Reboot"
|
msgid "Reboot"
|
||||||
msgstr ""
|
msgstr "再起動"
|
||||||
|
|
||||||
#: src/common/RebootButton.js:69
|
#: src/common/RebootButton.js:69
|
||||||
msgid "Reboot confirmation"
|
msgid "Reboot confirmation"
|
||||||
@ -90,17 +87,150 @@ msgstr ""
|
|||||||
msgid "Confirm reboot"
|
msgid "Confirm reboot"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:88
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:39
|
||||||
|
msgid "An error occurred during resetting Wi-Fi settings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:41
|
||||||
|
msgid "Wi-Fi settings are set to defaults."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:53
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:69
|
||||||
|
msgid "Reset Wi-Fi Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:55
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
"If a number of wireless cards doesn't match, you may try to reset the Wi-"
|
||||||
|
"Fi settings. Note that this will remove the\n"
|
||||||
|
"current Wi-Fi configuration and restore the default values.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:82
|
||||||
|
msgid "Wi-Fi ${deviceID + 1}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:84
|
||||||
|
msgid "Enable"
|
||||||
|
msgstr "有効"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:215
|
||||||
|
msgid "auto"
|
||||||
|
msgstr "自動"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:37
|
||||||
|
msgid "Enable Guest Wifi"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:77
|
||||||
|
msgid "Password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:60
|
||||||
|
msgid "Wi-Fi QR Code"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:80
|
||||||
|
msgid "Download PDF"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:73
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:81
|
||||||
|
msgid "SSID can't be longer than 32 symbols"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:74
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:82
|
||||||
|
msgid "SSID can't be empty"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:76
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:84
|
||||||
|
msgid "Password must contain at least 8 symbols"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:9
|
||||||
|
msgid "Disabled"
|
||||||
|
msgstr "無効"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:10
|
||||||
|
msgid "802.11n - 20 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:11
|
||||||
|
msgid "802.11n - 40 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:12
|
||||||
|
msgid "802.11ac - 20 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:13
|
||||||
|
msgid "802.11ac - 40 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:14
|
||||||
|
msgid "802.11ac - 80 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:21
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" WPA2 pre-shared key, that is required to connect to the network.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:24
|
||||||
|
msgid "If set, network is not visible when scanning for available networks."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:25
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" The 2.4 GHz band is more widely supported by clients, but tends "
|
||||||
|
"to have more interference. The 5 GHz band is a\n"
|
||||||
|
" newer standard and may not be supported by all your devices. It "
|
||||||
|
"usually has less interference, but the signal\n"
|
||||||
|
" does not carry so well indoors."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:29
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Change this to adjust 802.11n/ac mode of operation. 802.11n with "
|
||||||
|
"40 MHz wide channels can yield higher\n"
|
||||||
|
" throughput but can cause more interference in the network. If you"
|
||||||
|
" don't know what to choose, use the default\n"
|
||||||
|
" option with 20 MHz wide channel.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:34
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Enables Wi-Fi for guests, which is separated from LAN network. "
|
||||||
|
"Devices connected to this network are allowed to\n"
|
||||||
|
" access the internet, but aren't allowed to access other devices "
|
||||||
|
"and the configuration interface of the router.\n"
|
||||||
|
" Parameters of the guest network can be set in the Guest network "
|
||||||
|
"tab.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/form/components/ForisForm.js:112
|
||||||
msgid "Settings saved successfully"
|
msgid "Settings saved successfully"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:140
|
#: src/form/components/ForisForm.js:165
|
||||||
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/SubmitButton.js:32
|
#: src/form/components/SubmitButton.js:32
|
||||||
msgid "Updating"
|
msgid "Updating"
|
||||||
msgstr ""
|
msgstr "アップデート中…"
|
||||||
|
|
||||||
#: src/form/components/SubmitButton.js:35
|
#: src/form/components/SubmitButton.js:35
|
||||||
msgid "Load settings"
|
msgid "Load settings"
|
||||||
@ -110,25 +240,10 @@ msgstr ""
|
|||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/utils/ErrorMessage.js:13
|
#: src/utils/ErrorMessage.js:16
|
||||||
msgid "An error occurred while fetching data."
|
msgid "An error occurred while fetching data."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Settings were successfully saved."
|
#~ msgid "An unknown error occurred. Check the console for more info."
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Settings update was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Warning!"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot requestq failed."
|
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
@ -7,8 +7,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2019-11-29 16:27+0100\n"
|
"POT-Creation-Date: 2020-02-20 17:28+0100\n"
|
||||||
"PO-Revision-Date: 2019-08-28 17:55+0200\n"
|
"PO-Revision-Date: 2019-02-19 13:34+0100\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language: ko\n"
|
"Language: ko\n"
|
||||||
"Language-Team: ko <LL@li.org>\n"
|
"Language-Team: ko <LL@li.org>\n"
|
||||||
@ -16,7 +16,7 @@ msgstr ""
|
|||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.7.0\n"
|
"Generated-By: Babel 2.8.0\n"
|
||||||
|
|
||||||
#: src/validations.js:13
|
#: src/validations.js:13
|
||||||
msgid "This is not a valid IPv4 address."
|
msgid "This is not a valid IPv4 address."
|
||||||
@ -58,11 +58,7 @@ msgstr ""
|
|||||||
msgid "No response received."
|
msgid "No response received."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/api/utils.js:70
|
#: src/api/utils.js:76
|
||||||
msgid "An unknown error occurred. Check the console for more info."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/api/utils.js:77
|
|
||||||
msgid "An unknown API error occurred."
|
msgid "An unknown API error occurred."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -90,11 +86,144 @@ msgstr ""
|
|||||||
msgid "Confirm reboot"
|
msgid "Confirm reboot"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:88
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:39
|
||||||
|
msgid "An error occurred during resetting Wi-Fi settings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:41
|
||||||
|
msgid "Wi-Fi settings are set to defaults."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:53
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:69
|
||||||
|
msgid "Reset Wi-Fi Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:55
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
"If a number of wireless cards doesn't match, you may try to reset the Wi-"
|
||||||
|
"Fi settings. Note that this will remove the\n"
|
||||||
|
"current Wi-Fi configuration and restore the default values.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:82
|
||||||
|
msgid "Wi-Fi ${deviceID + 1}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:84
|
||||||
|
msgid "Enable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:215
|
||||||
|
msgid "auto"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:37
|
||||||
|
msgid "Enable Guest Wifi"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:77
|
||||||
|
msgid "Password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:60
|
||||||
|
msgid "Wi-Fi QR Code"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:80
|
||||||
|
msgid "Download PDF"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:73
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:81
|
||||||
|
msgid "SSID can't be longer than 32 symbols"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:74
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:82
|
||||||
|
msgid "SSID can't be empty"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:76
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:84
|
||||||
|
msgid "Password must contain at least 8 symbols"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:9
|
||||||
|
msgid "Disabled"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:10
|
||||||
|
msgid "802.11n - 20 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:11
|
||||||
|
msgid "802.11n - 40 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:12
|
||||||
|
msgid "802.11ac - 20 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:13
|
||||||
|
msgid "802.11ac - 40 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:14
|
||||||
|
msgid "802.11ac - 80 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:21
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" WPA2 pre-shared key, that is required to connect to the network.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:24
|
||||||
|
msgid "If set, network is not visible when scanning for available networks."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:25
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" The 2.4 GHz band is more widely supported by clients, but tends "
|
||||||
|
"to have more interference. The 5 GHz band is a\n"
|
||||||
|
" newer standard and may not be supported by all your devices. It "
|
||||||
|
"usually has less interference, but the signal\n"
|
||||||
|
" does not carry so well indoors."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:29
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Change this to adjust 802.11n/ac mode of operation. 802.11n with "
|
||||||
|
"40 MHz wide channels can yield higher\n"
|
||||||
|
" throughput but can cause more interference in the network. If you"
|
||||||
|
" don't know what to choose, use the default\n"
|
||||||
|
" option with 20 MHz wide channel.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:34
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Enables Wi-Fi for guests, which is separated from LAN network. "
|
||||||
|
"Devices connected to this network are allowed to\n"
|
||||||
|
" access the internet, but aren't allowed to access other devices "
|
||||||
|
"and the configuration interface of the router.\n"
|
||||||
|
" Parameters of the guest network can be set in the Guest network "
|
||||||
|
"tab.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/form/components/ForisForm.js:112
|
||||||
msgid "Settings saved successfully"
|
msgid "Settings saved successfully"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:140
|
#: src/form/components/ForisForm.js:165
|
||||||
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -110,25 +239,10 @@ msgstr ""
|
|||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/utils/ErrorMessage.js:13
|
#: src/utils/ErrorMessage.js:16
|
||||||
msgid "An error occurred while fetching data."
|
msgid "An error occurred while fetching data."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Settings were successfully saved."
|
#~ msgid "An unknown error occurred. Check the console for more info."
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Settings update was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Warning!"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot requestq failed."
|
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
@ -7,8 +7,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2019-11-29 16:27+0100\n"
|
"POT-Creation-Date: 2020-02-20 17:28+0100\n"
|
||||||
"PO-Revision-Date: 2019-08-28 17:55+0200\n"
|
"PO-Revision-Date: 2019-02-19 13:34+0100\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language: lt\n"
|
"Language: lt\n"
|
||||||
"Language-Team: lt <LL@li.org>\n"
|
"Language-Team: lt <LL@li.org>\n"
|
||||||
@ -17,7 +17,7 @@ msgstr ""
|
|||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.7.0\n"
|
"Generated-By: Babel 2.8.0\n"
|
||||||
|
|
||||||
#: src/validations.js:13
|
#: src/validations.js:13
|
||||||
msgid "This is not a valid IPv4 address."
|
msgid "This is not a valid IPv4 address."
|
||||||
@ -59,11 +59,7 @@ msgstr ""
|
|||||||
msgid "No response received."
|
msgid "No response received."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/api/utils.js:70
|
#: src/api/utils.js:76
|
||||||
msgid "An unknown error occurred. Check the console for more info."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/api/utils.js:77
|
|
||||||
msgid "An unknown API error occurred."
|
msgid "An unknown API error occurred."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -91,11 +87,144 @@ msgstr ""
|
|||||||
msgid "Confirm reboot"
|
msgid "Confirm reboot"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:88
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:39
|
||||||
|
msgid "An error occurred during resetting Wi-Fi settings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:41
|
||||||
|
msgid "Wi-Fi settings are set to defaults."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:53
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:69
|
||||||
|
msgid "Reset Wi-Fi Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:55
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
"If a number of wireless cards doesn't match, you may try to reset the Wi-"
|
||||||
|
"Fi settings. Note that this will remove the\n"
|
||||||
|
"current Wi-Fi configuration and restore the default values.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:82
|
||||||
|
msgid "Wi-Fi ${deviceID + 1}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:84
|
||||||
|
msgid "Enable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:215
|
||||||
|
msgid "auto"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:37
|
||||||
|
msgid "Enable Guest Wifi"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:77
|
||||||
|
msgid "Password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:60
|
||||||
|
msgid "Wi-Fi QR Code"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:80
|
||||||
|
msgid "Download PDF"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:73
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:81
|
||||||
|
msgid "SSID can't be longer than 32 symbols"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:74
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:82
|
||||||
|
msgid "SSID can't be empty"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:76
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:84
|
||||||
|
msgid "Password must contain at least 8 symbols"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:9
|
||||||
|
msgid "Disabled"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:10
|
||||||
|
msgid "802.11n - 20 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:11
|
||||||
|
msgid "802.11n - 40 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:12
|
||||||
|
msgid "802.11ac - 20 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:13
|
||||||
|
msgid "802.11ac - 40 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:14
|
||||||
|
msgid "802.11ac - 80 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:21
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" WPA2 pre-shared key, that is required to connect to the network.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:24
|
||||||
|
msgid "If set, network is not visible when scanning for available networks."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:25
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" The 2.4 GHz band is more widely supported by clients, but tends "
|
||||||
|
"to have more interference. The 5 GHz band is a\n"
|
||||||
|
" newer standard and may not be supported by all your devices. It "
|
||||||
|
"usually has less interference, but the signal\n"
|
||||||
|
" does not carry so well indoors."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:29
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Change this to adjust 802.11n/ac mode of operation. 802.11n with "
|
||||||
|
"40 MHz wide channels can yield higher\n"
|
||||||
|
" throughput but can cause more interference in the network. If you"
|
||||||
|
" don't know what to choose, use the default\n"
|
||||||
|
" option with 20 MHz wide channel.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:34
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Enables Wi-Fi for guests, which is separated from LAN network. "
|
||||||
|
"Devices connected to this network are allowed to\n"
|
||||||
|
" access the internet, but aren't allowed to access other devices "
|
||||||
|
"and the configuration interface of the router.\n"
|
||||||
|
" Parameters of the guest network can be set in the Guest network "
|
||||||
|
"tab.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/form/components/ForisForm.js:112
|
||||||
msgid "Settings saved successfully"
|
msgid "Settings saved successfully"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:140
|
#: src/form/components/ForisForm.js:165
|
||||||
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -111,25 +240,10 @@ msgstr ""
|
|||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/utils/ErrorMessage.js:13
|
#: src/utils/ErrorMessage.js:16
|
||||||
msgid "An error occurred while fetching data."
|
msgid "An error occurred while fetching data."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Settings were successfully saved."
|
#~ msgid "An unknown error occurred. Check the console for more info."
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Settings update was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Warning!"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot requestq failed."
|
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
7
translations/merge.py
Normal file
7
translations/merge.py
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
for entry in os.scandir("."):
|
||||||
|
if entry.is_dir():
|
||||||
|
print(entry.name)
|
||||||
|
os.system(f"msgmerge /home/mcjlnrtwcz/Repositories/reforis/reforis/translations/{entry.name}/LC_MESSAGES/messages.po forisjs.pot -o {entry.name}/LC_MESSAGES/forisjs.po")
|
@ -7,72 +7,72 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2019-11-29 16:27+0100\n"
|
"POT-Creation-Date: 2020-02-20 17:28+0100\n"
|
||||||
"PO-Revision-Date: 2019-08-28 17:56+0200\n"
|
"PO-Revision-Date: 2019-11-10 16:04+0000\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: Allan Nordhøy <epost@anotheragency.no>\n"
|
||||||
"Language: nb\n"
|
"Language: nb\n"
|
||||||
"Language-Team: nb <LL@li.org>\n"
|
"Language-Team: Norwegian Bokmål "
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
"<https://hosted.weblate.org/projects/turris/reforis/nb_NO/>\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=n != 1\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.7.0\n"
|
"Generated-By: Babel 2.8.0\n"
|
||||||
|
|
||||||
#: src/validations.js:13
|
#: src/validations.js:13
|
||||||
msgid "This is not a valid IPv4 address."
|
msgid "This is not a valid IPv4 address."
|
||||||
msgstr ""
|
msgstr "Dette er ikke en gyldig IPv4-adresse."
|
||||||
|
|
||||||
#: src/validations.js:14
|
#: src/validations.js:14
|
||||||
msgid "This is not a valid IPv6 address."
|
msgid "This is not a valid IPv6 address."
|
||||||
msgstr ""
|
msgstr "Dette er ikke en gyldig IPv6-adresse."
|
||||||
|
|
||||||
#: src/validations.js:15
|
#: src/validations.js:15
|
||||||
|
#, fuzzy
|
||||||
msgid "This is not a valid IPv6 prefix."
|
msgid "This is not a valid IPv6 prefix."
|
||||||
msgstr ""
|
msgstr "Dette er ikke et gyldig IPv6-prefiks."
|
||||||
|
|
||||||
#: src/validations.js:16
|
#: src/validations.js:16
|
||||||
msgid "This is not a valid domain name."
|
msgid "This is not a valid domain name."
|
||||||
msgstr ""
|
msgstr "Dette er ikke et gyldig domenenavn."
|
||||||
|
|
||||||
#: src/validations.js:17
|
#: src/validations.js:17
|
||||||
msgid "This is not a valid DUID."
|
msgid "This is not a valid DUID."
|
||||||
msgstr ""
|
msgstr "Dette er ikke en gyldig DUID."
|
||||||
|
|
||||||
#: src/validations.js:18
|
#: src/validations.js:18
|
||||||
msgid "This is not a valid MAC address."
|
msgid "This is not a valid MAC address."
|
||||||
msgstr ""
|
msgstr "Dette er ikke en gyldig MAC-adresse."
|
||||||
|
|
||||||
#: src/validations.js:19
|
#: src/validations.js:19
|
||||||
msgid "Doesn't contain a list of emails separated by commas."
|
msgid "Doesn't contain a list of emails separated by commas."
|
||||||
msgstr ""
|
msgstr "Inneholder ikke en kommainndelt liste med e-postadresser."
|
||||||
|
|
||||||
#: src/api/utils.js:58
|
#: src/api/utils.js:58
|
||||||
msgid "The session is expired. Please log in again."
|
msgid "The session is expired. Please log in again."
|
||||||
msgstr ""
|
msgstr "Økten har utløpt. Logg inn igjen."
|
||||||
|
|
||||||
#: src/api/utils.js:63
|
#: src/api/utils.js:63
|
||||||
msgid "Timeout error occurred."
|
msgid "Timeout error occurred."
|
||||||
msgstr ""
|
msgstr "Tidsavbrudd inntraff."
|
||||||
|
|
||||||
#: src/api/utils.js:66
|
#: src/api/utils.js:66
|
||||||
msgid "No response received."
|
msgid "No response received."
|
||||||
msgstr ""
|
msgstr "Fikk ikke svar."
|
||||||
|
|
||||||
#: src/api/utils.js:70
|
#: src/api/utils.js:76
|
||||||
msgid "An unknown error occurred. Check the console for more info."
|
#, fuzzy
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/api/utils.js:77
|
|
||||||
msgid "An unknown API error occurred."
|
msgid "An unknown API error occurred."
|
||||||
msgstr ""
|
msgstr "Ukjent API-feil."
|
||||||
|
|
||||||
#: src/common/RebootButton.js:33
|
#: src/common/RebootButton.js:33
|
||||||
|
#, fuzzy
|
||||||
msgid "Reboot request failed."
|
msgid "Reboot request failed."
|
||||||
msgstr ""
|
msgstr "Omstart kreves"
|
||||||
|
|
||||||
#: src/common/RebootButton.js:54
|
#: src/common/RebootButton.js:54
|
||||||
msgid "Reboot"
|
msgid "Reboot"
|
||||||
msgstr ""
|
msgstr "Start på ny"
|
||||||
|
|
||||||
#: src/common/RebootButton.js:69
|
#: src/common/RebootButton.js:69
|
||||||
msgid "Reboot confirmation"
|
msgid "Reboot confirmation"
|
||||||
@ -90,45 +90,189 @@ msgstr ""
|
|||||||
msgid "Confirm reboot"
|
msgid "Confirm reboot"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:88
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:39
|
||||||
msgid "Settings saved successfully"
|
msgid "An error occurred during resetting Wi-Fi settings."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:140
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:41
|
||||||
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
msgid "Wi-Fi settings are set to defaults."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:53
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:69
|
||||||
|
msgid "Reset Wi-Fi Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:55
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
"If a number of wireless cards doesn't match, you may try to reset the Wi-"
|
||||||
|
"Fi settings. Note that this will remove the\n"
|
||||||
|
"current Wi-Fi configuration and restore the default values.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:82
|
||||||
|
msgid "Wi-Fi ${deviceID + 1}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:84
|
||||||
|
msgid "Enable"
|
||||||
|
msgstr "Skru på"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:215
|
||||||
|
msgid "auto"
|
||||||
|
msgstr "automatisk"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:37
|
||||||
|
msgid "Enable Guest Wifi"
|
||||||
|
msgstr "Skru på gjestetrådløsnett"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:77
|
||||||
|
msgid "Password"
|
||||||
|
msgstr "Passord"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:60
|
||||||
|
msgid "Wi-Fi QR Code"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:80
|
||||||
|
msgid "Download PDF"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:73
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:81
|
||||||
|
msgid "SSID can't be longer than 32 symbols"
|
||||||
|
msgstr "SSID kan ikke være lengre enn 32 symboler"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:74
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:82
|
||||||
|
msgid "SSID can't be empty"
|
||||||
|
msgstr "SSID kan ikke stå tomt."
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:76
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:84
|
||||||
|
msgid "Password must contain at least 8 symbols"
|
||||||
|
msgstr "Passordet må inneholde minst 8 tegn"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:9
|
||||||
|
msgid "Disabled"
|
||||||
|
msgstr "Avskrudd"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:10
|
||||||
|
msgid "802.11n - 20 MHz wide channel"
|
||||||
|
msgstr "802.11n - 20 MHz vid kanal"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:11
|
||||||
|
msgid "802.11n - 40 MHz wide channel"
|
||||||
|
msgstr "802.11n - 40 MHz vid kanal"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:12
|
||||||
|
msgid "802.11ac - 20 MHz wide channel"
|
||||||
|
msgstr "802.11ac - 20 MHz vid kanal"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:13
|
||||||
|
msgid "802.11ac - 40 MHz wide channel"
|
||||||
|
msgstr "802.11ac - 40 MHz vid kanal"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:14
|
||||||
|
msgid "802.11ac - 80 MHz wide channel"
|
||||||
|
msgstr "802.11ac - 80 MHz vid kanal"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:21
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" WPA2 pre-shared key, that is required to connect to the network.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
" WPA2 med forhåndsdelt nøkkel, (som kreves for å koble til "
|
||||||
|
"nettverket).\n"
|
||||||
|
" "
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:24
|
||||||
|
msgid "If set, network is not visible when scanning for available networks."
|
||||||
|
msgstr "Skjuler nettverket fra nettverkslister."
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:25
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" The 2.4 GHz band is more widely supported by clients, but tends "
|
||||||
|
"to have more interference. The 5 GHz band is a\n"
|
||||||
|
" newer standard and may not be supported by all your devices. It "
|
||||||
|
"usually has less interference, but the signal\n"
|
||||||
|
" does not carry so well indoors."
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
" 2.4 GHz-båndet støttes av flere klienter, men har vanligvis flere"
|
||||||
|
" forstyrrelser. 5 Ghz-båndet er en nyere\n"
|
||||||
|
" standard, og kan ikke støttes av alle enhetene dine. Det har "
|
||||||
|
"vanligvis mindre forstyrrelse, men signalet\n"
|
||||||
|
" er mer utsatt for hindringer innendørs."
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:29
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Change this to adjust 802.11n/ac mode of operation. 802.11n with "
|
||||||
|
"40 MHz wide channels can yield higher\n"
|
||||||
|
" throughput but can cause more interference in the network. If you"
|
||||||
|
" don't know what to choose, use the default\n"
|
||||||
|
" option with 20 MHz wide channel.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
" Endringer har justerer 802.11n/ac-modus. 802.11.n med 40 Mhz "
|
||||||
|
"brede kanaler kan gi høyere\n"
|
||||||
|
" gjennomstrømming, men kan forårsake mer forstyrrelse i "
|
||||||
|
"nettverket. Hvis du ikke vet hva du skal velge, bruk\n"
|
||||||
|
" forvalget på 20 MHz brede kanaler.\n"
|
||||||
|
" "
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:34
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Enables Wi-Fi for guests, which is separated from LAN network. "
|
||||||
|
"Devices connected to this network are allowed to\n"
|
||||||
|
" access the internet, but aren't allowed to access other devices "
|
||||||
|
"and the configuration interface of the router.\n"
|
||||||
|
" Parameters of the guest network can be set in the Guest network "
|
||||||
|
"tab.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
" Skrur på Wi-Fi for gjester, som er adskilt LAN-nettverket. "
|
||||||
|
"Enheter som kobler til dette nettverket tillates å\n"
|
||||||
|
" bruke Internett, men tillates ikke å nå andre enheter og "
|
||||||
|
"oppsettsgrensesnittet til ruteren..\n"
|
||||||
|
" Parameter for gjestenettverket kan settes i gjestenettverksfanen."
|
||||||
|
"\n"
|
||||||
|
" "
|
||||||
|
|
||||||
|
#: src/form/components/ForisForm.js:112
|
||||||
|
msgid "Settings saved successfully"
|
||||||
|
msgstr "Innstillinger lagret"
|
||||||
|
|
||||||
|
#: src/form/components/ForisForm.js:165
|
||||||
|
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
||||||
|
msgstr "Endringer du har gjort vil ikke bli lagret. Er du sikker?"
|
||||||
|
|
||||||
#: src/form/components/SubmitButton.js:32
|
#: src/form/components/SubmitButton.js:32
|
||||||
|
#, fuzzy
|
||||||
msgid "Updating"
|
msgid "Updating"
|
||||||
msgstr ""
|
msgstr "Oppdaterer"
|
||||||
|
|
||||||
#: src/form/components/SubmitButton.js:35
|
#: src/form/components/SubmitButton.js:35
|
||||||
msgid "Load settings"
|
msgid "Load settings"
|
||||||
msgstr ""
|
msgstr "Last inn innstillinger"
|
||||||
|
|
||||||
#: src/form/components/SubmitButton.js:38
|
#: src/form/components/SubmitButton.js:38
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr ""
|
msgstr "Lagre"
|
||||||
|
|
||||||
#: src/utils/ErrorMessage.js:13
|
#: src/utils/ErrorMessage.js:16
|
||||||
msgid "An error occurred while fetching data."
|
msgid "An error occurred while fetching data."
|
||||||
msgstr ""
|
msgstr "Kunne ikke hente data."
|
||||||
|
|
||||||
#~ msgid "Settings were successfully saved."
|
#~ msgid "An unknown error occurred. Check the console for more info."
|
||||||
#~ msgstr ""
|
#~ msgstr "Ukjent feil. Sjekk konsollen for mer info."
|
||||||
|
|
||||||
#~ msgid "Settings update was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Warning!"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot requestq failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2019-11-29 16:27+0100\n"
|
"POT-Creation-Date: 2020-02-20 17:28+0100\n"
|
||||||
"PO-Revision-Date: 2019-08-28 17:55+0200\n"
|
"PO-Revision-Date: 2019-08-28 17:55+0200\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language: nb_NO\n"
|
"Language: nb_NO\n"
|
||||||
@ -16,7 +16,7 @@ msgstr ""
|
|||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.7.0\n"
|
"Generated-By: Babel 2.8.0\n"
|
||||||
|
|
||||||
#: src/validations.js:13
|
#: src/validations.js:13
|
||||||
msgid "This is not a valid IPv4 address."
|
msgid "This is not a valid IPv4 address."
|
||||||
@ -58,11 +58,7 @@ msgstr ""
|
|||||||
msgid "No response received."
|
msgid "No response received."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/api/utils.js:70
|
#: src/api/utils.js:76
|
||||||
msgid "An unknown error occurred. Check the console for more info."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/api/utils.js:77
|
|
||||||
msgid "An unknown API error occurred."
|
msgid "An unknown API error occurred."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -90,11 +86,144 @@ msgstr ""
|
|||||||
msgid "Confirm reboot"
|
msgid "Confirm reboot"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:88
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:39
|
||||||
|
msgid "An error occurred during resetting Wi-Fi settings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:41
|
||||||
|
msgid "Wi-Fi settings are set to defaults."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:53
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:69
|
||||||
|
msgid "Reset Wi-Fi Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:55
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
"If a number of wireless cards doesn't match, you may try to reset the Wi-"
|
||||||
|
"Fi settings. Note that this will remove the\n"
|
||||||
|
"current Wi-Fi configuration and restore the default values.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:82
|
||||||
|
msgid "Wi-Fi ${deviceID + 1}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:84
|
||||||
|
msgid "Enable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:215
|
||||||
|
msgid "auto"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:37
|
||||||
|
msgid "Enable Guest Wifi"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:77
|
||||||
|
msgid "Password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:60
|
||||||
|
msgid "Wi-Fi QR Code"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:80
|
||||||
|
msgid "Download PDF"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:73
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:81
|
||||||
|
msgid "SSID can't be longer than 32 symbols"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:74
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:82
|
||||||
|
msgid "SSID can't be empty"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:76
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:84
|
||||||
|
msgid "Password must contain at least 8 symbols"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:9
|
||||||
|
msgid "Disabled"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:10
|
||||||
|
msgid "802.11n - 20 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:11
|
||||||
|
msgid "802.11n - 40 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:12
|
||||||
|
msgid "802.11ac - 20 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:13
|
||||||
|
msgid "802.11ac - 40 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:14
|
||||||
|
msgid "802.11ac - 80 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:21
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" WPA2 pre-shared key, that is required to connect to the network.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:24
|
||||||
|
msgid "If set, network is not visible when scanning for available networks."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:25
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" The 2.4 GHz band is more widely supported by clients, but tends "
|
||||||
|
"to have more interference. The 5 GHz band is a\n"
|
||||||
|
" newer standard and may not be supported by all your devices. It "
|
||||||
|
"usually has less interference, but the signal\n"
|
||||||
|
" does not carry so well indoors."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:29
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Change this to adjust 802.11n/ac mode of operation. 802.11n with "
|
||||||
|
"40 MHz wide channels can yield higher\n"
|
||||||
|
" throughput but can cause more interference in the network. If you"
|
||||||
|
" don't know what to choose, use the default\n"
|
||||||
|
" option with 20 MHz wide channel.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:34
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Enables Wi-Fi for guests, which is separated from LAN network. "
|
||||||
|
"Devices connected to this network are allowed to\n"
|
||||||
|
" access the internet, but aren't allowed to access other devices "
|
||||||
|
"and the configuration interface of the router.\n"
|
||||||
|
" Parameters of the guest network can be set in the Guest network "
|
||||||
|
"tab.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/form/components/ForisForm.js:112
|
||||||
msgid "Settings saved successfully"
|
msgid "Settings saved successfully"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:140
|
#: src/form/components/ForisForm.js:165
|
||||||
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -110,25 +239,10 @@ msgstr ""
|
|||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/utils/ErrorMessage.js:13
|
#: src/utils/ErrorMessage.js:16
|
||||||
msgid "An error occurred while fetching data."
|
msgid "An error occurred while fetching data."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Settings were successfully saved."
|
#~ msgid "An unknown error occurred. Check the console for more info."
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Settings update was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Warning!"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot requestq failed."
|
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
@ -7,44 +7,45 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2019-11-29 16:27+0100\n"
|
"POT-Creation-Date: 2020-02-20 17:28+0100\n"
|
||||||
"PO-Revision-Date: 2019-08-28 17:56+0200\n"
|
"PO-Revision-Date: 2019-10-15 13:02+0000\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: powerburner-nl <peter.mulder.1981@gmail.com>\n"
|
||||||
"Language: nl\n"
|
"Language: nl\n"
|
||||||
"Language-Team: nl <LL@li.org>\n"
|
"Language-Team: Dutch "
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
"<https://hosted.weblate.org/projects/turris/reforis/nl/>\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=n != 1\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.7.0\n"
|
"Generated-By: Babel 2.8.0\n"
|
||||||
|
|
||||||
#: src/validations.js:13
|
#: src/validations.js:13
|
||||||
msgid "This is not a valid IPv4 address."
|
msgid "This is not a valid IPv4 address."
|
||||||
msgstr ""
|
msgstr "Dit is geen geldig IPv4-adres."
|
||||||
|
|
||||||
#: src/validations.js:14
|
#: src/validations.js:14
|
||||||
msgid "This is not a valid IPv6 address."
|
msgid "This is not a valid IPv6 address."
|
||||||
msgstr ""
|
msgstr "Dit is geen geldig IPv6-adres."
|
||||||
|
|
||||||
#: src/validations.js:15
|
#: src/validations.js:15
|
||||||
msgid "This is not a valid IPv6 prefix."
|
msgid "This is not a valid IPv6 prefix."
|
||||||
msgstr ""
|
msgstr "Dit is geen geldig IPv6-voorvoegsel."
|
||||||
|
|
||||||
#: src/validations.js:16
|
#: src/validations.js:16
|
||||||
msgid "This is not a valid domain name."
|
msgid "This is not a valid domain name."
|
||||||
msgstr ""
|
msgstr "Dit is geen geldige domeinnaam."
|
||||||
|
|
||||||
#: src/validations.js:17
|
#: src/validations.js:17
|
||||||
msgid "This is not a valid DUID."
|
msgid "This is not a valid DUID."
|
||||||
msgstr ""
|
msgstr "Dit is geen geldig DUID."
|
||||||
|
|
||||||
#: src/validations.js:18
|
#: src/validations.js:18
|
||||||
msgid "This is not a valid MAC address."
|
msgid "This is not a valid MAC address."
|
||||||
msgstr ""
|
msgstr "Dit is geen geldig MAC-adres."
|
||||||
|
|
||||||
#: src/validations.js:19
|
#: src/validations.js:19
|
||||||
msgid "Doesn't contain a list of emails separated by commas."
|
msgid "Doesn't contain a list of emails separated by commas."
|
||||||
msgstr ""
|
msgstr "Bevat geen lijst met e-mails gescheiden door komma's."
|
||||||
|
|
||||||
#: src/api/utils.js:58
|
#: src/api/utils.js:58
|
||||||
msgid "The session is expired. Please log in again."
|
msgid "The session is expired. Please log in again."
|
||||||
@ -58,21 +59,18 @@ msgstr ""
|
|||||||
msgid "No response received."
|
msgid "No response received."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/api/utils.js:70
|
#: src/api/utils.js:76
|
||||||
msgid "An unknown error occurred. Check the console for more info."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/api/utils.js:77
|
|
||||||
msgid "An unknown API error occurred."
|
msgid "An unknown API error occurred."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/common/RebootButton.js:33
|
#: src/common/RebootButton.js:33
|
||||||
|
#, fuzzy
|
||||||
msgid "Reboot request failed."
|
msgid "Reboot request failed."
|
||||||
msgstr ""
|
msgstr "Opnieuw opstarten is vereist"
|
||||||
|
|
||||||
#: src/common/RebootButton.js:54
|
#: src/common/RebootButton.js:54
|
||||||
msgid "Reboot"
|
msgid "Reboot"
|
||||||
msgstr ""
|
msgstr "Opnieuw opstarten"
|
||||||
|
|
||||||
#: src/common/RebootButton.js:69
|
#: src/common/RebootButton.js:69
|
||||||
msgid "Reboot confirmation"
|
msgid "Reboot confirmation"
|
||||||
@ -90,45 +88,163 @@ msgstr ""
|
|||||||
msgid "Confirm reboot"
|
msgid "Confirm reboot"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:88
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:39
|
||||||
|
msgid "An error occurred during resetting Wi-Fi settings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:41
|
||||||
|
msgid "Wi-Fi settings are set to defaults."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:53
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:69
|
||||||
|
msgid "Reset Wi-Fi Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:55
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
"If a number of wireless cards doesn't match, you may try to reset the Wi-"
|
||||||
|
"Fi settings. Note that this will remove the\n"
|
||||||
|
"current Wi-Fi configuration and restore the default values.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:82
|
||||||
|
msgid "Wi-Fi ${deviceID + 1}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:84
|
||||||
|
msgid "Enable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:215
|
||||||
|
msgid "auto"
|
||||||
|
msgstr "auto"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:37
|
||||||
|
msgid "Enable Guest Wifi"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:77
|
||||||
|
msgid "Password"
|
||||||
|
msgstr "Wachtwoord"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:60
|
||||||
|
msgid "Wi-Fi QR Code"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:80
|
||||||
|
msgid "Download PDF"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:73
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:81
|
||||||
|
msgid "SSID can't be longer than 32 symbols"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:74
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:82
|
||||||
|
msgid "SSID can't be empty"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:76
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:84
|
||||||
|
msgid "Password must contain at least 8 symbols"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:9
|
||||||
|
msgid "Disabled"
|
||||||
|
msgstr "Uitgeschakeld"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:10
|
||||||
|
msgid "802.11n - 20 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:11
|
||||||
|
msgid "802.11n - 40 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:12
|
||||||
|
msgid "802.11ac - 20 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:13
|
||||||
|
msgid "802.11ac - 40 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:14
|
||||||
|
msgid "802.11ac - 80 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:21
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" WPA2 pre-shared key, that is required to connect to the network.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:24
|
||||||
|
msgid "If set, network is not visible when scanning for available networks."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:25
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" The 2.4 GHz band is more widely supported by clients, but tends "
|
||||||
|
"to have more interference. The 5 GHz band is a\n"
|
||||||
|
" newer standard and may not be supported by all your devices. It "
|
||||||
|
"usually has less interference, but the signal\n"
|
||||||
|
" does not carry so well indoors."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:29
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Change this to adjust 802.11n/ac mode of operation. 802.11n with "
|
||||||
|
"40 MHz wide channels can yield higher\n"
|
||||||
|
" throughput but can cause more interference in the network. If you"
|
||||||
|
" don't know what to choose, use the default\n"
|
||||||
|
" option with 20 MHz wide channel.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:34
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Enables Wi-Fi for guests, which is separated from LAN network. "
|
||||||
|
"Devices connected to this network are allowed to\n"
|
||||||
|
" access the internet, but aren't allowed to access other devices "
|
||||||
|
"and the configuration interface of the router.\n"
|
||||||
|
" Parameters of the guest network can be set in the Guest network "
|
||||||
|
"tab.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/form/components/ForisForm.js:112
|
||||||
msgid "Settings saved successfully"
|
msgid "Settings saved successfully"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:140
|
#: src/form/components/ForisForm.js:165
|
||||||
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/SubmitButton.js:32
|
#: src/form/components/SubmitButton.js:32
|
||||||
msgid "Updating"
|
msgid "Updating"
|
||||||
msgstr ""
|
msgstr "Bijwerken"
|
||||||
|
|
||||||
#: src/form/components/SubmitButton.js:35
|
#: src/form/components/SubmitButton.js:35
|
||||||
msgid "Load settings"
|
msgid "Load settings"
|
||||||
msgstr ""
|
msgstr "Instellingen laden"
|
||||||
|
|
||||||
#: src/form/components/SubmitButton.js:38
|
#: src/form/components/SubmitButton.js:38
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr ""
|
msgstr "Opslaan"
|
||||||
|
|
||||||
#: src/utils/ErrorMessage.js:13
|
#: src/utils/ErrorMessage.js:16
|
||||||
msgid "An error occurred while fetching data."
|
msgid "An error occurred while fetching data."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Settings were successfully saved."
|
#~ msgid "An unknown error occurred. Check the console for more info."
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Settings update was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Warning!"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot requestq failed."
|
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
@ -7,17 +7,18 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2019-11-29 16:27+0100\n"
|
"POT-Creation-Date: 2020-02-20 17:28+0100\n"
|
||||||
"PO-Revision-Date: 2019-08-28 17:56+0200\n"
|
"PO-Revision-Date: 2019-08-28 17:56+0200\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language: pl\n"
|
"Language: pl\n"
|
||||||
"Language-Team: pl <LL@li.org>\n"
|
"Language-Team: Polish "
|
||||||
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && "
|
"<https://hosted.weblate.org/projects/turris/reforis/pl/>\n"
|
||||||
"(n%100<10 || n%100>=20) ? 1 : 2)\n"
|
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && "
|
||||||
|
"(n%100<10 || n%100>=20) ? 1 : 2\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.7.0\n"
|
"Generated-By: Babel 2.8.0\n"
|
||||||
|
|
||||||
#: src/validations.js:13
|
#: src/validations.js:13
|
||||||
msgid "This is not a valid IPv4 address."
|
msgid "This is not a valid IPv4 address."
|
||||||
@ -59,11 +60,7 @@ msgstr ""
|
|||||||
msgid "No response received."
|
msgid "No response received."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/api/utils.js:70
|
#: src/api/utils.js:76
|
||||||
msgid "An unknown error occurred. Check the console for more info."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/api/utils.js:77
|
|
||||||
msgid "An unknown API error occurred."
|
msgid "An unknown API error occurred."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -91,11 +88,144 @@ msgstr ""
|
|||||||
msgid "Confirm reboot"
|
msgid "Confirm reboot"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:88
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:39
|
||||||
|
msgid "An error occurred during resetting Wi-Fi settings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:41
|
||||||
|
msgid "Wi-Fi settings are set to defaults."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:53
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:69
|
||||||
|
msgid "Reset Wi-Fi Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:55
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
"If a number of wireless cards doesn't match, you may try to reset the Wi-"
|
||||||
|
"Fi settings. Note that this will remove the\n"
|
||||||
|
"current Wi-Fi configuration and restore the default values.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:82
|
||||||
|
msgid "Wi-Fi ${deviceID + 1}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:84
|
||||||
|
msgid "Enable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:215
|
||||||
|
msgid "auto"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:37
|
||||||
|
msgid "Enable Guest Wifi"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:77
|
||||||
|
msgid "Password"
|
||||||
|
msgstr "Hasło"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:60
|
||||||
|
msgid "Wi-Fi QR Code"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:80
|
||||||
|
msgid "Download PDF"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:73
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:81
|
||||||
|
msgid "SSID can't be longer than 32 symbols"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:74
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:82
|
||||||
|
msgid "SSID can't be empty"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:76
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:84
|
||||||
|
msgid "Password must contain at least 8 symbols"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:9
|
||||||
|
msgid "Disabled"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:10
|
||||||
|
msgid "802.11n - 20 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:11
|
||||||
|
msgid "802.11n - 40 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:12
|
||||||
|
msgid "802.11ac - 20 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:13
|
||||||
|
msgid "802.11ac - 40 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:14
|
||||||
|
msgid "802.11ac - 80 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:21
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" WPA2 pre-shared key, that is required to connect to the network.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:24
|
||||||
|
msgid "If set, network is not visible when scanning for available networks."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:25
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" The 2.4 GHz band is more widely supported by clients, but tends "
|
||||||
|
"to have more interference. The 5 GHz band is a\n"
|
||||||
|
" newer standard and may not be supported by all your devices. It "
|
||||||
|
"usually has less interference, but the signal\n"
|
||||||
|
" does not carry so well indoors."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:29
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Change this to adjust 802.11n/ac mode of operation. 802.11n with "
|
||||||
|
"40 MHz wide channels can yield higher\n"
|
||||||
|
" throughput but can cause more interference in the network. If you"
|
||||||
|
" don't know what to choose, use the default\n"
|
||||||
|
" option with 20 MHz wide channel.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:34
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Enables Wi-Fi for guests, which is separated from LAN network. "
|
||||||
|
"Devices connected to this network are allowed to\n"
|
||||||
|
" access the internet, but aren't allowed to access other devices "
|
||||||
|
"and the configuration interface of the router.\n"
|
||||||
|
" Parameters of the guest network can be set in the Guest network "
|
||||||
|
"tab.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/form/components/ForisForm.js:112
|
||||||
msgid "Settings saved successfully"
|
msgid "Settings saved successfully"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:140
|
#: src/form/components/ForisForm.js:165
|
||||||
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -109,27 +239,12 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/form/components/SubmitButton.js:38
|
#: src/form/components/SubmitButton.js:38
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr ""
|
msgstr "Zapisz"
|
||||||
|
|
||||||
#: src/utils/ErrorMessage.js:13
|
#: src/utils/ErrorMessage.js:16
|
||||||
msgid "An error occurred while fetching data."
|
msgid "An error occurred while fetching data."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Settings were successfully saved."
|
#~ msgid "An unknown error occurred. Check the console for more info."
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Settings update was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Warning!"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot requestq failed."
|
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
@ -7,8 +7,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2019-11-29 16:27+0100\n"
|
"POT-Creation-Date: 2020-02-20 17:28+0100\n"
|
||||||
"PO-Revision-Date: 2019-08-28 17:56+0200\n"
|
"PO-Revision-Date: 2019-02-19 13:35+0100\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language: ro\n"
|
"Language: ro\n"
|
||||||
"Language-Team: ro <LL@li.org>\n"
|
"Language-Team: ro <LL@li.org>\n"
|
||||||
@ -17,7 +17,7 @@ msgstr ""
|
|||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.7.0\n"
|
"Generated-By: Babel 2.8.0\n"
|
||||||
|
|
||||||
#: src/validations.js:13
|
#: src/validations.js:13
|
||||||
msgid "This is not a valid IPv4 address."
|
msgid "This is not a valid IPv4 address."
|
||||||
@ -59,11 +59,7 @@ msgstr ""
|
|||||||
msgid "No response received."
|
msgid "No response received."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/api/utils.js:70
|
#: src/api/utils.js:76
|
||||||
msgid "An unknown error occurred. Check the console for more info."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/api/utils.js:77
|
|
||||||
msgid "An unknown API error occurred."
|
msgid "An unknown API error occurred."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -91,11 +87,144 @@ msgstr ""
|
|||||||
msgid "Confirm reboot"
|
msgid "Confirm reboot"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:88
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:39
|
||||||
|
msgid "An error occurred during resetting Wi-Fi settings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:41
|
||||||
|
msgid "Wi-Fi settings are set to defaults."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:53
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:69
|
||||||
|
msgid "Reset Wi-Fi Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:55
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
"If a number of wireless cards doesn't match, you may try to reset the Wi-"
|
||||||
|
"Fi settings. Note that this will remove the\n"
|
||||||
|
"current Wi-Fi configuration and restore the default values.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:82
|
||||||
|
msgid "Wi-Fi ${deviceID + 1}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:84
|
||||||
|
msgid "Enable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:215
|
||||||
|
msgid "auto"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:37
|
||||||
|
msgid "Enable Guest Wifi"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:77
|
||||||
|
msgid "Password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:60
|
||||||
|
msgid "Wi-Fi QR Code"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:80
|
||||||
|
msgid "Download PDF"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:73
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:81
|
||||||
|
msgid "SSID can't be longer than 32 symbols"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:74
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:82
|
||||||
|
msgid "SSID can't be empty"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:76
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:84
|
||||||
|
msgid "Password must contain at least 8 symbols"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:9
|
||||||
|
msgid "Disabled"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:10
|
||||||
|
msgid "802.11n - 20 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:11
|
||||||
|
msgid "802.11n - 40 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:12
|
||||||
|
msgid "802.11ac - 20 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:13
|
||||||
|
msgid "802.11ac - 40 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:14
|
||||||
|
msgid "802.11ac - 80 MHz wide channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:21
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" WPA2 pre-shared key, that is required to connect to the network.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:24
|
||||||
|
msgid "If set, network is not visible when scanning for available networks."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:25
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" The 2.4 GHz band is more widely supported by clients, but tends "
|
||||||
|
"to have more interference. The 5 GHz band is a\n"
|
||||||
|
" newer standard and may not be supported by all your devices. It "
|
||||||
|
"usually has less interference, but the signal\n"
|
||||||
|
" does not carry so well indoors."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:29
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Change this to adjust 802.11n/ac mode of operation. 802.11n with "
|
||||||
|
"40 MHz wide channels can yield higher\n"
|
||||||
|
" throughput but can cause more interference in the network. If you"
|
||||||
|
" don't know what to choose, use the default\n"
|
||||||
|
" option with 20 MHz wide channel.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:34
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Enables Wi-Fi for guests, which is separated from LAN network. "
|
||||||
|
"Devices connected to this network are allowed to\n"
|
||||||
|
" access the internet, but aren't allowed to access other devices "
|
||||||
|
"and the configuration interface of the router.\n"
|
||||||
|
" Parameters of the guest network can be set in the Guest network "
|
||||||
|
"tab.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/form/components/ForisForm.js:112
|
||||||
msgid "Settings saved successfully"
|
msgid "Settings saved successfully"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:140
|
#: src/form/components/ForisForm.js:165
|
||||||
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -111,25 +240,10 @@ msgstr ""
|
|||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/utils/ErrorMessage.js:13
|
#: src/utils/ErrorMessage.js:16
|
||||||
msgid "An error occurred while fetching data."
|
msgid "An error occurred while fetching data."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Settings were successfully saved."
|
#~ msgid "An unknown error occurred. Check the console for more info."
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Settings update was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Warning!"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot requestq failed."
|
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
@ -7,73 +7,71 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2019-11-29 16:27+0100\n"
|
"POT-Creation-Date: 2020-02-20 17:28+0100\n"
|
||||||
"PO-Revision-Date: 2019-08-28 17:56+0200\n"
|
"PO-Revision-Date: 2019-09-30 13:00+0000\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: Алексей Леньшин <alenshin@gmail.com>\n"
|
||||||
"Language: ru\n"
|
"Language: ru\n"
|
||||||
"Language-Team: ru <LL@li.org>\n"
|
"Language-Team: Russian "
|
||||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
"<https://hosted.weblate.org/projects/turris/reforis/ru/>\n"
|
||||||
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
|
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
||||||
|
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.7.0\n"
|
"Generated-By: Babel 2.8.0\n"
|
||||||
|
|
||||||
#: src/validations.js:13
|
#: src/validations.js:13
|
||||||
msgid "This is not a valid IPv4 address."
|
msgid "This is not a valid IPv4 address."
|
||||||
msgstr ""
|
msgstr "Это некорректный IPv4-адрес."
|
||||||
|
|
||||||
#: src/validations.js:14
|
#: src/validations.js:14
|
||||||
msgid "This is not a valid IPv6 address."
|
msgid "This is not a valid IPv6 address."
|
||||||
msgstr ""
|
msgstr "Это некорректный IPv6-адрес."
|
||||||
|
|
||||||
#: src/validations.js:15
|
#: src/validations.js:15
|
||||||
msgid "This is not a valid IPv6 prefix."
|
msgid "This is not a valid IPv6 prefix."
|
||||||
msgstr ""
|
msgstr "Это некорректный префикс IPv6."
|
||||||
|
|
||||||
#: src/validations.js:16
|
#: src/validations.js:16
|
||||||
msgid "This is not a valid domain name."
|
msgid "This is not a valid domain name."
|
||||||
msgstr ""
|
msgstr "Некорректное доменное имя."
|
||||||
|
|
||||||
#: src/validations.js:17
|
#: src/validations.js:17
|
||||||
msgid "This is not a valid DUID."
|
msgid "This is not a valid DUID."
|
||||||
msgstr ""
|
msgstr "Это некорректный уникальный идентификатор DHCP (DUID)."
|
||||||
|
|
||||||
#: src/validations.js:18
|
#: src/validations.js:18
|
||||||
msgid "This is not a valid MAC address."
|
msgid "This is not a valid MAC address."
|
||||||
msgstr ""
|
msgstr "Это некорректный MAC-адрес."
|
||||||
|
|
||||||
#: src/validations.js:19
|
#: src/validations.js:19
|
||||||
msgid "Doesn't contain a list of emails separated by commas."
|
msgid "Doesn't contain a list of emails separated by commas."
|
||||||
msgstr ""
|
msgstr "Не содержит списка электронных адресов, разделенных запятыми."
|
||||||
|
|
||||||
#: src/api/utils.js:58
|
#: src/api/utils.js:58
|
||||||
msgid "The session is expired. Please log in again."
|
msgid "The session is expired. Please log in again."
|
||||||
msgstr ""
|
msgstr "Ваша сессия закончилась. Пожалуйста, залогинитесь заново."
|
||||||
|
|
||||||
#: src/api/utils.js:63
|
#: src/api/utils.js:63
|
||||||
msgid "Timeout error occurred."
|
msgid "Timeout error occurred."
|
||||||
msgstr ""
|
msgstr "Произошла ошибка ожидания ответа сервера."
|
||||||
|
|
||||||
#: src/api/utils.js:66
|
#: src/api/utils.js:66
|
||||||
msgid "No response received."
|
msgid "No response received."
|
||||||
msgstr ""
|
msgstr "Ответ не получен."
|
||||||
|
|
||||||
#: src/api/utils.js:70
|
#: src/api/utils.js:76
|
||||||
msgid "An unknown error occurred. Check the console for more info."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/api/utils.js:77
|
|
||||||
msgid "An unknown API error occurred."
|
msgid "An unknown API error occurred."
|
||||||
msgstr ""
|
msgstr "Неизвестная ошибка программного интерфейса приложения."
|
||||||
|
|
||||||
#: src/common/RebootButton.js:33
|
#: src/common/RebootButton.js:33
|
||||||
|
#, fuzzy
|
||||||
msgid "Reboot request failed."
|
msgid "Reboot request failed."
|
||||||
msgstr ""
|
msgstr "Требуется перезагрузка"
|
||||||
|
|
||||||
#: src/common/RebootButton.js:54
|
#: src/common/RebootButton.js:54
|
||||||
msgid "Reboot"
|
msgid "Reboot"
|
||||||
msgstr ""
|
msgstr "Перезагрузка"
|
||||||
|
|
||||||
#: src/common/RebootButton.js:69
|
#: src/common/RebootButton.js:69
|
||||||
msgid "Reboot confirmation"
|
msgid "Reboot confirmation"
|
||||||
@ -91,45 +89,191 @@ msgstr ""
|
|||||||
msgid "Confirm reboot"
|
msgid "Confirm reboot"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:88
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:39
|
||||||
msgid "Settings saved successfully"
|
msgid "An error occurred during resetting Wi-Fi settings."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/form/components/ForisForm.js:140
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:41
|
||||||
|
msgid "Wi-Fi settings are set to defaults."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:53
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:69
|
||||||
|
msgid "Reset Wi-Fi Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/ResetWiFiSettings.js:55
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
"If a number of wireless cards doesn't match, you may try to reset the Wi-"
|
||||||
|
"Fi settings. Note that this will remove the\n"
|
||||||
|
"current Wi-Fi configuration and restore the default values.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:82
|
||||||
|
msgid "Wi-Fi ${deviceID + 1}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:84
|
||||||
|
msgid "Enable"
|
||||||
|
msgstr "Включить"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiForm.js:215
|
||||||
|
msgid "auto"
|
||||||
|
msgstr "авто"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:37
|
||||||
|
msgid "Enable Guest Wifi"
|
||||||
|
msgstr "Включить гостевой WiFi"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiGuestForm.js:77
|
||||||
|
msgid "Password"
|
||||||
|
msgstr "Пароль"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:60
|
||||||
|
msgid "Wi-Fi QR Code"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiQRCode.js:80
|
||||||
|
msgid "Download PDF"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:73
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:81
|
||||||
|
msgid "SSID can't be longer than 32 symbols"
|
||||||
|
msgstr "SSID не может быть длиннее 32 символов"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:74
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:82
|
||||||
|
msgid "SSID can't be empty"
|
||||||
|
msgstr "SSID не может быть пустым"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:76
|
||||||
|
#: src/common/WiFiSettings/WiFiSettings.js:84
|
||||||
|
msgid "Password must contain at least 8 symbols"
|
||||||
|
msgstr "Пароль должен содержать не менее 8 символов"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:9
|
||||||
|
msgid "Disabled"
|
||||||
|
msgstr "Отключён"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:10
|
||||||
|
msgid "802.11n - 20 MHz wide channel"
|
||||||
|
msgstr "802.11n - ширина канала в 20 МГц"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:11
|
||||||
|
msgid "802.11n - 40 MHz wide channel"
|
||||||
|
msgstr "802.11n - ширина канала в 40 МГц"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:12
|
||||||
|
msgid "802.11ac - 20 MHz wide channel"
|
||||||
|
msgstr "802.11ac - ширина канала в 20 МГц"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:13
|
||||||
|
msgid "802.11ac - 40 MHz wide channel"
|
||||||
|
msgstr "802.11ac - ширина канала в 40 МГц"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:14
|
||||||
|
msgid "802.11ac - 80 MHz wide channel"
|
||||||
|
msgstr "802.11ac - ширина канала в 80 МГц"
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:21
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" WPA2 pre-shared key, that is required to connect to the network.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
" Предварительный общий ключ WPA2, необходимый для подключения к "
|
||||||
|
"сети.\n"
|
||||||
|
" "
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:24
|
||||||
|
msgid "If set, network is not visible when scanning for available networks."
|
||||||
|
msgstr ""
|
||||||
|
"Если установлено, сеть не будет отображаться при сканировании доступных "
|
||||||
|
"сетей."
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:25
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" The 2.4 GHz band is more widely supported by clients, but tends "
|
||||||
|
"to have more interference. The 5 GHz band is a\n"
|
||||||
|
" newer standard and may not be supported by all your devices. It "
|
||||||
|
"usually has less interference, but the signal\n"
|
||||||
|
" does not carry so well indoors."
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
" Частота 2,4 ГГц более широко поддерживается клиентами, но имеет "
|
||||||
|
"больше помех. Частота 5 ГГц является новым стандартом и может "
|
||||||
|
"поддерживаться не всеми вашими устройствами. Он обычно имеет меньше "
|
||||||
|
"помех, но сигнал не очень хорошо распространяется в помещении."
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:29
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Change this to adjust 802.11n/ac mode of operation. 802.11n with "
|
||||||
|
"40 MHz wide channels can yield higher\n"
|
||||||
|
" throughput but can cause more interference in the network. If you"
|
||||||
|
" don't know what to choose, use the default\n"
|
||||||
|
" option with 20 MHz wide channel.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
" Измените это, чтобы настроить режим работы 802.11n/ac. 802.11n с "
|
||||||
|
"каналами шириной 40 МГц может обеспечить более высокую пропускную "
|
||||||
|
"способность, но может вызывать больше помех в сети. Если вы не знаете, "
|
||||||
|
"что выбрать, используйте опцию по умолчанию с каналом шириной 20 МГц.\n"
|
||||||
|
" "
|
||||||
|
|
||||||
|
#: src/common/WiFiSettings/constants.js:34
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" Enables Wi-Fi for guests, which is separated from LAN network. "
|
||||||
|
"Devices connected to this network are allowed to\n"
|
||||||
|
" access the internet, but aren't allowed to access other devices "
|
||||||
|
"and the configuration interface of the router.\n"
|
||||||
|
" Parameters of the guest network can be set in the Guest network "
|
||||||
|
"tab.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
" Включает Wi-Fi для гостей, который отделен от локальной сети. "
|
||||||
|
"Устройства, подключенные к этой сети, могут доступ в Интернет, но им не "
|
||||||
|
"разрешен доступ к другим устройствам и интерфейсу конфигурации "
|
||||||
|
"маршрутизатора. Параметры гостевой сети можно настроить на вкладке "
|
||||||
|
"Гостевая сеть.\n"
|
||||||
|
" "
|
||||||
|
|
||||||
|
#: src/form/components/ForisForm.js:112
|
||||||
|
msgid "Settings saved successfully"
|
||||||
|
msgstr "Настройки были успешно сохранены"
|
||||||
|
|
||||||
|
#: src/form/components/ForisForm.js:165
|
||||||
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
msgid "Changes you made may not be saved. Are you sure you want to leave?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"В случае выхода ваши изменения будут утеряны. Вы действительно хотите "
|
||||||
|
"покинуть эту страницу?"
|
||||||
|
|
||||||
#: src/form/components/SubmitButton.js:32
|
#: src/form/components/SubmitButton.js:32
|
||||||
msgid "Updating"
|
msgid "Updating"
|
||||||
msgstr ""
|
msgstr "Обновление"
|
||||||
|
|
||||||
#: src/form/components/SubmitButton.js:35
|
#: src/form/components/SubmitButton.js:35
|
||||||
msgid "Load settings"
|
msgid "Load settings"
|
||||||
msgstr ""
|
msgstr "Загрузить настройки"
|
||||||
|
|
||||||
#: src/form/components/SubmitButton.js:38
|
#: src/form/components/SubmitButton.js:38
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr ""
|
msgstr "Сохранить"
|
||||||
|
|
||||||
#: src/utils/ErrorMessage.js:13
|
#: src/utils/ErrorMessage.js:16
|
||||||
msgid "An error occurred while fetching data."
|
msgid "An error occurred while fetching data."
|
||||||
msgstr ""
|
msgstr "Во время получения данных произошла ошибка."
|
||||||
|
|
||||||
#~ msgid "Settings were successfully saved."
|
#~ msgid "An unknown error occurred. Check the console for more info."
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Settings update was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Warning!"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering was failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot triggering failed."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Reboot requestq failed."
|
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
#~ "Произошла неизвестная ошибка. Проверьте "
|
||||||
|
#~ "консоль браузера, чтобы узнать детали."
|
||||||
|
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user