mirror of
https://github.com/NginxProxyManager/nginx-proxy-manager.git
synced 2025-12-06 16:26:50 +00:00
Compare commits
126 Commits
f3633cb696
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
847c58b170 | ||
|
|
89b8b747e1 | ||
|
|
3231023513 | ||
|
|
dc89635971 | ||
|
|
cfa98361d1 | ||
|
|
c2177abe39 | ||
|
|
2c6d614597 | ||
|
|
484ce8db3c | ||
|
|
2c11c0c7e2 | ||
|
|
f1039ce2ef | ||
|
|
d49ff6e7c2 | ||
|
|
a87f24c9dc | ||
|
|
decdfec447 | ||
|
|
32ab3faf57 | ||
|
|
c7f999fa7a | ||
|
|
de7d3b0d19 | ||
|
|
2d4b7399c0 | ||
|
|
316b758455 | ||
|
|
890d06c863 | ||
|
|
81f2aa17d4 | ||
|
|
9b4c34915c | ||
|
|
fce569ca21 | ||
|
|
87ec9c4bdf | ||
|
|
2650648d68 | ||
|
|
fdc0c29f28 | ||
|
|
6cae088432 | ||
|
|
9d8c4cc30b | ||
|
|
66ebecdb43 | ||
|
|
60f3ee03c0 | ||
|
|
a4d54a0291 | ||
|
|
7536b1b1c9 | ||
|
|
5288fbd7af | ||
|
|
2c630bbdca | ||
|
|
0ec1a09c30 | ||
|
|
118c4793e3 | ||
|
|
d7384c568f | ||
|
|
0bcfe0bba6 | ||
|
|
74cbfb2c58 | ||
|
|
8ef65caa5a | ||
|
|
bc341c1dff | ||
|
|
5fc9febf1f | ||
|
|
b23ceebfd8 | ||
|
|
c281fc54a1 | ||
|
|
d0f7dc5b48 | ||
|
|
fb53df862e | ||
|
|
8d8463ae41 | ||
|
|
8774cfe5f9 | ||
|
|
4ca5cadd19 | ||
|
|
45a8d50e03 | ||
|
|
960d4bfe6f | ||
|
|
8c3c964c52 | ||
|
|
afd6134a3e | ||
|
|
9b2d60e67b | ||
|
|
9807e25d45 | ||
|
|
824c895f52 | ||
|
|
7f9b9dfea4 | ||
|
|
d848ba9f65 | ||
|
|
47db5c9aa6 | ||
|
|
79a9653b26 | ||
|
|
e5aae1f365 | ||
|
|
8959190d32 | ||
|
|
7e875eb27a | ||
|
|
cf7306e766 | ||
|
|
1c442dcce6 | ||
|
|
dadd10f89b | ||
|
|
8838dabe8a | ||
|
|
75c012b558 | ||
|
|
9be1381ffe | ||
|
|
f40fe56572 | ||
|
|
b4fd242eb7 | ||
|
|
911476f82f | ||
|
|
963125f963 | ||
|
|
e86a34f2f3 | ||
|
|
6ce9567e48 | ||
|
|
f02145c5ef | ||
|
|
66fa08fd8e | ||
|
|
d783cc3b90 | ||
|
|
17cc75fe7d | ||
|
|
15394c6532 | ||
|
|
2d6252d75d | ||
|
|
adee0e39de | ||
|
|
5dde98cf3e | ||
|
|
c41451618e | ||
|
|
1a3d45f6bc | ||
|
|
2ea54975b6 | ||
|
|
0373017a9f | ||
|
|
b043e70fc0 | ||
|
|
2b5182d339 | ||
|
|
3c5ff81a54 | ||
|
|
8aa46c1f40 | ||
|
|
b26db50ae7 | ||
|
|
d66bb2104a | ||
|
|
8e900dbc92 | ||
|
|
66aac3eb3e | ||
|
|
221c3eddbc | ||
|
|
8460b28597 | ||
|
|
0344bb3c19 | ||
|
|
1a36bdce76 | ||
|
|
06d7db43f7 | ||
|
|
4557244744 | ||
|
|
f649288098 | ||
|
|
28df6db52b | ||
|
|
eee749652c | ||
|
|
f6aa25b9b3 | ||
|
|
40db26b686 | ||
|
|
f36d4e6906 | ||
|
|
86c7cbddab | ||
|
|
e52975bf6c | ||
|
|
ff792f76af | ||
|
|
711f312b71 | ||
|
|
9f0f89ff03 | ||
|
|
87eef10ff8 | ||
|
|
dc03ad8239 | ||
|
|
441a7262cd | ||
|
|
ae5faa75fa | ||
|
|
2578105f86 | ||
|
|
b6dbb68ef3 | ||
|
|
b434bba12f | ||
|
|
f1d7203212 | ||
|
|
990ba28831 | ||
|
|
5aa56c63d4 | ||
|
|
8fdb6091f3 | ||
|
|
58182fcbdf | ||
|
|
b3b1e94b8c | ||
|
|
9de40f067b | ||
|
|
a85b5f664f |
@@ -1,7 +1,7 @@
|
||||
<p align="center">
|
||||
<img src="https://nginxproxymanager.com/github.png">
|
||||
<br><br>
|
||||
<img src="https://img.shields.io/badge/version-2.13.3-green.svg?style=for-the-badge">
|
||||
<img src="https://img.shields.io/badge/version-2.13.5-green.svg?style=for-the-badge">
|
||||
<a href="https://hub.docker.com/repository/docker/jc21/nginx-proxy-manager">
|
||||
<img src="https://img.shields.io/docker/stars/jc21/nginx-proxy-manager.svg?style=for-the-badge">
|
||||
</a>
|
||||
|
||||
@@ -26,8 +26,8 @@
|
||||
"azure": {
|
||||
"name": "Azure",
|
||||
"package_name": "certbot-dns-azure",
|
||||
"version": "~=1.2.0",
|
||||
"dependencies": "",
|
||||
"version": "~=2.6.1",
|
||||
"dependencies": "azure-mgmt-dns==8.2.0",
|
||||
"credentials": "# This plugin supported API authentication using either Service Principals or utilizing a Managed Identity assigned to the virtual machine.\n# Regardless which authentication method used, the identity will need the “DNS Zone Contributor” role assigned to it.\n# As multiple Azure DNS Zones in multiple resource groups can exist, the config file needs a mapping of zone to resource group ID. Multiple zones -> ID mappings can be listed by using the key dns_azure_zoneX where X is a unique number. At least 1 zone mapping is required.\n\n# Using a service principal (option 1)\ndns_azure_sp_client_id = 912ce44a-0156-4669-ae22-c16a17d34ca5\ndns_azure_sp_client_secret = E-xqXU83Y-jzTI6xe9fs2YC~mck3ZzUih9\ndns_azure_tenant_id = ed1090f3-ab18-4b12-816c-599af8a88cf7\n\n# Using used assigned MSI (option 2)\n# dns_azure_msi_client_id = 912ce44a-0156-4669-ae22-c16a17d34ca5\n\n# Using system assigned MSI (option 3)\n# dns_azure_msi_system_assigned = true\n\n# Zones (at least one always required)\ndns_azure_zone1 = example.com:/subscriptions/c135abce-d87d-48df-936c-15596c6968a5/resourceGroups/dns1\ndns_azure_zone2 = example.org:/subscriptions/99800903-fb14-4992-9aff-12eaf2744622/resourceGroups/dns2",
|
||||
"full_plugin_name": "dns-azure"
|
||||
},
|
||||
@@ -482,7 +482,7 @@
|
||||
"porkbun": {
|
||||
"name": "Porkbun",
|
||||
"package_name": "certbot-dns-porkbun",
|
||||
"version": "~=0.9",
|
||||
"version": "~=0.11.0",
|
||||
"dependencies": "",
|
||||
"credentials": "dns_porkbun_key=your-porkbun-api-key\ndns_porkbun_secret=your-porkbun-api-secret",
|
||||
"full_plugin_name": "dns-porkbun"
|
||||
|
||||
84
backend/internal/remote-version.js
Normal file
84
backend/internal/remote-version.js
Normal file
@@ -0,0 +1,84 @@
|
||||
import https from "node:https";
|
||||
import { ProxyAgent } from "proxy-agent";
|
||||
import { debug, remoteVersion as logger } from "../logger.js";
|
||||
import pjson from "../package.json" with { type: "json" };
|
||||
|
||||
const VERSION_URL = "https://api.github.com/repos/NginxProxyManager/nginx-proxy-manager/releases/latest";
|
||||
|
||||
const internalRemoteVersion = {
|
||||
cache_timeout: 1000 * 60 * 15, // 15 minutes
|
||||
last_result: null,
|
||||
last_fetch_time: null,
|
||||
|
||||
/**
|
||||
* Fetch the latest version info, using a cached result if within the cache timeout period.
|
||||
* @return {Promise<{current: string, latest: string, update_available: boolean}>} Version info
|
||||
*/
|
||||
get: async () => {
|
||||
if (
|
||||
!internalRemoteVersion.last_result ||
|
||||
!internalRemoteVersion.last_fetch_time ||
|
||||
Date.now() - internalRemoteVersion.last_fetch_time > internalRemoteVersion.cache_timeout
|
||||
) {
|
||||
const raw = await internalRemoteVersion.fetchUrl(VERSION_URL);
|
||||
const data = JSON.parse(raw);
|
||||
internalRemoteVersion.last_result = data;
|
||||
internalRemoteVersion.last_fetch_time = Date.now();
|
||||
} else {
|
||||
debug(logger, "Using cached remote version result");
|
||||
}
|
||||
|
||||
const latestVersion = internalRemoteVersion.last_result.tag_name;
|
||||
const version = pjson.version.split("-").shift().split(".");
|
||||
const currentVersion = `v${version[0]}.${version[1]}.${version[2]}`;
|
||||
return {
|
||||
current: currentVersion,
|
||||
latest: latestVersion,
|
||||
update_available: internalRemoteVersion.compareVersions(currentVersion, latestVersion),
|
||||
};
|
||||
},
|
||||
|
||||
fetchUrl: (url) => {
|
||||
const agent = new ProxyAgent();
|
||||
const headers = {
|
||||
"User-Agent": `NginxProxyManager v${pjson.version}`,
|
||||
};
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
logger.info(`Fetching ${url}`);
|
||||
return https
|
||||
.get(url, { agent, headers }, (res) => {
|
||||
res.setEncoding("utf8");
|
||||
let raw_data = "";
|
||||
res.on("data", (chunk) => {
|
||||
raw_data += chunk;
|
||||
});
|
||||
res.on("end", () => {
|
||||
resolve(raw_data);
|
||||
});
|
||||
})
|
||||
.on("error", (err) => {
|
||||
reject(err);
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
compareVersions: (current, latest) => {
|
||||
const cleanCurrent = current.replace(/^v/, "");
|
||||
const cleanLatest = latest.replace(/^v/, "");
|
||||
|
||||
const currentParts = cleanCurrent.split(".").map(Number);
|
||||
const latestParts = cleanLatest.split(".").map(Number);
|
||||
|
||||
for (let i = 0; i < Math.max(currentParts.length, latestParts.length); i++) {
|
||||
const curr = currentParts[i] || 0;
|
||||
const lat = latestParts[i] || 0;
|
||||
|
||||
if (lat > curr) return true;
|
||||
if (lat < curr) return false;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
};
|
||||
|
||||
export default internalRemoteVersion;
|
||||
@@ -15,6 +15,7 @@ const certbot = new signale.Signale({ scope: "Certbot ", ...opts });
|
||||
const importer = new signale.Signale({ scope: "Importer ", ...opts });
|
||||
const setup = new signale.Signale({ scope: "Setup ", ...opts });
|
||||
const ipRanges = new signale.Signale({ scope: "IP Ranges", ...opts });
|
||||
const remoteVersion = new signale.Signale({ scope: "Remote Version", ...opts });
|
||||
|
||||
const debug = (logger, ...args) => {
|
||||
if (isDebugMode()) {
|
||||
@@ -22,4 +23,4 @@ const debug = (logger, ...args) => {
|
||||
}
|
||||
};
|
||||
|
||||
export { debug, global, migrate, express, access, nginx, ssl, certbot, importer, setup, ipRanges };
|
||||
export { debug, global, migrate, express, access, nginx, ssl, certbot, importer, setup, ipRanges, remoteVersion };
|
||||
|
||||
@@ -14,6 +14,7 @@ import schemaRoutes from "./schema.js";
|
||||
import settingsRoutes from "./settings.js";
|
||||
import tokensRoutes from "./tokens.js";
|
||||
import usersRoutes from "./users.js";
|
||||
import versionRoutes from "./version.js";
|
||||
|
||||
const router = express.Router({
|
||||
caseSensitive: true,
|
||||
@@ -46,6 +47,7 @@ router.use("/users", usersRoutes);
|
||||
router.use("/audit-log", auditLogRoutes);
|
||||
router.use("/reports", reportsRoutes);
|
||||
router.use("/settings", settingsRoutes);
|
||||
router.use("/version", versionRoutes);
|
||||
router.use("/nginx/proxy-hosts", proxyHostsRoutes);
|
||||
router.use("/nginx/redirection-hosts", redirectionHostsRoutes);
|
||||
router.use("/nginx/dead-hosts", deadHostsRoutes);
|
||||
|
||||
40
backend/routes/version.js
Normal file
40
backend/routes/version.js
Normal file
@@ -0,0 +1,40 @@
|
||||
import express from "express";
|
||||
import internalRemoteVersion from "../internal/remote-version.js";
|
||||
import { debug, express as logger } from "../logger.js";
|
||||
|
||||
const router = express.Router({
|
||||
caseSensitive: true,
|
||||
strict: true,
|
||||
mergeParams: true,
|
||||
});
|
||||
|
||||
/**
|
||||
* /api/version/check
|
||||
*/
|
||||
router
|
||||
.route("/check")
|
||||
.options((_, res) => {
|
||||
res.sendStatus(204);
|
||||
})
|
||||
|
||||
/**
|
||||
* GET /api/version/check
|
||||
*
|
||||
* Check for available updates
|
||||
*/
|
||||
.get(async (req, res, _next) => {
|
||||
try {
|
||||
const data = await internalRemoteVersion.get();
|
||||
res.status(200).send(data);
|
||||
} catch (error) {
|
||||
debug(logger, `${req.method.toUpperCase()} ${req.path}: ${error}`);
|
||||
// Send 200 even though there's an error to avoid triggering update checks repeatedly
|
||||
res.status(200).send({
|
||||
current: null,
|
||||
latest: null,
|
||||
update_available: false,
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
export default router;
|
||||
23
backend/schema/components/check-version-object.json
Normal file
23
backend/schema/components/check-version-object.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"type": "object",
|
||||
"description": "Check Version object",
|
||||
"additionalProperties": false,
|
||||
"required": ["current", "latest", "update_available"],
|
||||
"properties": {
|
||||
"current": {
|
||||
"type": ["string", "null"],
|
||||
"description": "Current version string",
|
||||
"example": "v2.10.1"
|
||||
},
|
||||
"latest": {
|
||||
"type": ["string", "null"],
|
||||
"description": "Latest version string",
|
||||
"example": "v2.13.4"
|
||||
},
|
||||
"update_available": {
|
||||
"type": "boolean",
|
||||
"description": "Whether there's an update available",
|
||||
"example": true
|
||||
}
|
||||
}
|
||||
}
|
||||
26
backend/schema/paths/version/check/get.json
Normal file
26
backend/schema/paths/version/check/get.json
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"operationId": "checkVersion",
|
||||
"summary": "Returns any new version data from github",
|
||||
"tags": ["public"],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "200 response",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"examples": {
|
||||
"default": {
|
||||
"value": {
|
||||
"current": "v2.12.0",
|
||||
"latest": "v2.13.4",
|
||||
"update_available": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"schema": {
|
||||
"$ref": "../../../components/check-version-object.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -293,6 +293,11 @@
|
||||
"$ref": "./paths/tokens/post.json"
|
||||
}
|
||||
},
|
||||
"/version/check": {
|
||||
"get": {
|
||||
"$ref": "./paths/version/check/get.json"
|
||||
}
|
||||
},
|
||||
"/users": {
|
||||
"get": {
|
||||
"$ref": "./paths/users/get.json"
|
||||
|
||||
@@ -1430,9 +1430,9 @@ isexe@^2.0.0:
|
||||
integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
|
||||
|
||||
js-yaml@^4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
|
||||
integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.1.tgz#854c292467705b699476e1a2decc0c8a3458806b"
|
||||
integrity sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==
|
||||
dependencies:
|
||||
argparse "^2.0.1"
|
||||
|
||||
|
||||
@@ -24,9 +24,13 @@ services:
|
||||
interval: 10s
|
||||
timeout: 3s
|
||||
expose:
|
||||
- "80-81/tcp"
|
||||
- "80/tcp"
|
||||
- "81/tcp"
|
||||
- "443/tcp"
|
||||
- "1500-1503/tcp"
|
||||
- "1500/tcp"
|
||||
- "1501/tcp"
|
||||
- "1502/tcp"
|
||||
- "1503/tcp"
|
||||
networks:
|
||||
fulltest:
|
||||
aliases:
|
||||
|
||||
2
frontend/.gitignore
vendored
2
frontend/.gitignore
vendored
@@ -1,3 +1,5 @@
|
||||
src/locale/lang
|
||||
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
|
||||
@@ -8,7 +8,16 @@
|
||||
|
||||
const allLocales = [
|
||||
["en", "en-US"],
|
||||
["de", "de-DE"],
|
||||
["es", "es-ES"],
|
||||
["it", "it-IT"],
|
||||
["ja", "ja-JP"],
|
||||
["nl", "nl-NL"],
|
||||
["pl", "pl-PL"],
|
||||
["ru", "ru-RU"],
|
||||
["sk", "sk-SK"],
|
||||
["vi", "vi-VN"],
|
||||
["zh", "zh-CN"],
|
||||
];
|
||||
|
||||
const ignoreUnused = [
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>Nginx Proxy Manager</title>
|
||||
<meta name="description" content="In The Office Planner" />
|
||||
<link rel="preload" href="/images/logo-no-text.svg" as="image" type="image/svg+xml" fetchPriority="high">
|
||||
<link
|
||||
rel="apple-touch-icon"
|
||||
sizes="180x180"
|
||||
|
||||
@@ -13,6 +13,15 @@
|
||||
--tblr-backdrop-opacity: 0.8 !important;
|
||||
}
|
||||
|
||||
[data-bs-theme="dark"] .modal-content {
|
||||
--tblr-modal-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;
|
||||
}
|
||||
|
||||
[data-bs-theme="dark"] .modal-backdrop {
|
||||
--tblr-backdrop-bg: #000 !important;
|
||||
--tblr-backdrop-opacity: 0.65 !important;
|
||||
}
|
||||
|
||||
.domain-name {
|
||||
font-family: monospace;
|
||||
}
|
||||
@@ -95,3 +104,15 @@ label.row {
|
||||
border-radius: var(--tblr-border-radius) 0 0 var(--tblr-border-radius);
|
||||
}
|
||||
}
|
||||
|
||||
/* Fix for dropdown menus being clipped by table-responsive containers. */
|
||||
.table-responsive .dropdown {
|
||||
position: static;
|
||||
}
|
||||
|
||||
/* Fix for Tabler scrollbar compensation */
|
||||
@media (min-width: 992px) {
|
||||
:host, :root {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
8
frontend/src/api/backend/checkVersion.ts
Normal file
8
frontend/src/api/backend/checkVersion.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
import * as api from "./base";
|
||||
import type { VersionCheckResponse } from "./responseTypes";
|
||||
|
||||
export async function checkVersion(): Promise<VersionCheckResponse> {
|
||||
return await api.get({
|
||||
url: "/version/check",
|
||||
});
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
export * from "./checkVersion";
|
||||
export * from "./createAccessList";
|
||||
export * from "./createCertificate";
|
||||
export * from "./createDeadHost";
|
||||
|
||||
@@ -19,3 +19,9 @@ export interface ValidatedCertificateResponse {
|
||||
export interface LoginAsTokenResponse extends TokenResponse {
|
||||
user: User;
|
||||
}
|
||||
|
||||
export interface VersionCheckResponse {
|
||||
current: string | null;
|
||||
latest: string | null;
|
||||
updateAvailable: boolean;
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ import cn from "classnames";
|
||||
import { useFormikContext } from "formik";
|
||||
import { useState } from "react";
|
||||
import type { AccessListClient } from "src/api/backend";
|
||||
import { T } from "src/locale";
|
||||
import { intl, T } from "src/locale";
|
||||
|
||||
interface Props {
|
||||
initialValues: AccessListClient[];
|
||||
@@ -65,8 +65,8 @@ export function AccessClientFields({ initialValues, name = "clients" }: Props) {
|
||||
value={client.directive}
|
||||
onChange={(e) => handleChange(idx, "directive", e.target.value)}
|
||||
>
|
||||
<option value="allow">Allow</option>
|
||||
<option value="deny">Deny</option>
|
||||
<option value="allow"><T id="action.allow" /></option>
|
||||
<option value="deny"><T id="action.deny" /></option>
|
||||
</select>
|
||||
</span>
|
||||
<input
|
||||
@@ -76,7 +76,7 @@ export function AccessClientFields({ initialValues, name = "clients" }: Props) {
|
||||
autoComplete="off"
|
||||
value={client.address}
|
||||
onChange={(e) => handleChange(idx, "address", e.target.value)}
|
||||
placeholder="192.168.1.100 or 192.168.1.0/24 or 2001:0db8::/32"
|
||||
placeholder={intl.formatMessage({ id: "access-list.rule-source.placeholder" })}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -112,7 +112,7 @@ export function AccessClientFields({ initialValues, name = "clients" }: Props) {
|
||||
value="deny"
|
||||
disabled
|
||||
>
|
||||
<option value="deny">Deny</option>
|
||||
<option value="deny"><T id="action.deny" /></option>
|
||||
</select>
|
||||
</span>
|
||||
<input
|
||||
|
||||
@@ -5,7 +5,7 @@ import { useState } from "react";
|
||||
import Select, { type ActionMeta } from "react-select";
|
||||
import type { DNSProvider } from "src/api/backend";
|
||||
import { useDnsProviders } from "src/hooks";
|
||||
import { T } from "src/locale";
|
||||
import { intl, T } from "src/locale";
|
||||
import styles from "./DNSProviderFields.module.css";
|
||||
|
||||
interface DNSProviderOption {
|
||||
@@ -57,7 +57,7 @@ export function DNSProviderFields({ showBoundaryBox = false }: Props) {
|
||||
id="dnsProvider"
|
||||
closeMenuOnSelect={true}
|
||||
isClearable={false}
|
||||
placeholder="Select a Provider..."
|
||||
placeholder={intl.formatMessage({ id: "certificates.dns.provider.placeholder" })}
|
||||
isLoading={isLoading}
|
||||
isSearchable
|
||||
onChange={handleChange}
|
||||
|
||||
@@ -5,7 +5,11 @@ import { useTheme } from "src/hooks";
|
||||
import { changeLocale, getFlagCodeForLocale, localeOptions, T } from "src/locale";
|
||||
import styles from "./LocalePicker.module.css";
|
||||
|
||||
function LocalePicker() {
|
||||
interface Props {
|
||||
menuAlign?: "start" | "end";
|
||||
}
|
||||
|
||||
function LocalePicker({ menuAlign = "start" }: Props) {
|
||||
const { locale, setLocale } = useLocaleState();
|
||||
const { getTheme } = useTheme();
|
||||
|
||||
@@ -23,9 +27,12 @@ function LocalePicker() {
|
||||
<button type="button" className={cns} data-bs-toggle="dropdown">
|
||||
<Flag countryCode={getFlagCodeForLocale(locale)} />
|
||||
</button>
|
||||
<div className="dropdown-menu">
|
||||
{localeOptions.map((item) => {
|
||||
return (
|
||||
<div
|
||||
className={cn("dropdown-menu", {
|
||||
"dropdown-menu-end": menuAlign === "end",
|
||||
})}
|
||||
>
|
||||
{localeOptions.map((item: any) => (
|
||||
<a
|
||||
className="dropdown-item"
|
||||
href={`/locale/${item[0]}`}
|
||||
@@ -37,8 +44,7 @@ function LocalePicker() {
|
||||
>
|
||||
<Flag countryCode={getFlagCodeForLocale(item[0])} /> <T id={`locale-${item[1]}`} />
|
||||
</a>
|
||||
);
|
||||
})}
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -2,5 +2,5 @@ interface Props {
|
||||
children: React.ReactNode;
|
||||
}
|
||||
export function SiteContainer({ children }: Props) {
|
||||
return <div className="container-xl py-3">{children}</div>;
|
||||
return <div className="container-xl py-3 min-w-0 overflow-x-auto">{children}</div>;
|
||||
}
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
import { useHealth } from "src/hooks";
|
||||
import { useCheckVersion, useHealth } from "src/hooks";
|
||||
import { T } from "src/locale";
|
||||
|
||||
export function SiteFooter() {
|
||||
const health = useHealth();
|
||||
const { data: versionData } = useCheckVersion();
|
||||
|
||||
const getVersion = () => {
|
||||
if (!health.data) {
|
||||
@@ -55,6 +56,19 @@ export function SiteFooter() {
|
||||
{getVersion()}{" "}
|
||||
</a>
|
||||
</li>
|
||||
{versionData?.updateAvailable && versionData?.latest && (
|
||||
<li className="list-inline-item">
|
||||
<a
|
||||
href={`https://github.com/NginxProxyManager/nginx-proxy-manager/releases/tag/${versionData.latest}`}
|
||||
className="link-warning fw-bold"
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
title={`New version ${versionData.latest} is available`}
|
||||
>
|
||||
<T id="update-available" data={{ latestVersion: versionData.latest }} />
|
||||
</a>
|
||||
</li>
|
||||
)}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -25,7 +25,7 @@ export function SiteHeader() {
|
||||
>
|
||||
<span className="navbar-toggler-icon" />
|
||||
</button>
|
||||
<div className="navbar-brand navbar-brand-autodark d-none-navbar-horizontal pe-0 pe-md-3">
|
||||
<div className="navbar-brand navbar-brand-autodark pe-0 pe-md-3">
|
||||
<NavLink to="/">
|
||||
<div className={styles.logo}>
|
||||
<img
|
||||
@@ -48,11 +48,11 @@ export function SiteHeader() {
|
||||
<ThemeSwitcher />
|
||||
</div>
|
||||
</div>
|
||||
<div className="nav-item d-none d-md-flex me-3">
|
||||
<div className="nav-item d-md-flex">
|
||||
<div className="nav-item dropdown">
|
||||
<a
|
||||
href="/"
|
||||
className="nav-link d-flex lh-1 p-0 px-2"
|
||||
className="nav-link d-flex lh-1"
|
||||
data-bs-toggle="dropdown"
|
||||
aria-label="Open user menu"
|
||||
>
|
||||
@@ -70,6 +70,22 @@ export function SiteHeader() {
|
||||
</div>
|
||||
</a>
|
||||
<div className="dropdown-menu dropdown-menu-end dropdown-menu-arrow">
|
||||
<div className="d-md-none">
|
||||
{/* biome-ignore lint/a11y/noStaticElementInteractions lint/a11y/useKeyWithClickEvents: This div is not interactive. */}
|
||||
<div className="p-2 pb-1 pe-1 d-flex align-items-center" onClick={e => e.stopPropagation()}>
|
||||
<div className="ps-2 pe-1 me-auto">
|
||||
<div>{currentUser?.nickname}</div>
|
||||
<div className="mt-1 small text-secondary text-nowrap">
|
||||
<T id={isAdmin ? "role.admin" : "role.standard-user"} />
|
||||
</div>
|
||||
</div>
|
||||
<div className="d-flex align-items-center">
|
||||
<ThemeSwitcher className="me-n2" />
|
||||
<LocalePicker menuAlign="end" />
|
||||
</div>
|
||||
</div>
|
||||
<div className="dropdown-divider" />
|
||||
</div>
|
||||
<a
|
||||
href="?"
|
||||
className="dropdown-item"
|
||||
|
||||
@@ -176,17 +176,13 @@ const getMenuDropown = (item: MenuItem, onClick?: () => void) => {
|
||||
};
|
||||
|
||||
export function SiteMenu() {
|
||||
// This is hacky AF. But that's the price of using a non-react UI kit.
|
||||
const closeMenus = () => {
|
||||
const navMenus = document.querySelectorAll(".nav-item.dropdown");
|
||||
navMenus.forEach((menu) => {
|
||||
menu.classList.remove("show");
|
||||
const dropdown = menu.querySelector(".dropdown-menu");
|
||||
if (dropdown) {
|
||||
dropdown.classList.remove("show");
|
||||
const closeMenu = () => setTimeout(() => {
|
||||
const navbarToggler = document.querySelector<HTMLElement>(".navbar-toggler");
|
||||
const navbarMenu = document.querySelector("#navbar-menu");
|
||||
if (navbarToggler && navbarMenu?.classList.contains("show")) {
|
||||
navbarToggler.click();
|
||||
}
|
||||
});
|
||||
};
|
||||
}, 300);
|
||||
|
||||
return (
|
||||
<header className="navbar-expand-md">
|
||||
@@ -198,7 +194,7 @@ export function SiteMenu() {
|
||||
<ul className="navbar-nav">
|
||||
{menuItems.length > 0 &&
|
||||
menuItems.map((item) => {
|
||||
return getMenuItem(item, closeMenus);
|
||||
return getMenuItem(item, closeMenu);
|
||||
})}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -10,8 +10,12 @@ interface Props {
|
||||
color?: string;
|
||||
}
|
||||
|
||||
const DomainLink = ({ domain, color }: { domain: string; color?: string }) => {
|
||||
const DomainLink = ({ domain, color }: { domain?: string; color?: string }) => {
|
||||
// when domain contains a wildcard, make the link go nowhere.
|
||||
// Apparently the domain can be null or undefined sometimes.
|
||||
// This try is just a safeguard to prevent the whole formatter from breaking.
|
||||
if (!domain) return null;
|
||||
try {
|
||||
let onClick: ((e: React.MouseEvent) => void) | undefined;
|
||||
if (domain.includes("*")) {
|
||||
onClick = (e: React.MouseEvent) => e.preventDefault();
|
||||
@@ -27,18 +31,21 @@ const DomainLink = ({ domain, color }: { domain: string; color?: string }) => {
|
||||
{domain}
|
||||
</a>
|
||||
);
|
||||
} catch {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
export function DomainsFormatter({ domains, createdOn, niceName, provider, color }: Props) {
|
||||
const elms: ReactNode[] = [];
|
||||
if (domains.length === 0 && !niceName) {
|
||||
if ((!domains || domains.length === 0) && !niceName) {
|
||||
elms.push(
|
||||
<span key="nice-name" className="badge bg-danger-lt me-2">
|
||||
Unknown
|
||||
</span>,
|
||||
);
|
||||
}
|
||||
if (niceName && provider !== "letsencrypt") {
|
||||
if (!domains || (niceName && provider !== "letsencrypt")) {
|
||||
elms.push(
|
||||
<span key="nice-name" className="badge bg-info-lt me-2">
|
||||
{niceName}
|
||||
@@ -46,7 +53,9 @@ export function DomainsFormatter({ domains, createdOn, niceName, provider, color
|
||||
);
|
||||
}
|
||||
|
||||
if (domains) {
|
||||
domains.map((domain: string) => elms.push(<DomainLink key={domain} domain={domain} color={color} />));
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="flex-fill">
|
||||
|
||||
@@ -12,10 +12,12 @@ interface TableLayoutProps<TFields> {
|
||||
function TableLayout<TFields>(props: TableLayoutProps<TFields>) {
|
||||
const hasRows = props.tableInstance.getRowModel().rows.length > 0;
|
||||
return (
|
||||
<div className="table-responsive">
|
||||
<table className="table table-vcenter table-selectable mb-0">
|
||||
{hasRows ? <TableHeader tableInstance={props.tableInstance} /> : null}
|
||||
<TableBody {...props} />
|
||||
</table>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ export * from "./useAuditLog";
|
||||
export * from "./useAuditLogs";
|
||||
export * from "./useCertificate";
|
||||
export * from "./useCertificates";
|
||||
export * from "./useCheckVersion";
|
||||
export * from "./useDeadHost";
|
||||
export * from "./useDeadHosts";
|
||||
export * from "./useDnsProviders";
|
||||
|
||||
18
frontend/src/hooks/useCheckVersion.ts
Normal file
18
frontend/src/hooks/useCheckVersion.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
import { useQuery } from "@tanstack/react-query";
|
||||
import { checkVersion, type VersionCheckResponse } from "src/api/backend";
|
||||
|
||||
const fetchVersion = () => checkVersion();
|
||||
|
||||
const useCheckVersion = (options = {}) => {
|
||||
return useQuery<VersionCheckResponse, Error>({
|
||||
queryKey: ["version-check"],
|
||||
queryFn: fetchVersion,
|
||||
refetchOnWindowFocus: false,
|
||||
retry: 5,
|
||||
refetchInterval: 30 * 1000, // 30 seconds
|
||||
staleTime: 5 * 60 * 1000, // 5 mins
|
||||
...options,
|
||||
});
|
||||
};
|
||||
|
||||
export { fetchVersion, useCheckVersion };
|
||||
74
frontend/src/locale/IntlProvider.tsx
Normal file → Executable file
74
frontend/src/locale/IntlProvider.tsx
Normal file → Executable file
@@ -1,41 +1,58 @@
|
||||
import { createIntl, createIntlCache } from "react-intl";
|
||||
import langDe from "./lang/de.json";
|
||||
import langEn from "./lang/en.json";
|
||||
import langEs from "./lang/es.json";
|
||||
import langDe from "./lang/de.json";
|
||||
import langIt from "./lang/it.json";
|
||||
import langJa from "./lang/ja.json";
|
||||
import langList from "./lang/lang-list.json";
|
||||
import langNl from "./lang/nl.json";
|
||||
import langPl from "./lang/pl.json";
|
||||
import langRu from "./lang/ru.json";
|
||||
import langSk from "./lang/sk.json";
|
||||
import langVi from "./lang/vi.json";
|
||||
import langZh from "./lang/zh.json";
|
||||
|
||||
// first item of each array should be the language code,
|
||||
// not the country code
|
||||
// Remember when adding to this list, also update check-locales.js script
|
||||
const localeOptions = [
|
||||
["en", "en-US"],
|
||||
["es", "es-ES"],
|
||||
["de", "de-DE"]
|
||||
["en", "en-US", langEn],
|
||||
["de", "de-DE", langDe],
|
||||
["es", "es-ES", langEs],
|
||||
["ja", "ja-JP", langJa],
|
||||
["it", "it-IT", langIt],
|
||||
["nl", "nl-NL", langNl],
|
||||
["pl", "pl-PL", langPl],
|
||||
["ru", "ru-RU", langRu],
|
||||
["sk", "sk-SK", langSk],
|
||||
["vi", "vi-VN", langVi],
|
||||
["zh", "zh-CN", langZh],
|
||||
];
|
||||
|
||||
const loadMessages = (locale?: string): typeof langList & typeof langEn => {
|
||||
const thisLocale = locale || "en";
|
||||
switch (thisLocale.slice(0, 2)) {
|
||||
case "es":
|
||||
return Object.assign({}, langList, langEs);
|
||||
case "de":
|
||||
return Object.assign({}, langList, langEn, langDe);
|
||||
default:
|
||||
const thisLocale = (locale || "en").slice(0, 2);
|
||||
|
||||
// ensure this lang exists in localeOptions above, otherwise fallback to en
|
||||
if (thisLocale === "en" || !localeOptions.some(([code]) => code === thisLocale)) {
|
||||
return Object.assign({}, langList, langEn);
|
||||
}
|
||||
|
||||
return Object.assign({}, langList, langEn, localeOptions.find(([code]) => code === thisLocale)?.[2]);
|
||||
};
|
||||
|
||||
const getFlagCodeForLocale = (locale?: string) => {
|
||||
switch (locale) {
|
||||
case "es-ES":
|
||||
case "es":
|
||||
return "ES";
|
||||
case "de-DE":
|
||||
case "de":
|
||||
return "DE";
|
||||
default:
|
||||
return "EN";
|
||||
const thisLocale = (locale || "en").slice(0, 2);
|
||||
|
||||
// only add to this if your flag is different from the locale code
|
||||
const specialCases: Record<string, string> = {
|
||||
ja: "jp", // Japan
|
||||
zh: "cn", // China
|
||||
};
|
||||
|
||||
if (specialCases[thisLocale]) {
|
||||
return specialCases[thisLocale].toUpperCase();
|
||||
}
|
||||
return thisLocale.toUpperCase();
|
||||
};
|
||||
|
||||
const getLocale = (short = false) => {
|
||||
@@ -56,10 +73,7 @@ const getLocale = (short = false) => {
|
||||
const cache = createIntlCache();
|
||||
|
||||
const initialMessages = loadMessages(getLocale());
|
||||
let intl = createIntl(
|
||||
{ locale: getLocale(), messages: initialMessages },
|
||||
cache,
|
||||
);
|
||||
let intl = createIntl({ locale: getLocale(), messages: initialMessages }, cache);
|
||||
|
||||
const changeLocale = (locale: string): void => {
|
||||
const messages = loadMessages(locale);
|
||||
@@ -99,12 +113,6 @@ const T = ({
|
||||
);
|
||||
};
|
||||
|
||||
export {
|
||||
localeOptions,
|
||||
getFlagCodeForLocale,
|
||||
getLocale,
|
||||
createIntl,
|
||||
changeLocale,
|
||||
intl,
|
||||
T,
|
||||
};
|
||||
console.log("L:", localeOptions);
|
||||
|
||||
export { localeOptions, getFlagCodeForLocale, getLocale, createIntl, changeLocale, intl, T };
|
||||
|
||||
@@ -39,8 +39,9 @@ not be complete by the time you're reading this:
|
||||
|
||||
- frontend/src/locale/src/[yourlang].json
|
||||
- frontend/src/locale/src/lang-list.json
|
||||
- frontend/src/locale/src/HelpDoc/*
|
||||
- frontend/src/locale/src/HelpDoc/[yourlang]/*
|
||||
- frontend/src/locale/IntlProvider.tsx
|
||||
- frontend/check-locales.cjs
|
||||
|
||||
|
||||
## Checking for missing translations in languages
|
||||
|
||||
@@ -1,215 +0,0 @@
|
||||
{
|
||||
"access-list": "Zugriffsliste",
|
||||
"access-list.access-count": "{count} {count, plural, one {Regel} other {Regeln}}",
|
||||
"access-list.auth-count": "{count} {count, plural, one {User} other {Users}}",
|
||||
"access-list.help-rules-last": "Wenn mindestens eine Regel vorhanden ist, wird diese Regel zum Ablehnen aller Anfragen als letzte hinzugefügt.",
|
||||
"access-list.help.rules-order": "Beachten Sie, dass die Anweisungen „Erlauben“ und „Verbieten“ in der Reihenfolge ihrer Definition angewendet werden.",
|
||||
"access-list.pass-auth": "Authentifizierung an Upstream weiterleiten",
|
||||
"access-list.public": "Öffentlich",
|
||||
"access-list.public.subtitle": "Keine Authentifizierung erforderlich",
|
||||
"access-list.satisfy-any": "Satisfy Any",
|
||||
"access-list.subtitle": "{users} {users, plural, one {User} other {Users}}, {rules} {rules, plural, one {Regel} other {Regeln}} - Erstellt: {date}",
|
||||
"access-lists": "Zugrifflisten",
|
||||
"action.add": "Hinzufügen",
|
||||
"action.add-location": "Pfad Hinzufügen",
|
||||
"action.close": "Schließen",
|
||||
"action.delete": "Löschen",
|
||||
"action.disable": "Deaktivieren",
|
||||
"action.download": "Herunterladen",
|
||||
"action.edit": "Bearbeiten",
|
||||
"action.enable": "Aktivieren",
|
||||
"action.permissions": "Berechtigungen",
|
||||
"action.renew": "Erneuert",
|
||||
"action.view-details": "Details",
|
||||
"auditlogs": "Protokoll",
|
||||
"cancel": "Abbrechen",
|
||||
"certificate": "Zertifikat",
|
||||
"certificate.custom-certificate": "Zertifikat",
|
||||
"certificate.custom-certificate-key": "Privater Schlüssel",
|
||||
"certificate.custom-intermediate": "Zwischen Zertifikat",
|
||||
"certificate.in-use": "In Benutzung",
|
||||
"certificate.none.subtitle": "Kein Zertifikat zugewiesen",
|
||||
"certificate.none.subtitle.for-http": "Dieser Host verwendet kein HTTPS.",
|
||||
"certificate.none.title": "Kein",
|
||||
"certificate.not-in-use": "Nicht in Benutzung",
|
||||
"certificates": "Zertifikate",
|
||||
"certificates.custom": "Benutzerdefiniertes Zertifikat",
|
||||
"certificates.custom.warning": "Mit einem Passwort geschützte Schlüsseldateien werden nicht unterstützt.",
|
||||
"certificates.dns.credentials": "Inhalt der Anmeldedaten-Datei",
|
||||
"certificates.dns.credentials-note": "Dieses Plugin erfordert eine Konfigurationsdatei, die einen API-Token oder andere Anmeldedaten für Ihren Anbieter enthält.",
|
||||
"certificates.dns.credentials-warning": "Diese Daten werden als Klartext in der Datenbank und in einer Datei gespeichert!",
|
||||
"certificates.dns.propagation-seconds": "Wartzeit in Sekunden",
|
||||
"certificates.dns.propagation-seconds-note": "Leer lassen um die Standardwartezeit des Plugins zu nutzen",
|
||||
"certificates.dns.provider": "DNS Provider",
|
||||
"certificates.dns.warning": "Dieser Abschnitt erfordert einige Kenntnisse über Certbot und seine DNS-Plugins. Bitte konsultieren Sie die jeweilige Plugin-Dokumentation.",
|
||||
"certificates.http.reachability-404": "Unter dieser Domain wurde ein Server gefunden, aber es scheint sich nicht um Nginx Proxy Manager zu handeln. Bitte stellen Sie sicher, dass Ihre Domain auf die IP-Adresse verweist, unter der Ihre NPM-Instanz ausgeführt wird.",
|
||||
"certificates.http.reachability-failed-to-check": "Die Erreichbarkeit konnte aufgrund eines Kommunikationsfehlers mit site24x7.com nicht überprüft werden.",
|
||||
"certificates.http.reachability-not-resolved": "Unter dieser Domain ist kein Server verfügbar. Bitte stellen Sie sicher, dass Ihre Domain existiert und auf die IP-Adresse verweist, unter der Ihre NPM-Instanz läuft, und dass gegebenenfalls Port 80 in Ihrem Router weitergeleitet wird.",
|
||||
"certificates.http.reachability-ok": "Ihr Server ist erreichbar und die Erstellung von Zertifikaten sollte möglich sein.",
|
||||
"certificates.http.reachability-other": "Unter dieser Domain wurde ein Server gefunden, der jedoch einen unerwarteten Statuscode {code} zurückgegeben hat. Handelt es sich um den NPM-Server? Bitte stellen Sie sicher, dass Ihre Domain auf die IP-Adresse verweist, unter der Ihre NPM-Instanz ausgeführt wird.",
|
||||
"certificates.http.reachability-wrong-data": "Unter dieser Domain wurde ein Server gefunden, der jedoch unerwartete Daten zurückgegeben hat. Handelt es sich um den NPM-Server? Bitte stellen Sie sicher, dass Ihre Domain auf die IP-Adresse verweist, unter der Ihre NPM-Instanz ausgeführt wird.",
|
||||
"certificates.http.test-results": "Test Ergeniss",
|
||||
"certificates.http.warning": "Diese Domänen müssen bereits so konfiguriert sein, dass sie auf diese Installation verweisen.",
|
||||
"certificates.request.subtitle": "Über Let's Encrypt",
|
||||
"certificates.request.title": "Anfordern eines neuen Zertifikates",
|
||||
"column.access": "Zugriff",
|
||||
"column.authorization": "Genehmigung",
|
||||
"column.authorizations": "Genehmigungen",
|
||||
"column.custom-locations": "Benutzerdefinierte Pfad",
|
||||
"column.destination": "Ziel",
|
||||
"column.details": "Details",
|
||||
"column.email": "Email",
|
||||
"column.event": "Ereignis",
|
||||
"column.expires": "Verfällt am",
|
||||
"column.http-code": "HTTP Code",
|
||||
"column.incoming-port": "Eingehender Port",
|
||||
"column.name": "Name",
|
||||
"column.protocol": "Protokoll",
|
||||
"column.provider": "Provider",
|
||||
"column.roles": "Rollen",
|
||||
"column.rules": "Regeln",
|
||||
"column.satisfy": "Satisfy",
|
||||
"column.satisfy-all": "Alle",
|
||||
"column.satisfy-any": "Jeder",
|
||||
"column.scheme": "Schema",
|
||||
"column.source": "Quelle",
|
||||
"column.ssl": "SSL",
|
||||
"column.status": "Status",
|
||||
"created-on": "Erstelldatum: {date}",
|
||||
"dashboard": "Dashboard",
|
||||
"dead-host": "404 Host",
|
||||
"dead-hosts": "404 Hosts",
|
||||
"dead-hosts.count": "{count} {count, plural, one {404 Host} other {404 Hosts}}",
|
||||
"disabled": "Deaktiviert",
|
||||
"domain-names": "Domain Names",
|
||||
"domain-names.max": "{count} Maximale Anzahl von Domainnamen",
|
||||
"domain-names.placeholder": "Eintragen der Domain...",
|
||||
"domain-names.wildcards-not-permitted": "Wildcards sind für diesen Typ nicht zulässig.",
|
||||
"domain-names.wildcards-not-supported": "Wildcards werden für diese Zertifizierungsstelle nicht unterstützt.",
|
||||
"domains.force-ssl": "Erzwinge SSL",
|
||||
"domains.hsts-enabled": "HSTS aktiviert",
|
||||
"domains.hsts-subdomains": "HSTS Sub-domains",
|
||||
"domains.http2-support": "HTTP/2 Support",
|
||||
"domains.use-dns": "Nutze DNS Challenge",
|
||||
"email-address": "Email Addresse",
|
||||
"empty-search": "Keine Ergebnisse gefunden",
|
||||
"empty-subtitle": "Warum erstellen Sie nicht eine?",
|
||||
"enabled": "aktiviert",
|
||||
"error.access.at-least-one": "Entweder eine Genehmigung oder eine Zugriffsregel ist erforderlich.",
|
||||
"error.access.duplicate-usernames": "Autorisierung Benutzernamen müssen eindeutig sein",
|
||||
"error.invalid-auth": "Ungültige E-Mail-Adresse oder Passwort",
|
||||
"error.invalid-domain": "Ungültige Domain: {domain}",
|
||||
"error.invalid-email": "Ungültige E-Mail-Adresse",
|
||||
"error.max-character-length": "Die maximale Länge beträgt {max} Zeichen{max, plural, one {} other {s}}",
|
||||
"error.max-domains": "Zu viele Domains, maximal sind {max}",
|
||||
"error.maximum": "Maximum ist {max}",
|
||||
"error.min-character-length": "Die minimale Länge beträgt {min} Zeichen{min, plural, one {} other {s}}",
|
||||
"error.minimum": "Minimum ist {min}",
|
||||
"error.passwords-must-match": "Passwörter müssen übereinstimmen",
|
||||
"error.required": "Dies ist erforderlich.",
|
||||
"expires.on": "Ablauf am: {date}",
|
||||
"footer.github-fork": "Fork me on Github",
|
||||
"host.flags.block-exploits": "Gängige Exploits blockieren",
|
||||
"host.flags.cache-assets": "Cache Assets",
|
||||
"host.flags.preserve-path": "Pfad beibehalten",
|
||||
"host.flags.protocols": "Protokole",
|
||||
"host.flags.websockets-upgrade": "Websockets Support",
|
||||
"host.forward-port": "Forward Port",
|
||||
"host.forward-scheme": "Schema",
|
||||
"hosts": "Hosts",
|
||||
"http-only": "HTTP Only",
|
||||
"lets-encrypt": "Let's Encrypt",
|
||||
"lets-encrypt-via-dns": "Let's Encrypt via DNS",
|
||||
"lets-encrypt-via-http": "Let's Encrypt via HTTP",
|
||||
"loading": "Laden…",
|
||||
"login.title": "Account Login",
|
||||
"nginx-config.label": "Benutzerdefinierte Nginx Konfiguration",
|
||||
"nginx-config.placeholder": "# Geben Sie hier Ihre benutzerdefinierte Nginx-Konfiguration auf eigene Gefahr ein!",
|
||||
"no-permission-error": "Sie haben keinen Zugriff, um dies anzuzeigen.",
|
||||
"notfound.action": "Take me home",
|
||||
"notfound.content": "We are sorry but the page you are looking for was not found",
|
||||
"notfound.title": "Oops… You just found an error page",
|
||||
"notification.error": "Error",
|
||||
"notification.object-deleted": "{object} wurde gelöscht",
|
||||
"notification.object-disabled": "{object} wurde deaktiviert",
|
||||
"notification.object-enabled": "{object} wurde aktiviert",
|
||||
"notification.object-renewed": "{object} wurde erneuert",
|
||||
"notification.object-saved": "{object} wurde gespeichert",
|
||||
"notification.success": "Erfolgreich",
|
||||
"object.actions-title": "{object} #{id}",
|
||||
"object.add": "{object} hinzufügen",
|
||||
"object.delete": "{object} löschen",
|
||||
"object.delete.content": "Bist du dir sicher das du diese(n) {object} löschen möchtest?",
|
||||
"object.edit": "{object} bearbeiten",
|
||||
"object.empty": "Keine {objects} vorhanden",
|
||||
"object.event.created": "{object} erstellt",
|
||||
"object.event.deleted": "{object} gelöscht",
|
||||
"object.event.disabled": "{object} deaktiviert",
|
||||
"object.event.enabled": "{object} aktiviert",
|
||||
"object.event.renewed": "{object} erneuert",
|
||||
"object.event.updated": "{object} aktualisiert",
|
||||
"offline": "Offline",
|
||||
"online": "Online",
|
||||
"options": "Optionen",
|
||||
"password": "Passwort",
|
||||
"password.generate": "Zufälliges Passwort generieren",
|
||||
"password.hide": "Passwort verstecken",
|
||||
"password.show": "Passwort anzeigen",
|
||||
"permissions.hidden": "Versteckt",
|
||||
"permissions.manage": "Verwalten",
|
||||
"permissions.view": "Nur anzeigen",
|
||||
"permissions.visibility.all": "Alle Elemente",
|
||||
"permissions.visibility.title": "Objekt Sichtbarkeit",
|
||||
"permissions.visibility.user": "Nur erstellte Elemente",
|
||||
"proxy-host": "Proxy Host",
|
||||
"proxy-host.forward-host": "Forward Hostname / IP",
|
||||
"proxy-hosts": "Proxy Hosts",
|
||||
"proxy-hosts.count": "{count} {count, plural, one {Proxy Host} other {Proxy Hosts}}",
|
||||
"public": "Öffentlich",
|
||||
"redirection-host": "Redirection Host",
|
||||
"redirection-host.forward-domain": "Forward Domain",
|
||||
"redirection-host.forward-http-code" : "HTTP Code",
|
||||
"redirection-hosts": "Redirection Hosts",
|
||||
"redirection-hosts.count": "{count} {count, plural, one {Redirection Host} other {Redirection Hosts}}",
|
||||
"role.admin": "Administrator",
|
||||
"role.standard-user": "Standard User",
|
||||
"save": "Speichern",
|
||||
"setting": "Einstellung",
|
||||
"settings": "Einstellungen",
|
||||
"settings.default-site": "Standard Seite",
|
||||
"settings.default-site.404": "404 Page",
|
||||
"settings.default-site.444": "No Response (444)",
|
||||
"settings.default-site.congratulations": "Willkommensseite",
|
||||
"settings.default-site.description": "Was angezeigt wird, wenn der Nginx eine unbekannte Webseitenanfrage bekommt",
|
||||
"settings.default-site.html": "Benutzerdefinierte HTML",
|
||||
"settings.default-site.html.placeholder": "<!-- Geben Sie hier Ihren benutzerdefinierten HTML-Inhalt ein. -->",
|
||||
"settings.default-site.redirect": "Weiterleitung",
|
||||
"setup.preamble": "Beginnen Sie mit der Erstellung Ihres Administratorkontos.",
|
||||
"setup.title": "Willkommen!",
|
||||
"sign-in": "Login",
|
||||
"ssl-certificate": "SSL Zertifikate",
|
||||
"stream": "Stream",
|
||||
"stream.forward-host": "Forward Host",
|
||||
"stream.incoming-port": "Incoming Port",
|
||||
"streams": "Streams",
|
||||
"streams.count": "{count} {count, plural, one {Stream} other {Streams}}",
|
||||
"streams.tcp": "TCP",
|
||||
"streams.udp": "UDP",
|
||||
"test": "Test",
|
||||
"user": "User",
|
||||
"user.change-password": "Passwort ändern",
|
||||
"user.confirm-password": "Passwort wiederholen",
|
||||
"user.current-password": "Aktuelles Passwort",
|
||||
"user.edit-profile": "Profil bearbeiten",
|
||||
"user.full-name": "Name",
|
||||
"user.login-as": "Einloggen als {name}",
|
||||
"user.logout": "Ausloggen",
|
||||
"user.new-password": "Neues Password",
|
||||
"user.nickname": "Nickname",
|
||||
"user.set-password": "Passwort setzen",
|
||||
"user.set-permissions": "Berechtigungen für {name} setzen",
|
||||
"user.switch-dark": "Zum Dark Mode wechseln",
|
||||
"user.switch-light": "Zum Light Mode wechslen",
|
||||
"username": "Benutzername",
|
||||
"users": "Benutzer"
|
||||
}
|
||||
@@ -1,216 +0,0 @@
|
||||
{
|
||||
"access-list": "Access List",
|
||||
"access-list.access-count": "{count} {count, plural, one {Rule} other {Rules}}",
|
||||
"access-list.auth-count": "{count} {count, plural, one {User} other {Users}}",
|
||||
"access-list.help-rules-last": "When at least 1 rule exists, this deny all rule will be added last",
|
||||
"access-list.help.rules-order": "Note that the allow and deny directives will be applied in the order they are defined.",
|
||||
"access-list.pass-auth": "Pass Auth to Upstream",
|
||||
"access-list.public": "Publicly Accessible",
|
||||
"access-list.public.subtitle": "No basic auth required",
|
||||
"access-list.satisfy-any": "Satisfy Any",
|
||||
"access-list.subtitle": "{users} {users, plural, one {User} other {Users}}, {rules} {rules, plural, one {Rule} other {Rules}} - Created: {date}",
|
||||
"access-lists": "Access Lists",
|
||||
"action.add": "Add",
|
||||
"action.add-location": "Add Location",
|
||||
"action.close": "Close",
|
||||
"action.delete": "Delete",
|
||||
"action.disable": "Disable",
|
||||
"action.download": "Download",
|
||||
"action.edit": "Edit",
|
||||
"action.enable": "Enable",
|
||||
"action.permissions": "Permissions",
|
||||
"action.renew": "Renew",
|
||||
"action.view-details": "View Details",
|
||||
"auditlogs": "Audit Logs",
|
||||
"cancel": "Cancel",
|
||||
"certificate": "Certificate",
|
||||
"certificate.custom-certificate": "Certificate",
|
||||
"certificate.custom-certificate-key": "Certificate Key",
|
||||
"certificate.custom-intermediate": "Intermediate Certificate",
|
||||
"certificate.in-use": "In Use",
|
||||
"certificate.none.subtitle": "No certificate assigned",
|
||||
"certificate.none.subtitle.for-http": "This host will not use HTTPS",
|
||||
"certificate.none.title": "None",
|
||||
"certificate.not-in-use": "Not Used",
|
||||
"certificate.renew": "Renew Certificate",
|
||||
"certificates": "Certificates",
|
||||
"certificates.custom": "Custom Certificate",
|
||||
"certificates.custom.warning": "Key files protected with a passphrase are not supported.",
|
||||
"certificates.dns.credentials": "Credentials File Content",
|
||||
"certificates.dns.credentials-note": "This plugin requires a configuration file containing an API token or other credentials for your provider",
|
||||
"certificates.dns.credentials-warning": "This data will be stored as plaintext in the database and in a file!",
|
||||
"certificates.dns.propagation-seconds": "Propagation Seconds",
|
||||
"certificates.dns.propagation-seconds-note": "Leave empty to use the plugins default value. Number of seconds to wait for DNS propagation.",
|
||||
"certificates.dns.provider": "DNS Provider",
|
||||
"certificates.dns.warning": "This section requires some knowledge about Certbot and its DNS plugins. Please consult the respective plugins documentation.",
|
||||
"certificates.http.reachability-404": "There is a server found at this domain but it does not seem to be Nginx Proxy Manager. Please make sure your domain points to the IP where your NPM instance is running.",
|
||||
"certificates.http.reachability-failed-to-check": "Failed to check the reachability due to a communication error with site24x7.com.",
|
||||
"certificates.http.reachability-not-resolved": "There is no server available at this domain. Please make sure your domain exists and points to the IP where your NPM instance is running and if necessary port 80 is forwarded in your router.",
|
||||
"certificates.http.reachability-ok": "Your server is reachable and creating certificates should be possible.",
|
||||
"certificates.http.reachability-other": "There is a server found at this domain but it returned an unexpected status code {code}. Is it the NPM server? Please make sure your domain points to the IP where your NPM instance is running.",
|
||||
"certificates.http.reachability-wrong-data": "There is a server found at this domain but it returned an unexpected data. Is it the NPM server? Please make sure your domain points to the IP where your NPM instance is running.",
|
||||
"certificates.http.test-results": "Test Results",
|
||||
"certificates.http.warning": "These domains must be already configured to point to this installation.",
|
||||
"certificates.request.subtitle": "with Let's Encrypt",
|
||||
"certificates.request.title": "Request a new Certificate",
|
||||
"column.access": "Access",
|
||||
"column.authorization": "Authorization",
|
||||
"column.authorizations": "Authorizations",
|
||||
"column.custom-locations": "Custom Locations",
|
||||
"column.destination": "Destination",
|
||||
"column.details": "Details",
|
||||
"column.email": "Email",
|
||||
"column.event": "Event",
|
||||
"column.expires": "Expires",
|
||||
"column.http-code": "HTTP Code",
|
||||
"column.incoming-port": "Incoming Port",
|
||||
"column.name": "Name",
|
||||
"column.protocol": "Protocol",
|
||||
"column.provider": "Provider",
|
||||
"column.roles": "Roles",
|
||||
"column.rules": "Rules",
|
||||
"column.satisfy": "Satisfy",
|
||||
"column.satisfy-all": "All",
|
||||
"column.satisfy-any": "Any",
|
||||
"column.scheme": "Scheme",
|
||||
"column.source": "Source",
|
||||
"column.ssl": "SSL",
|
||||
"column.status": "Status",
|
||||
"created-on": "Created: {date}",
|
||||
"dashboard": "Dashboard",
|
||||
"dead-host": "404 Host",
|
||||
"dead-hosts": "404 Hosts",
|
||||
"dead-hosts.count": "{count} {count, plural, one {404 Host} other {404 Hosts}}",
|
||||
"disabled": "Disabled",
|
||||
"domain-names": "Domain Names",
|
||||
"domain-names.max": "{count} domain names maximum",
|
||||
"domain-names.placeholder": "Start typing to add domain...",
|
||||
"domain-names.wildcards-not-permitted": "Wildcards not permitted for this type",
|
||||
"domain-names.wildcards-not-supported": "Wildcards not supported for this CA",
|
||||
"domains.force-ssl": "Force SSL",
|
||||
"domains.hsts-enabled": "HSTS Enabled",
|
||||
"domains.hsts-subdomains": "HSTS Sub-domains",
|
||||
"domains.http2-support": "HTTP/2 Support",
|
||||
"domains.use-dns": "Use DNS Challenge",
|
||||
"email-address": "Email address",
|
||||
"empty-search": "No results found",
|
||||
"empty-subtitle": "Why don't you create one?",
|
||||
"enabled": "Enabled",
|
||||
"error.access.at-least-one": "Either one Authorization or one Access Rule is required",
|
||||
"error.access.duplicate-usernames": "Authorization Usernames must be unique",
|
||||
"error.invalid-auth": "Invalid email or password",
|
||||
"error.invalid-domain": "Invalid domain: {domain}",
|
||||
"error.invalid-email": "Invalid email address",
|
||||
"error.max-character-length": "Maximum length is {max} character{max, plural, one {} other {s}}",
|
||||
"error.max-domains": "Too many domains, max is {max}",
|
||||
"error.maximum": "Maximum is {max}",
|
||||
"error.min-character-length": "Minimum length is {min} character{min, plural, one {} other {s}}",
|
||||
"error.minimum": "Minimum is {min}",
|
||||
"error.passwords-must-match": "Passwords must match",
|
||||
"error.required": "This is required",
|
||||
"expires.on": "Expires: {date}",
|
||||
"footer.github-fork": "Fork me on Github",
|
||||
"host.flags.block-exploits": "Block Common Exploits",
|
||||
"host.flags.cache-assets": "Cache Assets",
|
||||
"host.flags.preserve-path": "Preserve Path",
|
||||
"host.flags.protocols": "Protocols",
|
||||
"host.flags.websockets-upgrade": "Websockets Support",
|
||||
"host.forward-port": "Forward Port",
|
||||
"host.forward-scheme": "Scheme",
|
||||
"hosts": "Hosts",
|
||||
"http-only": "HTTP Only",
|
||||
"lets-encrypt": "Let's Encrypt",
|
||||
"lets-encrypt-via-dns": "Let's Encrypt via DNS",
|
||||
"lets-encrypt-via-http": "Let's Encrypt via HTTP",
|
||||
"loading": "Loading…",
|
||||
"login.title": "Login to your account",
|
||||
"nginx-config.label": "Custom Nginx Configuration",
|
||||
"nginx-config.placeholder": "# Enter your custom Nginx configuration here at your own risk!",
|
||||
"no-permission-error": "You do not have access to view this.",
|
||||
"notfound.action": "Take me home",
|
||||
"notfound.content": "We are sorry but the page you are looking for was not found",
|
||||
"notfound.title": "Oops… You just found an error page",
|
||||
"notification.error": "Error",
|
||||
"notification.object-deleted": "{object} has been deleted",
|
||||
"notification.object-disabled": "{object} has been disabled",
|
||||
"notification.object-enabled": "{object} has been enabled",
|
||||
"notification.object-renewed": "{object} has been renewed",
|
||||
"notification.object-saved": "{object} has been saved",
|
||||
"notification.success": "Success",
|
||||
"object.actions-title": "{object} #{id}",
|
||||
"object.add": "Add {object}",
|
||||
"object.delete": "Delete {object}",
|
||||
"object.delete.content": "Are you sure you want to delete this {object}?",
|
||||
"object.edit": "Edit {object}",
|
||||
"object.empty": "There are no {objects}",
|
||||
"object.event.created": "Created {object}",
|
||||
"object.event.deleted": "Deleted {object}",
|
||||
"object.event.disabled": "Disabled {object}",
|
||||
"object.event.enabled": "Enabled {object}",
|
||||
"object.event.renewed": "Renewed {object}",
|
||||
"object.event.updated": "Updated {object}",
|
||||
"offline": "Offline",
|
||||
"online": "Online",
|
||||
"options": "Options",
|
||||
"password": "Password",
|
||||
"password.generate": "Generate random password",
|
||||
"password.hide": "Hide Password",
|
||||
"password.show": "Show Password",
|
||||
"permissions.hidden": "Hidden",
|
||||
"permissions.manage": "Manage",
|
||||
"permissions.view": "View Only",
|
||||
"permissions.visibility.all": "All Items",
|
||||
"permissions.visibility.title": "Item Visibility",
|
||||
"permissions.visibility.user": "Created Items Only",
|
||||
"proxy-host": "Proxy Host",
|
||||
"proxy-host.forward-host": "Forward Hostname / IP",
|
||||
"proxy-hosts": "Proxy Hosts",
|
||||
"proxy-hosts.count": "{count} {count, plural, one {Proxy Host} other {Proxy Hosts}}",
|
||||
"public": "Public",
|
||||
"redirection-host": "Redirection Host",
|
||||
"redirection-host.forward-domain": "Forward Domain",
|
||||
"redirection-host.forward-http-code": "HTTP Code",
|
||||
"redirection-hosts": "Redirection Hosts",
|
||||
"redirection-hosts.count": "{count} {count, plural, one {Redirection Host} other {Redirection Hosts}}",
|
||||
"role.admin": "Administrator",
|
||||
"role.standard-user": "Standard User",
|
||||
"save": "Save",
|
||||
"setting": "Setting",
|
||||
"settings": "Settings",
|
||||
"settings.default-site": "Default Site",
|
||||
"settings.default-site.404": "404 Page",
|
||||
"settings.default-site.444": "No Response (444)",
|
||||
"settings.default-site.congratulations": "Congratulations Page",
|
||||
"settings.default-site.description": "What to show when Nginx is hit with an unknown Host",
|
||||
"settings.default-site.html": "Custom HTML",
|
||||
"settings.default-site.html.placeholder": "<!-- Enter your custom HTML content here -->",
|
||||
"settings.default-site.redirect": "Redirect",
|
||||
"setup.preamble": "Get started by creating your admin account.",
|
||||
"setup.title": "Welcome!",
|
||||
"sign-in": "Sign in",
|
||||
"ssl-certificate": "SSL Certificate",
|
||||
"stream": "Stream",
|
||||
"stream.forward-host": "Forward Host",
|
||||
"stream.incoming-port": "Incoming Port",
|
||||
"streams": "Streams",
|
||||
"streams.count": "{count} {count, plural, one {Stream} other {Streams}}",
|
||||
"streams.tcp": "TCP",
|
||||
"streams.udp": "UDP",
|
||||
"test": "Test",
|
||||
"user": "User",
|
||||
"user.change-password": "Change Password",
|
||||
"user.confirm-password": "Confirm Password",
|
||||
"user.current-password": "Current Password",
|
||||
"user.edit-profile": "Edit Profile",
|
||||
"user.full-name": "Full Name",
|
||||
"user.login-as": "Sign in as {name}",
|
||||
"user.logout": "Logout",
|
||||
"user.new-password": "New Password",
|
||||
"user.nickname": "Nickname",
|
||||
"user.set-password": "Set Password",
|
||||
"user.set-permissions": "Set Permissions for {name}",
|
||||
"user.switch-dark": "Switch to Dark mode",
|
||||
"user.switch-light": "Switch to Light mode",
|
||||
"username": "Username",
|
||||
"users": "Users"
|
||||
}
|
||||
@@ -1,216 +0,0 @@
|
||||
{
|
||||
"access-list": "Lista de Acceso",
|
||||
"access-list.access-count": "{count} {count, plural, one {Regla} other {Reglas}}",
|
||||
"access-list.auth-count": "{count} {count, plural, one {Usuario} other {Usuarios}}",
|
||||
"access-list.help-rules-last": "Cuando exista al menos 1 regla, esta regla de denegar todo se añadirá al final",
|
||||
"access-list.help.rules-order": "Ten en cuenta que las directivas de permitir y denegar se aplicarán en el orden en que estén definidas.",
|
||||
"access-list.pass-auth": "Pasar Autenticación al Upstream",
|
||||
"access-list.public": "Accesible Públicamente",
|
||||
"access-list.public.subtitle": "No se requiere autenticación básica",
|
||||
"access-list.satisfy-any": "Satisfacer Cualquiera",
|
||||
"access-list.subtitle": "{users} {users, plural, one {Usuario} other {Usuarios}}, {rules} {rules, plural, one {Regla} other {Reglas}} - Creado: {date}",
|
||||
"access-lists": "Listas de Acceso",
|
||||
"action.add": "Añadir",
|
||||
"action.add-location": "Añadir Ubicación",
|
||||
"action.close": "Cerrar",
|
||||
"action.delete": "Eliminar",
|
||||
"action.disable": "Deshabilitar",
|
||||
"action.download": "Descargar",
|
||||
"action.edit": "Editar",
|
||||
"action.enable": "Habilitar",
|
||||
"action.permissions": "Permisos",
|
||||
"action.renew": "Renovar",
|
||||
"action.view-details": "Ver Detalles",
|
||||
"auditlogs": "Registros de Auditoría",
|
||||
"cancel": "Cancelar",
|
||||
"certificate": "Certificado",
|
||||
"certificate.custom-certificate": "Certificado",
|
||||
"certificate.custom-certificate-key": "Clave del Certificado",
|
||||
"certificate.custom-intermediate": "Certificado Intermedio",
|
||||
"certificate.in-use": "En Uso",
|
||||
"certificate.none.subtitle": "Sin certificado asignado",
|
||||
"certificate.none.subtitle.for-http": "Este host no usará HTTPS",
|
||||
"certificate.none.title": "Ninguno",
|
||||
"certificate.not-in-use": "Sin Usar",
|
||||
"certificate.renew": "Renovar Certificado",
|
||||
"certificates": "Certificados",
|
||||
"certificates.custom": "Certificado Personalizado",
|
||||
"certificates.custom.warning": "No se admiten archivos de claves protegidos con contraseña.",
|
||||
"certificates.dns.credentials": "Contenido del Archivo de Credenciales",
|
||||
"certificates.dns.credentials-note": "Este plugin requiere un archivo de configuración que contenga un token de API u otras credenciales para tu proveedor",
|
||||
"certificates.dns.credentials-warning": "¡Estos datos se almacenarán como texto plano en la base de datos y en un archivo!",
|
||||
"certificates.dns.propagation-seconds": "Segundos de Propagación",
|
||||
"certificates.dns.propagation-seconds-note": "Dejar vacío para usar el valor predeterminado del plugin. Número de segundos a esperar para la propagación DNS.",
|
||||
"certificates.dns.provider": "Proveedor DNS",
|
||||
"certificates.dns.warning": "Esta sección requiere algunos conocimientos sobre Certbot y sus plugins DNS. Consulta la documentación de los plugins respectivos.",
|
||||
"certificates.http.reachability-404": "Se encontró un servidor en este dominio pero no parece ser Nginx Proxy Manager. Asegúrate de que tu dominio apunte a la IP donde se está ejecutando tu instancia de NPM.",
|
||||
"certificates.http.reachability-failed-to-check": "No se pudo verificar la accesibilidad debido a un error de comunicación con site24x7.com.",
|
||||
"certificates.http.reachability-not-resolved": "No hay ningún servidor disponible en este dominio. Asegúrate de que tu dominio existe y apunta a la IP donde se está ejecutando tu instancia de NPM y, si es necesario, que el puerto 80 esté redirigido en tu router.",
|
||||
"certificates.http.reachability-ok": "Tu servidor es accesible y debería ser posible crear certificados.",
|
||||
"certificates.http.reachability-other": "Se encontró un servidor en este dominio pero devolvió un código de estado inesperado {code}. ¿Es el servidor NPM? Asegúrate de que tu dominio apunte a la IP donde se está ejecutando tu instancia de NPM.",
|
||||
"certificates.http.reachability-wrong-data": "Se encontró un servidor en este dominio pero devolvió datos inesperados. ¿Es el servidor NPM? Asegúrate de que tu dominio apunte a la IP donde se está ejecutando tu instancia de NPM.",
|
||||
"certificates.http.test-results": "Resultados de la Prueba",
|
||||
"certificates.http.warning": "Estos dominios ya deben estar configurados para apuntar a esta instalación.",
|
||||
"certificates.request.subtitle": "con Let's Encrypt",
|
||||
"certificates.request.title": "Solicitar un nuevo Certificado",
|
||||
"column.access": "Acceso",
|
||||
"column.authorization": "Autorización",
|
||||
"column.authorizations": "Autorizaciones",
|
||||
"column.custom-locations": "Ubicaciones Personalizadas",
|
||||
"column.destination": "Destino",
|
||||
"column.details": "Detalles",
|
||||
"column.email": "Correo Electrónico",
|
||||
"column.event": "Evento",
|
||||
"column.expires": "Expira",
|
||||
"column.http-code": "Código HTTP",
|
||||
"column.incoming-port": "Puerto de Entrada",
|
||||
"column.name": "Nombre",
|
||||
"column.protocol": "Protocolo",
|
||||
"column.provider": "Proveedor",
|
||||
"column.roles": "Roles",
|
||||
"column.rules": "Reglas",
|
||||
"column.satisfy": "Satisfacer",
|
||||
"column.satisfy-all": "Todo",
|
||||
"column.satisfy-any": "Cualquiera",
|
||||
"column.scheme": "Esquema",
|
||||
"column.source": "Origen",
|
||||
"column.ssl": "SSL",
|
||||
"column.status": "Estado",
|
||||
"created-on": "Creado: {date}",
|
||||
"dashboard": "Panel de Control",
|
||||
"dead-host": "Host 404",
|
||||
"dead-hosts": "Hosts 404",
|
||||
"dead-hosts.count": "{count} {count, plural, one {Host 404} other {Hosts 404}}",
|
||||
"disabled": "Deshabilitado",
|
||||
"domain-names": "Nombres de Dominio",
|
||||
"domain-names.max": "{count} nombres de dominio como máximo",
|
||||
"domain-names.placeholder": "Comienza a escribir para añadir dominio...",
|
||||
"domain-names.wildcards-not-permitted": "No se permiten comodines para este tipo",
|
||||
"domain-names.wildcards-not-supported": "No se admiten comodines para esta CA",
|
||||
"domains.force-ssl": "Forzar SSL",
|
||||
"domains.hsts-enabled": "HSTS Habilitado",
|
||||
"domains.hsts-subdomains": "HSTS en Subdominios",
|
||||
"domains.http2-support": "Soporte HTTP/2",
|
||||
"domains.use-dns": "Usar Desafío DNS",
|
||||
"email-address": "Dirección de correo electrónico",
|
||||
"empty-search": "No se encontraron resultados",
|
||||
"empty-subtitle": "¿Por qué no creas uno?",
|
||||
"enabled": "Habilitado",
|
||||
"error.access.at-least-one": "Se requiere al menos una Autorización o una Regla de Acceso",
|
||||
"error.access.duplicate-usernames": "Los nombres de usuario de autorización deben ser únicos",
|
||||
"error.invalid-auth": "Correo electrónico o contraseña no válidos",
|
||||
"error.invalid-domain": "Dominio no válido: {domain}",
|
||||
"error.invalid-email": "Dirección de correo electrónico no válida",
|
||||
"error.max-character-length": "La longitud máxima es {max} caracter{max, plural, one {} other {es}}",
|
||||
"error.max-domains": "Demasiados dominios, el máximo es {max}",
|
||||
"error.maximum": "El máximo es {max}",
|
||||
"error.min-character-length": "La longitud mínima es {min} caracter{min, plural, one {} other {es}}",
|
||||
"error.minimum": "El mínimo es {min}",
|
||||
"error.passwords-must-match": "Las contraseñas deben coincidir",
|
||||
"error.required": "Este campo es obligatorio",
|
||||
"expires.on": "Expira: {date}",
|
||||
"footer.github-fork": "Bifúrcame en Github",
|
||||
"host.flags.block-exploits": "Bloquear Exploits Comunes",
|
||||
"host.flags.cache-assets": "Cachear Recursos",
|
||||
"host.flags.preserve-path": "Preservar Ruta",
|
||||
"host.flags.protocols": "Protocolos",
|
||||
"host.flags.websockets-upgrade": "Soporte de Websockets",
|
||||
"host.forward-port": "Puerto de Reenvío",
|
||||
"host.forward-scheme": "Esquema",
|
||||
"hosts": "Hosts",
|
||||
"http-only": "Solo HTTP",
|
||||
"lets-encrypt": "Let's Encrypt",
|
||||
"lets-encrypt-via-dns": "Let's Encrypt vía DNS",
|
||||
"lets-encrypt-via-http": "Let's Encrypt vía HTTP",
|
||||
"loading": "Cargando…",
|
||||
"login.title": "Inicia sesión en tu cuenta",
|
||||
"nginx-config.label": "Configuración Personalizada de Nginx",
|
||||
"nginx-config.placeholder": "# ¡Introduce aquí tu configuración personalizada de Nginx bajo tu propio riesgo!",
|
||||
"no-permission-error": "No tienes acceso para ver esto.",
|
||||
"notfound.action": "Llévame al inicio",
|
||||
"notfound.content": "Lo sentimos, pero la página que buscas no fue encontrada",
|
||||
"notfound.title": "Ups… Has encontrado una página de error",
|
||||
"notification.error": "Error",
|
||||
"notification.object-deleted": "{object} ha sido eliminado",
|
||||
"notification.object-disabled": "{object} ha sido deshabilitado",
|
||||
"notification.object-enabled": "{object} ha sido habilitado",
|
||||
"notification.object-renewed": "{object} ha sido renovado",
|
||||
"notification.object-saved": "{object} ha sido guardado",
|
||||
"notification.success": "Éxito",
|
||||
"object.actions-title": "{object} #{id}",
|
||||
"object.add": "Añadir {object}",
|
||||
"object.delete": "Eliminar {object}",
|
||||
"object.delete.content": "¿Estás seguro de que quieres eliminar este {object}?",
|
||||
"object.edit": "Editar {object}",
|
||||
"object.empty": "No hay {objects}",
|
||||
"object.event.created": "{object} Creado",
|
||||
"object.event.deleted": "{object} Eliminado",
|
||||
"object.event.disabled": "{object} Deshabilitado",
|
||||
"object.event.enabled": "{object} Habilitado",
|
||||
"object.event.renewed": "{object} Renovado",
|
||||
"object.event.updated": "{object} Actualizado",
|
||||
"offline": "Desconectado",
|
||||
"online": "Conectado",
|
||||
"options": "Opciones",
|
||||
"password": "Contraseña",
|
||||
"password.generate": "Generar contraseña aleatoria",
|
||||
"password.hide": "Ocultar Contraseña",
|
||||
"password.show": "Mostrar Contraseña",
|
||||
"permissions.hidden": "Oculto",
|
||||
"permissions.manage": "Gestionar",
|
||||
"permissions.view": "Solo Ver",
|
||||
"permissions.visibility.all": "Todos los Elementos",
|
||||
"permissions.visibility.title": "Visibilidad de Elementos",
|
||||
"permissions.visibility.user": "Solo Elementos Creados",
|
||||
"proxy-host": "Host Proxy",
|
||||
"proxy-host.forward-host": "Nombre de Host / IP de Reenvío",
|
||||
"proxy-hosts": "Hosts Proxy",
|
||||
"proxy-hosts.count": "{count} {count, plural, one {Host Proxy} other {Hosts Proxy}}",
|
||||
"public": "Público",
|
||||
"redirection-host": "Host de Redirección",
|
||||
"redirection-host.forward-domain": "Dominio de Reenvío",
|
||||
"redirection-host.forward-http-code": "Código HTTP",
|
||||
"redirection-hosts": "Hosts de Redirección",
|
||||
"redirection-hosts.count": "{count} {count, plural, one {Host de Redirección} other {Hosts de Redirección}}",
|
||||
"role.admin": "Administrador",
|
||||
"role.standard-user": "Usuario Estándar",
|
||||
"save": "Guardar",
|
||||
"setting": "Configuración",
|
||||
"settings": "Configuración",
|
||||
"settings.default-site": "Sitio Predeterminado",
|
||||
"settings.default-site.404": "Página 404",
|
||||
"settings.default-site.444": "Sin Respuesta (444)",
|
||||
"settings.default-site.congratulations": "Página de Felicitaciones",
|
||||
"settings.default-site.description": "Qué mostrar cuando Nginx recibe un Host desconocido",
|
||||
"settings.default-site.html": "HTML Personalizado",
|
||||
"settings.default-site.html.placeholder": "<!-- Introduce aquí tu contenido HTML personalizado -->",
|
||||
"settings.default-site.redirect": "Redirigir",
|
||||
"setup.preamble": "Comienza creando tu cuenta de administrador.",
|
||||
"setup.title": "¡Bienvenido!",
|
||||
"sign-in": "Iniciar Sesión",
|
||||
"ssl-certificate": "Certificado SSL",
|
||||
"stream": "Stream",
|
||||
"stream.forward-host": "Host de Reenvío",
|
||||
"stream.incoming-port": "Puerto de Entrada",
|
||||
"streams": "Streams",
|
||||
"streams.count": "{count} {count, plural, one {Stream} other {Streams}}",
|
||||
"streams.tcp": "TCP",
|
||||
"streams.udp": "UDP",
|
||||
"test": "Probar",
|
||||
"user": "Usuario",
|
||||
"user.change-password": "Cambiar Contraseña",
|
||||
"user.confirm-password": "Confirmar Contraseña",
|
||||
"user.current-password": "Contraseña Actual",
|
||||
"user.edit-profile": "Editar Perfil",
|
||||
"user.full-name": "Nombre Completo",
|
||||
"user.login-as": "Iniciar sesión como {name}",
|
||||
"user.logout": "Cerrar Sesión",
|
||||
"user.new-password": "Nueva Contraseña",
|
||||
"user.nickname": "Apodo",
|
||||
"user.set-password": "Establecer Contraseña",
|
||||
"user.set-permissions": "Establecer Permisos para {name}",
|
||||
"user.switch-dark": "Cambiar a modo Oscuro",
|
||||
"user.switch-light": "Cambiar a modo Claro",
|
||||
"username": "Nombre de Usuario",
|
||||
"users": "Usuarios"
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"locale-de-DE": "German",
|
||||
"locale-en-US": "English",
|
||||
"locale-es-ES": "Español"
|
||||
}
|
||||
@@ -1,9 +1,15 @@
|
||||
// import * as de from "./de/index";
|
||||
// import * as fa from "./fa/index";
|
||||
import * as en from "./en/index";
|
||||
import * as de from "./de/index";
|
||||
import * as en from "./en/index";
|
||||
import * as it from "./it/index";
|
||||
import * as ja from "./ja/index";
|
||||
import * as nl from "./nl/index";
|
||||
import * as pl from "./pl/index";
|
||||
import * as ru from "./ru/index";
|
||||
import * as sk from "./sk/index";
|
||||
import * as vi from "./vi/index";
|
||||
import * as zh from "./zh/index";
|
||||
|
||||
const items: any = { en, de };
|
||||
const items: any = { en, de, ja, sk, zh, pl, ru, it, vi, nl };
|
||||
|
||||
const fallbackLang = "en";
|
||||
|
||||
|
||||
7
frontend/src/locale/src/HelpDoc/it/AccessLists.md
Normal file
7
frontend/src/locale/src/HelpDoc/it/AccessLists.md
Normal file
@@ -0,0 +1,7 @@
|
||||
## Che cos'è una Lista di Accesso?
|
||||
|
||||
La Lista di Accesso fornisce una blacklist o una whitelist di indirizzi IP specifici dei client insieme all'autenticazione per gli host proxy tramite autenticazione HTTP di base.
|
||||
|
||||
È possibile configurare più regole client, nomi utente e password per un singolo lista di accesso e quindi applicarlo a uno o più host proxy.
|
||||
|
||||
Ciò è particolarmente utile per i servizi web inoltrati che non dispongono di meccanismi di autenticazione integrati o quando si desidera proteggersi da client sconosciuti.
|
||||
24
frontend/src/locale/src/HelpDoc/it/Certificates.md
Normal file
24
frontend/src/locale/src/HelpDoc/it/Certificates.md
Normal file
@@ -0,0 +1,24 @@
|
||||
## Guida sui Certificati
|
||||
|
||||
### Certificato HTTP
|
||||
|
||||
Un certificato convalidato HTTP significa che i server Let's Encrypttenteranno di raggiungere i tuoi domini tramite HTTP (non HTTPS!) e, in caso di esito positivo, emetteranno il tuo certificato.
|
||||
|
||||
Per questo metodo, dovrai creare un _Proxy Host_ per i tuoi domini chesia accessibile con HTTP e che punti a questa installazione Nginx.
|
||||
Dopo che il certificato è stato rilasciato, puoi modificare il _Proxy Host_ per utilizzare questo certificato anche per le connessioni HTTPS.
|
||||
Tuttavia, il _Proxy Host_ dovrà comunque essere configurato per l'accesso HTTP affinché il certificato possa essere rinnovato.
|
||||
|
||||
Questo processo _non_ supporta i domini wildcard.
|
||||
|
||||
### Certificato DNS
|
||||
|
||||
Un certificato convalidato dal DNS richiede l'uso di un plugin DNS Provider. Questo DNS Provider verrà utilizzato per creare record temporanei sul tuo dominio,
|
||||
quindi Let's Encrypt interrogherà tali record per assicurarsi che tu sia il proprietario e, in caso di esito positivo,rilascerà il tuo certificato.
|
||||
|
||||
Non è necessario creare un _Proxy Host_ prima di richiedere questo tipo di certificato. Non è nemmeno necessario configurare il tuo _proxy host_ per l'accesso HTTP.
|
||||
|
||||
Questo processo _supporta_ i domini wildcard.
|
||||
|
||||
### Certificato personalizzato
|
||||
|
||||
Utilizza questa opzione per caricare il tuo certificato SSL, fornito dalla tua autorità di certificazione.
|
||||
9
frontend/src/locale/src/HelpDoc/it/DeadHosts.md
Normal file
9
frontend/src/locale/src/HelpDoc/it/DeadHosts.md
Normal file
@@ -0,0 +1,9 @@
|
||||
## Che cos'è un Host 404?
|
||||
|
||||
Un Host 404 è semplicemente una configurazione host che mostra una pagina 404.
|
||||
|
||||
Questo può essere utile quando il tuo dominio è elencato nei motori di ricerca e desideri fornire una pagina di errore più gradevole o specificare agli
|
||||
indicizzatori di ricerca che le pagine del dominio non esistono più.
|
||||
|
||||
Un altro vantaggio di avere questo host è quello di tracciare i log degli accessi e
|
||||
visualizzare i referrer.
|
||||
7
frontend/src/locale/src/HelpDoc/it/ProxyHosts.md
Normal file
7
frontend/src/locale/src/HelpDoc/it/ProxyHosts.md
Normal file
@@ -0,0 +1,7 @@
|
||||
## Che cos'è un Proxy Host?
|
||||
|
||||
Un host proxy è l'endpoint in entrata per un servizio web che si desidera inoltrare.
|
||||
|
||||
Fornisce la terminazione SSL opzionale per il servizio che potrebbe non avere il supporto SSL integrato.
|
||||
|
||||
Gli host proxy sono l'uso più comune per Nginx Proxy Manager.
|
||||
7
frontend/src/locale/src/HelpDoc/it/RedirectionHosts.md
Normal file
7
frontend/src/locale/src/HelpDoc/it/RedirectionHosts.md
Normal file
@@ -0,0 +1,7 @@
|
||||
## Che cos'è un Host di reindirizzamento?
|
||||
|
||||
Un Host di reindirizzamento reindirizza le richieste provenienti dal dominio in entrata e indirizza il
|
||||
visitatore verso un altro dominio.
|
||||
|
||||
Il motivo più comune per utilizzare questo tipo di host è quando il tuo sito web cambia
|
||||
dominio, ma hai ancora link di motori di ricerca o referrer che puntano al vecchio dominio.
|
||||
6
frontend/src/locale/src/HelpDoc/it/Streams.md
Normal file
6
frontend/src/locale/src/HelpDoc/it/Streams.md
Normal file
@@ -0,0 +1,6 @@
|
||||
## Che cos'è uno Stream?
|
||||
|
||||
Una funzionalità relativamente nuova per Nginx, uno Stream serve a inoltrare il traffico TCP/UDP
|
||||
direttamente a un altro computer sulla rete.
|
||||
|
||||
Se gestisci server di gioco, FTP o SSH, questa funzionalità può rivelarsi molto utile.
|
||||
6
frontend/src/locale/src/HelpDoc/it/index.ts
Normal file
6
frontend/src/locale/src/HelpDoc/it/index.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
export * as AccessLists from "./AccessLists.md";
|
||||
export * as Certificates from "./Certificates.md";
|
||||
export * as DeadHosts from "./DeadHosts.md";
|
||||
export * as ProxyHosts from "./ProxyHosts.md";
|
||||
export * as RedirectionHosts from "./RedirectionHosts.md";
|
||||
export * as Streams from "./Streams.md";
|
||||
8
frontend/src/locale/src/HelpDoc/ja/AccessLists.md
Normal file
8
frontend/src/locale/src/HelpDoc/ja/AccessLists.md
Normal file
@@ -0,0 +1,8 @@
|
||||
## アクセスリストとは
|
||||
|
||||
アクセスリストは特定のクライアントIPへのブラックリストとホワイトリストを提供し、ベーシック認証によるプロキシホストへの認証を可能にします。
|
||||
|
||||
複数のクライアントルールやユーザー名とパスワードを一つのアクセスリストに設定し、一つ以上の _プロキシホスト_ に適応することができます。
|
||||
|
||||
これは認証システムを持たないサービスや不明なクライアントからの保護が必要な場合に有効です。
|
||||
|
||||
21
frontend/src/locale/src/HelpDoc/ja/Certificates.md
Normal file
21
frontend/src/locale/src/HelpDoc/ja/Certificates.md
Normal file
@@ -0,0 +1,21 @@
|
||||
## 証明書
|
||||
|
||||
### HTTP 証明書
|
||||
|
||||
HTTPによって検証された証明書はLet's EncryptサーバーがHTTPでドメインにアクセスを試みサーバーを管理していることを確認できた場合に発行される証明書です。
|
||||
|
||||
この方法では、HTTPアクセス可能でこのNginxを指しているドメインに対して _プロキシホスト_ を作成する必要があります。証明書が発行された後は、 _プロキシホスト_ を編集してこの証明書をHTTPS接続に使用するように設定できます。ただし、証明書の更新には、_プロキシホスト_ がHTTP接続用に設定された状態を維持する必要があります。
|
||||
|
||||
この方法はワイルドカードのドメインをサポート _していません_ 。
|
||||
|
||||
### DNS 証明書
|
||||
|
||||
DNSによって検証された証明書にはDNSプロバイダープラグインが必要です。このプロバイダーはドメイン上に一時レコードを作成するために使用されます。その後Let's Encryptサーバーがそのレコードを参照し、あなたが所有していることを確認できると証明書が発行されます。
|
||||
|
||||
このタイプの証明書を作成する際に、 _プロキシホスト_ を作成する必要はありません。また、_プロキシホスト_ をHTTPアクセス用に設定する必要もありません。
|
||||
|
||||
この方法はワイルドカードのドメインをサポート _します_ 。
|
||||
|
||||
### カスタム証明書
|
||||
|
||||
このオプションでは、あなたの証明書認証局によって提供された自身の証明書をアップロードして使用できます。
|
||||
7
frontend/src/locale/src/HelpDoc/ja/DeadHosts.md
Normal file
7
frontend/src/locale/src/HelpDoc/ja/DeadHosts.md
Normal file
@@ -0,0 +1,7 @@
|
||||
## 404ホストとはなんですか?
|
||||
|
||||
404ホストとは、単に404ページを表示するよう設定されたホストです。
|
||||
|
||||
これは、検索エンジンに登録されたドメインに分かりやすいエラーページを提供したい場合や、検索エンジンのインデクサーにドメインページがもう存在しないことを伝えたい場合に便利です。
|
||||
|
||||
このホストを持つもう一つの利点は、アクセスログを追跡し、参照元を確認できることです。
|
||||
7
frontend/src/locale/src/HelpDoc/ja/ProxyHosts.md
Normal file
7
frontend/src/locale/src/HelpDoc/ja/ProxyHosts.md
Normal file
@@ -0,0 +1,7 @@
|
||||
## プロキシホストとは何ですか?
|
||||
|
||||
プロキシホストは転送したいwebサービスの受信エンドポイントです。
|
||||
|
||||
サービスにSSLサーバーが組み込まれていない場合でも、オプションでSSL終端機能を提供します。
|
||||
|
||||
プロキシホストはNginx Proxy Managerのもっとも一般的な使用方法です。
|
||||
5
frontend/src/locale/src/HelpDoc/ja/RedirectionHosts.md
Normal file
5
frontend/src/locale/src/HelpDoc/ja/RedirectionHosts.md
Normal file
@@ -0,0 +1,5 @@
|
||||
## リダイレクトホストとは何ですか?
|
||||
|
||||
リダイレクトホストは受信したリクエストを別のドメインにリダイレクトして訪問者に表示します。
|
||||
|
||||
このタイプのもっとも一般的な使用理由は、webサイトのドメインが変更されたが検索エンジンやリンクが古いドメインを指し続けている場合です。
|
||||
5
frontend/src/locale/src/HelpDoc/ja/Streams.md
Normal file
5
frontend/src/locale/src/HelpDoc/ja/Streams.md
Normal file
@@ -0,0 +1,5 @@
|
||||
## ストリームとは何ですか?
|
||||
|
||||
Nginxの比較的新しい機能であるストリームは、TCP/UDPトラフィックをネットワーク上の別のコンピュータに直接転送します。
|
||||
|
||||
ゲームサーバー、FTPサーバー、SSHサーバーを運用している場合に便利です。
|
||||
6
frontend/src/locale/src/HelpDoc/ja/index.ts
Normal file
6
frontend/src/locale/src/HelpDoc/ja/index.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
export * as AccessLists from "./AccessLists.md";
|
||||
export * as Certificates from "./Certificates.md";
|
||||
export * as DeadHosts from "./DeadHosts.md";
|
||||
export * as ProxyHosts from "./ProxyHosts.md";
|
||||
export * as RedirectionHosts from "./RedirectionHosts.md";
|
||||
export * as Streams from "./Streams.md";
|
||||
7
frontend/src/locale/src/HelpDoc/nl/AccessLists.md
Normal file
7
frontend/src/locale/src/HelpDoc/nl/AccessLists.md
Normal file
@@ -0,0 +1,7 @@
|
||||
## Wat is een Toegangslijst?
|
||||
|
||||
Toeganslijsten bieden een zwarte- of witte lijst van specifieke client IP-adressen samen met authenticatie voor de Proxy Hosts via Basic HTTP Authenticatie.
|
||||
|
||||
Je kan meerdere client regels, gebruikersnamen en wachtwoorden voor een enkele Toegangslijst configureren en toepassen op één of meerdere _Proxy Hosts_.
|
||||
|
||||
Dit is het meest nuttig voor doorgestuurde webdiensten die geen authenticatiemechanismen hebben of wanneer je wilt beveiligen tegen onbekende bezoekers.
|
||||
31
frontend/src/locale/src/HelpDoc/nl/Certificates.md
Normal file
31
frontend/src/locale/src/HelpDoc/nl/Certificates.md
Normal file
@@ -0,0 +1,31 @@
|
||||
## Certificaten Hulp
|
||||
|
||||
### HTTP Certificaat
|
||||
|
||||
Een HTTP gevalideerd certificaat betekent dat Let's Encrypt servers
|
||||
zullen proberen om over HTTP te bereiken (niet HTTPS!) en als dat gelukt is, zal
|
||||
jouw certificaat worden uitgegeven.
|
||||
|
||||
Voor deze zal je een _Proxy Host_ moeten hebben die is toegankelijk via HTTP en
|
||||
die naar deze Nginx installatie wijst. Nadat een certificaat is uitgegeven kan je
|
||||
de _Proxy Host_ wijzigen om ook HTTPS toegang te geven. Maar de _Proxy Host_ zal
|
||||
nog moeten worden geconfigureerd voor HTTP toegang om het certificaat te verlengen.
|
||||
|
||||
Dit proces ondersteunt geen domeinen met wildcards.
|
||||
|
||||
### DNS Certificaat
|
||||
|
||||
Een DNS gevalideerd certificaat zal gebruik maken van een DNS Provider plugin. De
|
||||
DNS Provider zal tijdelijke records op jouw domein maken en Let's Encrypt zal deze
|
||||
records opvragen om te controleren of je de eigenaar bent. Als dat is gecontroleerd
|
||||
is zal Let's Encrypt het certificaat uitgeven.
|
||||
|
||||
Je hebt geen _Proxy Host_ nodig om dit soort certificaat aan te vragen. Je hebt dus
|
||||
geen HTTP _Proxy Host_ nodig.
|
||||
|
||||
Dit proces ondersteunt _wel_ domeinen met wildcards.
|
||||
|
||||
### Aangepast Certificaat
|
||||
|
||||
Gebruik deze optie om jouw eigen SSL Certificaat te uploaden, zoals
|
||||
geleverd door jouw eigen Certificate Authority.
|
||||
10
frontend/src/locale/src/HelpDoc/nl/DeadHosts.md
Normal file
10
frontend/src/locale/src/HelpDoc/nl/DeadHosts.md
Normal file
@@ -0,0 +1,10 @@
|
||||
## Wat is een 404 Host?
|
||||
|
||||
Simpel gezegd is een 404 Host een host setup die een 404 pagina weergeeft.
|
||||
|
||||
Dit kan nuttig zijn wanneer jouw domein is opgegeven in zoekmachines en je wil
|
||||
een betere foutpagina leveren of specifiek om te zeggen tegen de zoekmachines dat
|
||||
het domein niet langer bestaat.
|
||||
|
||||
Een ander voordeel van het hebben van een 404 Host is om de logs voor bezoeken
|
||||
te volgen en de referenties te bekijken.
|
||||
7
frontend/src/locale/src/HelpDoc/nl/ProxyHosts.md
Normal file
7
frontend/src/locale/src/HelpDoc/nl/ProxyHosts.md
Normal file
@@ -0,0 +1,7 @@
|
||||
## Wat is een Proxy Host?
|
||||
|
||||
Een Proxy Host is de inkomende endpoint voor een webdienst dat je wilt doorsturen.
|
||||
|
||||
Het biedt optionele SSL voor je dienst die mogelijk geen SSL ondersteuning heeft.
|
||||
|
||||
Proxy Hosts worden het meest gebruikt in Nginx Proxy Manager.
|
||||
7
frontend/src/locale/src/HelpDoc/nl/RedirectionHosts.md
Normal file
7
frontend/src/locale/src/HelpDoc/nl/RedirectionHosts.md
Normal file
@@ -0,0 +1,7 @@
|
||||
## Wat is een Redirection Host?
|
||||
|
||||
Een Redirection Host zal verzoeken van de inkomende domeinnaam doorsturen, en de bezoeker
|
||||
omleiden naar een andere domeinnaam.
|
||||
|
||||
Het gebruik van een Redirection Host is vooral handig wanneer je jouw website verandert
|
||||
maar je nog zoekmachines of referenties naar de oude domeinnaam hebben.
|
||||
6
frontend/src/locale/src/HelpDoc/nl/Streams.md
Normal file
6
frontend/src/locale/src/HelpDoc/nl/Streams.md
Normal file
@@ -0,0 +1,6 @@
|
||||
## Wat is een Stream?
|
||||
|
||||
Streams zijn een nieuwe toevoeging aan Nginx, die toelaat om TCP/UDP
|
||||
verkeer naar een ander computer op het netwerk te sturen.
|
||||
|
||||
Als je game servers, FTP of SSH servers draait kan dit handig zijn.
|
||||
6
frontend/src/locale/src/HelpDoc/nl/index.ts
Normal file
6
frontend/src/locale/src/HelpDoc/nl/index.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
export * as AccessLists from "./AccessLists.md";
|
||||
export * as Certificates from "./Certificates.md";
|
||||
export * as DeadHosts from "./DeadHosts.md";
|
||||
export * as ProxyHosts from "./ProxyHosts.md";
|
||||
export * as RedirectionHosts from "./RedirectionHosts.md";
|
||||
export * as Streams from "./Streams.md";
|
||||
7
frontend/src/locale/src/HelpDoc/pl/AccessLists.md
Normal file
7
frontend/src/locale/src/HelpDoc/pl/AccessLists.md
Normal file
@@ -0,0 +1,7 @@
|
||||
## Czym jest lista dostępu?
|
||||
|
||||
Listy dostępu zapewniają czarną lub białą listę określonych adresów IP klientów wraz z uwierzytelnianiem dla hostów proxy za pomocą podstawowego uwierzytelniania HTTP.
|
||||
|
||||
Możesz skonfigurować wiele reguł klienta, nazw użytkowników i haseł dla pojedynczej listy dostępu, a następnie zastosować ją do jednego lub więcej hostów proxy.
|
||||
|
||||
Jest to najbardziej przydatne w przypadku przekierowywanych usług internetowych, które nie mają wbudowanych mechanizmów uwierzytelniania lub gdy chcesz zabezpieczyć się przed nieznanymi klientami.
|
||||
22
frontend/src/locale/src/HelpDoc/pl/Certificates.md
Normal file
22
frontend/src/locale/src/HelpDoc/pl/Certificates.md
Normal file
@@ -0,0 +1,22 @@
|
||||
## Pomoc dotycząca certyfikatów
|
||||
|
||||
### Certyfikat HTTP
|
||||
|
||||
Certyfikat weryfikowany przez HTTP oznacza, że serwery Let's Encrypt będą próbowały połączyć się z twoimi domenami przez HTTP (nie HTTPS!) i jeśli się to powiedzie, wydadzą twój certyfikat.
|
||||
|
||||
W przypadku tej metody musisz mieć utworzony Host proxy dla swoich domen, który jest dostępny przez HTTP i wskazuje na tę instalację Nginx.
|
||||
Po otrzymaniu certyfikatu możesz zmodyfikować Host proxy, aby używał również tego certyfikatu do połączeń HTTPS. Jednak Host proxy nadal będzie musiał być skonfigurowany do dostępu przez HTTP, aby certyfikat mógł być odnawiany.
|
||||
|
||||
Ten proces nie obsługuje domen wieloznacznych (wildcard).
|
||||
|
||||
### Certyfikat DNS
|
||||
|
||||
Certyfikat weryfikowany przez DNS wymaga użycia wtyczki dostawcy DNS. Ten dostawca DNS zostanie użyty do utworzenia tymczasowych rekordów w twojej domenie, a następnie Let's Encrypt sprawdzi te rekordy, aby upewnić się, że jesteś właścicielem i jeśli się powiedzie, wydadzą twój certyfikat.
|
||||
|
||||
Nie musisz mieć utworzonego Hosta proxy przed wystąpieniem o ten typ certyfikatu. Nie musisz również mieć skonfigurowanego Hosta proxy do dostępu przez HTTP.
|
||||
|
||||
Ten proces obsługuje domeny wieloznaczne (wildcard).
|
||||
|
||||
### Własny certyfikat
|
||||
|
||||
Użyj tej opcji, aby przesłać własny certyfikat SSL, dostarczony przez twój własny urząd certyfikacji.
|
||||
7
frontend/src/locale/src/HelpDoc/pl/DeadHosts.md
Normal file
7
frontend/src/locale/src/HelpDoc/pl/DeadHosts.md
Normal file
@@ -0,0 +1,7 @@
|
||||
## Czym jest host 404?
|
||||
|
||||
Host 404 to po prostu konfiguracja hosta, która wyświetla stronę 404.
|
||||
|
||||
Może to być przydatne, gdy twoja domena jest indeksowana w wyszukiwarkach i chcesz zapewnić ładniejszą stronę błędu lub konkretnie poinformować roboty indeksujące, że strony domeny już nie istnieją.
|
||||
|
||||
Kolejną zaletą posiadania tego hosta jest możliwość śledzenia logów dla odwiedzin oraz przeglądania źródeł ruchu (referrerów).
|
||||
7
frontend/src/locale/src/HelpDoc/pl/ProxyHosts.md
Normal file
7
frontend/src/locale/src/HelpDoc/pl/ProxyHosts.md
Normal file
@@ -0,0 +1,7 @@
|
||||
## Czym jest host proxy?
|
||||
|
||||
Host proxy to punkt wejściowy dla usługi internetowej, którą chcesz przekierować.
|
||||
|
||||
Zapewnia opcjonalne zakończenie SSL dla twojej usługi, która może nie mieć wbudowanej obsługi SSL.
|
||||
|
||||
Hosty proxy są najpopularniejszym zastosowaniem Nginx Proxy Manager
|
||||
5
frontend/src/locale/src/HelpDoc/pl/RedirectionHosts.md
Normal file
5
frontend/src/locale/src/HelpDoc/pl/RedirectionHosts.md
Normal file
@@ -0,0 +1,5 @@
|
||||
## Czym jest host przekierowania?
|
||||
|
||||
Host przekierowania przekierowuje żądania z domeny przychodzącej i przenosi odwiedzającego na inną domenę.
|
||||
|
||||
Najczęstszym powodem używania tego typu hosta jest sytuacja, gdy twoja strona internetowa zmienia domeny, ale nadal masz linki z wyszukiwarek lub odnośniki wskazujące na starą domenę.
|
||||
5
frontend/src/locale/src/HelpDoc/pl/Streams.md
Normal file
5
frontend/src/locale/src/HelpDoc/pl/Streams.md
Normal file
@@ -0,0 +1,5 @@
|
||||
## Czym jest strumień?
|
||||
|
||||
Stosunkowo nowa funkcja dla Nginx, strumień służy do przekazywania ruchu TCP/UDP bezpośrednio na inny komputer/serwer w sieci.
|
||||
|
||||
Jeśli prowadzisz serwery gier, FTP lub SSH, może się to okazać przydatne
|
||||
6
frontend/src/locale/src/HelpDoc/pl/index.ts
Normal file
6
frontend/src/locale/src/HelpDoc/pl/index.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
export * as AccessLists from "./AccessLists.md";
|
||||
export * as Certificates from "./Certificates.md";
|
||||
export * as DeadHosts from "./DeadHosts.md";
|
||||
export * as ProxyHosts from "./ProxyHosts.md";
|
||||
export * as RedirectionHosts from "./RedirectionHosts.md";
|
||||
export * as Streams from "./Streams.md";
|
||||
7
frontend/src/locale/src/HelpDoc/ru/AccessLists.md
Normal file
7
frontend/src/locale/src/HelpDoc/ru/AccessLists.md
Normal file
@@ -0,0 +1,7 @@
|
||||
## Что такое список доступа?
|
||||
|
||||
Списки доступа позволяют задавать белый/чёрный список IP‑адресов клиентов и настраивать аутентификацию для прокси‑хостов через базовую HTTP‑аутентификацию.
|
||||
|
||||
Для одного списка доступа можно настроить несколько правил клиентов, логины и пароли, а затем применить его к одному или нескольким _прокси‑хостам_.
|
||||
|
||||
Это особенно полезно для проксируемых веб‑сервисов без встроенной аутентификации или когда нужно защититься от неизвестных клиентов.
|
||||
21
frontend/src/locale/src/HelpDoc/ru/Certificates.md
Normal file
21
frontend/src/locale/src/HelpDoc/ru/Certificates.md
Normal file
@@ -0,0 +1,21 @@
|
||||
## Справка по сертификатам
|
||||
|
||||
### HTTP-сертификат
|
||||
|
||||
Сертификат, подтверждённый по HTTP, означает, что серверы Let's Encrypt попытаются обратиться к вашим доменам по HTTP (не HTTPS!) и при успехе выпустят сертификат.
|
||||
|
||||
Для этого метода должен существовать _прокси‑хост_ для ваших доменов, доступный по HTTP и указывающий на эту установку Nginx. После выдачи сертификата вы можете настроить _прокси‑хост_ на использование этого сертификата для HTTPS‑подключений. Однако доступ по HTTP должен сохраняться, чтобы сертификат мог обновляться.
|
||||
|
||||
Этот способ _не_ поддерживает wildcard‑домены.
|
||||
|
||||
### DNS-сертификат
|
||||
|
||||
Сертификат, подтверждённый по DNS, требует использования плагина DNS‑провайдера. Такой провайдер создаст временные записи в вашем домене, затем Let's Encrypt проверит эти записи, чтобы убедиться, что вы владелец домена, и при успехе выпустит сертификат.
|
||||
|
||||
Для запроса такого сертификата предварительно создавать _прокси‑хост_ не требуется. Также не нужен доступ по HTTP для вашего _прокси‑хоста_.
|
||||
|
||||
Этот способ _поддерживает_ wildcard‑домены.
|
||||
|
||||
### Свой сертификат
|
||||
|
||||
Используйте этот вариант, чтобы загрузить собственный SSL‑сертификат, выданный вашим удостоверяющим центром (CA).
|
||||
7
frontend/src/locale/src/HelpDoc/ru/DeadHosts.md
Normal file
7
frontend/src/locale/src/HelpDoc/ru/DeadHosts.md
Normal file
@@ -0,0 +1,7 @@
|
||||
## Что такое 404‑хост?
|
||||
|
||||
404‑хост — это конфигурация, которая показывает страницу 404.
|
||||
|
||||
Это полезно, когда ваш домен присутствует в поисковых системах и вы хотите показать более дружелюбную страницу ошибки или явно сообщить индексаторам, что страницы домена больше не существуют.
|
||||
|
||||
Ещё одно преимущество — можно отдельно отслеживать обращения в журналах и смотреть источники переходов.
|
||||
7
frontend/src/locale/src/HelpDoc/ru/ProxyHosts.md
Normal file
7
frontend/src/locale/src/HelpDoc/ru/ProxyHosts.md
Normal file
@@ -0,0 +1,7 @@
|
||||
## Что такое прокси‑хост?
|
||||
|
||||
Прокси‑хост — это входная точка веб‑сервиса, который вы проксируете.
|
||||
|
||||
Он может выполнять терминaцию SSL для сервиса, у которого нет собственной поддержки SSL.
|
||||
|
||||
Прокси‑хосты — самый распространённый сценарий использования Nginx Proxy Manager.
|
||||
5
frontend/src/locale/src/HelpDoc/ru/RedirectionHosts.md
Normal file
5
frontend/src/locale/src/HelpDoc/ru/RedirectionHosts.md
Normal file
@@ -0,0 +1,5 @@
|
||||
## Что такое редирект‑хост?
|
||||
|
||||
Редирект‑хост перенаправляет запросы, поступающие на входящий домен, на другой домен.
|
||||
|
||||
Чаще всего это используют, когда сайт сменил домен, а в поиске или на сторонних ресурсах всё ещё остаются ссылки на старый домен.
|
||||
5
frontend/src/locale/src/HelpDoc/ru/Streams.md
Normal file
5
frontend/src/locale/src/HelpDoc/ru/Streams.md
Normal file
@@ -0,0 +1,5 @@
|
||||
## Что такое поток?
|
||||
|
||||
Относительно новая возможность Nginx: поток позволяет напрямую проксировать TCP/UDP‑трафик на другой компьютер в сети.
|
||||
|
||||
Полезно для игровых серверов, FTP или SSH‑серверов.
|
||||
6
frontend/src/locale/src/HelpDoc/ru/index.ts
Normal file
6
frontend/src/locale/src/HelpDoc/ru/index.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
export * as AccessLists from "./AccessLists.md";
|
||||
export * as Certificates from "./Certificates.md";
|
||||
export * as DeadHosts from "./DeadHosts.md";
|
||||
export * as ProxyHosts from "./ProxyHosts.md";
|
||||
export * as RedirectionHosts from "./RedirectionHosts.md";
|
||||
export * as Streams from "./Streams.md";
|
||||
7
frontend/src/locale/src/HelpDoc/sk/AccessLists.md
Normal file
7
frontend/src/locale/src/HelpDoc/sk/AccessLists.md
Normal file
@@ -0,0 +1,7 @@
|
||||
## Čo je zoznam prístupov?
|
||||
|
||||
Zoznamy prístupov poskytujú čiernu alebo bielu listinu konkrétnych IP adries klientov spolu s overovaním pre proxy hostiteľov prostredníctvom základného overovania HTTP.
|
||||
|
||||
Môžete nakonfigurovať viacero pravidiel pre klientov, používateľských mien a hesiel pre jeden zoznam prístupov a potom ho použiť na jeden alebo viacero proxy hostiteľov.
|
||||
|
||||
Toto je najužitočnejšie pre presmerované webové služby, ktoré nemajú zabudované overovacie mechanizmy, alebo ak sa chcete chrániť pred neznámymi klientmi.
|
||||
32
frontend/src/locale/src/HelpDoc/sk/Certificates.md
Normal file
32
frontend/src/locale/src/HelpDoc/sk/Certificates.md
Normal file
@@ -0,0 +1,32 @@
|
||||
## Pomoc s certifikátmi
|
||||
|
||||
### Certifikát HTTP
|
||||
|
||||
Certifikát overený protokolom HTTP znamená, že servery Let's Encrypt sa
|
||||
pokúsia pripojiť k vašim doménam cez protokol HTTP (nie HTTPS!) a v prípade úspechu
|
||||
vydajú váš certifikát.
|
||||
|
||||
Pre túto metódu budete musieť mať pre svoje domény vytvorený _Proxy Host_, ktorý
|
||||
je prístupný cez HTTP a smeruje na túto inštaláciu Nginx. Po vydaní certifikátu
|
||||
môžete zmeniť _Proxy Host_ tak, aby tento certifikát používal aj pre HTTPS
|
||||
pripojenia. _Proxy Host_ však bude stále potrebné nakonfigurovať pre prístup cez HTTP,
|
||||
aby sa certifikát mohol obnoviť.
|
||||
|
||||
Tento proces _nepodporuje_ domény s divokými kartami.
|
||||
|
||||
### Certifikát DNS
|
||||
|
||||
Certifikát overený DNS vyžaduje použitie pluginu DNS Provider. Tento DNS
|
||||
Provider sa použije na vytvorenie dočasných záznamov vo vašej doméne a potom Let's
|
||||
Encrypt overí tieto záznamy, aby sa uistil, že ste vlastníkom, a ak bude úspešný,
|
||||
vydá váš certifikát.
|
||||
|
||||
Pred požiadaním o tento typ certifikátu nie je potrebné vytvoriť _Proxy Host_.
|
||||
Tiež nie je potrebné mať _Proxy Host_ nakonfigurovaný pre prístup HTTP.
|
||||
|
||||
Tento proces _podporuje_ domény s divokými kartami.
|
||||
|
||||
### Vlastný certifikát
|
||||
|
||||
Túto možnosť použite na nahratie vlastného SSL certifikátu, ktorý vám poskytla vaša
|
||||
certifikačná autorita.
|
||||
10
frontend/src/locale/src/HelpDoc/sk/DeadHosts.md
Normal file
10
frontend/src/locale/src/HelpDoc/sk/DeadHosts.md
Normal file
@@ -0,0 +1,10 @@
|
||||
## Čo je to 404 Hostiteľ?
|
||||
|
||||
404 Hostiteľ je jednoducho nastavenie hostiteľa, ktoré zobrazuje stránku 404.
|
||||
|
||||
To môže byť užitočné, ak je vaša doména uvedená vo vyhľadávačoch a chcete
|
||||
poskytnúť krajšiu stránku s chybou alebo konkrétne oznámiť vyhľadávačom, že
|
||||
stránky domény už neexistujú.
|
||||
|
||||
Ďalšou výhodou tohto hostiteľa je sledovanie protokolov o návštevách a
|
||||
zobrazenie odkazov.
|
||||
7
frontend/src/locale/src/HelpDoc/sk/ProxyHosts.md
Normal file
7
frontend/src/locale/src/HelpDoc/sk/ProxyHosts.md
Normal file
@@ -0,0 +1,7 @@
|
||||
## Čo je proxy hostiteľ?
|
||||
|
||||
Proxy hostiteľ je prichádzajúci koncový bod pre webovú službu, ktorú chcete presmerovať.
|
||||
|
||||
Poskytuje voliteľné ukončenie SSL pre vašu službu, ktorá nemusí mať zabudovanú podporu SSL.
|
||||
|
||||
Proxy hostitelia sú najbežnejším použitím pre Nginx Proxy Manager.
|
||||
7
frontend/src/locale/src/HelpDoc/sk/RedirectionHosts.md
Normal file
7
frontend/src/locale/src/HelpDoc/sk/RedirectionHosts.md
Normal file
@@ -0,0 +1,7 @@
|
||||
## Čo je presmerovací hostiteľ?
|
||||
|
||||
Presmerovací hostiteľ presmeruje požiadavky z prichádzajúcej domény a presmeruje
|
||||
návštevníka na inú doménu.
|
||||
|
||||
Najčastejším dôvodom na použitie tohto typu hostiteľa je situácia, keď vaša webová stránka zmení
|
||||
doménu, ale stále máte odkazy vo vyhľadávačoch alebo referenčné odkazy smerujúce na starú doménu.
|
||||
6
frontend/src/locale/src/HelpDoc/sk/Streams.md
Normal file
6
frontend/src/locale/src/HelpDoc/sk/Streams.md
Normal file
@@ -0,0 +1,6 @@
|
||||
## Čo je stream?
|
||||
|
||||
Stream je relatívne nová funkcia pre Nginx, ktorá slúži na presmerovanie TCP/UDP
|
||||
dátového toku priamo do iného počítača v sieti.
|
||||
|
||||
Ak prevádzkujete herné servery, FTP alebo SSH servery, táto funkcia sa vám môže hodiť.
|
||||
6
frontend/src/locale/src/HelpDoc/sk/index.ts
Normal file
6
frontend/src/locale/src/HelpDoc/sk/index.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
export * as AccessLists from "./AccessLists.md";
|
||||
export * as Certificates from "./Certificates.md";
|
||||
export * as DeadHosts from "./DeadHosts.md";
|
||||
export * as ProxyHosts from "./ProxyHosts.md";
|
||||
export * as RedirectionHosts from "./RedirectionHosts.md";
|
||||
export * as Streams from "./Streams.md";
|
||||
11
frontend/src/locale/src/HelpDoc/vi/AccessLists.md
Normal file
11
frontend/src/locale/src/HelpDoc/vi/AccessLists.md
Normal file
@@ -0,0 +1,11 @@
|
||||
## Khái niệm Access List là gì?
|
||||
|
||||
Access List (Danh sách truy cập) cung cấp cơ chế chặn (blacklist) hoặc cho phép (whitelist) các địa chỉ IP của client, đồng thời hỗ trợ xác thực Basic HTTP Authentication cho các Proxy Host.
|
||||
|
||||
Bạn có thể cấu hình nhiều quy tắc client, nhiều tên người dùng và mật khẩu trong một Access List duy nhất, sau đó áp dụng Access List đó cho một hoặc nhiều Proxy Host.
|
||||
|
||||
Tính năng này đặc biệt hữu ích đối với:
|
||||
|
||||
các dịch vụ web được forward mà không có cơ chế xác thực tích hợp, hoặc
|
||||
|
||||
khi bạn muốn bảo vệ tài nguyên khỏi những client không xác định.
|
||||
25
frontend/src/locale/src/HelpDoc/vi/Certificates.md
Normal file
25
frontend/src/locale/src/HelpDoc/vi/Certificates.md
Normal file
@@ -0,0 +1,25 @@
|
||||
## Hỗ trợ Chứng chỉ
|
||||
|
||||
### Chứng chỉ HTTP (HTTP Certificate)
|
||||
|
||||
Chứng chỉ được xác thực qua HTTP nghĩa là máy chủ của Let's Encrypt sẽ cố gắng truy cập vào tên miền của bạn thông qua HTTP (không phải HTTPS!). Nếu kiểm tra thành công, chứng chỉ sẽ được cấp.
|
||||
|
||||
Với phương thức này, bạn phải tạo trước một Proxy Host cho tên miền, có thể truy cập qua HTTP và trỏ về đúng cài đặt Nginx này.
|
||||
Sau khi chứng chỉ được cấp, bạn có thể chỉnh sửa Proxy Host để sử dụng chứng chỉ đó cho kết nối HTTPS.
|
||||
|
||||
Tuy nhiên, Proxy Host vẫn phải hỗ trợ truy cập HTTP để việc gia hạn chứng chỉ diễn ra bình thường.
|
||||
|
||||
Phương thức này _không hỗ trợ_ wildcard domain.
|
||||
|
||||
### Chứng chỉ DNS (DNS Certificate)
|
||||
|
||||
Chứng chỉ được xác thực qua DNS yêu cầu bạn sử dụng plugin của DNS Provider.
|
||||
Plugin này sẽ tạo các bản ghi tạm thời trong DNS của bạn để Let's Encrypt kiểm tra quyền sở hữu tên miền. Nếu hợp lệ, chứng chỉ sẽ được cấp.
|
||||
|
||||
Khi dùng phương thức này: Bạn không cần tạo sẵn Proxy Host trước và bạn không cần mở HTTP cho Proxy Host.
|
||||
|
||||
Phương thức DNS _có hỗ trợ_ wildcard domain.
|
||||
|
||||
### Chứng chỉ tùy chỉnh (Custom Certificate)
|
||||
|
||||
Tùy chọn này cho phép bạn tải lên chứng chỉ SSL của riêng mình, được cung cấp bởi Certificate Authority (CA) mà bạn tự chọn.
|
||||
8
frontend/src/locale/src/HelpDoc/vi/DeadHosts.md
Normal file
8
frontend/src/locale/src/HelpDoc/vi/DeadHosts.md
Normal file
@@ -0,0 +1,8 @@
|
||||
## 404 Host là gì?
|
||||
|
||||
404 Host đơn giản là một host được thiết lập để hiển thị trang 404.
|
||||
|
||||
Điều này có thể hữu ích khi tên miền của bạn vẫn xuất hiện trên các công cụ tìm kiếm và bạn muốn hiển thị một trang lỗi đẹp hơn, hoặc muốn thông báo rõ ràng cho các trình thu thập dữ liệu tìm kiếm rằng các trang thuộc tên miền đó không còn tồn tại.
|
||||
|
||||
Một lợi ích khác của việc có 404 Host là bạn có thể theo dõi nhật ký truy cập vào nó và
|
||||
xem các nguồn giới thiệu (referrers).
|
||||
7
frontend/src/locale/src/HelpDoc/vi/ProxyHosts.md
Normal file
7
frontend/src/locale/src/HelpDoc/vi/ProxyHosts.md
Normal file
@@ -0,0 +1,7 @@
|
||||
## Proxy Host là gì?
|
||||
|
||||
Proxy Host là điểm truy cập đầu vào cho một dịch vụ web mà bạn muốn chuyển tiếp.
|
||||
|
||||
Nó cung cấp khả năng kết thúc SSL (SSL termination) tùy chọn cho các dịch vụ vốn không hỗ trợ SSL tích hợp.
|
||||
|
||||
Proxy Host là loại cấu hình phổ biến nhất trong Nginx Proxy Manager.
|
||||
5
frontend/src/locale/src/HelpDoc/vi/RedirectionHosts.md
Normal file
5
frontend/src/locale/src/HelpDoc/vi/RedirectionHosts.md
Normal file
@@ -0,0 +1,5 @@
|
||||
## Redirection Host là gì?
|
||||
|
||||
Redirection Host sẽ chuyển hướng các yêu cầu từ tên miền truy cập vào và đưa người xem sang một tên miền khác
|
||||
|
||||
Lý do phổ biến nhất để sử dụng loại host này là khi trang web của bạn đổi sang tên miền mới nhưng vẫn còn các liên kết từ công cụ tìm kiếm hoặc nguồn giới thiệu trỏ về tên miền cũ.
|
||||
6
frontend/src/locale/src/HelpDoc/vi/Streams.md
Normal file
6
frontend/src/locale/src/HelpDoc/vi/Streams.md
Normal file
@@ -0,0 +1,6 @@
|
||||
## Stream là gì?
|
||||
|
||||
Stream là một tính năng tương đối mới của Nginx, dùng để chuyển tiếp lưu lượng
|
||||
TCP/UDP trực tiếp tới một máy khác trong mạng.
|
||||
|
||||
Nếu bạn đang vận hành các máy chủ game, FTP hoặc SSH thì tính năng này sẽ rất hữu ích.
|
||||
6
frontend/src/locale/src/HelpDoc/vi/index.ts
Normal file
6
frontend/src/locale/src/HelpDoc/vi/index.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
export * as AccessLists from "./AccessLists.md";
|
||||
export * as Certificates from "./Certificates.md";
|
||||
export * as DeadHosts from "./DeadHosts.md";
|
||||
export * as ProxyHosts from "./ProxyHosts.md";
|
||||
export * as RedirectionHosts from "./RedirectionHosts.md";
|
||||
export * as Streams from "./Streams.md";
|
||||
7
frontend/src/locale/src/HelpDoc/zh/AccessLists.md
Executable file
7
frontend/src/locale/src/HelpDoc/zh/AccessLists.md
Executable file
@@ -0,0 +1,7 @@
|
||||
## 什么是通信规则?
|
||||
|
||||
通信规则提供了一个特定客户IP地址的黑名单或白名单,以及通过基本HTTP认证对代理服务的认证。
|
||||
|
||||
你可以为一个通信规则配置多个客户规则、用户名和密码,然后将其应用于代理服务。
|
||||
|
||||
这对那些没有内置认证机制的转发网络服务或你想保护其免受未知客户的访问是最有用的。
|
||||
21
frontend/src/locale/src/HelpDoc/zh/Certificates.md
Executable file
21
frontend/src/locale/src/HelpDoc/zh/Certificates.md
Executable file
@@ -0,0 +1,21 @@
|
||||
## 证书帮助
|
||||
|
||||
### HTTP 证书
|
||||
|
||||
HTTP 验证的证书表示 Let's Encrypt 服务器将尝试通过 HTTP(而非 HTTPS!)访问您的域名,如果成功,它们将为您颁发证书。
|
||||
|
||||
使用此方法时,您必须为您的域名创建一个可通过 HTTP 访问并指向此 Nginx 安装的 代理主机。在获得证书后,您可以修改该 代理主机,使其也使用此证书处理 HTTPS 连接。然而,为了证书能够续期,该 代理主机 仍需配置为支持 HTTP 访问。
|
||||
|
||||
此过程_不支持_通配符域名。
|
||||
|
||||
### DNS 证书
|
||||
|
||||
DNS 验证的证书要求您使用一个 DNS 服务商插件。该 DNS 服务商将用于在您的域名下创建临时记录,随后 Let's Encrypt 将查询这些记录以确认您是域名所有者,如果成功,它们将为您颁发证书。
|
||||
|
||||
请求此类证书前,您无需预先创建 代理主机,也无需将您的 代理主机 配置为支持 HTTP 访问。
|
||||
|
||||
此过程_支持_通配符域名。
|
||||
|
||||
### 自定义证书
|
||||
|
||||
使用此选项上传您自己的 SSL 证书,该证书由您自己的证书颁发机构提供。
|
||||
7
frontend/src/locale/src/HelpDoc/zh/DeadHosts.md
Executable file
7
frontend/src/locale/src/HelpDoc/zh/DeadHosts.md
Executable file
@@ -0,0 +1,7 @@
|
||||
## 什么是错误页面?
|
||||
|
||||
错误页面是一个简单的主机设置,显示错误页面。
|
||||
|
||||
当你的域名被列入搜索引擎,而你想提供一个更好的错误页面或特别是告诉搜索索引者域名页面不再存在时,这可能是有用的。
|
||||
|
||||
拥有这种主机的另一个好处是可以跟踪点击它的日志并查看访问来源。
|
||||
7
frontend/src/locale/src/HelpDoc/zh/ProxyHosts.md
Executable file
7
frontend/src/locale/src/HelpDoc/zh/ProxyHosts.md
Executable file
@@ -0,0 +1,7 @@
|
||||
## 什么是代理服务?
|
||||
|
||||
代理服务是你想转发网络应用的主机。
|
||||
|
||||
代理服务可以为没有SSL服务的网络应用提供SSL服务(可选)。
|
||||
|
||||
代理服务是Nginx代理管理器的最常见用途之一。
|
||||
5
frontend/src/locale/src/HelpDoc/zh/RedirectionHosts.md
Executable file
5
frontend/src/locale/src/HelpDoc/zh/RedirectionHosts.md
Executable file
@@ -0,0 +1,5 @@
|
||||
## 什么是重定向?
|
||||
|
||||
重定向是将接入域名的请求推送到另一个域名。
|
||||
|
||||
使用这种类型的主机最常见的原因是当你的网站改变了域名,但你仍然有链接指向旧域名的应用。
|
||||
5
frontend/src/locale/src/HelpDoc/zh/Streams.md
Executable file
5
frontend/src/locale/src/HelpDoc/zh/Streams.md
Executable file
@@ -0,0 +1,5 @@
|
||||
## 什么是端口转发?
|
||||
|
||||
端口转发是Nginx的一个相对较新的功能,可以直接转发 TCP/UDP 流量到网络上的另一台计算机。
|
||||
|
||||
如果你正在运行游戏服务器、FTP或SSH服务器,这个功能就会很有用。
|
||||
6
frontend/src/locale/src/HelpDoc/zh/index.ts
Executable file
6
frontend/src/locale/src/HelpDoc/zh/index.ts
Executable file
@@ -0,0 +1,6 @@
|
||||
export * as AccessLists from "./AccessLists.md";
|
||||
export * as Certificates from "./Certificates.md";
|
||||
export * as DeadHosts from "./DeadHosts.md";
|
||||
export * as ProxyHosts from "./ProxyHosts.md";
|
||||
export * as RedirectionHosts from "./RedirectionHosts.md";
|
||||
export * as Streams from "./Streams.md";
|
||||
@@ -98,6 +98,9 @@
|
||||
"certificate.not-in-use": {
|
||||
"defaultMessage": "Nicht in Benutzung"
|
||||
},
|
||||
"certificate.renew": {
|
||||
"defaultMessage": "Zertifikat erneuern"
|
||||
},
|
||||
"certificates": {
|
||||
"defaultMessage": "Zertifikate"
|
||||
},
|
||||
@@ -420,7 +423,7 @@
|
||||
"defaultMessage": "{object} löschen"
|
||||
},
|
||||
"object.delete.content": {
|
||||
"defaultMessage": "Bist du dir sicher das du diese(n) {object} löschen möchtest?"
|
||||
"defaultMessage": "{object} wirklich löschen?"
|
||||
},
|
||||
"object.edit": {
|
||||
"defaultMessage": "{object} bearbeiten"
|
||||
|
||||
@@ -23,6 +23,9 @@
|
||||
"access-list.public.subtitle": {
|
||||
"defaultMessage": "No basic auth required"
|
||||
},
|
||||
"access-list.rule-source.placeholder": {
|
||||
"defaultMessage": "192.168.1.100 or 192.168.1.0/24 or 2001:0db8::/32"
|
||||
},
|
||||
"access-list.satisfy-any": {
|
||||
"defaultMessage": "Satisfy Any"
|
||||
},
|
||||
@@ -38,12 +41,18 @@
|
||||
"action.add-location": {
|
||||
"defaultMessage": "Add Location"
|
||||
},
|
||||
"action.allow": {
|
||||
"defaultMessage": "Allow"
|
||||
},
|
||||
"action.close": {
|
||||
"defaultMessage": "Close"
|
||||
},
|
||||
"action.delete": {
|
||||
"defaultMessage": "Delete"
|
||||
},
|
||||
"action.deny": {
|
||||
"defaultMessage": "Deny"
|
||||
},
|
||||
"action.disable": {
|
||||
"defaultMessage": "Disable"
|
||||
},
|
||||
@@ -68,6 +77,9 @@
|
||||
"auditlogs": {
|
||||
"defaultMessage": "Audit Logs"
|
||||
},
|
||||
"auto": {
|
||||
"defaultMessage": "Auto"
|
||||
},
|
||||
"cancel": {
|
||||
"defaultMessage": "Cancel"
|
||||
},
|
||||
@@ -128,6 +140,9 @@
|
||||
"certificates.dns.provider": {
|
||||
"defaultMessage": "DNS Provider"
|
||||
},
|
||||
"certificates.dns.provider.placeholder": {
|
||||
"defaultMessage": "Select a Provider..."
|
||||
},
|
||||
"certificates.dns.warning": {
|
||||
"defaultMessage": "This section requires some knowledge about Certbot and its DNS plugins. Please consult the respective plugins documentation."
|
||||
},
|
||||
@@ -189,7 +204,7 @@
|
||||
"defaultMessage": "Expires"
|
||||
},
|
||||
"column.http-code": {
|
||||
"defaultMessage": "Access"
|
||||
"defaultMessage": "HTTP Code"
|
||||
},
|
||||
"column.incoming-port": {
|
||||
"defaultMessage": "Incoming Port"
|
||||
@@ -518,6 +533,24 @@
|
||||
"redirection-hosts.count": {
|
||||
"defaultMessage": "{count} {count, plural, one {Redirection Host} other {Redirection Hosts}}"
|
||||
},
|
||||
"redirection-hosts.http-code.300": {
|
||||
"defaultMessage": "300 Multiple Choices"
|
||||
},
|
||||
"redirection-hosts.http-code.301": {
|
||||
"defaultMessage": "301 Moved permanently"
|
||||
},
|
||||
"redirection-hosts.http-code.302": {
|
||||
"defaultMessage": "302 Moved temporarily"
|
||||
},
|
||||
"redirection-hosts.http-code.303": {
|
||||
"defaultMessage": "303 See other"
|
||||
},
|
||||
"redirection-hosts.http-code.307": {
|
||||
"defaultMessage": "307 Temporary redirect"
|
||||
},
|
||||
"redirection-hosts.http-code.308": {
|
||||
"defaultMessage": "308 Permanent redirect"
|
||||
},
|
||||
"role.admin": {
|
||||
"defaultMessage": "Administrator"
|
||||
},
|
||||
@@ -575,6 +608,9 @@
|
||||
"stream.forward-host": {
|
||||
"defaultMessage": "Forward Host"
|
||||
},
|
||||
"stream.forward-host.placeholder": {
|
||||
"defaultMessage": "example.com or 10.0.0.1 or 2001:db8:3333:4444:5555:6666:7777:8888"
|
||||
},
|
||||
"stream.incoming-port": {
|
||||
"defaultMessage": "Incoming Port"
|
||||
},
|
||||
@@ -593,6 +629,9 @@
|
||||
"test": {
|
||||
"defaultMessage": "Test"
|
||||
},
|
||||
"update-available": {
|
||||
"defaultMessage": "Update Available: {latestVersion}"
|
||||
},
|
||||
"user": {
|
||||
"defaultMessage": "User"
|
||||
},
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
647
frontend/src/locale/src/it.json
Normal file
647
frontend/src/locale/src/it.json
Normal file
@@ -0,0 +1,647 @@
|
||||
{
|
||||
"access-list": {
|
||||
"defaultMessage": "Lista di Accesso"
|
||||
},
|
||||
"access-list.access-count": {
|
||||
"defaultMessage": "{count} {count, plural, one {Regola} other {Regole}}"
|
||||
},
|
||||
"access-list.auth-count": {
|
||||
"defaultMessage": "{count} {count, plural, one {Utente} other {Utenti}}"
|
||||
},
|
||||
"access-list.help-rules-last": {
|
||||
"defaultMessage": "Quando esiste almeno 1 regola, questa regola di negazione verrà aggiunta per ultima"
|
||||
},
|
||||
"access-list.help.rules-order": {
|
||||
"defaultMessage": "Nota che le direttive di allow e deny saranno applicate nell'ordine in cui sono definite."
|
||||
},
|
||||
"access-list.pass-auth": {
|
||||
"defaultMessage": "Passa Autenticazione all'Upstream"
|
||||
},
|
||||
"access-list.public": {
|
||||
"defaultMessage": "Accessibile Pubblicamente"
|
||||
},
|
||||
"access-list.public.subtitle": {
|
||||
"defaultMessage": "Nessuna autenticazione base richiesta"
|
||||
},
|
||||
"access-list.satisfy-any": {
|
||||
"defaultMessage": "Soddisfa Qualsiasi"
|
||||
},
|
||||
"access-list.subtitle": {
|
||||
"defaultMessage": "{users} {users, plural, one {Utente} other {Utenti}}, {rules} {rules, plural, one {Regola} other {Regole}} - Creato: {date}"
|
||||
},
|
||||
"access-lists": {
|
||||
"defaultMessage": "Liste di Accesso"
|
||||
},
|
||||
"action.add": {
|
||||
"defaultMessage": "Aggiungi"
|
||||
},
|
||||
"action.add-location": {
|
||||
"defaultMessage": "Aggiungi Percorso"
|
||||
},
|
||||
"action.close": {
|
||||
"defaultMessage": "Chiudi"
|
||||
},
|
||||
"action.delete": {
|
||||
"defaultMessage": "Elimina"
|
||||
},
|
||||
"action.disable": {
|
||||
"defaultMessage": "Disabilita"
|
||||
},
|
||||
"action.download": {
|
||||
"defaultMessage": "Scarica"
|
||||
},
|
||||
"action.edit": {
|
||||
"defaultMessage": "Modifica"
|
||||
},
|
||||
"action.enable": {
|
||||
"defaultMessage": "Abilita"
|
||||
},
|
||||
"action.permissions": {
|
||||
"defaultMessage": "Permessi"
|
||||
},
|
||||
"action.renew": {
|
||||
"defaultMessage": "Rinnova"
|
||||
},
|
||||
"action.view-details": {
|
||||
"defaultMessage": "Visualizza Dettagli"
|
||||
},
|
||||
"auditlogs": {
|
||||
"defaultMessage": "Log di Audit"
|
||||
},
|
||||
"cancel": {
|
||||
"defaultMessage": "Annulla"
|
||||
},
|
||||
"certificate": {
|
||||
"defaultMessage": "Certificato"
|
||||
},
|
||||
"certificate.custom-certificate": {
|
||||
"defaultMessage": "Certificato"
|
||||
},
|
||||
"certificate.custom-certificate-key": {
|
||||
"defaultMessage": "Chiave del Certificato"
|
||||
},
|
||||
"certificate.custom-intermediate": {
|
||||
"defaultMessage": "Certificato Intermedio"
|
||||
},
|
||||
"certificate.in-use": {
|
||||
"defaultMessage": "In Uso"
|
||||
},
|
||||
"certificate.none.subtitle": {
|
||||
"defaultMessage": "Nessun certificato assegnato"
|
||||
},
|
||||
"certificate.none.subtitle.for-http": {
|
||||
"defaultMessage": "Questo host non utilizzerà HTTPS"
|
||||
},
|
||||
"certificate.none.title": {
|
||||
"defaultMessage": "Nessuno"
|
||||
},
|
||||
"certificate.not-in-use": {
|
||||
"defaultMessage": "Non in Uso"
|
||||
},
|
||||
"certificate.renew": {
|
||||
"defaultMessage": "Rinnova Certificato"
|
||||
},
|
||||
"certificates": {
|
||||
"defaultMessage": "Certificati"
|
||||
},
|
||||
"certificates.custom": {
|
||||
"defaultMessage": "Certificato Personalizzato"
|
||||
},
|
||||
"certificates.custom.warning": {
|
||||
"defaultMessage": "I file di chiave protetti da passphrase non sono supportati."
|
||||
},
|
||||
"certificates.dns.credentials": {
|
||||
"defaultMessage": "Contenuto File Credenziali"
|
||||
},
|
||||
"certificates.dns.credentials-note": {
|
||||
"defaultMessage": "Questo plugin richiede un file di configurazione contenente un token API o altre credenziali per il tuo provider"
|
||||
},
|
||||
"certificates.dns.credentials-warning": {
|
||||
"defaultMessage": "Questi dati saranno memorizzati in chiaro nel database e in un file!"
|
||||
},
|
||||
"certificates.dns.propagation-seconds": {
|
||||
"defaultMessage": "Secondi di Propagazione"
|
||||
},
|
||||
"certificates.dns.propagation-seconds-note": {
|
||||
"defaultMessage": "Lascia vuoto per usare il valore predefinito del plugin. Numero di secondi da attendere per la propagazione DNS."
|
||||
},
|
||||
"certificates.dns.provider": {
|
||||
"defaultMessage": "Provider DNS"
|
||||
},
|
||||
"certificates.dns.warning": {
|
||||
"defaultMessage": "Questa sezione richiede conoscenze su Certbot e i relativi plugin DNS. Consulta la documentazione del plugin."
|
||||
},
|
||||
"certificates.http.reachability-404": {
|
||||
"defaultMessage": "È stato trovato un server su questo dominio, ma non sembra essere Nginx Proxy Manager. Assicurati che il dominio punti all'IP dove è in esecuzione NPM."
|
||||
},
|
||||
"certificates.http.reachability-failed-to-check": {
|
||||
"defaultMessage": "Verifica di raggiungibilità fallita per errore di comunicazione con site24x7.com."
|
||||
},
|
||||
"certificates.http.reachability-not-resolved": {
|
||||
"defaultMessage": "Nessun server disponibile su questo dominio. Assicurati che il dominio esista e punti all'IP corretto e che la porta 80 sia inoltrata."
|
||||
},
|
||||
"certificates.http.reachability-ok": {
|
||||
"defaultMessage": "Il server è raggiungibile e la creazione dei certificati è possibile."
|
||||
},
|
||||
"certificates.http.reachability-other": {
|
||||
"defaultMessage": "È stato trovato un server su questo dominio ma ha restituito un codice di stato imprevisto {code}. È il server NPM? Controlla che il dominio punti correttamente all'IP."
|
||||
},
|
||||
"certificates.http.reachability-wrong-data": {
|
||||
"defaultMessage": "È stato trovato un server su questo dominio ma ha restituito dati imprevisti. È il server NPM? Controlla che il dominio punti correttamente all'IP."
|
||||
},
|
||||
"certificates.http.test-results": {
|
||||
"defaultMessage": "Risultati Test"
|
||||
},
|
||||
"certificates.http.warning": {
|
||||
"defaultMessage": "Questi domini devono già essere configurati per puntare a questa installazione."
|
||||
},
|
||||
"certificates.request.subtitle": {
|
||||
"defaultMessage": "con Let's Encrypt"
|
||||
},
|
||||
"certificates.request.title": {
|
||||
"defaultMessage": "Richiedi un nuovo Certificato"
|
||||
},
|
||||
"column.access": {
|
||||
"defaultMessage": "Accesso"
|
||||
},
|
||||
"column.authorization": {
|
||||
"defaultMessage": "Autorizzazione"
|
||||
},
|
||||
"column.authorizations": {
|
||||
"defaultMessage": "Autorizzazioni"
|
||||
},
|
||||
"column.custom-locations": {
|
||||
"defaultMessage": "Percorsi Personalizzati"
|
||||
},
|
||||
"column.destination": {
|
||||
"defaultMessage": "Destinazione"
|
||||
},
|
||||
"column.details": {
|
||||
"defaultMessage": "Dettagli"
|
||||
},
|
||||
"column.email": {
|
||||
"defaultMessage": "Email"
|
||||
},
|
||||
"column.event": {
|
||||
"defaultMessage": "Evento"
|
||||
},
|
||||
"column.expires": {
|
||||
"defaultMessage": "Scadenza"
|
||||
},
|
||||
"column.http-code": {
|
||||
"defaultMessage": "Codice HTTP"
|
||||
},
|
||||
"column.incoming-port": {
|
||||
"defaultMessage": "Porta in Ingresso"
|
||||
},
|
||||
"column.name": {
|
||||
"defaultMessage": "Nome"
|
||||
},
|
||||
"column.protocol": {
|
||||
"defaultMessage": "Protocollo"
|
||||
},
|
||||
"column.provider": {
|
||||
"defaultMessage": "Provider"
|
||||
},
|
||||
"column.roles": {
|
||||
"defaultMessage": "Ruoli"
|
||||
},
|
||||
"column.rules": {
|
||||
"defaultMessage": "Regole"
|
||||
},
|
||||
"column.satisfy": {
|
||||
"defaultMessage": "Condizione"
|
||||
},
|
||||
"column.satisfy-all": {
|
||||
"defaultMessage": "Tutte"
|
||||
},
|
||||
"column.satisfy-any": {
|
||||
"defaultMessage": "Qualsiasi"
|
||||
},
|
||||
"column.scheme": {
|
||||
"defaultMessage": "Schema"
|
||||
},
|
||||
"column.source": {
|
||||
"defaultMessage": "Origine"
|
||||
},
|
||||
"column.ssl": {
|
||||
"defaultMessage": "SSL"
|
||||
},
|
||||
"column.status": {
|
||||
"defaultMessage": "Stato"
|
||||
},
|
||||
"created-on": {
|
||||
"defaultMessage": "Creato: {date}"
|
||||
},
|
||||
"dashboard": {
|
||||
"defaultMessage": "Dashboard"
|
||||
},
|
||||
"dead-host": {
|
||||
"defaultMessage": "Host 404"
|
||||
},
|
||||
"dead-hosts": {
|
||||
"defaultMessage": "Hosts 404"
|
||||
},
|
||||
"dead-hosts.count": {
|
||||
"defaultMessage": "{count} {count, plural, one {Host 404} other {Hosts 404}}"
|
||||
},
|
||||
"disabled": {
|
||||
"defaultMessage": "Disabilitato"
|
||||
},
|
||||
"domain-names": {
|
||||
"defaultMessage": "Nomi di Dominio"
|
||||
},
|
||||
"domain-names.max": {
|
||||
"defaultMessage": "Massimo {count} nomi di dominio"
|
||||
},
|
||||
"domain-names.placeholder": {
|
||||
"defaultMessage": "Inizia a digitare per aggiungere un dominio..."
|
||||
},
|
||||
"domain-names.wildcards-not-permitted": {
|
||||
"defaultMessage": "Wildcard non consentite per questo tipo"
|
||||
},
|
||||
"domain-names.wildcards-not-supported": {
|
||||
"defaultMessage": "Wildcard non supportate per questa CA"
|
||||
},
|
||||
"domains.force-ssl": {
|
||||
"defaultMessage": "Forza SSL"
|
||||
},
|
||||
"domains.hsts-enabled": {
|
||||
"defaultMessage": "HSTS Abilitato"
|
||||
},
|
||||
"domains.hsts-subdomains": {
|
||||
"defaultMessage": "Sottodomini HSTS"
|
||||
},
|
||||
"domains.http2-support": {
|
||||
"defaultMessage": "Supporto HTTP/2"
|
||||
},
|
||||
"domains.use-dns": {
|
||||
"defaultMessage": "Usa Challenge DNS"
|
||||
},
|
||||
"email-address": {
|
||||
"defaultMessage": "Indirizzo Email"
|
||||
},
|
||||
"empty-search": {
|
||||
"defaultMessage": "Nessun risultato trovato"
|
||||
},
|
||||
"empty-subtitle": {
|
||||
"defaultMessage": "Perché non ne crei uno?"
|
||||
},
|
||||
"enabled": {
|
||||
"defaultMessage": "Abilitato"
|
||||
},
|
||||
"error.access.at-least-one": {
|
||||
"defaultMessage": "È richiesta almeno un'Autorizzazione o una Regola di Accesso"
|
||||
},
|
||||
"error.access.duplicate-usernames": {
|
||||
"defaultMessage": "I nomi utente devono essere unici"
|
||||
},
|
||||
"error.invalid-auth": {
|
||||
"defaultMessage": "Email o password non validi"
|
||||
},
|
||||
"error.invalid-domain": {
|
||||
"defaultMessage": "Dominio non valido: {domain}"
|
||||
},
|
||||
"error.invalid-email": {
|
||||
"defaultMessage": "Indirizzo email non valido"
|
||||
},
|
||||
"error.max-character-length": {
|
||||
"defaultMessage": "Lunghezza massima {max} caratter{max, plural, one {e} other {i}}"
|
||||
},
|
||||
"error.max-domains": {
|
||||
"defaultMessage": "Troppi domini, massimo {max}"
|
||||
},
|
||||
"error.maximum": {
|
||||
"defaultMessage": "Massimo {max}"
|
||||
},
|
||||
"error.min-character-length": {
|
||||
"defaultMessage": "Lunghezza minima {min} caratter{min, plural, one {e} other {i}}"
|
||||
},
|
||||
"error.minimum": {
|
||||
"defaultMessage": "Minimo {min}"
|
||||
},
|
||||
"error.passwords-must-match": {
|
||||
"defaultMessage": "Le password devono coincidere"
|
||||
},
|
||||
"error.required": {
|
||||
"defaultMessage": "Campo obbligatorio"
|
||||
},
|
||||
"expires.on": {
|
||||
"defaultMessage": "Scade: {date}"
|
||||
},
|
||||
"footer.github-fork": {
|
||||
"defaultMessage": "Forkami su GitHub"
|
||||
},
|
||||
"host.flags.block-exploits": {
|
||||
"defaultMessage": "Blocca Exploit Comuni"
|
||||
},
|
||||
"host.flags.cache-assets": {
|
||||
"defaultMessage": "Cache degli Asset"
|
||||
},
|
||||
"host.flags.preserve-path": {
|
||||
"defaultMessage": "Preserva Percorso"
|
||||
},
|
||||
"host.flags.protocols": {
|
||||
"defaultMessage": "Protocolli"
|
||||
},
|
||||
"host.flags.websockets-upgrade": {
|
||||
"defaultMessage": "Supporto WebSockets"
|
||||
},
|
||||
"host.forward-port": {
|
||||
"defaultMessage": "Porta di Destinazione"
|
||||
},
|
||||
"host.forward-scheme": {
|
||||
"defaultMessage": "Schema"
|
||||
},
|
||||
"hosts": {
|
||||
"defaultMessage": "Host"
|
||||
},
|
||||
"http-only": {
|
||||
"defaultMessage": "Solo HTTP"
|
||||
},
|
||||
"lets-encrypt": {
|
||||
"defaultMessage": "Let's Encrypt"
|
||||
},
|
||||
"lets-encrypt-via-dns": {
|
||||
"defaultMessage": "Let's Encrypt via DNS"
|
||||
},
|
||||
"lets-encrypt-via-http": {
|
||||
"defaultMessage": "Let's Encrypt via HTTP"
|
||||
},
|
||||
"loading": {
|
||||
"defaultMessage": "Caricamento…"
|
||||
},
|
||||
"login.title": {
|
||||
"defaultMessage": "Accedi al tuo account"
|
||||
},
|
||||
"nginx-config.label": {
|
||||
"defaultMessage": "Configurazione Nginx Personalizzata"
|
||||
},
|
||||
"nginx-config.placeholder": {
|
||||
"defaultMessage": "# Inserisci qui la configurazione Nginx personalizzata a tuo rischio!"
|
||||
},
|
||||
"no-permission-error": {
|
||||
"defaultMessage": "Non hai accesso per visualizzare questa pagina."
|
||||
},
|
||||
"notfound.action": {
|
||||
"defaultMessage": "Torna alla Home"
|
||||
},
|
||||
"notfound.content": {
|
||||
"defaultMessage": "Spiacenti, la pagina richiesta non è stata trovata"
|
||||
},
|
||||
"notfound.title": {
|
||||
"defaultMessage": "Oops… Hai trovato una pagina di errore"
|
||||
},
|
||||
"notification.error": {
|
||||
"defaultMessage": "Errore"
|
||||
},
|
||||
"notification.object-deleted": {
|
||||
"defaultMessage": "{object} è stato eliminato"
|
||||
},
|
||||
"notification.object-disabled": {
|
||||
"defaultMessage": "{object} è stato disabilitato"
|
||||
},
|
||||
"notification.object-enabled": {
|
||||
"defaultMessage": "{object} è stato abilitato"
|
||||
},
|
||||
"notification.object-renewed": {
|
||||
"defaultMessage": "{object} è stato rinnovato"
|
||||
},
|
||||
"notification.object-saved": {
|
||||
"defaultMessage": "{object} è stato salvato"
|
||||
},
|
||||
"notification.success": {
|
||||
"defaultMessage": "Successo"
|
||||
},
|
||||
"object.actions-title": {
|
||||
"defaultMessage": "{object} #{id}"
|
||||
},
|
||||
"object.add": {
|
||||
"defaultMessage": "Aggiungi {object}"
|
||||
},
|
||||
"object.delete": {
|
||||
"defaultMessage": "Elimina {object}"
|
||||
},
|
||||
"object.delete.content": {
|
||||
"defaultMessage": "Sei sicuro di voler eliminare questo {object}?"
|
||||
},
|
||||
"object.edit": {
|
||||
"defaultMessage": "Modifica {object}"
|
||||
},
|
||||
"object.empty": {
|
||||
"defaultMessage": "Nessun {objects} presente"
|
||||
},
|
||||
"object.event.created": {
|
||||
"defaultMessage": "{object} creato"
|
||||
},
|
||||
"object.event.deleted": {
|
||||
"defaultMessage": "{object} eliminato"
|
||||
},
|
||||
"object.event.disabled": {
|
||||
"defaultMessage": "{object} disabilitato"
|
||||
},
|
||||
"object.event.enabled": {
|
||||
"defaultMessage": "{object} abilitato"
|
||||
},
|
||||
"object.event.renewed": {
|
||||
"defaultMessage": "{object} rinnovato"
|
||||
},
|
||||
"object.event.updated": {
|
||||
"defaultMessage": "{object} aggiornato"
|
||||
},
|
||||
"offline": {
|
||||
"defaultMessage": "Offline"
|
||||
},
|
||||
"online": {
|
||||
"defaultMessage": "Online"
|
||||
},
|
||||
"options": {
|
||||
"defaultMessage": "Opzioni"
|
||||
},
|
||||
"password": {
|
||||
"defaultMessage": "Password"
|
||||
},
|
||||
"password.generate": {
|
||||
"defaultMessage": "Genera password casuale"
|
||||
},
|
||||
"password.hide": {
|
||||
"defaultMessage": "Nascondi Password"
|
||||
},
|
||||
"password.show": {
|
||||
"defaultMessage": "Mostra Password"
|
||||
},
|
||||
"permissions.hidden": {
|
||||
"defaultMessage": "Nascosto"
|
||||
},
|
||||
"permissions.manage": {
|
||||
"defaultMessage": "Gestisci"
|
||||
},
|
||||
"permissions.view": {
|
||||
"defaultMessage": "Sola Lettura"
|
||||
},
|
||||
"permissions.visibility.all": {
|
||||
"defaultMessage": "Tutti gli Elementi"
|
||||
},
|
||||
"permissions.visibility.title": {
|
||||
"defaultMessage": "Visibilità Elementi"
|
||||
},
|
||||
"permissions.visibility.user": {
|
||||
"defaultMessage": "Solo Elementi Creati"
|
||||
},
|
||||
"proxy-host": {
|
||||
"defaultMessage": "Proxy Host"
|
||||
},
|
||||
"proxy-host.forward-host": {
|
||||
"defaultMessage": "Hostname / IP di Destinazione"
|
||||
},
|
||||
"proxy-hosts": {
|
||||
"defaultMessage": "Proxy Hosts"
|
||||
},
|
||||
"proxy-hosts.count": {
|
||||
"defaultMessage": "{count} {count, plural, one {Host Proxy} other {Host Proxy}}"
|
||||
},
|
||||
"public": {
|
||||
"defaultMessage": "Pubblico"
|
||||
},
|
||||
"redirection-host": {
|
||||
"defaultMessage": "Host di Reindirizzamento"
|
||||
},
|
||||
"redirection-host.forward-domain": {
|
||||
"defaultMessage": "Dominio di Destinazione"
|
||||
},
|
||||
"redirection-host.forward-http-code": {
|
||||
"defaultMessage": "Codice HTTP"
|
||||
},
|
||||
"redirection-hosts": {
|
||||
"defaultMessage": "Host di Reindirizzamento"
|
||||
},
|
||||
"redirection-hosts.count": {
|
||||
"defaultMessage": "{count} {count, plural, one {Host di Reindirizzamento} other {Host di Reindirizzamento}}"
|
||||
},
|
||||
"role.admin": {
|
||||
"defaultMessage": "Amministratore"
|
||||
},
|
||||
"role.standard-user": {
|
||||
"defaultMessage": "Utente Standard"
|
||||
},
|
||||
"save": {
|
||||
"defaultMessage": "Salva"
|
||||
},
|
||||
"setting": {
|
||||
"defaultMessage": "Impostazione"
|
||||
},
|
||||
"settings": {
|
||||
"defaultMessage": "Impostazioni"
|
||||
},
|
||||
"settings.default-site": {
|
||||
"defaultMessage": "Sito Predefinito"
|
||||
},
|
||||
"settings.default-site.404": {
|
||||
"defaultMessage": "Pagina 404"
|
||||
},
|
||||
"settings.default-site.444": {
|
||||
"defaultMessage": "Nessuna Risposta (444)"
|
||||
},
|
||||
"settings.default-site.congratulations": {
|
||||
"defaultMessage": "Pagina di Congratulazioni"
|
||||
},
|
||||
"settings.default-site.description": {
|
||||
"defaultMessage": "Cosa mostrare quando Nginx riceve una richiesta da un host sconosciuto"
|
||||
},
|
||||
"settings.default-site.html": {
|
||||
"defaultMessage": "HTML Personalizzato"
|
||||
},
|
||||
"settings.default-site.html.placeholder": {
|
||||
"defaultMessage": "<!-- Inserisci qui il tuo contenuto HTML personalizzato -->"
|
||||
},
|
||||
"settings.default-site.redirect": {
|
||||
"defaultMessage": "Reindirizza"
|
||||
},
|
||||
"setup.preamble": {
|
||||
"defaultMessage": "Inizia creando il tuo account amministratore."
|
||||
},
|
||||
"setup.title": {
|
||||
"defaultMessage": "Benvenuto!"
|
||||
},
|
||||
"sign-in": {
|
||||
"defaultMessage": "Accedi"
|
||||
},
|
||||
"ssl-certificate": {
|
||||
"defaultMessage": "Certificato SSL"
|
||||
},
|
||||
"stream": {
|
||||
"defaultMessage": "Stream"
|
||||
},
|
||||
"stream.forward-host": {
|
||||
"defaultMessage": "Host di Destinazione"
|
||||
},
|
||||
"stream.incoming-port": {
|
||||
"defaultMessage": "Porta in Ingresso"
|
||||
},
|
||||
"streams": {
|
||||
"defaultMessage": "Stream"
|
||||
},
|
||||
"streams.count": {
|
||||
"defaultMessage": "{count} {count, plural, one {Stream} other {Stream}}"
|
||||
},
|
||||
"streams.tcp": {
|
||||
"defaultMessage": "TCP"
|
||||
},
|
||||
"streams.udp": {
|
||||
"defaultMessage": "UDP"
|
||||
},
|
||||
"test": {
|
||||
"defaultMessage": "Test"
|
||||
},
|
||||
"update-available": {
|
||||
"defaultMessage": "Aggiornamento Disponibile: {latestVersion}"
|
||||
},
|
||||
"user": {
|
||||
"defaultMessage": "Utente"
|
||||
},
|
||||
"user.change-password": {
|
||||
"defaultMessage": "Cambia Password"
|
||||
},
|
||||
"user.confirm-password": {
|
||||
"defaultMessage": "Conferma Password"
|
||||
},
|
||||
"user.current-password": {
|
||||
"defaultMessage": "Password Attuale"
|
||||
},
|
||||
"user.edit-profile": {
|
||||
"defaultMessage": "Modifica Profilo"
|
||||
},
|
||||
"user.full-name": {
|
||||
"defaultMessage": "Nome Completo"
|
||||
},
|
||||
"user.login-as": {
|
||||
"defaultMessage": "Accedi come {name}"
|
||||
},
|
||||
"user.logout": {
|
||||
"defaultMessage": "Disconnetti"
|
||||
},
|
||||
"user.new-password": {
|
||||
"defaultMessage": "Nuova Password"
|
||||
},
|
||||
"user.nickname": {
|
||||
"defaultMessage": "Soprannome"
|
||||
},
|
||||
"user.set-password": {
|
||||
"defaultMessage": "Imposta Password"
|
||||
},
|
||||
"user.set-permissions": {
|
||||
"defaultMessage": "Imposta Permessi per {name}"
|
||||
},
|
||||
"user.switch-dark": {
|
||||
"defaultMessage": "Passa alla modalità Scura"
|
||||
},
|
||||
"user.switch-light": {
|
||||
"defaultMessage": "Passa alla modalità Chiara"
|
||||
},
|
||||
"username": {
|
||||
"defaultMessage": "Nome Utente"
|
||||
},
|
||||
"users": {
|
||||
"defaultMessage": "Utenti"
|
||||
}
|
||||
}
|
||||
641
frontend/src/locale/src/ja.json
Normal file
641
frontend/src/locale/src/ja.json
Normal file
@@ -0,0 +1,641 @@
|
||||
{
|
||||
"access-list": {
|
||||
"defaultMessage": "アクセスリスト"
|
||||
},
|
||||
"access-list.access-count": {
|
||||
"defaultMessage": "{count} ルール"
|
||||
},
|
||||
"access-list.auth-count": {
|
||||
"defaultMessage": "{count} ユーザー"
|
||||
},
|
||||
"access-list.help-rules-last": {
|
||||
"defaultMessage": "少なくとも 1 つのルールが存在する場合、 他のすべてを拒否するルールが最後に追加されます"
|
||||
},
|
||||
"access-list.help.rules-order": {
|
||||
"defaultMessage": "許可コマンドと拒否コマンドは定義された順番で適用されます"
|
||||
},
|
||||
"access-list.pass-auth": {
|
||||
"defaultMessage": "認証情報をアップストリームに送信する"
|
||||
},
|
||||
"access-list.public": {
|
||||
"defaultMessage": "公開されたアクセス"
|
||||
},
|
||||
"access-list.public.subtitle": {
|
||||
"defaultMessage": "ベーシック認証を使用しません"
|
||||
},
|
||||
"access-list.satisfy-any": {
|
||||
"defaultMessage": "いずれかを満たす"
|
||||
},
|
||||
"access-list.subtitle": {
|
||||
"defaultMessage": "{users} ユーザー, {rules} ルール - 作成日時: {date}"
|
||||
},
|
||||
"access-lists": {
|
||||
"defaultMessage": "アクセスリスト"
|
||||
},
|
||||
"action.add": {
|
||||
"defaultMessage": "追加"
|
||||
},
|
||||
"action.add-location": {
|
||||
"defaultMessage": "場所を追加"
|
||||
},
|
||||
"action.close": {
|
||||
"defaultMessage": "閉じる"
|
||||
},
|
||||
"action.delete": {
|
||||
"defaultMessage": "削除"
|
||||
},
|
||||
"action.disable": {
|
||||
"defaultMessage": "無効化"
|
||||
},
|
||||
"action.download": {
|
||||
"defaultMessage": "ダウンロード"
|
||||
},
|
||||
"action.edit": {
|
||||
"defaultMessage": "編集"
|
||||
},
|
||||
"action.enable": {
|
||||
"defaultMessage": "有効化"
|
||||
},
|
||||
"action.permissions": {
|
||||
"defaultMessage": "権限"
|
||||
},
|
||||
"action.renew": {
|
||||
"defaultMessage": "更新"
|
||||
},
|
||||
"action.view-details": {
|
||||
"defaultMessage": "詳細"
|
||||
},
|
||||
"auditlogs": {
|
||||
"defaultMessage": "監査ログ"
|
||||
},
|
||||
"cancel": {
|
||||
"defaultMessage": "キャンセル"
|
||||
},
|
||||
"certificate": {
|
||||
"defaultMessage": "証明書"
|
||||
},
|
||||
"certificate.custom-certificate": {
|
||||
"defaultMessage": "証明書"
|
||||
},
|
||||
"certificate.custom-certificate-key": {
|
||||
"defaultMessage": "証明書キー"
|
||||
},
|
||||
"certificate.custom-intermediate": {
|
||||
"defaultMessage": "中間証明書"
|
||||
},
|
||||
"certificate.in-use": {
|
||||
"defaultMessage": "使用中"
|
||||
},
|
||||
"certificate.none.subtitle": {
|
||||
"defaultMessage": "証明書が割り当てられていません"
|
||||
},
|
||||
"certificate.none.subtitle.for-http": {
|
||||
"defaultMessage": "このホストはHTTPSを使用しません"
|
||||
},
|
||||
"certificate.none.title": {
|
||||
"defaultMessage": "無し"
|
||||
},
|
||||
"certificate.not-in-use": {
|
||||
"defaultMessage": "未使用"
|
||||
},
|
||||
"certificate.renew": {
|
||||
"defaultMessage": "証明書を更新"
|
||||
},
|
||||
"certificates": {
|
||||
"defaultMessage": "証明書"
|
||||
},
|
||||
"certificates.custom": {
|
||||
"defaultMessage": "カスタム証明書"
|
||||
},
|
||||
"certificates.custom.warning": {
|
||||
"defaultMessage": "パスワードによって保護されたキーファイルはサポートされていません"
|
||||
},
|
||||
"certificates.dns.credentials": {
|
||||
"defaultMessage": "資格情報ファイルの内容"
|
||||
},
|
||||
"certificates.dns.credentials-note": {
|
||||
"defaultMessage": "このプラグインはプロバイダーのAPIキーか認証情報を含む設定ファイルが必要です"
|
||||
},
|
||||
"certificates.dns.credentials-warning": {
|
||||
"defaultMessage": "このデータはファイルとデータベースにプレーンテキストとして保存されます"
|
||||
},
|
||||
"certificates.dns.propagation-seconds": {
|
||||
"defaultMessage": "DNS伝播時間(秒)"
|
||||
},
|
||||
"certificates.dns.propagation-seconds-note": {
|
||||
"defaultMessage": "DNSの伝搬時間を秒で指定します。空にするとデフォルトの値を使用します。"
|
||||
},
|
||||
"certificates.dns.provider": {
|
||||
"defaultMessage": "DNSプロバイダー"
|
||||
},
|
||||
"certificates.dns.warning": {
|
||||
"defaultMessage": "このセクションはCertbotとそのDNSプラグインの知識が必要です。各プラグインのドキュメントを参照してください。"
|
||||
},
|
||||
"certificates.http.reachability-404": {
|
||||
"defaultMessage": "このドメインはNginx Proxy Managerではないサーバーを指しているようです。ドメインがこのNPMインスタンスを指していることを確認してください。"
|
||||
},
|
||||
"certificates.http.reachability-failed-to-check": {
|
||||
"defaultMessage": "site24x7.comへの接続でエラーが発生し、到達性チェックに失敗しました"
|
||||
},
|
||||
"certificates.http.reachability-not-resolved": {
|
||||
"defaultMessage": "このドメインには利用可能なサーバーがありません。ドメインが存在し、NPMインスタンスのIPアドレスを指していること、必要に応じてルーターでポート80が転送されていることを確認してください。"
|
||||
},
|
||||
"certificates.http.reachability-ok": {
|
||||
"defaultMessage": "サーバーへ到達可能であり、証明書の作成が可能です。"
|
||||
},
|
||||
"certificates.http.reachability-other": {
|
||||
"defaultMessage": "このドメインでサーバーが見つかりましたが予期しないステータスコード {code} を返しました. NPMサーバーが動いていますか? ドメインがこのNPMインスタンスを指していることを確認してください。"
|
||||
},
|
||||
"certificates.http.reachability-wrong-data": {
|
||||
"defaultMessage": "このドメインでサーバーが見つかりましたが予期しないデータを返しました. NPMサーバーが動いていますか? ドメインがこのNPMインスタンスを指していることを確認してください。"
|
||||
},
|
||||
"certificates.http.test-results": {
|
||||
"defaultMessage": "テスト結果"
|
||||
},
|
||||
"certificates.http.warning": {
|
||||
"defaultMessage": "これらのドメインは、すでにこのインストール先を指すように設定されている必要がありますあ."
|
||||
},
|
||||
"certificates.request.subtitle": {
|
||||
"defaultMessage": "Let's Encryptを使用する"
|
||||
},
|
||||
"certificates.request.title": {
|
||||
"defaultMessage": "新しい証明書を作成"
|
||||
},
|
||||
"column.access": {
|
||||
"defaultMessage": "アクセス"
|
||||
},
|
||||
"column.authorization": {
|
||||
"defaultMessage": "認証"
|
||||
},
|
||||
"column.authorizations": {
|
||||
"defaultMessage": "認証"
|
||||
},
|
||||
"column.custom-locations": {
|
||||
"defaultMessage": "カスタムロケーション"
|
||||
},
|
||||
"column.destination": {
|
||||
"defaultMessage": "宛先"
|
||||
},
|
||||
"column.details": {
|
||||
"defaultMessage": "詳細"
|
||||
},
|
||||
"column.email": {
|
||||
"defaultMessage": "Email"
|
||||
},
|
||||
"column.event": {
|
||||
"defaultMessage": "イベント"
|
||||
},
|
||||
"column.expires": {
|
||||
"defaultMessage": "期限切れ"
|
||||
},
|
||||
"column.http-code": {
|
||||
"defaultMessage": "アクセス"
|
||||
},
|
||||
"column.incoming-port": {
|
||||
"defaultMessage": "受信ポート"
|
||||
},
|
||||
"column.name": {
|
||||
"defaultMessage": "名前"
|
||||
},
|
||||
"column.protocol": {
|
||||
"defaultMessage": "プロトコル"
|
||||
},
|
||||
"column.provider": {
|
||||
"defaultMessage": "プロバイダー"
|
||||
},
|
||||
"column.roles": {
|
||||
"defaultMessage": "Roles"
|
||||
},
|
||||
"column.rules": {
|
||||
"defaultMessage": "ルール"
|
||||
},
|
||||
"column.satisfy": {
|
||||
"defaultMessage": "Satisfy"
|
||||
},
|
||||
"column.satisfy-all": {
|
||||
"defaultMessage": "すべて"
|
||||
},
|
||||
"column.satisfy-any": {
|
||||
"defaultMessage": "いずれか"
|
||||
},
|
||||
"column.scheme": {
|
||||
"defaultMessage": "スキーム"
|
||||
},
|
||||
"column.source": {
|
||||
"defaultMessage": "ソース"
|
||||
},
|
||||
"column.ssl": {
|
||||
"defaultMessage": "SSL"
|
||||
},
|
||||
"column.status": {
|
||||
"defaultMessage": "ステータス"
|
||||
},
|
||||
"created-on": {
|
||||
"defaultMessage": "作成日時: {date}"
|
||||
},
|
||||
"dashboard": {
|
||||
"defaultMessage": "ダッシュボード"
|
||||
},
|
||||
"dead-host": {
|
||||
"defaultMessage": "404 ホスト"
|
||||
},
|
||||
"dead-hosts": {
|
||||
"defaultMessage": "404 ホスト"
|
||||
},
|
||||
"dead-hosts.count": {
|
||||
"defaultMessage": "{count} 404 ホスト"
|
||||
},
|
||||
"disabled": {
|
||||
"defaultMessage": "無効化"
|
||||
},
|
||||
"domain-names": {
|
||||
"defaultMessage": "ドメイン名"
|
||||
},
|
||||
"domain-names.max": {
|
||||
"defaultMessage": "{count}のドメイン名が最大です"
|
||||
},
|
||||
"domain-names.placeholder": {
|
||||
"defaultMessage": "追加するドメインを入力..."
|
||||
},
|
||||
"domain-names.wildcards-not-permitted": {
|
||||
"defaultMessage": "ワイルドカードはこのタイプでは許可されていません"
|
||||
},
|
||||
"domain-names.wildcards-not-supported": {
|
||||
"defaultMessage": "ワイルドカードはこのCAではサポートされていません"
|
||||
},
|
||||
"domains.force-ssl": {
|
||||
"defaultMessage": "SSLを強制"
|
||||
},
|
||||
"domains.hsts-enabled": {
|
||||
"defaultMessage": "HSTSを有効化"
|
||||
},
|
||||
"domains.hsts-subdomains": {
|
||||
"defaultMessage": "HSTSサブドメイン"
|
||||
},
|
||||
"domains.http2-support": {
|
||||
"defaultMessage": "HTTP/2サポート"
|
||||
},
|
||||
"domains.use-dns": {
|
||||
"defaultMessage": "DNSチャレンジを使用"
|
||||
},
|
||||
"email-address": {
|
||||
"defaultMessage": "Emailアドレス"
|
||||
},
|
||||
"empty-search": {
|
||||
"defaultMessage": "見つかりませんでした"
|
||||
},
|
||||
"empty-subtitle": {
|
||||
"defaultMessage": "作ってみましょう"
|
||||
},
|
||||
"enabled": {
|
||||
"defaultMessage": "有効"
|
||||
},
|
||||
"error.access.at-least-one": {
|
||||
"defaultMessage": "少なくとも一つの認証またはアクセスルールが必要です"
|
||||
},
|
||||
"error.access.duplicate-usernames": {
|
||||
"defaultMessage": "認証のユーザー名は他と同じ名前は使用できません"
|
||||
},
|
||||
"error.invalid-auth": {
|
||||
"defaultMessage": "無効なemailまたはパスワード"
|
||||
},
|
||||
"error.invalid-domain": {
|
||||
"defaultMessage": "無効なドメイン: {domain}"
|
||||
},
|
||||
"error.invalid-email": {
|
||||
"defaultMessage": "無効なemailアドレス"
|
||||
},
|
||||
"error.max-character-length": {
|
||||
"defaultMessage": "文字数は長くとも{max}文字です"
|
||||
},
|
||||
"error.max-domains": {
|
||||
"defaultMessage": "ドメインが多すぎます, 最大値は{max}です"
|
||||
},
|
||||
"error.maximum": {
|
||||
"defaultMessage": "最大値は{max}です"
|
||||
},
|
||||
"error.min-character-length": {
|
||||
"defaultMessage": "文字数は少なくとも{min}文字です"
|
||||
},
|
||||
"error.minimum": {
|
||||
"defaultMessage": "最小値は{min}です"
|
||||
},
|
||||
"error.passwords-must-match": {
|
||||
"defaultMessage": "パスワードは一致する必要があります"
|
||||
},
|
||||
"error.required": {
|
||||
"defaultMessage": "必須項目です"
|
||||
},
|
||||
"expires.on": {
|
||||
"defaultMessage": "有効期限: {date}"
|
||||
},
|
||||
"footer.github-fork": {
|
||||
"defaultMessage": "Fork me on Github"
|
||||
},
|
||||
"host.flags.block-exploits": {
|
||||
"defaultMessage": "一般的なエクスプロイトをブロックする"
|
||||
},
|
||||
"host.flags.cache-assets": {
|
||||
"defaultMessage": "アセットをキャッシュする"
|
||||
},
|
||||
"host.flags.preserve-path": {
|
||||
"defaultMessage": "パスワードは一致する必要があります"
|
||||
},
|
||||
"host.flags.protocols": {
|
||||
"defaultMessage": "プロトコル"
|
||||
},
|
||||
"host.flags.websockets-upgrade": {
|
||||
"defaultMessage": "Websocketsサポート"
|
||||
},
|
||||
"host.forward-port": {
|
||||
"defaultMessage": "転送ポート"
|
||||
},
|
||||
"host.forward-scheme": {
|
||||
"defaultMessage": "スキーム"
|
||||
},
|
||||
"hosts": {
|
||||
"defaultMessage": "ホスト"
|
||||
},
|
||||
"http-only": {
|
||||
"defaultMessage": "HTTP Only"
|
||||
},
|
||||
"lets-encrypt": {
|
||||
"defaultMessage": "Let's Encrypt"
|
||||
},
|
||||
"lets-encrypt-via-dns": {
|
||||
"defaultMessage": "Let's Encrypt via DNS"
|
||||
},
|
||||
"lets-encrypt-via-http": {
|
||||
"defaultMessage": "Let's Encrypt via HTTP"
|
||||
},
|
||||
"loading": {
|
||||
"defaultMessage": "Loading…"
|
||||
},
|
||||
"login.title": {
|
||||
"defaultMessage": "アカウントにログイン"
|
||||
},
|
||||
"nginx-config.label": {
|
||||
"defaultMessage": "カスタムNginx設定"
|
||||
},
|
||||
"nginx-config.placeholder": {
|
||||
"defaultMessage": "# Enter your custom Nginx configuration here at your own risk!"
|
||||
},
|
||||
"no-permission-error": {
|
||||
"defaultMessage": "これを表示する権限がありません"
|
||||
},
|
||||
"notfound.action": {
|
||||
"defaultMessage": "ホームに戻る"
|
||||
},
|
||||
"notfound.content": {
|
||||
"defaultMessage": "申し訳ありませんが探しているページは見つかりませんでした"
|
||||
},
|
||||
"notfound.title": {
|
||||
"defaultMessage": "おっと... エラーページにたどり着いてしまったようです"
|
||||
},
|
||||
"notification.error": {
|
||||
"defaultMessage": "エラー"
|
||||
},
|
||||
"notification.object-deleted": {
|
||||
"defaultMessage": "{object}は削除されました"
|
||||
},
|
||||
"notification.object-disabled": {
|
||||
"defaultMessage": "{object}は無効化されました"
|
||||
},
|
||||
"notification.object-enabled": {
|
||||
"defaultMessage": "{object}は有効化されました"
|
||||
},
|
||||
"notification.object-renewed": {
|
||||
"defaultMessage": "{object}は再作成されました"
|
||||
},
|
||||
"notification.object-saved": {
|
||||
"defaultMessage": "{object}は保存されました"
|
||||
},
|
||||
"notification.success": {
|
||||
"defaultMessage": "成功"
|
||||
},
|
||||
"object.actions-title": {
|
||||
"defaultMessage": "{object} #{id}"
|
||||
},
|
||||
"object.add": {
|
||||
"defaultMessage": "{object}を追加"
|
||||
},
|
||||
"object.delete": {
|
||||
"defaultMessage": "{object}を削除"
|
||||
},
|
||||
"object.delete.content": {
|
||||
"defaultMessage": "本当に{object}を削除しますか?"
|
||||
},
|
||||
"object.edit": {
|
||||
"defaultMessage": "{object}を編集"
|
||||
},
|
||||
"object.empty": {
|
||||
"defaultMessage": "{objects}はありません"
|
||||
},
|
||||
"object.event.created": {
|
||||
"defaultMessage": "{object}を作成済み"
|
||||
},
|
||||
"object.event.deleted": {
|
||||
"defaultMessage": "{object}を削除済み"
|
||||
},
|
||||
"object.event.disabled": {
|
||||
"defaultMessage": "{object}を無効化済み"
|
||||
},
|
||||
"object.event.enabled": {
|
||||
"defaultMessage": "{object}を有効化済み"
|
||||
},
|
||||
"object.event.renewed": {
|
||||
"defaultMessage": "{object}を再作成済み"
|
||||
},
|
||||
"object.event.updated": {
|
||||
"defaultMessage": "{object}を更新済み"
|
||||
},
|
||||
"offline": {
|
||||
"defaultMessage": "Offline"
|
||||
},
|
||||
"online": {
|
||||
"defaultMessage": "Online"
|
||||
},
|
||||
"options": {
|
||||
"defaultMessage": "Options"
|
||||
},
|
||||
"password": {
|
||||
"defaultMessage": "パスワード"
|
||||
},
|
||||
"password.generate": {
|
||||
"defaultMessage": "ランダムなパスワードを生成"
|
||||
},
|
||||
"password.hide": {
|
||||
"defaultMessage": "パスワードを隠す"
|
||||
},
|
||||
"password.show": {
|
||||
"defaultMessage": "パスワードを表示する"
|
||||
},
|
||||
"permissions.hidden": {
|
||||
"defaultMessage": "非公開"
|
||||
},
|
||||
"permissions.manage": {
|
||||
"defaultMessage": "管理"
|
||||
},
|
||||
"permissions.view": {
|
||||
"defaultMessage": "表示のみ"
|
||||
},
|
||||
"permissions.visibility.all": {
|
||||
"defaultMessage": "すべて"
|
||||
},
|
||||
"permissions.visibility.title": {
|
||||
"defaultMessage": "可視性"
|
||||
},
|
||||
"permissions.visibility.user": {
|
||||
"defaultMessage": "作成したもののみ"
|
||||
},
|
||||
"proxy-host": {
|
||||
"defaultMessage": "プロキシホスト"
|
||||
},
|
||||
"proxy-host.forward-host": {
|
||||
"defaultMessage": "転送ホスト名/IP"
|
||||
},
|
||||
"proxy-hosts": {
|
||||
"defaultMessage": "プロキシホスト"
|
||||
},
|
||||
"proxy-hosts.count": {
|
||||
"defaultMessage": "{count} プロキシホスト"
|
||||
},
|
||||
"public": {
|
||||
"defaultMessage": "Public"
|
||||
},
|
||||
"redirection-host": {
|
||||
"defaultMessage": "リダイレクトホスト"
|
||||
},
|
||||
"redirection-host.forward-domain": {
|
||||
"defaultMessage": "転送ホスト"
|
||||
},
|
||||
"redirection-hosts": {
|
||||
"defaultMessage": "リダイレクトホスト"
|
||||
},
|
||||
"redirection-hosts.count": {
|
||||
"defaultMessage": "{count} リダイレクトホスト"
|
||||
},
|
||||
"role.admin": {
|
||||
"defaultMessage": "管理者"
|
||||
},
|
||||
"role.standard-user": {
|
||||
"defaultMessage": "一般ユーザー"
|
||||
},
|
||||
"save": {
|
||||
"defaultMessage": "保存"
|
||||
},
|
||||
"setting": {
|
||||
"defaultMessage": "設定"
|
||||
},
|
||||
"settings": {
|
||||
"defaultMessage": "設定"
|
||||
},
|
||||
"settings.default-site": {
|
||||
"defaultMessage": "デフォルトサイト"
|
||||
},
|
||||
"settings.default-site.404": {
|
||||
"defaultMessage": "404ページ"
|
||||
},
|
||||
"settings.default-site.444": {
|
||||
"defaultMessage": "返答しない (444)"
|
||||
},
|
||||
"settings.default-site.congratulations": {
|
||||
"defaultMessage": "設定ページ"
|
||||
},
|
||||
"settings.default-site.description": {
|
||||
"defaultMessage": "不明なホストを要求されたときにNginxが何を返すかを設定します"
|
||||
},
|
||||
"settings.default-site.html": {
|
||||
"defaultMessage": "カスタムHTML"
|
||||
},
|
||||
"settings.default-site.html.placeholder": {
|
||||
"defaultMessage": "<!-- Enter your custom HTML content here -->"
|
||||
},
|
||||
"settings.default-site.redirect": {
|
||||
"defaultMessage": "リダイレクト"
|
||||
},
|
||||
"setup.preamble": {
|
||||
"defaultMessage": "管理者アカウントを作成して始めましょう"
|
||||
},
|
||||
"setup.title": {
|
||||
"defaultMessage": "ようこそ!"
|
||||
},
|
||||
"sign-in": {
|
||||
"defaultMessage": "サインイン"
|
||||
},
|
||||
"ssl-certificate": {
|
||||
"defaultMessage": "SSL証明書"
|
||||
},
|
||||
"stream": {
|
||||
"defaultMessage": "ストリーム"
|
||||
},
|
||||
"stream.forward-host": {
|
||||
"defaultMessage": "転送ポート"
|
||||
},
|
||||
"stream.incoming-port": {
|
||||
"defaultMessage": "受信ポート"
|
||||
},
|
||||
"streams": {
|
||||
"defaultMessage": "ストリーム"
|
||||
},
|
||||
"streams.count": {
|
||||
"defaultMessage": "{count} ストリーム"
|
||||
},
|
||||
"streams.tcp": {
|
||||
"defaultMessage": "TCP"
|
||||
},
|
||||
"streams.udp": {
|
||||
"defaultMessage": "UDP"
|
||||
},
|
||||
"test": {
|
||||
"defaultMessage": "テスト"
|
||||
},
|
||||
"user": {
|
||||
"defaultMessage": "ユーザー"
|
||||
},
|
||||
"user.change-password": {
|
||||
"defaultMessage": "変更するパスワード"
|
||||
},
|
||||
"user.confirm-password": {
|
||||
"defaultMessage": "変更するパスワードを確認"
|
||||
},
|
||||
"user.current-password": {
|
||||
"defaultMessage": "現在のパスワード"
|
||||
},
|
||||
"user.edit-profile": {
|
||||
"defaultMessage": "プロフィールを編集"
|
||||
},
|
||||
"user.full-name": {
|
||||
"defaultMessage": "フルネーム"
|
||||
},
|
||||
"user.login-as": {
|
||||
"defaultMessage": "{name}としてサインイン"
|
||||
},
|
||||
"user.logout": {
|
||||
"defaultMessage": "ログアウト"
|
||||
},
|
||||
"user.new-password": {
|
||||
"defaultMessage": "新しいパスワード"
|
||||
},
|
||||
"user.nickname": {
|
||||
"defaultMessage": "ニックネーム"
|
||||
},
|
||||
"user.set-password": {
|
||||
"defaultMessage": "パスワードを設定"
|
||||
},
|
||||
"user.set-permissions": {
|
||||
"defaultMessage": "{name}に権限を設定"
|
||||
},
|
||||
"user.switch-dark": {
|
||||
"defaultMessage": "ダークモードに変更"
|
||||
},
|
||||
"user.switch-light": {
|
||||
"defaultMessage": "ライトモードに変更"
|
||||
},
|
||||
"username": {
|
||||
"defaultMessage": "ユーザー名"
|
||||
},
|
||||
"users": {
|
||||
"defaultMessage": "ユーザー"
|
||||
}
|
||||
}
|
||||
24
frontend/src/locale/src/lang-list.json
Normal file → Executable file
24
frontend/src/locale/src/lang-list.json
Normal file → Executable file
@@ -7,5 +7,29 @@
|
||||
},
|
||||
"locale-de-DE": {
|
||||
"defaultMessage": "German"
|
||||
},
|
||||
"locale-ja-JP": {
|
||||
"defaultMessage": "日本語"
|
||||
},
|
||||
"locale-ru-RU": {
|
||||
"defaultMessage": "Русский"
|
||||
},
|
||||
"locale-sk-SK": {
|
||||
"defaultMessage": "Slovenčina"
|
||||
},
|
||||
"locale-zh-CN": {
|
||||
"defaultMessage": "中文"
|
||||
},
|
||||
"locale-pl-PL": {
|
||||
"defaultMessage": "Polski"
|
||||
},
|
||||
"locale-it-IT": {
|
||||
"defaultMessage": "Italiano"
|
||||
},
|
||||
"locale-vi-VN": {
|
||||
"defaultMessage": "Tiếng Việt"
|
||||
},
|
||||
"locale-nl-NL": {
|
||||
"defaultMessage": "Nederlands"
|
||||
}
|
||||
}
|
||||
|
||||
647
frontend/src/locale/src/nl.json
Normal file
647
frontend/src/locale/src/nl.json
Normal file
@@ -0,0 +1,647 @@
|
||||
{
|
||||
"access-list": {
|
||||
"defaultMessage": "Toegangslijst"
|
||||
},
|
||||
"access-list.access-count": {
|
||||
"defaultMessage": "{count} {count, plural, one {Regel} other {Regels}}"
|
||||
},
|
||||
"access-list.auth-count": {
|
||||
"defaultMessage": "{count} {count, plural, one {Gebruiker} other {Gebruikers}}"
|
||||
},
|
||||
"access-list.help-rules-last": {
|
||||
"defaultMessage": "Als er minimaal 1 regel bestaat, wordt deze regel als laatste toegevoegd"
|
||||
},
|
||||
"access-list.help.rules-order": {
|
||||
"defaultMessage": "Onthoud dat de regels van boven naar beneden worden toegevoegd."
|
||||
},
|
||||
"access-list.pass-auth": {
|
||||
"defaultMessage": "Pass Auth to Upstream"
|
||||
},
|
||||
"access-list.public": {
|
||||
"defaultMessage": "Publiekelijk toegankelijk"
|
||||
},
|
||||
"access-list.public.subtitle": {
|
||||
"defaultMessage": "Geen basisautentificatie vereist"
|
||||
},
|
||||
"access-list.satisfy-any": {
|
||||
"defaultMessage": "Voldoe aan elke"
|
||||
},
|
||||
"access-list.subtitle": {
|
||||
"defaultMessage": "{users} {users, plural, one {Gebruiker} other {Gebruikers}}, {rules} {rules, plural, one {Regel} other {Regels}} - Aangemaakt: {date}"
|
||||
},
|
||||
"access-lists": {
|
||||
"defaultMessage": "Toegangslijsten"
|
||||
},
|
||||
"action.add": {
|
||||
"defaultMessage": "Toevoegen"
|
||||
},
|
||||
"action.add-location": {
|
||||
"defaultMessage": "Locatie Toevoegen"
|
||||
},
|
||||
"action.close": {
|
||||
"defaultMessage": "Sluiten"
|
||||
},
|
||||
"action.delete": {
|
||||
"defaultMessage": "Verwijderen"
|
||||
},
|
||||
"action.disable": {
|
||||
"defaultMessage": "Uitzetten"
|
||||
},
|
||||
"action.download": {
|
||||
"defaultMessage": "Download"
|
||||
},
|
||||
"action.edit": {
|
||||
"defaultMessage": "Bewerken"
|
||||
},
|
||||
"action.enable": {
|
||||
"defaultMessage": "Aanzetten"
|
||||
},
|
||||
"action.permissions": {
|
||||
"defaultMessage": "Rechten"
|
||||
},
|
||||
"action.renew": {
|
||||
"defaultMessage": "Vernieuwen"
|
||||
},
|
||||
"action.view-details": {
|
||||
"defaultMessage": "Bekijk Details"
|
||||
},
|
||||
"auditlogs": {
|
||||
"defaultMessage": "Logboeken"
|
||||
},
|
||||
"cancel": {
|
||||
"defaultMessage": "Annuleren"
|
||||
},
|
||||
"certificate": {
|
||||
"defaultMessage": "Certificaat"
|
||||
},
|
||||
"certificate.custom-certificate": {
|
||||
"defaultMessage": "Certificaat"
|
||||
},
|
||||
"certificate.custom-certificate-key": {
|
||||
"defaultMessage": "Certificaat Sleutel"
|
||||
},
|
||||
"certificate.custom-intermediate": {
|
||||
"defaultMessage": "Intermediate Certificaat"
|
||||
},
|
||||
"certificate.in-use": {
|
||||
"defaultMessage": "In Gebruik"
|
||||
},
|
||||
"certificate.none.subtitle": {
|
||||
"defaultMessage": "Geen certificaat toegewezen"
|
||||
},
|
||||
"certificate.none.subtitle.for-http": {
|
||||
"defaultMessage": "Deze host gebruikt geen HTTPS"
|
||||
},
|
||||
"certificate.none.title": {
|
||||
"defaultMessage": "Geen"
|
||||
},
|
||||
"certificate.not-in-use": {
|
||||
"defaultMessage": "Niet Gebruikt"
|
||||
},
|
||||
"certificate.renew": {
|
||||
"defaultMessage": "Certificaat Vernieuwen"
|
||||
},
|
||||
"certificates": {
|
||||
"defaultMessage": "Certificaten"
|
||||
},
|
||||
"certificates.custom": {
|
||||
"defaultMessage": "Aangepast Certificaat"
|
||||
},
|
||||
"certificates.custom.warning": {
|
||||
"defaultMessage": "Sleutels met een wachtzin zijn niet ondersteund."
|
||||
},
|
||||
"certificates.dns.credentials": {
|
||||
"defaultMessage": "Credentials File Content"
|
||||
},
|
||||
"certificates.dns.credentials-note": {
|
||||
"defaultMessage": "Deze plugin vereist een configuratiebestand met een API token of andere gegevens van de provider."
|
||||
},
|
||||
"certificates.dns.credentials-warning": {
|
||||
"defaultMessage": "Deze data zal worden opgeslagen als plaintext in de database en in een bestand!"
|
||||
},
|
||||
"certificates.dns.propagation-seconds": {
|
||||
"defaultMessage": "Verwerkingstijd (seconden)"
|
||||
},
|
||||
"certificates.dns.propagation-seconds-note": {
|
||||
"defaultMessage": "Laat leeg om de standaardwaarde van de plugin te gebruiken. Aantal seconden om te wachten op DNS propagatie."
|
||||
},
|
||||
"certificates.dns.provider": {
|
||||
"defaultMessage": "DNS Provider"
|
||||
},
|
||||
"certificates.dns.warning": {
|
||||
"defaultMessage": "Deze sectie vereist wat informatie over Certbot en zijn DNS plugins. Gebruik de documentatie van de bijbehorende plugins."
|
||||
},
|
||||
"certificates.http.reachability-404": {
|
||||
"defaultMessage": "Er is een server gevonden op deze domeinnaam, maar dat lijkt niet Nginx Proxy Manager te zijn. Zorg ervoor dat je domein naar het IP waar je NPM instance draait wijst."
|
||||
},
|
||||
"certificates.http.reachability-failed-to-check": {
|
||||
"defaultMessage": "Bereikbaarheid kan niet worden bepaald door een communicatiefout met site24x7.com."
|
||||
},
|
||||
"certificates.http.reachability-not-resolved": {
|
||||
"defaultMessage": "Er is geen server beschikbaar op dit domein. Zorg ervoor dat je domein bestaat en naar het IP waar je NPM instance draait wijst en eventueel port 80 wordt doorgegeven in je router."
|
||||
},
|
||||
"certificates.http.reachability-ok": {
|
||||
"defaultMessage": "Jouw server is bereikbaar en certificaten kunnen worden aangemaakt."
|
||||
},
|
||||
"certificates.http.reachability-other": {
|
||||
"defaultMessage": "Er is een server gevonden op deze domeinnaam, maar heeft een onverwachte statuscode ({code}) teruggegeven. Is dat de NPM server? Zorg ervoor dat je domein naar het IP waar je NPM instance draait wijst."
|
||||
},
|
||||
"certificates.http.reachability-wrong-data": {
|
||||
"defaultMessage": "Er is een server gevonden op deze domeinnaam, maar heeft een onverwachte gegevens teruggegeven. Is dat de NPM server? Zorg ervoor dat je domein naar het IP waar je NPM instance draait wijst."
|
||||
},
|
||||
"certificates.http.test-results": {
|
||||
"defaultMessage": "Testresultaten"
|
||||
},
|
||||
"certificates.http.warning": {
|
||||
"defaultMessage": "Deze domeinen moeten al worden geconfigureerd om naar deze installatie te wijzen."
|
||||
},
|
||||
"certificates.request.subtitle": {
|
||||
"defaultMessage": "met Let's Encrypt"
|
||||
},
|
||||
"certificates.request.title": {
|
||||
"defaultMessage": "Vraag een nieuwe Certificaat aan"
|
||||
},
|
||||
"column.access": {
|
||||
"defaultMessage": "Toegang"
|
||||
},
|
||||
"column.authorization": {
|
||||
"defaultMessage": "Authorizatie"
|
||||
},
|
||||
"column.authorizations": {
|
||||
"defaultMessage": "Authorizaties"
|
||||
},
|
||||
"column.custom-locations": {
|
||||
"defaultMessage": "Aangepaste Locaties"
|
||||
},
|
||||
"column.destination": {
|
||||
"defaultMessage": "Doel"
|
||||
},
|
||||
"column.details": {
|
||||
"defaultMessage": "Details"
|
||||
},
|
||||
"column.email": {
|
||||
"defaultMessage": "Email"
|
||||
},
|
||||
"column.event": {
|
||||
"defaultMessage": "Gebeurtenis"
|
||||
},
|
||||
"column.expires": {
|
||||
"defaultMessage": "Verloopt"
|
||||
},
|
||||
"column.http-code": {
|
||||
"defaultMessage": "HTTP Code"
|
||||
},
|
||||
"column.incoming-port": {
|
||||
"defaultMessage": "Inkomende Poort"
|
||||
},
|
||||
"column.name": {
|
||||
"defaultMessage": "Naam"
|
||||
},
|
||||
"column.protocol": {
|
||||
"defaultMessage": "Protocol"
|
||||
},
|
||||
"column.provider": {
|
||||
"defaultMessage": "Provider"
|
||||
},
|
||||
"column.roles": {
|
||||
"defaultMessage": "Rollen"
|
||||
},
|
||||
"column.rules": {
|
||||
"defaultMessage": "Regels"
|
||||
},
|
||||
"column.satisfy": {
|
||||
"defaultMessage": "Vervul"
|
||||
},
|
||||
"column.satisfy-all": {
|
||||
"defaultMessage": "Alle"
|
||||
},
|
||||
"column.satisfy-any": {
|
||||
"defaultMessage": "Elke"
|
||||
},
|
||||
"column.scheme": {
|
||||
"defaultMessage": "Schema"
|
||||
},
|
||||
"column.source": {
|
||||
"defaultMessage": "Bron"
|
||||
},
|
||||
"column.ssl": {
|
||||
"defaultMessage": "SSL"
|
||||
},
|
||||
"column.status": {
|
||||
"defaultMessage": "Status"
|
||||
},
|
||||
"created-on": {
|
||||
"defaultMessage": "Aangemaakt: {date}"
|
||||
},
|
||||
"dashboard": {
|
||||
"defaultMessage": "Dashboard"
|
||||
},
|
||||
"dead-host": {
|
||||
"defaultMessage": "404 Host"
|
||||
},
|
||||
"dead-hosts": {
|
||||
"defaultMessage": "404 Hosts"
|
||||
},
|
||||
"dead-hosts.count": {
|
||||
"defaultMessage": "{count} {count, plural, one {404 Host} other {404 Hosts}}"
|
||||
},
|
||||
"disabled": {
|
||||
"defaultMessage": "Uitgezet"
|
||||
},
|
||||
"domain-names": {
|
||||
"defaultMessage": "Domeinnamen"
|
||||
},
|
||||
"domain-names.max": {
|
||||
"defaultMessage": "{count} domeinnamen toegestaan"
|
||||
},
|
||||
"domain-names.placeholder": {
|
||||
"defaultMessage": "Voeg een domeinnaam toe..."
|
||||
},
|
||||
"domain-names.wildcards-not-permitted": {
|
||||
"defaultMessage": "Wildcards zijn niet toegestaan voor dit type"
|
||||
},
|
||||
"domain-names.wildcards-not-supported": {
|
||||
"defaultMessage": "Wildcards zijn niet ondersteund voor deze CA"
|
||||
},
|
||||
"domains.force-ssl": {
|
||||
"defaultMessage": "Forceer SSL"
|
||||
},
|
||||
"domains.hsts-enabled": {
|
||||
"defaultMessage": "HSTS Aangezet"
|
||||
},
|
||||
"domains.hsts-subdomains": {
|
||||
"defaultMessage": "HSTS Subdomein"
|
||||
},
|
||||
"domains.http2-support": {
|
||||
"defaultMessage": "HTTP/2 Ondersteuning"
|
||||
},
|
||||
"domains.use-dns": {
|
||||
"defaultMessage": "Gebruik DNS Challenge"
|
||||
},
|
||||
"email-address": {
|
||||
"defaultMessage": "E-mailadres"
|
||||
},
|
||||
"empty-search": {
|
||||
"defaultMessage": "Geen resultaten gevonden"
|
||||
},
|
||||
"empty-subtitle": {
|
||||
"defaultMessage": "Waarom niet een maken?"
|
||||
},
|
||||
"enabled": {
|
||||
"defaultMessage": "Aangezet"
|
||||
},
|
||||
"error.access.at-least-one": {
|
||||
"defaultMessage": "Minimaal één authorizatie- of één toegangsregel is vereist"
|
||||
},
|
||||
"error.access.duplicate-usernames": {
|
||||
"defaultMessage": "Gebruikersnamen moeten uniek zijn"
|
||||
},
|
||||
"error.invalid-auth": {
|
||||
"defaultMessage": "Ongeldige email of wachtwoord"
|
||||
},
|
||||
"error.invalid-domain": {
|
||||
"defaultMessage": "Ongeldige domeinnaam: {domain}"
|
||||
},
|
||||
"error.invalid-email": {
|
||||
"defaultMessage": "Ongeldig e-mailadres"
|
||||
},
|
||||
"error.max-character-length": {
|
||||
"defaultMessage": "Maximale lengte is {max} karakter{max, plural, one {} other {s}}"
|
||||
},
|
||||
"error.max-domains": {
|
||||
"defaultMessage": "Te veel domeinnamen, max is {max}"
|
||||
},
|
||||
"error.maximum": {
|
||||
"defaultMessage": "Maximale is {max}"
|
||||
},
|
||||
"error.min-character-length": {
|
||||
"defaultMessage": "Minimale lengte is {min} karakter{min, plural, one {} other {s}}"
|
||||
},
|
||||
"error.minimum": {
|
||||
"defaultMessage": "Minimale is {min}"
|
||||
},
|
||||
"error.passwords-must-match": {
|
||||
"defaultMessage": "Wachtwoorden moeten overeenkomen"
|
||||
},
|
||||
"error.required": {
|
||||
"defaultMessage": "Dit is verplicht"
|
||||
},
|
||||
"expires.on": {
|
||||
"defaultMessage": "Verloopt: {date}"
|
||||
},
|
||||
"footer.github-fork": {
|
||||
"defaultMessage": "Maak een Fork op Github"
|
||||
},
|
||||
"host.flags.block-exploits": {
|
||||
"defaultMessage": "Blokkeer Veelvoorkomende Kwetsbaarheden"
|
||||
},
|
||||
"host.flags.cache-assets": {
|
||||
"defaultMessage": "Cache Assets"
|
||||
},
|
||||
"host.flags.preserve-path": {
|
||||
"defaultMessage": "Pad Behouden"
|
||||
},
|
||||
"host.flags.protocols": {
|
||||
"defaultMessage": "Protocollen"
|
||||
},
|
||||
"host.flags.websockets-upgrade": {
|
||||
"defaultMessage": "Websockets Ondersteuning"
|
||||
},
|
||||
"host.forward-port": {
|
||||
"defaultMessage": "Poort Doorsturen"
|
||||
},
|
||||
"host.forward-scheme": {
|
||||
"defaultMessage": "Schema"
|
||||
},
|
||||
"hosts": {
|
||||
"defaultMessage": "Hosts"
|
||||
},
|
||||
"http-only": {
|
||||
"defaultMessage": "Alleen HTTP"
|
||||
},
|
||||
"lets-encrypt": {
|
||||
"defaultMessage": "Let's Encrypt"
|
||||
},
|
||||
"lets-encrypt-via-dns": {
|
||||
"defaultMessage": "Let's Encrypt via DNS"
|
||||
},
|
||||
"lets-encrypt-via-http": {
|
||||
"defaultMessage": "Let's Encrypt via HTTP"
|
||||
},
|
||||
"loading": {
|
||||
"defaultMessage": "Laden…"
|
||||
},
|
||||
"login.title": {
|
||||
"defaultMessage": "Inloggen"
|
||||
},
|
||||
"nginx-config.label": {
|
||||
"defaultMessage": "Aangepaste Nginx Configuratie"
|
||||
},
|
||||
"nginx-config.placeholder": {
|
||||
"defaultMessage": "# Voeg jouw aangepaste Nginx configuratie hier op eigen risico toe!"
|
||||
},
|
||||
"no-permission-error": {
|
||||
"defaultMessage": "Jij hebt geen toegang om dit te bekijken."
|
||||
},
|
||||
"notfound.action": {
|
||||
"defaultMessage": "Thuis"
|
||||
},
|
||||
"notfound.content": {
|
||||
"defaultMessage": "De pagina waar je naar op zoek bent kan niet worden gevonden"
|
||||
},
|
||||
"notfound.title": {
|
||||
"defaultMessage": "Oeps… Je hebt een foutpagina gevonden"
|
||||
},
|
||||
"notification.error": {
|
||||
"defaultMessage": "Fout"
|
||||
},
|
||||
"notification.object-deleted": {
|
||||
"defaultMessage": "{object} is verwijderd"
|
||||
},
|
||||
"notification.object-disabled": {
|
||||
"defaultMessage": "{object} is uitgezet"
|
||||
},
|
||||
"notification.object-enabled": {
|
||||
"defaultMessage": "{object} is aangezet"
|
||||
},
|
||||
"notification.object-renewed": {
|
||||
"defaultMessage": "{object} is vernieuwd"
|
||||
},
|
||||
"notification.object-saved": {
|
||||
"defaultMessage": "{object} is opgeslagen"
|
||||
},
|
||||
"notification.success": {
|
||||
"defaultMessage": "Succes"
|
||||
},
|
||||
"object.actions-title": {
|
||||
"defaultMessage": "{object} #{id}"
|
||||
},
|
||||
"object.add": {
|
||||
"defaultMessage": "Voeg {object} toe"
|
||||
},
|
||||
"object.delete": {
|
||||
"defaultMessage": "Verwijder {object}"
|
||||
},
|
||||
"object.delete.content": {
|
||||
"defaultMessage": "Weet je zeker dat je {object} wilt verwijderen?"
|
||||
},
|
||||
"object.edit": {
|
||||
"defaultMessage": "Bewerk {object}"
|
||||
},
|
||||
"object.empty": {
|
||||
"defaultMessage": "Er zijn geen {objects}"
|
||||
},
|
||||
"object.event.created": {
|
||||
"defaultMessage": "{object} is aangemaakt"
|
||||
},
|
||||
"object.event.deleted": {
|
||||
"defaultMessage": "{object} is verwijderd"
|
||||
},
|
||||
"object.event.disabled": {
|
||||
"defaultMessage": "{object} is uitgezet"
|
||||
},
|
||||
"object.event.enabled": {
|
||||
"defaultMessage": "{object} is aangezet"
|
||||
},
|
||||
"object.event.renewed": {
|
||||
"defaultMessage": "{object} is vernieuwd"
|
||||
},
|
||||
"object.event.updated": {
|
||||
"defaultMessage": "{object} is bijgewerkt"
|
||||
},
|
||||
"offline": {
|
||||
"defaultMessage": "Offline"
|
||||
},
|
||||
"online": {
|
||||
"defaultMessage": "Online"
|
||||
},
|
||||
"options": {
|
||||
"defaultMessage": "Opties"
|
||||
},
|
||||
"password": {
|
||||
"defaultMessage": "Wachtwoord"
|
||||
},
|
||||
"password.generate": {
|
||||
"defaultMessage": "Willekeurig wachtwoord genereren"
|
||||
},
|
||||
"password.hide": {
|
||||
"defaultMessage": "Wachtwoord Verbergen"
|
||||
},
|
||||
"password.show": {
|
||||
"defaultMessage": "Toon Wachtwoord"
|
||||
},
|
||||
"permissions.hidden": {
|
||||
"defaultMessage": "Verborgen"
|
||||
},
|
||||
"permissions.manage": {
|
||||
"defaultMessage": "Beheer"
|
||||
},
|
||||
"permissions.view": {
|
||||
"defaultMessage": "Alleen Bekijken"
|
||||
},
|
||||
"permissions.visibility.all": {
|
||||
"defaultMessage": "Alle Items"
|
||||
},
|
||||
"permissions.visibility.title": {
|
||||
"defaultMessage": "Item Zichtbaarheid"
|
||||
},
|
||||
"permissions.visibility.user": {
|
||||
"defaultMessage": "Alleen Aangemaakte Items"
|
||||
},
|
||||
"proxy-host": {
|
||||
"defaultMessage": "Proxy Host"
|
||||
},
|
||||
"proxy-host.forward-host": {
|
||||
"defaultMessage": "Hostname / IP Doorsturen"
|
||||
},
|
||||
"proxy-hosts": {
|
||||
"defaultMessage": "Proxy Hosts"
|
||||
},
|
||||
"proxy-hosts.count": {
|
||||
"defaultMessage": "{count} {count, plural, one {Proxy Host} other {Proxy Hosts}}"
|
||||
},
|
||||
"public": {
|
||||
"defaultMessage": "Openbaar"
|
||||
},
|
||||
"redirection-host": {
|
||||
"defaultMessage": "Redirection Host"
|
||||
},
|
||||
"redirection-host.forward-domain": {
|
||||
"defaultMessage": "Doorgestuurd Domein"
|
||||
},
|
||||
"redirection-host.forward-http-code": {
|
||||
"defaultMessage": "HTTP Code"
|
||||
},
|
||||
"redirection-hosts": {
|
||||
"defaultMessage": "Redirection Hosts"
|
||||
},
|
||||
"redirection-hosts.count": {
|
||||
"defaultMessage": "{count} {count, plural, one {Redirection Host} other {Redirection Hosts}}"
|
||||
},
|
||||
"role.admin": {
|
||||
"defaultMessage": "Beheerder"
|
||||
},
|
||||
"role.standard-user": {
|
||||
"defaultMessage": "Standaard Gebruiker"
|
||||
},
|
||||
"save": {
|
||||
"defaultMessage": "Opslaan"
|
||||
},
|
||||
"setting": {
|
||||
"defaultMessage": "Instelling"
|
||||
},
|
||||
"settings": {
|
||||
"defaultMessage": "Instellingen"
|
||||
},
|
||||
"settings.default-site": {
|
||||
"defaultMessage": "Standaard Site"
|
||||
},
|
||||
"settings.default-site.404": {
|
||||
"defaultMessage": "404 Pagina"
|
||||
},
|
||||
"settings.default-site.444": {
|
||||
"defaultMessage": "Geen Antwoord (444)"
|
||||
},
|
||||
"settings.default-site.congratulations": {
|
||||
"defaultMessage": "Felicitatiepagina"
|
||||
},
|
||||
"settings.default-site.description": {
|
||||
"defaultMessage": "Wat te tonen als Nginx een onbekende Host ontvangt"
|
||||
},
|
||||
"settings.default-site.html": {
|
||||
"defaultMessage": "Aangepaste HTML"
|
||||
},
|
||||
"settings.default-site.html.placeholder": {
|
||||
"defaultMessage": "<!-- Plaats jouw aangepaste HTML hier -->"
|
||||
},
|
||||
"settings.default-site.redirect": {
|
||||
"defaultMessage": "Omleiding"
|
||||
},
|
||||
"setup.preamble": {
|
||||
"defaultMessage": "Begin met het aanmaken van je beheerder account."
|
||||
},
|
||||
"setup.title": {
|
||||
"defaultMessage": "Welkom!"
|
||||
},
|
||||
"sign-in": {
|
||||
"defaultMessage": "Inloggen"
|
||||
},
|
||||
"ssl-certificate": {
|
||||
"defaultMessage": "SSL Certificaten"
|
||||
},
|
||||
"stream": {
|
||||
"defaultMessage": "Stream"
|
||||
},
|
||||
"stream.forward-host": {
|
||||
"defaultMessage": "Doorgestuurde Host"
|
||||
},
|
||||
"stream.incoming-port": {
|
||||
"defaultMessage": "Inkomende Poort"
|
||||
},
|
||||
"streams": {
|
||||
"defaultMessage": "Streams"
|
||||
},
|
||||
"streams.count": {
|
||||
"defaultMessage": "{count} {count, plural, one {Stream} other {Streams}}"
|
||||
},
|
||||
"streams.tcp": {
|
||||
"defaultMessage": "TCP"
|
||||
},
|
||||
"streams.udp": {
|
||||
"defaultMessage": "UDP"
|
||||
},
|
||||
"test": {
|
||||
"defaultMessage": "Test"
|
||||
},
|
||||
"update-available": {
|
||||
"defaultMessage": "Update Beschikbaar: {latestVersion}"
|
||||
},
|
||||
"user": {
|
||||
"defaultMessage": "Gebruiker"
|
||||
},
|
||||
"user.change-password": {
|
||||
"defaultMessage": "Verander Wachtwoord"
|
||||
},
|
||||
"user.confirm-password": {
|
||||
"defaultMessage": "Bevestig Wachtwoord"
|
||||
},
|
||||
"user.current-password": {
|
||||
"defaultMessage": "Huidig Wachtwoord"
|
||||
},
|
||||
"user.edit-profile": {
|
||||
"defaultMessage": "Profiel Bewerken"
|
||||
},
|
||||
"user.full-name": {
|
||||
"defaultMessage": "Volledige Naam"
|
||||
},
|
||||
"user.login-as": {
|
||||
"defaultMessage": "Inloggen als {name}"
|
||||
},
|
||||
"user.logout": {
|
||||
"defaultMessage": "Uitloggen"
|
||||
},
|
||||
"user.new-password": {
|
||||
"defaultMessage": "Nieuw Wachtwoord"
|
||||
},
|
||||
"user.nickname": {
|
||||
"defaultMessage": "Bijnaam"
|
||||
},
|
||||
"user.set-password": {
|
||||
"defaultMessage": "Zet Wachtwoord"
|
||||
},
|
||||
"user.set-permissions": {
|
||||
"defaultMessage": "Zet machtigingen voor {name}"
|
||||
},
|
||||
"user.switch-dark": {
|
||||
"defaultMessage": "Verander naar donkere modus"
|
||||
},
|
||||
"user.switch-light": {
|
||||
"defaultMessage": "Verander naar lichte modus"
|
||||
},
|
||||
"username": {
|
||||
"defaultMessage": "Gebruikersnaam"
|
||||
},
|
||||
"users": {
|
||||
"defaultMessage": "Gebruikers"
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user