add other translations
This commit is contained in:
Javier Pastor
2025-11-13 22:26:41 +01:00
parent 79a9653b26
commit 0ec1a09c30
7 changed files with 89 additions and 17 deletions

View File

@@ -3,7 +3,7 @@ import cn from "classnames";
import { useFormikContext } from "formik"; import { useFormikContext } from "formik";
import { useState } from "react"; import { useState } from "react";
import type { AccessListClient } from "src/api/backend"; import type { AccessListClient } from "src/api/backend";
import { T } from "src/locale"; import { intl, T } from "src/locale";
interface Props { interface Props {
initialValues: AccessListClient[]; initialValues: AccessListClient[];
@@ -65,8 +65,8 @@ export function AccessClientFields({ initialValues, name = "clients" }: Props) {
value={client.directive} value={client.directive}
onChange={(e) => handleChange(idx, "directive", e.target.value)} onChange={(e) => handleChange(idx, "directive", e.target.value)}
> >
<option value="allow">Allow</option> <option value="allow"><T id="action.allow" /></option>
<option value="deny">Deny</option> <option value="deny"><T id="action.deny" /></option>
</select> </select>
</span> </span>
<input <input
@@ -76,7 +76,7 @@ export function AccessClientFields({ initialValues, name = "clients" }: Props) {
autoComplete="off" autoComplete="off"
value={client.address} value={client.address}
onChange={(e) => handleChange(idx, "address", e.target.value)} 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>
</div> </div>
@@ -112,7 +112,7 @@ export function AccessClientFields({ initialValues, name = "clients" }: Props) {
value="deny" value="deny"
disabled disabled
> >
<option value="deny">Deny</option> <option value="deny"><T id="action.deny" /></option>
</select> </select>
</span> </span>
<input <input

View File

@@ -5,7 +5,7 @@ import { useState } from "react";
import Select, { type ActionMeta } from "react-select"; import Select, { type ActionMeta } from "react-select";
import type { DNSProvider } from "src/api/backend"; import type { DNSProvider } from "src/api/backend";
import { useDnsProviders } from "src/hooks"; import { useDnsProviders } from "src/hooks";
import { T } from "src/locale"; import { intl, T } from "src/locale";
import styles from "./DNSProviderFields.module.css"; import styles from "./DNSProviderFields.module.css";
interface DNSProviderOption { interface DNSProviderOption {
@@ -57,7 +57,7 @@ export function DNSProviderFields({ showBoundaryBox = false }: Props) {
id="dnsProvider" id="dnsProvider"
closeMenuOnSelect={true} closeMenuOnSelect={true}
isClearable={false} isClearable={false}
placeholder="Select a Provider..." placeholder={intl.formatMessage({ id: "certificates.dns.provider.placeholder" })}
isLoading={isLoading} isLoading={isLoading}
isSearchable isSearchable
onChange={handleChange} onChange={handleChange}

View File

@@ -1,4 +1,7 @@
{ {
"aaccess-list.rule-source.placeholder": {
"defaultMessage": "192.168.1.100 or 192.168.1.0/24 or 2001:0db8::/32"
},
"access-list": { "access-list": {
"defaultMessage": "Access List" "defaultMessage": "Access List"
}, },
@@ -38,12 +41,18 @@
"action.add-location": { "action.add-location": {
"defaultMessage": "Add Location" "defaultMessage": "Add Location"
}, },
"action.allow": {
"defaultMessage": "Allow"
},
"action.close": { "action.close": {
"defaultMessage": "Close" "defaultMessage": "Close"
}, },
"action.delete": { "action.delete": {
"defaultMessage": "Delete" "defaultMessage": "Delete"
}, },
"action.deny": {
"defaultMessage": "Deny"
},
"action.disable": { "action.disable": {
"defaultMessage": "Disable" "defaultMessage": "Disable"
}, },
@@ -68,6 +77,9 @@
"auditlogs": { "auditlogs": {
"defaultMessage": "Audit Logs" "defaultMessage": "Audit Logs"
}, },
"auto": {
"defaultMessage": "Auto"
},
"cancel": { "cancel": {
"defaultMessage": "Cancel" "defaultMessage": "Cancel"
}, },
@@ -128,6 +140,9 @@
"certificates.dns.provider": { "certificates.dns.provider": {
"defaultMessage": "DNS Provider" "defaultMessage": "DNS Provider"
}, },
"certificates.dns.provider.placeholder": {
"defaultMessage": "Select a Provider..."
},
"certificates.dns.warning": { "certificates.dns.warning": {
"defaultMessage": "This section requires some knowledge about Certbot and its DNS plugins. Please consult the respective plugins documentation." "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": { "redirection-hosts.count": {
"defaultMessage": "{count} {count, plural, one {Redirection Host} other {Redirection Hosts}}" "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": { "role.admin": {
"defaultMessage": "Administrator" "defaultMessage": "Administrator"
}, },
@@ -575,6 +608,9 @@
"stream.forward-host": { "stream.forward-host": {
"defaultMessage": "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": { "stream.incoming-port": {
"defaultMessage": "Incoming Port" "defaultMessage": "Incoming Port"
}, },

View File

@@ -23,6 +23,9 @@
"access-list.public.subtitle": { "access-list.public.subtitle": {
"defaultMessage": "No se requiere autenticación básica" "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": { "access-list.satisfy-any": {
"defaultMessage": "Satisfacer Cualquiera" "defaultMessage": "Satisfacer Cualquiera"
}, },
@@ -38,12 +41,18 @@
"action.add-location": { "action.add-location": {
"defaultMessage": "Añadir Ubicación" "defaultMessage": "Añadir Ubicación"
}, },
"action.allow": {
"defaultMessage": "Permitir"
},
"action.close": { "action.close": {
"defaultMessage": "Cerrar" "defaultMessage": "Cerrar"
}, },
"action.delete": { "action.delete": {
"defaultMessage": "Eliminar" "defaultMessage": "Eliminar"
}, },
"action.deny": {
"defaultMessage": "Denegar"
},
"action.disable": { "action.disable": {
"defaultMessage": "Deshabilitar" "defaultMessage": "Deshabilitar"
}, },
@@ -68,6 +77,9 @@
"auditlogs": { "auditlogs": {
"defaultMessage": "Registros de Auditoría" "defaultMessage": "Registros de Auditoría"
}, },
"auto": {
"defaultMessage": "Auto"
},
"cancel": { "cancel": {
"defaultMessage": "Cancelar" "defaultMessage": "Cancelar"
}, },
@@ -128,6 +140,9 @@
"certificates.dns.provider": { "certificates.dns.provider": {
"defaultMessage": "Proveedor DNS" "defaultMessage": "Proveedor DNS"
}, },
"certificates.dns.provider.placeholder": {
"defaultMessage": "Selecciona un Proveedor..."
},
"certificates.dns.warning": { "certificates.dns.warning": {
"defaultMessage": "Esta sección requiere algunos conocimientos sobre Certbot y sus plugins DNS. Consulta la documentación de los plugins respectivos." "defaultMessage": "Esta sección requiere algunos conocimientos sobre Certbot y sus plugins DNS. Consulta la documentación de los plugins respectivos."
}, },
@@ -518,6 +533,24 @@
"redirection-hosts.count": { "redirection-hosts.count": {
"defaultMessage": "{count} {count, plural, one {Host de Redirección} other {Hosts de Redirección}}" "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": { "role.admin": {
"defaultMessage": "Administrador" "defaultMessage": "Administrador"
}, },
@@ -575,6 +608,9 @@
"stream.forward-host": { "stream.forward-host": {
"defaultMessage": "Host de Reenvío" "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": { "stream.incoming-port": {
"defaultMessage": "Puerto de Entrada" "defaultMessage": "Puerto de Entrada"
}, },

View File

@@ -162,7 +162,7 @@ const RedirectionHostModal = EasyModal.create(({ id, visible, remove }: Props) =
required required
{...field} {...field}
> >
<option value="auto">Auto</option> <option value="auto"><T id="auto" /></option>
<option value="http">http</option> <option value="http">http</option>
<option value="https">https</option> <option value="https">https</option>
</select> </select>
@@ -224,12 +224,12 @@ const RedirectionHostModal = EasyModal.create(({ id, visible, remove }: Props) =
required required
{...field} {...field}
> >
<option value="300">300 Multiple choices</option> <option value="300"><T id="redirection-hosts.http-code.300" /></option>
<option value="301">301 Moved permanently</option> <option value="301"><T id="redirection-hosts.http-code.301" /></option>
<option value="302">302 Moved temporarily</option> <option value="302"><T id="redirection-hosts.http-code.302" /></option>
<option value="303">303 See other</option> <option value="303"><T id="redirection-hosts.http-code.303" /></option>
<option value="307">307 Temporary redirect</option> <option value="307"><T id="redirection-hosts.http-code.307" /></option>
<option value="308">308 Permanent redirect</option> <option value="308"><T id="redirection-hosts.http-code.308" /></option>
</select> </select>
{form.errors.forwardHttpCode ? ( {form.errors.forwardHttpCode ? (
<div className="invalid-feedback"> <div className="invalid-feedback">

View File

@@ -5,7 +5,7 @@ import { Alert } from "react-bootstrap";
import Modal from "react-bootstrap/Modal"; import Modal from "react-bootstrap/Modal";
import { Button, Loading, SSLCertificateField, SSLOptionsFields } from "src/components"; import { Button, Loading, SSLCertificateField, SSLOptionsFields } from "src/components";
import { useSetStream, useStream } from "src/hooks"; 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 { validateNumber, validateString } from "src/modules/Validations";
import { showObjectSuccess } from "src/notifications"; import { showObjectSuccess } from "src/notifications";
@@ -154,7 +154,7 @@ const StreamModal = EasyModal.create(({ id, visible, remove }: Props) => {
type="text" type="text"
className={`form-control ${form.errors.forwardingHost && form.touched.forwardingHost ? "is-invalid" : ""}`} className={`form-control ${form.errors.forwardingHost && form.touched.forwardingHost ? "is-invalid" : ""}`}
required 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} {...field}
/> />
{form.errors.forwardingHost ? ( {form.errors.forwardingHost ? (

View File

@@ -103,7 +103,7 @@ export default function Login() {
required required
maxLength={255} maxLength={255}
className={`form-control ${form.errors.password && form.touched.password ? " is-invalid" : ""}`} 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> <div className="invalid-feedback">{form.errors.password}</div>
</label> </label>