Skip to content

Commit f40a28e

Browse files
refactor(locadex): i18n
1 parent db41456 commit f40a28e

File tree

389 files changed

+47742
-188
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

389 files changed

+47742
-188
lines changed

docs.json

Lines changed: 994 additions & 188 deletions
Large diffs are not rendered by default.
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
---
2+
title: "Permisos de editor"
3+
description: "Permite que más miembros de tu equipo actualicen tu documentación"
4+
---
5+
6+
Un editor tiene acceso a tu panel y al editor web.
7+
8+
Cualquiera puede contribuir a tu documentación trabajando localmente y enviando cambios a tu repositorio, pero hay diferencias clave en cómo se publican los cambios:
9+
10+
* **Cambios de editor**: Cuando un editor publica a través del editor web o fusiona una pull request en tu repositorio de documentación, los cambios se despliegan automáticamente en tu sitio en vivo.
11+
* **Cambios de no editor**: Cuando alguien que no es editor fusiona una pull request en tu repositorio, debes activar manualmente un despliegue desde tu panel para que esos cambios aparezcan en tu sitio en vivo.
12+
13+
14+
15+
<div id="add-editors">
16+
## Agregar editores
17+
</div>
18+
19+
De forma predeterminada, el miembro del equipo que creó tu organización de Mintlify tiene acceso de editor. Agrega editores adicionales en la página [Members](https://dashboard.mintlify.com/settings/organization/members) de tu panel.
20+
21+
Los puestos de editor se facturan según el uso y puedes tener tantos editores como necesites. Consulta nuestra [página de precios](https://mintlify.com/pricing) para más detalles.

es/advanced/dashboard/roles.mdx

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
---
2+
title: "Roles"
3+
description: "Controla el acceso a tu panel con roles."
4+
---
5+
6+
<Info>
7+
La funcionalidad RBAC está disponible en el [plan Enterprise](https://mintlify.com/pricing?ref=rbac).
8+
</Info>
9+
10+
Mintlify ofrece dos niveles de acceso al panel: Editor y Administrador.
11+
12+
A continuación se detallan las acciones restringidas al rol de Administrador:
13+
14+
| | Editor | Administrador |
15+
| ----------------------- | :----: | :-----------: |
16+
| Actualizar roles de usuario |||
17+
| Eliminar usuarios |||
18+
| Invitar usuarios administradores |||
19+
| Gestionar y actualizar la facturación |||
20+
| Actualizar el dominio personalizado |||
21+
| Actualizar la fuente de Git |||
22+
| Eliminar la organización |||
23+
24+
Las demás acciones del panel están disponibles para ambos roles.
25+
26+
Puedes invitar a tantos administradores como quieras, pero recomendamos limitar el acceso de administrador a los usuarios que lo necesiten.

es/advanced/dashboard/sso.mdx

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
---
2+
title: "Inicio de sesión único (SSO)"
3+
description: "Personaliza cómo tu equipo puede iniciar sesión en el panel de administración"
4+
---
5+
6+
<Info>
7+
La funcionalidad de SSO está disponible en el [plan Enterprise](https://mintlify.com/pricing?ref=sso).
8+
</Info>
9+
10+
Usa el inicio de sesión único en tu panel mediante SAML y OIDC. Si usas Okta, Google Workspace o Microsoft Entra, contamos con documentación específica del proveedor para configurar SSO. Si usas otro proveedor, [contáctanos](mailto:[email protected]).
11+
12+
13+
14+
<div id="okta">
15+
## Okta
16+
</div>
17+
18+
<Tabs>
19+
<Tab title="SAML">
20+
<Steps>
21+
<Step title="Crear una aplicación">
22+
En `Applications`, haz clic para crear una nueva integración de aplicación usando SAML 2.0.
23+
</Step>
24+
<Step title="Configurar la integración">
25+
Ingresa lo siguiente:
26+
* Single sign-on URL (proporcionada por Mintlify)
27+
* Audience URI (proporcionada por Mintlify)
28+
* Name ID Format: `EmailAddress`
29+
* Attribute Statements:
30+
| Name | Name format | Value
31+
| ---- | ----------- | -----
32+
| `firstName` | Basic | `user.firstName` |
33+
| `lastName` | Basic | `user.lastName` |
34+
</Step>
35+
<Step title="Envíanos la información de tu IdP">
36+
Una vez configurada la aplicación, ve a la pestaña de inicio de sesión y envíanos la URL de metadatos.
37+
Habilitaremos la conexión por nuestra parte usando esta información.
38+
</Step>
39+
</Steps>
40+
</Tab>
41+
<Tab title="OIDC">
42+
<Steps>
43+
<Step title="Crear una aplicación">
44+
En `Applications`, haz clic para crear una nueva integración de aplicación usando OIDC.
45+
Debes elegir el tipo de aplicación `Web Application`.
46+
</Step>
47+
<Step title="Configurar la integración">
48+
Selecciona el tipo de concesión Authorization Code e ingresa la Redirect URI proporcionada por Mintlify.
49+
</Step>
50+
<Step title="Envíanos la información de tu IdP">
51+
Una vez configurada la aplicación, ve a la pestaña General y localiza el client ID y el client secret.
52+
Por favor, proporciónanos ambos de forma segura, junto con la URL de tu instancia de Okta (p. ej., `<your-tenant-name>.okta.com`). Puedes enviarlos mediante un servicio como 1Password o SendSafely.
53+
</Step>
54+
</Steps>
55+
</Tab>
56+
</Tabs>
57+
58+
59+
60+
<div id="google-workspace">
61+
## Google Workspace
62+
</div>
63+
64+
<Tabs>
65+
<Tab title="SAML">
66+
<Steps>
67+
<Step title="Crear una aplicación">
68+
En `Web and mobile apps`, selecciona `Add custom SAML app` en el menú desplegable `Add app`.
69+
<Frame>
70+
![](/images/gsuite-add-custom-saml-app.png)
71+
</Frame>
72+
</Step>
73+
<Step title="Envíanos la información de tu IdP">
74+
Copia la SSO URL, el Entity ID y el certificado x509 proporcionados y envíalos al equipo de Mintlify.
75+
<Frame>
76+
![](/images/gsuite-saml-metadata.png)
77+
</Frame>
78+
</Step>
79+
<Step title="Configurar la integración">
80+
En la página Service provider details, introduce lo siguiente:
81+
* ACS URL (proporcionado por Mintlify)
82+
* Entity ID (proporcionado por Mintlify)
83+
* Name ID format: `EMAIL`
84+
* Name ID: `Basic Information > Primary email`
85+
86+
<Frame>
87+
![](/images/gsuite-sp-details.png)
88+
</Frame>
89+
90+
En la siguiente página, introduce las siguientes declaraciones de atributos:
91+
| Google Directory Attribute | App Attribute |
92+
| -------------------------- | ------------- |
93+
| `First name` | `firstName` |
94+
| `Last name` | `lastName` |
95+
96+
Cuando completes este paso y los usuarios estén asignados a la aplicación, avísanos y habilitaremos el SSO para tu cuenta.
97+
</Step>
98+
</Steps>
99+
</Tab>
100+
</Tabs>
101+
102+
103+
104+
<div id="microsoft-entra">
105+
## Microsoft Entra
106+
</div>
107+
108+
<Tabs>
109+
<Tab title="SAML">
110+
<Steps>
111+
<Step title="Create an application">
112+
1. En "Enterprise applications", selecciona **New application**.
113+
2. Selecciona **Create your own application** y elige "Integrate any other application you don't find in the gallery (Non-gallery)."
114+
</Step>
115+
<Step title="Configure SAML">
116+
Ve a la página de configuración de Single Sign-On y selecciona **SAML**. En "Basic SAML Configuration", ingresa lo siguiente:
117+
* Identifier (Entity ID): el Audience URI proporcionado por Mintlify.
118+
* Reply URL (Assertion Consumer Service URL): la URL de ACS proporcionada por Mintlify.
119+
120+
Deja los demás valores en blanco y selecciona **Save**.
121+
</Step>
122+
<Step title="Configure Attributes & Claims">
123+
Edita la sección Attributes & Claims:
124+
1. Selecciona **Unique User Identifier (Name ID)** en "Required Claim".
125+
2. Cambia el Source attribute para usar `user.primaryauthoritativeemail`.
126+
3. En Additional claims, crea los siguientes claims:
127+
| Name | Value |
128+
| ---- | ----- |
129+
| `firstName` | `user.givenname` |
130+
| `lastName` | `user.surname` |
131+
</Step>
132+
<Step title="Send Mintlify your IdP information">
133+
Una vez que la aplicación esté configurada, ve a la sección "SAML Certificates" y envíanos el App Federation Metadata URL.
134+
Habilitaremos la conexión de nuestro lado usando esta información.
135+
</Step>
136+
<Step title="Assign Users">
137+
Ve a "Users and groups" en tu aplicación de Entra y agrega a los usuarios que deban tener acceso a tu panel.
138+
</Step>
139+
</Steps>
140+
</Tab>
141+
</Tabs>

es/advanced/subpath/cloudflare.mdx

Lines changed: 208 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,208 @@
1+
---
2+
title: "Cloudflare"
3+
description: "Aloja la documentación en una subruta personalizada con Cloudflare Workers"
4+
---
5+
6+
import Propagating from "/snippets/es/custom-subpath-propagating.mdx";
7+
8+
Para alojar tu documentación en una subruta personalizada como `yoursite.com/docs` con Cloudflare, deberás crear y configurar un Cloudflare Worker.
9+
10+
<Info>
11+
Antes de empezar, necesitas una cuenta de Cloudflare y un nombre de dominio (puede administrarse dentro o fuera de Cloudflare).
12+
</Info>
13+
14+
15+
<div id="repository-structure">
16+
## Estructura del repositorio
17+
</div>
18+
19+
Los archivos de documentación deben organizarse dentro del repositorio para que coincidan con la subruta elegida. Por ejemplo, si quieres que tu documentación esté en `yoursite.com/docs`, crea un directorio `docs/` con todos los archivos de documentación.
20+
21+
<div id="set-up-a-cloudflare-worker">
22+
## Configurar un Cloudflare Worker
23+
</div>
24+
25+
Crea un Cloudflare Worker siguiendo la [guía de inicio de Cloudflare Workers](https://developers.cloudflare.com/workers/get-started/dashboard/) si aún no lo has hecho.
26+
27+
<Warning>
28+
Si tu proveedor de DNS es Cloudflare, no habilites el proxy para el registro CNAME.
29+
</Warning>
30+
31+
<div id="proxies-with-vercel-deployments">
32+
### Proxies con implementaciones de Vercel
33+
</div>
34+
35+
Si usas Cloudflare como proxy con implementaciones de Vercel, asegúrate de configurarlo correctamente para evitar conflictos con la verificación de dominio de Vercel y el aprovisionamiento de certificados SSL.
36+
37+
Una configuración de proxy incorrecta puede impedir que Vercel emita certificados SSL de Let's Encrypt y provocar errores en la verificación de dominio.
38+
39+
<div id="required-path-allowlist">
40+
#### Lista de rutas permitidas obligatoria
41+
</div>
42+
43+
Tu Cloudflare Worker debe permitir el tráfico a estas rutas específicas sin bloquear ni redirigir:
44+
45+
- `/.well-known/acme-challenge/*` - Necesario para la verificación del certificado de Let's Encrypt
46+
- `/.well-known/vercel/*` - Necesario para la verificación de dominios en Vercel
47+
48+
Si bien Cloudflare gestiona automáticamente muchas reglas de verificación, crear reglas personalizadas adicionales podría bloquear inadvertidamente este tráfico crítico.
49+
50+
<div id="header-forwarding-requirements">
51+
#### Requisitos para el reenvío de encabezados
52+
</div>
53+
54+
Asegúrate de que el encabezado `HOST` se reenvíe correctamente en la configuración de tu Worker. Si los encabezados no se reenvían correctamente, las solicitudes de verificación fallarán.
55+
56+
<div id="configure-routing">
57+
### Configurar el enrutamiento
58+
</div>
59+
60+
En tu panel de Cloudflare, selecciona **Edit Code** y agrega el siguiente script en el código de tu Worker. Consulta la [documentación de Cloudflare](https://developers.cloudflare.com/workers-ai/get-started/dashboard/#development) para obtener más información sobre cómo editar un Worker.
61+
62+
<Tip>
63+
Reemplaza `[SUBDOMAIN]` por tu subdominio único, `[YOUR_DOMAIN]` por la URL base de tu sitio web y `/docs` por la subruta que prefieras si fuera distinta.
64+
</Tip>
65+
66+
```javascript
67+
addEventListener("fetch", (event) => {
68+
event.respondWith(handleRequest(event.request));
69+
});
70+
71+
async function handleRequest(request) {
72+
try {
73+
const urlObject = new URL(request.url);
74+
75+
// Si la solicitud es a una ruta de verificación de Vercel, deja que pase
76+
if (urlObject.pathname.startsWith('/.well-known/')) {
77+
return await fetch(request);
78+
}
79+
80+
// Si la solicitud es al subdirectorio de docs
81+
if (/^\/docs/.test(urlObject.pathname)) {
82+
// Entonces, haz proxy a Mintlify
83+
const DOCS_URL = "[SUBDOMAIN].mintlify.dev";
84+
const CUSTOM_URL = "[YOUR_DOMAIN]";
85+
86+
let url = new URL(request.url);
87+
url.hostname = DOCS_URL;
88+
89+
let proxyRequest = new Request(url, request);
90+
91+
proxyRequest.headers.set("Host", DOCS_URL);
92+
proxyRequest.headers.set("X-Forwarded-Host", CUSTOM_URL);
93+
proxyRequest.headers.set("X-Forwarded-Proto", "https");
94+
// Si despliegas en Vercel, conserva la IP del cliente
95+
proxyRequest.headers.set("CF-Connecting-IP", request.headers.get("CF-Connecting-IP"));
96+
97+
return await fetch(proxyRequest);
98+
}
99+
} catch (error) {
100+
// Si no se encuentra ninguna coincidencia, procesa la solicitud normal
101+
return await fetch(request);
102+
}
103+
}
104+
```
105+
106+
Selecciona **Deploy** y espera a que los cambios se propaguen.
107+
108+
<Propagating />
109+
110+
111+
<div id="test-your-worker">
112+
### Prueba tu Worker
113+
</div>
114+
115+
Después de desplegar tu código, prueba tu Worker para asegurarte de que redirige a tu documentación de Mintlify.
116+
117+
1. Prueba usando la URL de vista previa del Worker: `your-worker.your-subdomain.workers.dev/docs`
118+
2. Verifica que el Worker redirige a tu documentación de Mintlify y a tu sitio web.
119+
120+
<div id="add-custom-domain">
121+
### Agregar dominio personalizado
122+
</div>
123+
124+
1. En tu [panel de Cloudflare](https://dash.cloudflare.com/), ve a tu Worker.
125+
2. Ve a **Settings > Domains & Routes > Add > Custom Domain**.
126+
3. Agrega tu dominio.
127+
128+
<Tip>
129+
Recomendamos agregar tu dominio tanto con `www.` como sin él.
130+
</Tip>
131+
132+
Consulta [Add a custom domain](https://developers.cloudflare.com/workers/configuration/routing/custom-domains/#add-a-custom-domain) en la documentación de Cloudflare para más información.
133+
134+
<div id="resolve-dns-conflicts">
135+
### Resolver conflictos de DNS
136+
</div>
137+
138+
Si tu dominio ya apunta a otro servicio, debes eliminar el registro DNS existente. Tu Cloudflare Worker debe estar configurado para controlar todo el tráfico de tu dominio.
139+
140+
1. Elimina el registro DNS existente de tu dominio. Consulta [Eliminar registros DNS](https://developers.cloudflare.com/dns/manage-dns-records/how-to/create-dns-records/#delete-dns-records) en la documentación de Cloudflare para obtener más información.
141+
2. Regresa a tu Worker y añade tu dominio personalizado.
142+
143+
<div id="webflow-custom-routing">
144+
## Enrutamiento personalizado en Webflow
145+
</div>
146+
147+
Si usas Webflow para alojar tu sitio principal y quieres servir la documentación de Mintlify en `/docs` en el mismo dominio, tendrás que configurar un enrutamiento personalizado mediante Cloudflare Workers para enrutar todo el tráfico que no sea de docs a tu sitio principal.
148+
149+
<Warning>
150+
Asegúrate de que tu sitio principal esté configurado en una página de aterrizaje antes de desplegar este Worker, o quienes visiten tu sitio principal verán errores.
151+
</Warning>
152+
153+
1. En Webflow, configura una página de aterrizaje para tu sitio principal, por ejemplo `landing.yoursite.com`. Esta será la página que verán las personas al visitar tu sitio.
154+
2. Despliega tu sitio principal en la página de aterrizaje. Esto garantiza que tu sitio principal siga siendo accesible mientras configuras el Worker.
155+
3. Para evitar conflictos, actualiza cualquier URL absoluta en tu sitio principal para que sea relativa.
156+
4. En Cloudflare, selecciona **Edit Code** y añade el siguiente script en el código de tu Worker.
157+
158+
<Tip> Reemplaza `[SUBDOMAIN]` por tu subdominio único, `[YOUR_DOMAIN]` por la URL base de tu sitio web, `[LANDING_DOMAIN]` por la URL de tu página de aterrizaje y `/docs` por la subruta deseada si fuera distinta. </Tip>
159+
160+
```javascript
161+
addEventListener("fetch", (event) => {
162+
event.respondWith(handleRequest(event.request));
163+
});
164+
async function handleRequest(request) {
165+
try {
166+
const urlObject = new URL(request.url);
167+
168+
// Si la solicitud es a una ruta de verificación de Vercel, deja que pase
169+
if (urlObject.pathname.startsWith('/.well-known/')) {
170+
return await fetch(request);
171+
}
172+
173+
// Si la solicitud es al subdirectorio de docs
174+
if (/^\/docs/.test(urlObject.pathname)) {
175+
// Encamina a través de un proxy a Mintlify
176+
const DOCS_URL = "[SUBDOMAIN].mintlify.dev";
177+
const CUSTOM_URL = "[YOUR_DOMAIN]";
178+
let url = new URL(request.url);
179+
url.hostname = DOCS_URL;
180+
let proxyRequest = new Request(url, request);
181+
proxyRequest.headers.set("Host", DOCS_URL);
182+
proxyRequest.headers.set("X-Forwarded-Host", CUSTOM_URL);
183+
proxyRequest.headers.set("X-Forwarded-Proto", "https");
184+
// Si se despliega en Vercel, conserva la IP del cliente
185+
proxyRequest.headers.set("CF-Connecting-IP", request.headers.get("CF-Connecting-IP"));
186+
return await fetch(proxyRequest);
187+
}
188+
// Envía todo lo demás al sitio principal
189+
const MAIN_SITE_URL = "[LANDING_DOMAIN]";
190+
if (MAIN_SITE_URL && MAIN_SITE_URL !== "[LANDING_DOMAIN]") {
191+
let mainSiteUrl = new URL(request.url);
192+
mainSiteUrl.hostname = MAIN_SITE_URL;
193+
return await fetch(mainSiteUrl, {
194+
method: request.method,
195+
headers: request.headers,
196+
body: request.body
197+
});
198+
}
199+
} catch (error) {
200+
// Si no se encuentra ninguna coincidencia, atiende la solicitud normal
201+
return await fetch(request);
202+
}
203+
}
204+
```
205+
206+
5. Selecciona **Deploy** y espera a que los cambios se propaguen.
207+
208+
<Propagating />

0 commit comments

Comments
 (0)