mirror of
https://github.com/NginxProxyManager/nginx-proxy-manager.git
synced 2025-12-05 16:06:51 +00:00
Compare commits
61 Commits
316b758455
...
89b8b747e1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
89b8b747e1 | ||
|
|
3231023513 | ||
|
|
dc89635971 | ||
|
|
cfa98361d1 | ||
|
|
c2177abe39 | ||
|
|
2c6d614597 | ||
|
|
484ce8db3c | ||
|
|
2c11c0c7e2 | ||
|
|
f1039ce2ef | ||
|
|
d49ff6e7c2 | ||
|
|
a87f24c9dc | ||
|
|
decdfec447 | ||
|
|
32ab3faf57 | ||
|
|
c7f999fa7a | ||
|
|
de7d3b0d19 | ||
|
|
2d4b7399c0 | ||
|
|
890d06c863 | ||
|
|
81f2aa17d4 | ||
|
|
fce569ca21 | ||
|
|
87ec9c4bdf | ||
|
|
2650648d68 | ||
|
|
fdc0c29f28 | ||
|
|
6cae088432 | ||
|
|
9d8c4cc30b | ||
|
|
66ebecdb43 | ||
|
|
60f3ee03c0 | ||
|
|
7536b1b1c9 | ||
|
|
5288fbd7af | ||
|
|
0ec1a09c30 | ||
|
|
0bcfe0bba6 | ||
|
|
74cbfb2c58 | ||
|
|
8ef65caa5a | ||
|
|
bc341c1dff | ||
|
|
5fc9febf1f | ||
|
|
b23ceebfd8 | ||
|
|
c281fc54a1 | ||
|
|
d0f7dc5b48 | ||
|
|
fb53df862e | ||
|
|
8d8463ae41 | ||
|
|
8774cfe5f9 | ||
|
|
4ca5cadd19 | ||
|
|
45a8d50e03 | ||
|
|
960d4bfe6f | ||
|
|
8c3c964c52 | ||
|
|
afd6134a3e | ||
|
|
9807e25d45 | ||
|
|
824c895f52 | ||
|
|
7f9b9dfea4 | ||
|
|
d848ba9f65 | ||
|
|
47db5c9aa6 | ||
|
|
1c442dcce6 | ||
|
|
dadd10f89b | ||
|
|
75c012b558 | ||
|
|
9be1381ffe | ||
|
|
f40fe56572 | ||
|
|
911476f82f | ||
|
|
e86a34f2f3 | ||
|
|
f02145c5ef | ||
|
|
66fa08fd8e | ||
|
|
d783cc3b90 | ||
|
|
17cc75fe7d |
@@ -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.4-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>
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -8,12 +8,16 @@
|
||||
|
||||
const allLocales = [
|
||||
["en", "en-US"],
|
||||
["es", "es-ES"],
|
||||
["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"],
|
||||
["pl", "pl-PL"],
|
||||
];
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -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,22 +27,24 @@ function LocalePicker() {
|
||||
<button type="button" className={cns} data-bs-toggle="dropdown">
|
||||
<Flag countryCode={getFlagCodeForLocale(locale)} />
|
||||
</button>
|
||||
<div className="dropdown-menu">
|
||||
{localeOptions.map((item) => {
|
||||
return (
|
||||
<a
|
||||
className="dropdown-item"
|
||||
href={`/locale/${item[0]}`}
|
||||
key={`locale-${item[0]}`}
|
||||
onClick={(e) => {
|
||||
e.preventDefault();
|
||||
changeTo(item[0]);
|
||||
}}
|
||||
>
|
||||
<Flag countryCode={getFlagCodeForLocale(item[0])} /> <T id={`locale-${item[1]}`} />
|
||||
</a>
|
||||
);
|
||||
<div
|
||||
className={cn("dropdown-menu", {
|
||||
"dropdown-menu-end": menuAlign === "end",
|
||||
})}
|
||||
>
|
||||
{localeOptions.map((item: any) => (
|
||||
<a
|
||||
className="dropdown-item"
|
||||
href={`/locale/${item[0]}`}
|
||||
key={`locale-${item[0]}`}
|
||||
onClick={(e) => {
|
||||
e.preventDefault();
|
||||
changeTo(item[0]);
|
||||
}}
|
||||
>
|
||||
<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>;
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -12,10 +12,12 @@ interface TableLayoutProps<TFields> {
|
||||
function TableLayout<TFields>(props: TableLayoutProps<TFields>) {
|
||||
const hasRows = props.tableInstance.getRowModel().rows.length > 0;
|
||||
return (
|
||||
<table className="table table-vcenter table-selectable mb-0">
|
||||
{hasRows ? <TableHeader tableInstance={props.tableInstance} /> : null}
|
||||
<TableBody {...props} />
|
||||
</table>
|
||||
<div className="table-responsive">
|
||||
<table className="table table-vcenter table-selectable mb-0">
|
||||
{hasRows ? <TableHeader tableInstance={props.tableInstance} /> : null}
|
||||
<TableBody {...props} />
|
||||
</table>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -2,75 +2,57 @@ 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 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";
|
||||
import langPl from "./lang/pl.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"],
|
||||
["de", "de-DE"],
|
||||
["es", "es-ES"],
|
||||
["ja", "ja-JP"],
|
||||
["ru", "ru-RU"],
|
||||
["sk", "sk-SK"],
|
||||
["zh", "zh-CN"],
|
||||
["pl", "pl-PL"],
|
||||
["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 "de":
|
||||
return Object.assign({}, langList, langEn, langDe);
|
||||
case "es":
|
||||
return Object.assign({}, langList, langEn, langEs);
|
||||
case "ja":
|
||||
return Object.assign({}, langList, langEn, langJa);
|
||||
case "ru":
|
||||
return Object.assign({}, langList, langEn, langRu);
|
||||
case "sk":
|
||||
return Object.assign({}, langList, langEn, langSk);
|
||||
case "zh":
|
||||
return Object.assign({}, langList, langEn, langZh);
|
||||
case "pl":
|
||||
return Object.assign({}, langList, langEn, langPl);
|
||||
default:
|
||||
return Object.assign({}, langList, langEn);
|
||||
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";
|
||||
case "ja-JP":
|
||||
case "ja":
|
||||
return "JP";
|
||||
case "ru-RU":
|
||||
case "ru":
|
||||
return "RU";
|
||||
case "sk-SK":
|
||||
case "sk":
|
||||
return "SK";
|
||||
case "zh":
|
||||
case "zh-CN":
|
||||
return "CN";
|
||||
case "pl":
|
||||
case "pl-PL":
|
||||
return "PL";
|
||||
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) => {
|
||||
@@ -131,4 +113,6 @@ const T = ({
|
||||
);
|
||||
};
|
||||
|
||||
console.log("L:", localeOptions);
|
||||
|
||||
export { localeOptions, getFlagCodeForLocale, getLocale, createIntl, changeLocale, intl, T };
|
||||
|
||||
@@ -1,21 +1,30 @@
|
||||
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, ja, sk, zh, pl, ru };
|
||||
const items: any = { en, de, ja, sk, zh, pl, ru, it, vi, nl };
|
||||
|
||||
const fallbackLang = "en";
|
||||
|
||||
export const getHelpFile = (lang: string, section: string): string => {
|
||||
if (typeof items[lang] !== "undefined" && typeof items[lang][section] !== "undefined") {
|
||||
if (
|
||||
typeof items[lang] !== "undefined" &&
|
||||
typeof items[lang][section] !== "undefined"
|
||||
) {
|
||||
return items[lang][section].default;
|
||||
}
|
||||
// Fallback to English
|
||||
if (typeof items[fallbackLang] !== "undefined" && typeof items[fallbackLang][section] !== "undefined") {
|
||||
if (
|
||||
typeof items[fallbackLang] !== "undefined" &&
|
||||
typeof items[fallbackLang][section] !== "undefined"
|
||||
) {
|
||||
return items[fallbackLang][section].default;
|
||||
}
|
||||
throw new Error(`Cannot load help doc for ${lang}-${section}`);
|
||||
|
||||
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";
|
||||
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";
|
||||
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";
|
||||
@@ -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."
|
||||
},
|
||||
@@ -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"
|
||||
},
|
||||
|
||||
@@ -23,6 +23,9 @@
|
||||
"access-list.public.subtitle": {
|
||||
"defaultMessage": "No se requiere autenticación básica"
|
||||
},
|
||||
"access-list.rule-source.placeholder": {
|
||||
"defaultMessage": "192.168.1.100 o 192.168.1.0/24 o 2001:0db8::/32"
|
||||
},
|
||||
"access-list.satisfy-any": {
|
||||
"defaultMessage": "Satisfacer Cualquiera"
|
||||
},
|
||||
@@ -38,12 +41,18 @@
|
||||
"action.add-location": {
|
||||
"defaultMessage": "Añadir Ubicación"
|
||||
},
|
||||
"action.allow": {
|
||||
"defaultMessage": "Permitir"
|
||||
},
|
||||
"action.close": {
|
||||
"defaultMessage": "Cerrar"
|
||||
},
|
||||
"action.delete": {
|
||||
"defaultMessage": "Eliminar"
|
||||
},
|
||||
"action.deny": {
|
||||
"defaultMessage": "Denegar"
|
||||
},
|
||||
"action.disable": {
|
||||
"defaultMessage": "Deshabilitar"
|
||||
},
|
||||
@@ -68,6 +77,9 @@
|
||||
"auditlogs": {
|
||||
"defaultMessage": "Registros de Auditoría"
|
||||
},
|
||||
"auto": {
|
||||
"defaultMessage": "Auto"
|
||||
},
|
||||
"cancel": {
|
||||
"defaultMessage": "Cancelar"
|
||||
},
|
||||
@@ -128,6 +140,9 @@
|
||||
"certificates.dns.provider": {
|
||||
"defaultMessage": "Proveedor DNS"
|
||||
},
|
||||
"certificates.dns.provider.placeholder": {
|
||||
"defaultMessage": "Selecciona un Proveedor..."
|
||||
},
|
||||
"certificates.dns.warning": {
|
||||
"defaultMessage": "Esta sección requiere algunos conocimientos sobre Certbot y sus plugins DNS. Consulta la documentación de los plugins respectivos."
|
||||
},
|
||||
@@ -348,7 +363,7 @@
|
||||
"defaultMessage": "Soporte de Websockets"
|
||||
},
|
||||
"host.forward-port": {
|
||||
"defaultMessage": "Puerto de Reenvío"
|
||||
"defaultMessage": "Puerto"
|
||||
},
|
||||
"host.forward-scheme": {
|
||||
"defaultMessage": "Esquema"
|
||||
@@ -518,6 +533,24 @@
|
||||
"redirection-hosts.count": {
|
||||
"defaultMessage": "{count} {count, plural, one {Host de Redirección} other {Hosts de Redirección}}"
|
||||
},
|
||||
"redirection-hosts.http-code.300": {
|
||||
"defaultMessage": "300 Multiples Opciones"
|
||||
},
|
||||
"redirection-hosts.http-code.301": {
|
||||
"defaultMessage": "301 Movido permanentemente"
|
||||
},
|
||||
"redirection-hosts.http-code.302": {
|
||||
"defaultMessage": "302 Movido temporalmente"
|
||||
},
|
||||
"redirection-hosts.http-code.303": {
|
||||
"defaultMessage": "303 Ver otro"
|
||||
},
|
||||
"redirection-hosts.http-code.307": {
|
||||
"defaultMessage": "307 Redirección temporal"
|
||||
},
|
||||
"redirection-hosts.http-code.308": {
|
||||
"defaultMessage": "308 Redirección permanente"
|
||||
},
|
||||
"role.admin": {
|
||||
"defaultMessage": "Administrador"
|
||||
},
|
||||
@@ -575,6 +608,9 @@
|
||||
"stream.forward-host": {
|
||||
"defaultMessage": "Host de Reenvío"
|
||||
},
|
||||
"stream.forward-host.placeholder": {
|
||||
"defaultMessage": "example.com o 10.0.0.1 o 2001:db8:3333:4444:5555:6666:7777:8888"
|
||||
},
|
||||
"stream.incoming-port": {
|
||||
"defaultMessage": "Puerto de Entrada"
|
||||
},
|
||||
|
||||
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"
|
||||
}
|
||||
}
|
||||
@@ -15,12 +15,21 @@
|
||||
"defaultMessage": "Русский"
|
||||
},
|
||||
"locale-sk-SK": {
|
||||
"defaultMessage": "Slovak"
|
||||
"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"
|
||||
}
|
||||
}
|
||||
@@ -204,7 +204,7 @@
|
||||
"defaultMessage": "Dostawca"
|
||||
},
|
||||
"column.roles": {
|
||||
"defaultMessage": "Role"
|
||||
"defaultMessage": "Rola"
|
||||
},
|
||||
"column.rules": {
|
||||
"defaultMessage": "Reguły"
|
||||
@@ -417,7 +417,7 @@
|
||||
"defaultMessage": "{object} #{id}"
|
||||
},
|
||||
"object.add": {
|
||||
"defaultMessage": "Dodaj {object}"
|
||||
"defaultMessage": "Nowy {object}"
|
||||
},
|
||||
"object.delete": {
|
||||
"defaultMessage": "Usuń {object}"
|
||||
|
||||
647
frontend/src/locale/src/vi.json
Normal file
647
frontend/src/locale/src/vi.json
Normal file
@@ -0,0 +1,647 @@
|
||||
{
|
||||
"access-list": {
|
||||
"defaultMessage": "Danh sách truy cập"
|
||||
},
|
||||
"access-list.access-count": {
|
||||
"defaultMessage": "{count} quy tắc"
|
||||
},
|
||||
"access-list.auth-count": {
|
||||
"defaultMessage": "{count} người dùng"
|
||||
},
|
||||
"access-list.help-rules-last": {
|
||||
"defaultMessage": "Quy tắc từ chối tất cả này sẽ được thêm vào cuối khi tồn tại ít nhất 1 quy tắc"
|
||||
},
|
||||
"access-list.help.rules-order": {
|
||||
"defaultMessage": "Các quy tắc cho phép và từ chối sẽ được thực thi theo thứ tự được xác định."
|
||||
},
|
||||
"access-list.pass-auth": {
|
||||
"defaultMessage": "Chuyển xác thực lên thượng nguồn"
|
||||
},
|
||||
"access-list.public": {
|
||||
"defaultMessage": "Có thể truy cập công khai"
|
||||
},
|
||||
"access-list.public.subtitle": {
|
||||
"defaultMessage": "Không cần xác thực cơ bản"
|
||||
},
|
||||
"access-list.satisfy-any": {
|
||||
"defaultMessage": "Thỏa mãn điều kiện bất kỳ"
|
||||
},
|
||||
"access-list.subtitle": {
|
||||
"defaultMessage": "{users} người dùng, {rules} quy tắc - Tạo lúc: {date}"
|
||||
},
|
||||
"access-lists": {
|
||||
"defaultMessage": "Danh sách truy cập"
|
||||
},
|
||||
"action.add": {
|
||||
"defaultMessage": "Thêm"
|
||||
},
|
||||
"action.add-location": {
|
||||
"defaultMessage": "Thêm Vị trí"
|
||||
},
|
||||
"action.close": {
|
||||
"defaultMessage": "Đóng"
|
||||
},
|
||||
"action.delete": {
|
||||
"defaultMessage": "Xóa"
|
||||
},
|
||||
"action.disable": {
|
||||
"defaultMessage": "Tắt"
|
||||
},
|
||||
"action.download": {
|
||||
"defaultMessage": "Tải xuống"
|
||||
},
|
||||
"action.edit": {
|
||||
"defaultMessage": "Chỉnh sửa"
|
||||
},
|
||||
"action.enable": {
|
||||
"defaultMessage": "Bật"
|
||||
},
|
||||
"action.permissions": {
|
||||
"defaultMessage": "Quyền"
|
||||
},
|
||||
"action.renew": {
|
||||
"defaultMessage": "Gia hạn"
|
||||
},
|
||||
"action.view-details": {
|
||||
"defaultMessage": "Xem Chi tiết"
|
||||
},
|
||||
"auditlogs": {
|
||||
"defaultMessage": "Nhật ký kiểm tra"
|
||||
},
|
||||
"cancel": {
|
||||
"defaultMessage": "Hủy"
|
||||
},
|
||||
"certificate": {
|
||||
"defaultMessage": "Chứng chỉ"
|
||||
},
|
||||
"certificate.custom-certificate": {
|
||||
"defaultMessage": "Certificate (crt)"
|
||||
},
|
||||
"certificate.custom-certificate-key": {
|
||||
"defaultMessage": "Certificate Key"
|
||||
},
|
||||
"certificate.custom-intermediate": {
|
||||
"defaultMessage": "Intermediate Certificate"
|
||||
},
|
||||
"certificate.in-use": {
|
||||
"defaultMessage": "Đang sử dụng"
|
||||
},
|
||||
"certificate.none.subtitle": {
|
||||
"defaultMessage": "Không có chứng chỉ nào được chỉ định"
|
||||
},
|
||||
"certificate.none.subtitle.for-http": {
|
||||
"defaultMessage": "Máy chủ này sẽ không sử dụng HTTPS"
|
||||
},
|
||||
"certificate.none.title": {
|
||||
"defaultMessage": "Không có"
|
||||
},
|
||||
"certificate.not-in-use": {
|
||||
"defaultMessage": "Không được dùng"
|
||||
},
|
||||
"certificate.renew": {
|
||||
"defaultMessage": "Gia hạn Chứng chỉ"
|
||||
},
|
||||
"certificates": {
|
||||
"defaultMessage": "Danh sách chứng chỉ"
|
||||
},
|
||||
"certificates.custom": {
|
||||
"defaultMessage": "Chứng chỉ tùy chỉnh"
|
||||
},
|
||||
"certificates.custom.warning": {
|
||||
"defaultMessage": "Các tệp chính được bảo vệ bằng cụm mật khẩu không được hỗ trợ."
|
||||
},
|
||||
"certificates.dns.credentials": {
|
||||
"defaultMessage": "Nội dung tệp thông tin xác thực"
|
||||
},
|
||||
"certificates.dns.credentials-note": {
|
||||
"defaultMessage": "Plugin này yêu cầu tệp cấu hình chứa mã thông báo API hoặc thông tin xác thực khác cho nhà cung cấp của bạn"
|
||||
},
|
||||
"certificates.dns.credentials-warning": {
|
||||
"defaultMessage": "Dữ liệu này sẽ được lưu trữ dưới dạng bản rõ trong cơ sở dữ liệu và trong một tệp!"
|
||||
},
|
||||
"certificates.dns.propagation-seconds": {
|
||||
"defaultMessage": "Thời gian lan truyền (Giây)"
|
||||
},
|
||||
"certificates.dns.propagation-seconds-note": {
|
||||
"defaultMessage": "Để trống để sử dụng giá trị mặc định của plugin. Số giây chờ truyền DNS."
|
||||
},
|
||||
"certificates.dns.provider": {
|
||||
"defaultMessage": "Nhà cung cấp DNS"
|
||||
},
|
||||
"certificates.dns.warning": {
|
||||
"defaultMessage": "Phần này yêu cầu một số kiến thức về Certbot và các plugin DNS của nó. Vui lòng tham khảo tài liệu plugin tương ứng."
|
||||
},
|
||||
"certificates.http.reachability-404": {
|
||||
"defaultMessage": "Có một máy chủ được tìm thấy ở miền này nhưng có vẻ như nó không phải là NPM. Vui lòng đảm bảo tên miền của bạn trỏ đến IP nơi phiên bản NPM của bạn đang chạy."
|
||||
},
|
||||
"certificates.http.reachability-failed-to-check": {
|
||||
"defaultMessage": "Không thể kiểm tra khả năng truy cập do lỗi giao tiếp với site24x7.com."
|
||||
},
|
||||
"certificates.http.reachability-not-resolved": {
|
||||
"defaultMessage": "Không có máy chủ có sẵn tại tên miền này. Vui lòng đảm bảo rằng miền của bạn tồn tại và trỏ đến IP nơi phiên bản NPM của bạn đang chạy và nếu cần, cổng 80 sẽ được chuyển tiếp trong bộ định tuyến của bạn."
|
||||
},
|
||||
"certificates.http.reachability-ok": {
|
||||
"defaultMessage": "Máy chủ của bạn có thể truy cập được và có thể tạo chứng chỉ."
|
||||
},
|
||||
"certificates.http.reachability-other": {
|
||||
"defaultMessage": "Có một máy chủ được tìm thấy ở miền này nhưng nó trả về mã trạng thái không mong muốn {code}. Đây có phải là máy chủ NPM không? Vui lòng đảm bảo tên miền của bạn trỏ đến IP nơi phiên bản NPM của bạn đang chạy."
|
||||
},
|
||||
"certificates.http.reachability-wrong-data": {
|
||||
"defaultMessage": "Có một máy chủ được tìm thấy ở miền này nhưng nó trả về một dữ liệu không mong muốn. Đây có phải là máy chủ NPM không? Vui lòng đảm bảo tên miền của bạn trỏ đến IP nơi phiên bản NPM của bạn đang chạy."
|
||||
},
|
||||
"certificates.http.test-results": {
|
||||
"defaultMessage": "Kết quả kiểm tra"
|
||||
},
|
||||
"certificates.http.warning": {
|
||||
"defaultMessage": "Các miền này phải được cấu hình sẵn để trỏ đến cài đặt này."
|
||||
},
|
||||
"certificates.request.subtitle": {
|
||||
"defaultMessage": "bằng Let's Encrypt"
|
||||
},
|
||||
"certificates.request.title": {
|
||||
"defaultMessage": "Yêu cầu chứng chỉ mới"
|
||||
},
|
||||
"column.access": {
|
||||
"defaultMessage": "Truy cập"
|
||||
},
|
||||
"column.authorization": {
|
||||
"defaultMessage": "Ủy quyền"
|
||||
},
|
||||
"column.authorizations": {
|
||||
"defaultMessage": "Danh sách ủy quyền"
|
||||
},
|
||||
"column.custom-locations": {
|
||||
"defaultMessage": "Quy tắc đường dẫn tùy chỉnh (Vị trí)"
|
||||
},
|
||||
"column.destination": {
|
||||
"defaultMessage": "Mục tiêu"
|
||||
},
|
||||
"column.details": {
|
||||
"defaultMessage": "Chi tiết"
|
||||
},
|
||||
"column.email": {
|
||||
"defaultMessage": "Email"
|
||||
},
|
||||
"column.event": {
|
||||
"defaultMessage": "Sự kiện"
|
||||
},
|
||||
"column.expires": {
|
||||
"defaultMessage": "Hết hạn"
|
||||
},
|
||||
"column.http-code": {
|
||||
"defaultMessage": "HTTP Code"
|
||||
},
|
||||
"column.incoming-port": {
|
||||
"defaultMessage": "Cổng đến"
|
||||
},
|
||||
"column.name": {
|
||||
"defaultMessage": "Tên"
|
||||
},
|
||||
"column.protocol": {
|
||||
"defaultMessage": "Giao thức"
|
||||
},
|
||||
"column.provider": {
|
||||
"defaultMessage": "Nhà cung cấp"
|
||||
},
|
||||
"column.roles": {
|
||||
"defaultMessage": "Vai trò"
|
||||
},
|
||||
"column.rules": {
|
||||
"defaultMessage": "Quy tắc"
|
||||
},
|
||||
"column.satisfy": {
|
||||
"defaultMessage": "Thỏa mãn"
|
||||
},
|
||||
"column.satisfy-all": {
|
||||
"defaultMessage": "Tất cả"
|
||||
},
|
||||
"column.satisfy-any": {
|
||||
"defaultMessage": "Bất kì"
|
||||
},
|
||||
"column.scheme": {
|
||||
"defaultMessage": "Scheme"
|
||||
},
|
||||
"column.source": {
|
||||
"defaultMessage": "Nguồn"
|
||||
},
|
||||
"column.ssl": {
|
||||
"defaultMessage": "SSL"
|
||||
},
|
||||
"column.status": {
|
||||
"defaultMessage": "Trạng thái"
|
||||
},
|
||||
"created-on": {
|
||||
"defaultMessage": "Đã tạo: {date}"
|
||||
},
|
||||
"dashboard": {
|
||||
"defaultMessage": "Bảng điều khiển"
|
||||
},
|
||||
"dead-host": {
|
||||
"defaultMessage": "Máy chủ 404"
|
||||
},
|
||||
"dead-hosts": {
|
||||
"defaultMessage": "Máy chủ 404"
|
||||
},
|
||||
"dead-hosts.count": {
|
||||
"defaultMessage": "Số trang lỗi {count}"
|
||||
},
|
||||
"disabled": {
|
||||
"defaultMessage": "Đã tắt"
|
||||
},
|
||||
"domain-names": {
|
||||
"defaultMessage": "Danh sách tên miền"
|
||||
},
|
||||
"domain-names.max": {
|
||||
"defaultMessage": "Tối đa {count} tên miền"
|
||||
},
|
||||
"domain-names.placeholder": {
|
||||
"defaultMessage": "Nhập tên miền vào đây..."
|
||||
},
|
||||
"domain-names.wildcards-not-permitted": {
|
||||
"defaultMessage": "Ký tự đại diện không được phép cho loại này"
|
||||
},
|
||||
"domain-names.wildcards-not-supported": {
|
||||
"defaultMessage": "Ký tự đại diện không được hỗ trợ cho CA này"
|
||||
},
|
||||
"domains.force-ssl": {
|
||||
"defaultMessage": "Bắt buộc SSL"
|
||||
},
|
||||
"domains.hsts-enabled": {
|
||||
"defaultMessage": "Bật HSTS"
|
||||
},
|
||||
"domains.hsts-subdomains": {
|
||||
"defaultMessage": "Tên miền phụ HSTS"
|
||||
},
|
||||
"domains.http2-support": {
|
||||
"defaultMessage": "Hỗ trợ HTTP/2"
|
||||
},
|
||||
"domains.use-dns": {
|
||||
"defaultMessage": "Dùng thử thách DNS"
|
||||
},
|
||||
"email-address": {
|
||||
"defaultMessage": "Địa chỉ email"
|
||||
},
|
||||
"empty-search": {
|
||||
"defaultMessage": "Không có kết quả nào"
|
||||
},
|
||||
"empty-subtitle": {
|
||||
"defaultMessage": "Tại sao bạn không tạo một cái luôn?"
|
||||
},
|
||||
"enabled": {
|
||||
"defaultMessage": "Đã bật"
|
||||
},
|
||||
"error.access.at-least-one": {
|
||||
"defaultMessage": "Yêu cầu ít nhất một quy tắc ủy quyền hoặc truy cập"
|
||||
},
|
||||
"error.access.duplicate-usernames": {
|
||||
"defaultMessage": "Tên người dùng được ủy quyền phải là duy nhất"
|
||||
},
|
||||
"error.invalid-auth": {
|
||||
"defaultMessage": "Email hoặc Mật khẩu không hợp lệ"
|
||||
},
|
||||
"error.invalid-domain": {
|
||||
"defaultMessage": "Tên miền không hợp lệ: {domain}"
|
||||
},
|
||||
"error.invalid-email": {
|
||||
"defaultMessage": "Địa chỉ email không hợp lệ"
|
||||
},
|
||||
"error.max-character-length": {
|
||||
"defaultMessage": "Độ dài tối đa là {max} ký tự"
|
||||
},
|
||||
"error.max-domains": {
|
||||
"defaultMessage": "Quá nhiều tên miền, tối đa là {max}"
|
||||
},
|
||||
"error.maximum": {
|
||||
"defaultMessage": "Tối đa là {max}"
|
||||
},
|
||||
"error.min-character-length": {
|
||||
"defaultMessage": "Độ dài tối thiểu là {min} ký tự"
|
||||
},
|
||||
"error.minimum": {
|
||||
"defaultMessage": "Tối thiểu là {min}"
|
||||
},
|
||||
"error.passwords-must-match": {
|
||||
"defaultMessage": "Mật khẩu phải khớp"
|
||||
},
|
||||
"error.required": {
|
||||
"defaultMessage": "Điều này là bắt buộc"
|
||||
},
|
||||
"expires.on": {
|
||||
"defaultMessage": "Hết hạn: {date}"
|
||||
},
|
||||
"footer.github-fork": {
|
||||
"defaultMessage": "Fork dự án này trên Github"
|
||||
},
|
||||
"host.flags.block-exploits": {
|
||||
"defaultMessage": "Chặn các hoạt động khai thác phổ biến"
|
||||
},
|
||||
"host.flags.cache-assets": {
|
||||
"defaultMessage": "Cache tài nguyên"
|
||||
},
|
||||
"host.flags.preserve-path": {
|
||||
"defaultMessage": "Bảo toàn đường dẫn"
|
||||
},
|
||||
"host.flags.protocols": {
|
||||
"defaultMessage": "Giao thức"
|
||||
},
|
||||
"host.flags.websockets-upgrade": {
|
||||
"defaultMessage": "Hỗ trợ Websockets"
|
||||
},
|
||||
"host.forward-port": {
|
||||
"defaultMessage": "Chuyển tiếp cổng"
|
||||
},
|
||||
"host.forward-scheme": {
|
||||
"defaultMessage": "Scheme"
|
||||
},
|
||||
"hosts": {
|
||||
"defaultMessage": "Máy chủ"
|
||||
},
|
||||
"http-only": {
|
||||
"defaultMessage": "HTTP Only"
|
||||
},
|
||||
"lets-encrypt": {
|
||||
"defaultMessage": "Let's Encrypt"
|
||||
},
|
||||
"lets-encrypt-via-dns": {
|
||||
"defaultMessage": "Let's Encrypt qua DNS"
|
||||
},
|
||||
"lets-encrypt-via-http": {
|
||||
"defaultMessage": "Let's Encrypt qua HTTP"
|
||||
},
|
||||
"loading": {
|
||||
"defaultMessage": "Đang tải..."
|
||||
},
|
||||
"login.title": {
|
||||
"defaultMessage": "Đăng nhập vào tài khoản của bạn"
|
||||
},
|
||||
"nginx-config.label": {
|
||||
"defaultMessage": "Cấu hình Nginx tùy chỉnh"
|
||||
},
|
||||
"nginx-config.placeholder": {
|
||||
"defaultMessage": "# Nhập cấu hình Nginx tùy chỉnh của bạn vào đây và bạn phải tự chịu rủi ro!"
|
||||
},
|
||||
"no-permission-error": {
|
||||
"defaultMessage": "Bạn không có quyền truy cập trang này."
|
||||
},
|
||||
"notfound.action": {
|
||||
"defaultMessage": "Về trang chủ"
|
||||
},
|
||||
"notfound.content": {
|
||||
"defaultMessage": "Chúng tôi xin lỗi nhưng trang bạn đang tìm kiếm không được tìm thấy"
|
||||
},
|
||||
"notfound.title": {
|
||||
"defaultMessage": "Rất tiếc… Bạn vừa tìm thấy một trang lỗi"
|
||||
},
|
||||
"notification.error": {
|
||||
"defaultMessage": "Lỗi"
|
||||
},
|
||||
"notification.object-deleted": {
|
||||
"defaultMessage": "{object} đã được xóa"
|
||||
},
|
||||
"notification.object-disabled": {
|
||||
"defaultMessage": "{object} đã được tắt"
|
||||
},
|
||||
"notification.object-enabled": {
|
||||
"defaultMessage": "{object} đã được bật"
|
||||
},
|
||||
"notification.object-renewed": {
|
||||
"defaultMessage": "{object} đã được làm mới"
|
||||
},
|
||||
"notification.object-saved": {
|
||||
"defaultMessage": "{object} đã được lưu"
|
||||
},
|
||||
"notification.success": {
|
||||
"defaultMessage": "Thành công"
|
||||
},
|
||||
"object.actions-title": {
|
||||
"defaultMessage": "{object} #{id}"
|
||||
},
|
||||
"object.add": {
|
||||
"defaultMessage": "Thêm {object}"
|
||||
},
|
||||
"object.delete": {
|
||||
"defaultMessage": "Xóa {object}"
|
||||
},
|
||||
"object.delete.content": {
|
||||
"defaultMessage": "Bạn có chắc muốn xóa {object} không?"
|
||||
},
|
||||
"object.edit": {
|
||||
"defaultMessage": "Chỉnh sửa {object}"
|
||||
},
|
||||
"object.empty": {
|
||||
"defaultMessage": "Không có {objects}"
|
||||
},
|
||||
"object.event.created": {
|
||||
"defaultMessage": "Đã tạo {object}"
|
||||
},
|
||||
"object.event.deleted": {
|
||||
"defaultMessage": "Đã xóa {object}"
|
||||
},
|
||||
"object.event.disabled": {
|
||||
"defaultMessage": "Đã tắt {object}"
|
||||
},
|
||||
"object.event.enabled": {
|
||||
"defaultMessage": "Đã bật {object}"
|
||||
},
|
||||
"object.event.renewed": {
|
||||
"defaultMessage": "Đã gia hạn {object}"
|
||||
},
|
||||
"object.event.updated": {
|
||||
"defaultMessage": "Đã cập nhật {object}"
|
||||
},
|
||||
"offline": {
|
||||
"defaultMessage": "Ngoại tuyến"
|
||||
},
|
||||
"online": {
|
||||
"defaultMessage": "Trực tuyến"
|
||||
},
|
||||
"options": {
|
||||
"defaultMessage": "Tùy chọn"
|
||||
},
|
||||
"password": {
|
||||
"defaultMessage": "Mật khẩu"
|
||||
},
|
||||
"password.generate": {
|
||||
"defaultMessage": "Tạo mật khẩu ngẫu nhiên"
|
||||
},
|
||||
"password.hide": {
|
||||
"defaultMessage": "Ẩn Mật khẩu"
|
||||
},
|
||||
"password.show": {
|
||||
"defaultMessage": "Hiện Mật khẩu"
|
||||
},
|
||||
"permissions.hidden": {
|
||||
"defaultMessage": "Ẩn"
|
||||
},
|
||||
"permissions.manage": {
|
||||
"defaultMessage": "Quản lý"
|
||||
},
|
||||
"permissions.view": {
|
||||
"defaultMessage": "Chỉ xem"
|
||||
},
|
||||
"permissions.visibility.all": {
|
||||
"defaultMessage": "Tất cả các mục"
|
||||
},
|
||||
"permissions.visibility.title": {
|
||||
"defaultMessage": "Khả năng hiển thị mục"
|
||||
},
|
||||
"permissions.visibility.user": {
|
||||
"defaultMessage": "Chỉ các mục đã tạo"
|
||||
},
|
||||
"proxy-host": {
|
||||
"defaultMessage": "Máy chủ proxy"
|
||||
},
|
||||
"proxy-host.forward-host": {
|
||||
"defaultMessage": "Chuyển tiếp Hostname / IP"
|
||||
},
|
||||
"proxy-hosts": {
|
||||
"defaultMessage": "Máy chủ proxy"
|
||||
},
|
||||
"proxy-hosts.count": {
|
||||
"defaultMessage": "{count} máy chủ proxy"
|
||||
},
|
||||
"public": {
|
||||
"defaultMessage": "Công khai"
|
||||
},
|
||||
"redirection-host": {
|
||||
"defaultMessage": "Redirection Host"
|
||||
},
|
||||
"redirection-host.forward-domain": {
|
||||
"defaultMessage": "Chuyển tiếp Tên miền"
|
||||
},
|
||||
"redirection-host.forward-http-code": {
|
||||
"defaultMessage": "HTTP Code"
|
||||
},
|
||||
"redirection-hosts": {
|
||||
"defaultMessage": "Redirection Hosts"
|
||||
},
|
||||
"redirection-hosts.count": {
|
||||
"defaultMessage": "{count} máy chủ chuyển hướng"
|
||||
},
|
||||
"role.admin": {
|
||||
"defaultMessage": "Quản trị viên"
|
||||
},
|
||||
"role.standard-user": {
|
||||
"defaultMessage": "Người dùng bình thường"
|
||||
},
|
||||
"save": {
|
||||
"defaultMessage": "Lưu"
|
||||
},
|
||||
"setting": {
|
||||
"defaultMessage": "Cài đặt"
|
||||
},
|
||||
"settings": {
|
||||
"defaultMessage": "Cài đặt"
|
||||
},
|
||||
"settings.default-site": {
|
||||
"defaultMessage": "Trang web mặc định"
|
||||
},
|
||||
"settings.default-site.404": {
|
||||
"defaultMessage": "Trang 404"
|
||||
},
|
||||
"settings.default-site.444": {
|
||||
"defaultMessage": "Không có phản hồi (444)"
|
||||
},
|
||||
"settings.default-site.congratulations": {
|
||||
"defaultMessage": "Trang chào mừng"
|
||||
},
|
||||
"settings.default-site.description": {
|
||||
"defaultMessage": "Hiển thị gì khi Nginx gặp phải Máy chủ không xác định"
|
||||
},
|
||||
"settings.default-site.html": {
|
||||
"defaultMessage": "HTML tùy chỉnh"
|
||||
},
|
||||
"settings.default-site.html.placeholder": {
|
||||
"defaultMessage": "<!-- Nhập nội dung HTML tùy chỉnh tại đây -->"
|
||||
},
|
||||
"settings.default-site.redirect": {
|
||||
"defaultMessage": "Chuyển hướng"
|
||||
},
|
||||
"setup.preamble": {
|
||||
"defaultMessage": "Bắt đầu bằng cách tạo tài khoản quản trị viên."
|
||||
},
|
||||
"setup.title": {
|
||||
"defaultMessage": "Chào mừng!"
|
||||
},
|
||||
"sign-in": {
|
||||
"defaultMessage": "Đăng nhập"
|
||||
},
|
||||
"ssl-certificate": {
|
||||
"defaultMessage": "Chứng chỉ SSL"
|
||||
},
|
||||
"stream": {
|
||||
"defaultMessage": "Stream"
|
||||
},
|
||||
"stream.forward-host": {
|
||||
"defaultMessage": "Chuyển tiếp Host"
|
||||
},
|
||||
"stream.incoming-port": {
|
||||
"defaultMessage": "Cổng vào"
|
||||
},
|
||||
"streams": {
|
||||
"defaultMessage": "Danh sách các Stream"
|
||||
},
|
||||
"streams.count": {
|
||||
"defaultMessage": "Số Stream {count}"
|
||||
},
|
||||
"streams.tcp": {
|
||||
"defaultMessage": "TCP"
|
||||
},
|
||||
"streams.udp": {
|
||||
"defaultMessage": "UDP"
|
||||
},
|
||||
"test": {
|
||||
"defaultMessage": "Kiểm tra"
|
||||
},
|
||||
"update-available": {
|
||||
"defaultMessage": "Cập nhật khả dụng: {latestVersion}"
|
||||
},
|
||||
"user": {
|
||||
"defaultMessage": "Người dùng"
|
||||
},
|
||||
"user.change-password": {
|
||||
"defaultMessage": "Đổi Mật khẩu"
|
||||
},
|
||||
"user.confirm-password": {
|
||||
"defaultMessage": "Xác nhận Mật khẩu"
|
||||
},
|
||||
"user.current-password": {
|
||||
"defaultMessage": "Mật khẩu hiện tại"
|
||||
},
|
||||
"user.edit-profile": {
|
||||
"defaultMessage": "Chỉnh sửa hồ sơ"
|
||||
},
|
||||
"user.full-name": {
|
||||
"defaultMessage": "Tên"
|
||||
},
|
||||
"user.login-as": {
|
||||
"defaultMessage": "Đăng nhập bằng {name}"
|
||||
},
|
||||
"user.logout": {
|
||||
"defaultMessage": "Đăng xuất"
|
||||
},
|
||||
"user.new-password": {
|
||||
"defaultMessage": "Mật khẩu mới"
|
||||
},
|
||||
"user.nickname": {
|
||||
"defaultMessage": "Tên hiển thị"
|
||||
},
|
||||
"user.set-password": {
|
||||
"defaultMessage": "Đặt Mật khẩu"
|
||||
},
|
||||
"user.set-permissions": {
|
||||
"defaultMessage": "Đặt quyền cho {name}"
|
||||
},
|
||||
"user.switch-dark": {
|
||||
"defaultMessage": "Chuyển sang chế độ tối"
|
||||
},
|
||||
"user.switch-light": {
|
||||
"defaultMessage": "Chuyển sang chế độ sáng"
|
||||
},
|
||||
"username": {
|
||||
"defaultMessage": "Tên người dùng"
|
||||
},
|
||||
"users": {
|
||||
"defaultMessage": "Danh sách người dùng"
|
||||
}
|
||||
}
|
||||
@@ -330,7 +330,7 @@
|
||||
"defaultMessage": "过期时间: {date}"
|
||||
},
|
||||
"footer.github-fork": {
|
||||
"defaultMessage": "在 Github 上复刻 (For) 本项目"
|
||||
"defaultMessage": "在 Github 上复刻 (Fork) 本项目"
|
||||
},
|
||||
"host.flags.block-exploits": {
|
||||
"defaultMessage": "阻止常见攻击"
|
||||
|
||||
@@ -162,7 +162,7 @@ const RedirectionHostModal = EasyModal.create(({ id, visible, remove }: Props) =
|
||||
required
|
||||
{...field}
|
||||
>
|
||||
<option value="auto">Auto</option>
|
||||
<option value="auto"><T id="auto" /></option>
|
||||
<option value="http">http</option>
|
||||
<option value="https">https</option>
|
||||
</select>
|
||||
@@ -224,12 +224,12 @@ const RedirectionHostModal = EasyModal.create(({ id, visible, remove }: Props) =
|
||||
required
|
||||
{...field}
|
||||
>
|
||||
<option value="300">300 Multiple choices</option>
|
||||
<option value="301">301 Moved permanently</option>
|
||||
<option value="302">302 Moved temporarily</option>
|
||||
<option value="303">303 See other</option>
|
||||
<option value="307">307 Temporary redirect</option>
|
||||
<option value="308">308 Permanent redirect</option>
|
||||
<option value="300"><T id="redirection-hosts.http-code.300" /></option>
|
||||
<option value="301"><T id="redirection-hosts.http-code.301" /></option>
|
||||
<option value="302"><T id="redirection-hosts.http-code.302" /></option>
|
||||
<option value="303"><T id="redirection-hosts.http-code.303" /></option>
|
||||
<option value="307"><T id="redirection-hosts.http-code.307" /></option>
|
||||
<option value="308"><T id="redirection-hosts.http-code.308" /></option>
|
||||
</select>
|
||||
{form.errors.forwardHttpCode ? (
|
||||
<div className="invalid-feedback">
|
||||
|
||||
@@ -5,7 +5,7 @@ import { Alert } from "react-bootstrap";
|
||||
import Modal from "react-bootstrap/Modal";
|
||||
import { Button, Loading, SSLCertificateField, SSLOptionsFields } from "src/components";
|
||||
import { useSetStream, useStream } from "src/hooks";
|
||||
import { T } from "src/locale";
|
||||
import { intl, T } from "src/locale";
|
||||
import { validateNumber, validateString } from "src/modules/Validations";
|
||||
import { showObjectSuccess } from "src/notifications";
|
||||
|
||||
@@ -154,7 +154,7 @@ const StreamModal = EasyModal.create(({ id, visible, remove }: Props) => {
|
||||
type="text"
|
||||
className={`form-control ${form.errors.forwardingHost && form.touched.forwardingHost ? "is-invalid" : ""}`}
|
||||
required
|
||||
placeholder="example.com or 10.0.0.1 or 2001:db8:3333:4444:5555:6666:7777:8888"
|
||||
placeholder={intl.formatMessage({ id: "stream.forward-host.placeholder" })}
|
||||
{...field}
|
||||
/>
|
||||
{form.errors.forwardingHost ? (
|
||||
|
||||
@@ -1,10 +1,3 @@
|
||||
.logo {
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
.helperBtns {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
right: 10px;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import cn from "classnames";
|
||||
import { Field, Form, Formik } from "formik";
|
||||
import { useEffect, useRef, useState } from "react";
|
||||
import Alert from "react-bootstrap/Alert";
|
||||
@@ -43,17 +42,17 @@ export default function Login() {
|
||||
|
||||
return (
|
||||
<Page className="page page-center">
|
||||
<div className={cn("d-none", "d-md-flex", styles.helperBtns)}>
|
||||
<LocalePicker />
|
||||
<ThemeSwitcher />
|
||||
</div>
|
||||
<div className="container container-tight py-4">
|
||||
<div className="text-center mb-4">
|
||||
<div className="d-flex justify-content-between align-items-center mb-4 ps-4 pe-3">
|
||||
<img
|
||||
className={styles.logo}
|
||||
src="/images/logo-text-horizontal-grey.png"
|
||||
alt="Nginx Proxy Manager"
|
||||
/>
|
||||
<div className="d-flex align-items-center gap-1">
|
||||
<LocalePicker />
|
||||
<ThemeSwitcher />
|
||||
</div>
|
||||
</div>
|
||||
<div className="card card-md">
|
||||
<div className="card-body">
|
||||
@@ -103,7 +102,7 @@ export default function Login() {
|
||||
required
|
||||
maxLength={255}
|
||||
className={`form-control ${form.errors.password && form.touched.password ? " is-invalid" : ""}`}
|
||||
placeholder="Password"
|
||||
placeholder={intl.formatMessage({ id: "password" })}
|
||||
/>
|
||||
<div className="invalid-feedback">{form.errors.password}</div>
|
||||
</label>
|
||||
|
||||
Reference in New Issue
Block a user