diff --git a/apps/docs/content/ar/docs/01-app/01-getting-started/02-project-structure.mdx b/apps/docs/content/ar/docs/01-app/01-getting-started/02-project-structure.mdx index e84b7644..7728ad22 100644 --- a/apps/docs/content/ar/docs/01-app/01-getting-started/02-project-structure.mdx +++ b/apps/docs/content/ar/docs/01-app/01-getting-started/02-project-structure.mdx @@ -203,8 +203,6 @@ Next.js **غير متحيز** بشأن كيفية تنظيم وترتيب ملف height="863" /> - - ### التنسيق المشترك (Colocation) في دليل `app`، تحدد المجلدات المتداخلة بنية المسار (route). كل مجلد يمثل جزءًا من المسار (route segment) يتم تعيينه إلى جزء مقابل في مسار URL. diff --git a/apps/docs/content/ar/docs/01-app/02-guides/open-telemetry.mdx b/apps/docs/content/ar/docs/01-app/02-guides/open-telemetry.mdx index 46520304..a341d210 100644 --- a/apps/docs/content/ar/docs/01-app/02-guides/open-telemetry.mdx +++ b/apps/docs/content/ar/docs/01-app/02-guides/open-telemetry.mdx @@ -48,7 +48,7 @@ npm install @vercel/otel @opentelemetry/sdk-logs @opentelemetry/api-logs @opente بعد ذلك، قم بإنشاء ملف [`instrumentation.ts`](/docs/pages/guides/instrumentation) (أو `.js`) مخصص في **الدليل الجذري** للمشروع (أو داخل مجلد `src` إذا كنت تستخدم واحدًا): - + ```ts filename="your-project/instrumentation.ts" switcher import { registerOTel } from '@vercel/otel' diff --git a/apps/docs/content/ar/docs/02-pages/03-building-your-application/01-routing/11-middleware.mdx b/apps/docs/content/ar/docs/02-pages/03-building-your-application/01-routing/11-middleware.mdx index 77a2ccd1..32f768ec 100644 --- a/apps/docs/content/ar/docs/02-pages/03-building-your-application/01-routing/11-middleware.mdx +++ b/apps/docs/content/ar/docs/02-pages/03-building-your-application/01-routing/11-middleware.mdx @@ -3,7 +3,7 @@ source-updated-at: 2025-05-16T04:52:11.000Z translation-updated-at: 2025-06-02T20:04:21.421Z title: Middleware description: تعرف على كيفية استخدام Middleware لتشغيل الكود قبل اكتمال الطلب. -source: app/building-your-your-application/routing/middleware +source: app/building-your-application/routing/middleware --- {/* DO NOT EDIT. The content of this doc is generated from the source above. To edit the content of this page, navigate to the source page in your editor. You can use the `Content` component to add content that is specific to the Pages Router. Any shared content should not be wrapped in a component. */} \ No newline at end of file diff --git a/apps/docs/content/de/docs/01-app/01-getting-started/02-project-structure.mdx b/apps/docs/content/de/docs/01-app/01-getting-started/02-project-structure.mdx index 76c7c36e..dc1acc40 100644 --- a/apps/docs/content/de/docs/01-app/01-getting-started/02-project-structure.mdx +++ b/apps/docs/content/de/docs/01-app/01-getting-started/02-project-structure.mdx @@ -203,8 +203,6 @@ Die Komponenten werden rekursiv in verschachtelten Routen gerendert, was bedeute height="863" /> - - ### Colocation Im `app`-Verzeichnis definieren verschachtelte Ordner die Routenstruktur. Jeder Ordner repräsentiert ein Routensegment, das einem entsprechenden Segment in einem URL-Pfad zugeordnet ist. diff --git a/apps/docs/content/de/docs/01-app/02-guides/authentication.mdx b/apps/docs/content/de/docs/01-app/02-guides/authentication.mdx index 215c897e..ec6f1fc7 100644 --- a/apps/docs/content/de/docs/01-app/02-guides/authentication.mdx +++ b/apps/docs/content/de/docs/01-app/02-guides/authentication.mdx @@ -300,8 +300,6 @@ export default function SignupForm() { > - In React 19 enthält `useFormStatus` zusätzliche Schlüssel im zurückgegebenen Objekt, wie data, method und action. Falls Sie nicht React 19 verwenden, ist nur der `pending`-Schlüssel verfügbar. > - Bevor Sie Daten mutieren, sollten Sie stets sicherstellen, dass ein Benutzer auch autorisiert ist, die Aktion durchzuführen. Siehe [Authentifizierung und Autorisierung](#authorization). - - #### 3. Benutzer erstellen oder Anmeldedaten prüfen Nach der Validierung der Formularfelder können Sie ein neues Benutzerkonto erstellen oder überprüfen, ob der Benutzer existiert, indem Sie die API oder Datenbank Ihres Authentifizierungsanbieters aufrufen. diff --git a/apps/docs/content/de/docs/01-app/05-api-reference/02-components/image.mdx b/apps/docs/content/de/docs/01-app/05-api-reference/02-components/image.mdx index c3014565..edecbdfa 100644 --- a/apps/docs/content/de/docs/01-app/05-api-reference/02-components/image.mdx +++ b/apps/docs/content/de/docs/01-app/05-api-reference/02-components/image.mdx @@ -485,7 +485,7 @@ Die Callback-Funktion wird mit einem Argument aufgerufen, einer Referenz auf das console.log(img.naturalWidth)} /> ``` - + @@ -629,7 +629,7 @@ export default function myImageLoader({ src, width, quality }) { } ``` - + **Beispiel:** diff --git a/apps/docs/content/es/docs/01-app/01-getting-started/02-project-structure.mdx b/apps/docs/content/es/docs/01-app/01-getting-started/02-project-structure.mdx index 4cf1cea6..0773cfe1 100644 --- a/apps/docs/content/es/docs/01-app/01-getting-started/02-project-structure.mdx +++ b/apps/docs/content/es/docs/01-app/01-getting-started/02-project-structure.mdx @@ -203,8 +203,6 @@ Los componentes se renderizan recursivamente en rutas anidadas, lo que significa height="863" /> - - ### Colocación En el directorio `app`, las carpetas anidadas definen la estructura de rutas. Cada carpeta representa un segmento de ruta que se mapea a un segmento correspondiente en una ruta URL. diff --git a/apps/docs/content/es/docs/01-app/01-getting-started/10-updating-data.mdx b/apps/docs/content/es/docs/01-app/01-getting-started/10-updating-data.mdx index e6e2b6e2..39f1dde3 100644 --- a/apps/docs/content/es/docs/01-app/01-getting-started/10-updating-data.mdx +++ b/apps/docs/content/es/docs/01-app/01-getting-started/10-updating-data.mdx @@ -1,33 +1,33 @@ --- -source-updated-at: 2025-06-01T01:32:20.000Z -translation-updated-at: 2025-06-02T20:02:54.513Z +source-updated-at: 2025-06-03T15:30:49.000Z +translation-updated-at: 2025-06-06T16:38:51.012Z title: Cómo actualizar datos nav_title: Actualización de datos -description: Aprende cómo actualizar datos en tu aplicación Next.js. +description: Aprende a actualizar datos en tu aplicación Next.js. related: title: Referencia de API - description: Obtén más información sobre las características mencionadas en esta página leyendo la Referencia de API. + description: Conoce más sobre las características mencionadas en esta página leyendo la Referencia de API. links: - app/api-reference/functions/revalidatePath - app/api-reference/functions/revalidateTag - app/api-reference/functions/redirect --- -Puedes actualizar datos en Next.js utilizando las [Funciones del Servidor (Server Functions)](https://react.dev/reference/rsc/server-functions) de React. Esta página explicará cómo puedes [crear](#creando-funciones-del-servidor) e [invocar](#invocando-funciones-del-servidor) Funciones del Servidor. +Puedes actualizar datos en Next.js usando las [Funciones de Servidor (Server Functions)](https://react.dev/reference/rsc/server-functions) de React. Esta página explicará cómo puedes [crear](#creación-de-funciones-de-servidor) e [invocar](#invocación-de-funciones-de-servidor) Funciones de Servidor. -## Funciones del Servidor +## Funciones de Servidor -Una Función del Servidor es una función asíncrona que se ejecuta en el servidor. Las Funciones del Servidor son inherentemente asíncronas porque son invocadas por el cliente mediante una solicitud de red. Cuando se invocan como parte de una `action`, también se les llama **Acciones del Servidor (Server Actions)**. +Una Función de Servidor es una función asíncrona que se ejecuta en el servidor. Las Funciones de Servidor son inherentemente asíncronas porque son invocadas por el cliente mediante una solicitud de red. Cuando se invocan como parte de una `action`, también se les llama **Acciones de Servidor (Server Actions)**. -Por convención, una `action` es una función asíncrona pasada a `startTransition`. Las Funciones del Servidor se envuelven automáticamente con `startTransition` cuando: +Por convención, una `action` es una función asíncrona pasada a `startTransition`. Las Funciones de Servidor se envuelven automáticamente con `startTransition` cuando: - Se pasan a un `
` usando la prop `action`, - Se pasan a un ` ) } @@ -279,7 +279,7 @@ export function Button() { ```jsx filename="app/ui/button.js" switcher 'use client' -import { useActionState } from 'react' +import { useActionState, startTransition } from 'react' import { createPost } from '@/app/actions' import { LoadingSpinner } from '@/app/ui/loading-spinner' @@ -287,16 +287,16 @@ export function Button() { const [state, action, pending] = useActionState(createPost, false) return ( - ) } ``` -### Revalidando la caché +### Revalidar la caché -Después de realizar una actualización, puedes revalidar la caché de Next.js y mostrar los datos actualizados llamando a [`revalidatePath`](/docs/app/api-reference/functions/revalidatePath) o [`revalidateTag`](/docs/app/api-reference/functions/revalidateTag) dentro de la Función del Servidor: +Después de realizar una actualización, puedes revalidar la caché de Next.js y mostrar los datos actualizados llamando a [`revalidatePath`](/docs/app/api-reference/functions/revalidatePath) o [`revalidateTag`](/docs/app/api-reference/functions/revalidateTag) dentro de la Función de Servidor: ```ts filename="app/lib/actions.ts" switcher import { revalidatePath } from 'next/cache' @@ -321,9 +321,9 @@ export async function createPost(formData) { } ``` -### Redireccionando +### Redireccionar -Puedes querer redirigir al usuario a una página diferente después de realizar una actualización. Puedes hacer esto llamando a [`redirect`](/docs/app/api-reference/functions/redirect) dentro de la Función del Servidor: +Puedes redirigir al usuario a una página diferente después de realizar una actualización. Esto se hace llamando a [`redirect`](/docs/app/api-reference/functions/redirect) dentro de la Función de Servidor: ```ts filename="app/lib/actions.ts" switcher 'use server' diff --git a/apps/docs/content/es/docs/01-app/01-getting-started/14-deploying.mdx b/apps/docs/content/es/docs/01-app/01-getting-started/14-deploying.mdx index 3a848356..6f877043 100644 --- a/apps/docs/content/es/docs/01-app/01-getting-started/14-deploying.mdx +++ b/apps/docs/content/es/docs/01-app/01-getting-started/14-deploying.mdx @@ -1,23 +1,23 @@ --- -source-updated-at: 2025-06-01T01:32:20.000Z -translation-updated-at: 2025-06-02T20:01:31.245Z -title: Cómo implementar tu aplicación Next.js -nav_title: Implementación -description: Aprende cómo implementar tu aplicación Next.js. +source-updated-at: 2025-06-05T23:52:35.000Z +translation-updated-at: 2025-06-06T16:37:42.475Z +title: Cómo desplegar tu aplicación Next.js +nav_title: Despliegue +description: Aprende cómo desplegar tu aplicación Next.js. --- -Next.js puede implementarse como un servidor Node.js, contenedor Docker, exportación estática o adaptarse para ejecutarse en diferentes plataformas. +Next.js puede desplegarse como un servidor Node.js, contenedor Docker, exportación estática o adaptarse para ejecutarse en diferentes plataformas. -| Opción de Implementación | Soporte de Funcionalidades | -| -------------------------------- | -------------------------- | +| Opción de despliegue | Soporte de características | +| ---------------------------------- | ------------------------- | | [Servidor Node.js](#nodejs-server) | Todas | -| [Contenedor Docker](#docker) | Todas | -| [Exportación estática](#static-export) | Limitado | -| [Adaptadores](#adapters) | Depende de la plataforma | +| [Contenedor Docker](#docker) | Todas | +| [Exportación estática](#static-export) | Limitado | +| [Adaptadores](#adapters) | Depende de la plataforma | ## Servidor Node.js -Next.js puede implementarse en cualquier proveedor que soporte Node.js. Asegúrate de que tu `package.json` tenga los scripts `"build"` y `"start"`: +Next.js puede desplegarse en cualquier proveedor que soporte Node.js. Asegúrate de que tu `package.json` tenga los scripts `"build"` y `"start"`: ```json filename="package.json" { @@ -29,9 +29,9 @@ Next.js puede implementarse en cualquier proveedor que soporte Node.js. Asegúra } ``` -Luego, ejecuta `npm run build` para construir tu aplicación y `npm run start` para iniciar el servidor Node.js. Este servidor soporta todas las funcionalidades de Next.js. Si es necesario, también puedes optar por un [servidor personalizado](/docs/app/guides/custom-server). +Luego, ejecuta `npm run build` para construir tu aplicación y `npm run start` para iniciar el servidor Node.js. Este servidor soporta todas las características de Next.js. Si es necesario, también puedes migrar a un [servidor personalizado](/docs/app/guides/custom-server). -Las implementaciones con Node.js soportan todas las funcionalidades de Next.js. Aprende cómo [configurarlas](/docs/app/guides/self-hosting) para tu infraestructura. +Los despliegues en Node.js soportan todas las características de Next.js. Aprende cómo [configurarlos](/docs/app/guides/self-hosting) para tu infraestructura. ### Plantillas @@ -41,9 +41,11 @@ Las implementaciones con Node.js soportan todas las funcionalidades de Next.js. ## Docker -Next.js puede implementarse en cualquier proveedor que soporte contenedores [Docker](https://www.docker.com/). Esto incluye orquestadores de contenedores como Kubernetes o proveedores en la nube que ejecuten Docker. +Next.js puede desplegarse en cualquier proveedor que soporte contenedores [Docker](https://www.docker.com/). Esto incluye orquestadores de contenedores como Kubernetes o proveedores en la nube que ejecuten Docker. -Las implementaciones con Docker soportan todas las funcionalidades de Next.js. Aprende cómo [configurarlas](/docs/app/guides/self-hosting) para tu infraestructura. +Los despliegues con Docker soportan todas las características de Next.js. Aprende cómo [configurarlos](/docs/app/guides/self-hosting) para tu infraestructura. + +> **Nota para desarrollo:** Aunque Docker es excelente para despliegues en producción, considera usar desarrollo local (`npm run dev`) en lugar de Docker durante el desarrollo en Mac y Windows para mejor rendimiento. [Aprende más sobre optimización de desarrollo local](/docs/app/guides/local-development). ### Plantillas @@ -57,11 +59,11 @@ Las implementaciones con Docker soportan todas las funcionalidades de Next.js. A ## Exportación estática -Next.js permite comenzar como un sitio estático o [Aplicación de Página Única (SPA)](/docs/app/guides/single-page-applications), y luego opcionalmente actualizar para usar funcionalidades que requieran un servidor. +Next.js permite comenzar como un sitio estático o [Aplicación de Página Única (SPA)](/docs/app/guides/single-page-applications), y luego actualizar opcionalmente para usar características que requieran un servidor. -Dado que Next.js soporta [exportaciones estáticas](/docs/app/guides/static-exports), puede implementarse y alojarse en cualquier servidor web que pueda servir activos estáticos HTML/CSS/JS. Esto incluye herramientas como AWS S3, Nginx o Apache. +Como Next.js soporta [exportaciones estáticas](/docs/app/guides/static-exports), puede desplegarse y alojarse en cualquier servidor web que pueda servir activos estáticos HTML/CSS/JS. Esto incluye herramientas como AWS S3, Nginx o Apache. -Ejecutarse como una [exportación estática](/docs/app/guides/static-exports) **no soporta** funcionalidades de Next.js que requieran un servidor. [Aprende más](/docs/app/guides/static-exports#unsupported-features). +Ejecutarse como una [exportación estática](/docs/app/guides/static-exports) **no soporta** características de Next.js que requieran un servidor. [Aprende más](/docs/app/guides/static-exports#unsupported-features). ### Plantillas @@ -69,9 +71,9 @@ Ejecutarse como una [exportación estática](/docs/app/guides/static-exports) ** ## Adaptadores -Next.js puede adaptarse para ejecutarse en diferentes plataformas y aprovechar sus capacidades de infraestructura. +Next.js puede adaptarse para ejecutarse en diferentes plataformas y soportar sus capacidades de infraestructura. -Consulta la documentación de cada proveedor para información sobre las funcionalidades soportadas de Next.js: +Consulta la documentación de cada proveedor para información sobre características soportadas de Next.js: - [AWS Amplify Hosting](https://docs.amplify.aws/nextjs/start/quickstart/nextjs-app-router-client-components) - [Cloudflare](https://developers.cloudflare.com/workers/frameworks/framework-guides/nextjs) @@ -79,4 +81,4 @@ Consulta la documentación de cada proveedor para información sobre las funcion - [Netlify](https://docs.netlify.com/frameworks/next-js/overview/#next-js-support-on-netlify) - [Vercel](https://vercel.com/docs/frameworks/nextjs) -> **Nota:** Estamos trabajando en una [API de Adaptadores de Implementación](https://github.com/vercel/next.js/discussions/77740) para que todas las plataformas puedan adoptarla. Una vez completada, añadiremos documentación sobre cómo escribir tus propios adaptadores. \ No newline at end of file +> **Nota:** Estamos trabajando en una [API de Adaptadores de Despliegue](https://github.com/vercel/next.js/discussions/77740) para que todas las plataformas puedan adoptarla. Una vez completada, añadiremos documentación sobre cómo escribir tus propios adaptadores. \ No newline at end of file diff --git a/apps/docs/content/es/docs/01-app/02-guides/local-development.mdx b/apps/docs/content/es/docs/01-app/02-guides/local-development.mdx index c20dea0f..3e9657c5 100644 --- a/apps/docs/content/es/docs/01-app/02-guides/local-development.mdx +++ b/apps/docs/content/es/docs/01-app/02-guides/local-development.mdx @@ -1,18 +1,18 @@ --- -source-updated-at: 2025-05-19T22:31:51.000Z -translation-updated-at: 2025-06-02T20:00:34.801Z +source-updated-at: 2025-06-05T23:52:35.000Z +translation-updated-at: 2025-06-06T16:38:13.696Z title: Cómo optimizar tu entorno de desarrollo local nav_title: Entorno de desarrollo -description: Aprende a optimizar tu entorno de desarrollo local con Next.js. +description: Aprende cómo optimizar tu entorno de desarrollo local con Next.js. --- -Next.js está diseñado para ofrecer una excelente experiencia de desarrollo. A medida que tu aplicación crece, podrías notar tiempos de compilación más lentos durante el desarrollo local. Esta guía te ayudará a identificar y solucionar problemas comunes de rendimiento en tiempo de compilación. +Next.js está diseñado para proporcionar una excelente experiencia de desarrollo. A medida que tu aplicación crece, podrías notar tiempos de compilación más lentos durante el desarrollo local. Esta guía te ayudará a identificar y solucionar problemas comunes de rendimiento en tiempo de compilación. -## Desarrollo local vs. producción +## Desarrollo local vs producción El proceso de desarrollo con `next dev` es diferente a `next build` y `next start`. -`next dev` compila las rutas de tu aplicación a medida que las abres o navegas a ellas. Esto te permite iniciar el servidor de desarrollo sin esperar a que se compile cada ruta de tu aplicación, lo que es más rápido y utiliza menos memoria. La compilación para producción aplica otras optimizaciones, como minimizar archivos y crear hashes de contenido, que no son necesarias para el desarrollo local. +`next dev` compila las rutas de tu aplicación a medida que las abres o navegas a ellas. Esto te permite iniciar el servidor de desarrollo sin esperar a que se compile cada ruta de tu aplicación, lo que es más rápido y usa menos memoria. Ejecutar una compilación de producción aplica otras optimizaciones, como minimizar archivos y crear hashes de contenido, que no son necesarios para el desarrollo local. ## Mejorar el rendimiento del desarrollo local @@ -52,7 +52,7 @@ import Icon1 from 'react-icons/md/Icon1' import Icon2 from 'react-icons/md/Icon2' ``` -Bibliotecas como `react-icons` incluyen muchos conjuntos de iconos diferentes. Elige un conjunto y mantente con él. +Bibliotecas como `react-icons` incluyen muchos conjuntos de iconos diferentes. Elige un conjunto y quédate con él. Por ejemplo, si tu aplicación usa `react-icons` e importa todos estos: @@ -61,11 +61,11 @@ Por ejemplo, si tu aplicación usa `react-icons` e importa todos estos: - `tb` (tabler-icons) - `cg` (cssgg) -Combinados serán decenas de miles de módulos que el compilador debe manejar, incluso si solo usas una importación de cada uno. +Combinados serán decenas de miles de módulos que el compilador tiene que manejar, incluso si solo usas una importación de cada uno. -### Archivos barrel (barrel files) +### Archivos barrel -Los "archivos barrel" son archivos que exportan muchos elementos de otros archivos. Pueden ralentizar las compilaciones porque el compilador debe analizarlos para encontrar si hay efectos secundarios en el ámbito del módulo al usar la importación. +Los "archivos barrel" son archivos que exportan muchos elementos de otros archivos. Pueden ralentizar las compilaciones porque el compilador tiene que analizarlos para encontrar si hay efectos secundarios en el ámbito del módulo al usar la importación. Intenta importar directamente desde archivos específicos cuando sea posible. [Aprende más sobre archivos barrel](https://vercel.com/blog/how-we-optimized-package-imports-in-next-js) y las optimizaciones integradas en Next.js. @@ -87,18 +87,18 @@ Turbopack analiza automáticamente las importaciones y las optimiza. No requiere Si usas Tailwind CSS, asegúrate de que esté configurado correctamente. -Un error común es configurar el array `content` de manera que incluya `node_modules` u otros directorios grandes de archivos que no deberían escanearse. +Un error común es configurar tu array `content` de manera que incluya `node_modules` u otros directorios grandes de archivos que no deberían escanearse. -Tailwind CSS versión 3.4.8 o superior te advertirá sobre configuraciones que podrían ralentizar tu compilación. +Tailwind CSS versión 3.4.8 o posterior te advertirá sobre configuraciones que podrían ralentizar tu compilación. 1. En tu `tailwind.config.js`, sé específico sobre qué archivos escanear: ```jsx module.exports = { content: [ - './src/**/*.{js,ts,jsx,tsx}', // Correcto + './src/**/*.{js,ts,jsx,tsx}', // Bueno // Esto podría ser demasiado amplio - // También coincidirá con `packages/**/node_modules` + // Coincidirá con `packages/**/node_modules` también // '../../packages/**/*.{js,ts,jsx,tsx}', ], } @@ -125,16 +125,30 @@ Considera si realmente las necesitas para el desarrollo local. Opcionalmente, pu Si tu aplicación es muy grande, podría necesitar más memoria. -[Aprende más sobre optimización de uso de memoria](/docs/app/guides/memory-usage). +[Aprende más sobre optimización del uso de memoria](/docs/app/guides/memory-usage). -### 7. Componentes del servidor y obtención de datos +### 7. Componentes de Servidor y obtención de datos -Los cambios en los Componentes del Servidor hacen que toda la página se vuelva a renderizar localmente para mostrar los nuevos cambios, lo que incluye obtener nuevos datos para el componente. +Los cambios en los Componentes de Servidor hacen que toda la página se vuelva a renderizar localmente para mostrar los nuevos cambios, lo que incluye obtener nuevos datos para el componente. -La opción experimental `serverComponentsHmrCache` te permite almacenar en caché las respuestas de `fetch` en Componentes del Servidor a través de refrescos de Hot Module Replacement (HMR) en el desarrollo local. Esto resulta en respuestas más rápidas y costos reducidos para llamadas API facturadas. +La opción experimental `serverComponentsHmrCache` te permite almacenar en caché las respuestas de `fetch` en Componentes de Servidor a través de refrescos de Hot Module Replacement (HMR) en el desarrollo local. Esto resulta en respuestas más rápidas y costos reducidos para llamadas API facturadas. [Aprende más sobre la opción experimental](/docs/app/api-reference/config/next-config-js/serverComponentsHmrCache). +### 8. Considera el desarrollo local sobre Docker + +Si usas Docker para desarrollo en Mac o Windows, podrías experimentar un rendimiento significativamente más lento en comparación con ejecutar Next.js localmente. + +El acceso al sistema de archivos de Docker en Mac y Windows puede hacer que Hot Module Replacement (HMR) tome segundos o incluso minutos, mientras que la misma aplicación se ejecuta con HMR rápido cuando se desarrolla localmente. + +Esta diferencia de rendimiento se debe a cómo Docker maneja las operaciones del sistema de archivos fuera de entornos Linux. Para la mejor experiencia de desarrollo: + +- Usa desarrollo local (`npm run dev` o `pnpm dev`) en lugar de Docker durante el desarrollo +- Reserva Docker para implementaciones de producción y pruebas de compilaciones de producción +- Si debes usar Docker para desarrollo, considera usar Docker en una máquina o VM Linux + +[Aprende más sobre implementación con Docker](/docs/app/getting-started/deploying#docker) para uso en producción. + ## Herramientas para encontrar problemas ### Registro detallado de fetch @@ -151,12 +165,12 @@ module.exports = { } ``` -[Aprende más sobre el registro de fetch](/docs/app/api-reference/config/next-config-js/logging). +[Aprende más sobre registro de fetch](/docs/app/api-reference/config/next-config-js/logging). -## Trazado con Turbopack +## Trazado de Turbopack -El trazado con Turbopack es una herramienta que te ayuda a entender el rendimiento de tu aplicación durante el desarrollo local. -Proporciona información detallada sobre el tiempo que tarda cada módulo en compilarse y cómo están relacionados. +El trazado de Turbopack es una herramienta que te ayuda a entender el rendimiento de tu aplicación durante el desarrollo local. +Proporciona información detallada sobre el tiempo que toma compilar cada módulo y cómo están relacionados. 1. Asegúrate de tener la última versión de Next.js instalada. 1. Genera un archivo de trazado de Turbopack: @@ -181,8 +195,8 @@ Proporciona información detallada sobre el tiempo que tarda cada módulo en com ``` 1. Una vez que el servidor de trazado esté en ejecución, puedes ver el trazado en https://trace.nextjs.org/. -1. Por defecto, el visor de trazado agrega tiempos; para ver cada tiempo individual puedes cambiar de "Agregado en orden" a "Intervalos en orden" en la parte superior derecha del visor. +1. Por defecto, el visor de trazado agregará los tiempos; para ver cada tiempo individual puedes cambiar de "Agregado en orden" a "Intervalos en orden" en la parte superior derecha del visor. ## ¿Sigues teniendo problemas? -Comparte el archivo de trazado generado en la sección [Trazado con Turbopack](#turbopack-tracing) y compártelo en [GitHub Discussions](https://github.com/vercel/next.js/discussions) o [Discord](https://nextjs.org/discord). \ No newline at end of file +Comparte el archivo de trazado generado en la sección [Trazado de Turbopack](#trazado-de-turbopack) y compártelo en [GitHub Discussions](https://github.com/vercel/next.js/discussions) o [Discord](https://nextjs.org/discord). \ No newline at end of file diff --git a/apps/docs/content/es/docs/01-app/02-guides/memory-usage.mdx b/apps/docs/content/es/docs/01-app/02-guides/memory-usage.mdx index c3686ac8..265d2f07 100644 --- a/apps/docs/content/es/docs/01-app/02-guides/memory-usage.mdx +++ b/apps/docs/content/es/docs/01-app/02-guides/memory-usage.mdx @@ -1,9 +1,9 @@ --- -source-updated-at: 2025-05-16T04:52:11.000Z -translation-updated-at: 2025-06-02T20:00:00.633Z +source-updated-at: 2025-06-05T15:29:30.000Z +translation-updated-at: 2025-06-06T16:38:02.061Z title: Cómo optimizar el uso de memoria nav_title: Uso de memoria -description: Optimiza la memoria utilizada por tu aplicación en desarrollo y producción. +description: Optimiza el uso de memoria de tu aplicación en desarrollo y producción. --- A medida que las aplicaciones crecen y se enriquecen con más funciones, pueden demandar más recursos al desarrollar localmente o al crear builds de producción. @@ -18,15 +18,15 @@ El [Analizador de paquetes (Bundle Analyzer)](/docs/app/guides/package-bundling) ## Prueba `experimental.webpackMemoryOptimizations` -A partir de la versión `v15.0.0`, puedes agregar `experimental.webpackMemoryOptimizations: true` a tu archivo `next.config.js` para cambiar el comportamiento en Webpack que reduce el uso máximo de memoria, pero puede aumentar ligeramente los tiempos de compilación. +A partir de `v15.0.0`, puedes agregar `experimental.webpackMemoryOptimizations: true` a tu archivo `next.config.js` para cambiar el comportamiento en Webpack que reduce el uso máximo de memoria, pero puede aumentar ligeramente los tiempos de compilación. -> **Es bueno saberlo**: Esta característica es actualmente experimental para probarla en más proyectos primero, pero se considera de bajo riesgo. +> **Es bueno saberlo**: Esta característica es actualmente experimental para probar en más proyectos primero, pero se considera de bajo riesgo. ## Ejecutar `next build` con `--experimental-debug-memory-usage` -A partir de la versión `14.2.0`, puedes ejecutar `next build --experimental-debug-memory-usage` para ejecutar el build en un modo donde Next.js imprimirá información sobre el uso de memoria continuamente durante el build, como el uso del heap y estadísticas de recolección de basura. También se tomarán instantáneas del heap automáticamente cuando el uso de memoria se acerque al límite configurado. +A partir de `14.2.0`, puedes ejecutar `next build --experimental-debug-memory-usage` para ejecutar el build en un modo donde Next.js imprimirá información sobre el uso de memoria continuamente durante el build, como el uso del heap y estadísticas de recolección de basura. También se tomarán instantáneas del heap automáticamente cuando el uso de memoria se acerque al límite configurado. -> **Es bueno saberlo**: Esta característica no es compatible con la opción de worker de build de Webpack, que se habilita automáticamente a menos que tengas una configuración personalizada de Webpack. +> **Es bueno saberlo**: Esta característica no es compatible con la opción de worker de build de Webpack que se activa automáticamente a menos que tengas una configuración personalizada de Webpack. ## Grabar un perfil del heap @@ -40,7 +40,7 @@ node --heap-prof node_modules/next/dist/bin/next build Al final del build, Node.js creará un archivo `.heapprofile`. -En Chrome DevTools, puedes abrir la pestaña "Memory" y hacer clic en el botón "Load Profile" para visualizar el archivo. +En Chrome DevTools, puedes abrir la pestaña Memory y hacer clic en el botón "Load Profile" para visualizar el archivo. ## Analizar una instantánea del heap @@ -49,19 +49,19 @@ Puedes usar una herramienta de inspector para analizar el uso de memoria de la a Al ejecutar el comando `next build` o `next dev`, agrega `NODE_OPTIONS=--inspect` al inicio del comando. Esto expondrá el agente de inspector en el puerto predeterminado. Si deseas pausar antes de que comience cualquier código de usuario, puedes pasar `--inspect-brk` en su lugar. Mientras el proceso se ejecuta, puedes usar una herramienta como Chrome DevTools para conectarte al puerto de depuración y grabar/analizar una instantánea del heap para ver qué memoria se está reteniendo. -A partir de la versión `14.2.0`, también puedes ejecutar `next build` con el flag `--experimental-debug-memory-usage` para facilitar la toma de instantáneas del heap. +A partir de `14.2.0`, también puedes ejecutar `next build` con el flag `--experimental-debug-memory-usage` para facilitar la toma de instantáneas del heap. Mientras se ejecuta en este modo, puedes enviar una señal `SIGUSR2` al proceso en cualquier momento, y el proceso tomará una instantánea del heap. La instantánea del heap se guardará en la raíz del proyecto de la aplicación Next.js y se puede cargar en cualquier analizador de heap, como Chrome DevTools, para ver qué memoria se está reteniendo. Este modo aún no es compatible con los workers de build de Webpack. -Consulta [cómo grabar y analizar instantáneas del heap](https://developer.chrome.com/docs/devtools/memory-problems/heap-snapshots) para obtener más información. +Consulta [cómo grabar y analizar instantáneas del heap](https://developer.chrome.com/docs/devtools/memory-problems/heap-snapshots) para más información. ## Worker de build de Webpack -El worker de build de Webpack te permite ejecutar compilaciones de Webpack dentro de un worker separado de Node.js, lo que disminuirá el uso de memoria de tu aplicación durante los builds. +El worker de build de Webpack te permite ejecutar compilaciones de Webpack dentro de un worker Node.js separado, lo que disminuirá el uso de memoria de tu aplicación durante los builds. -Esta opción está habilitada por defecto si tu aplicación no tiene una configuración personalizada de Webpack a partir de la versión `v14.1.0`. +Esta opción está habilitada por defecto si tu aplicación no tiene una configuración personalizada de Webpack a partir de `v14.1.0`. Si estás usando una versión anterior de Next.js o tienes una configuración personalizada de Webpack, puedes habilitar esta opción configurando `experimental.webpackBuildWorker: true` en tu `next.config.js`. @@ -93,7 +93,7 @@ const nextConfig = { export default nextConfig ``` -## Deshabilitar el análisis estático +## Deshabilitar análisis estático La verificación de tipos y el linting pueden requerir mucha memoria, especialmente en proyectos grandes. Sin embargo, la mayoría de los proyectos tienen un runner de CI dedicado que ya maneja estas tareas. @@ -103,13 +103,13 @@ Cuando el build produce problemas de memoria insuficiente durante el paso "Linti /** @type {import('next').NextConfig} */ const nextConfig = { eslint: { - // Advertencia: Esto permite que los builds de producción se completen con éxito incluso si + // Advertencia: Esto permite que los builds de producción se completen exitosamente incluso si // tu proyecto tiene errores de ESLint. ignoreDuringBuilds: true, }, typescript: { // !! ADVERTENCIA !! - // Permite peligrosamente que los builds de producción se completen con éxito incluso si + // Permite peligrosamente que los builds de producción se completen exitosamente incluso si // tu proyecto tiene errores de tipo. // !! ADVERTENCIA !! ignoreBuildErrors: true, @@ -126,14 +126,47 @@ Ten en cuenta que esto puede producir despliegues defectuosos debido a errores d Recomendamos encarecidamente promover builds a producción solo después de que se haya completado el análisis estático. Si despliegas en Vercel, puedes consultar la [guía para despliegues en staging](https://vercel.com/docs/deployments/managing-deployments#staging-and-promoting-a-production-deployment) para aprender cómo promover builds a producción después de que las tareas personalizadas hayan tenido éxito. -## Deshabilitar los source maps +## Deshabilitar source maps -La generación de source maps consume memoria adicional durante el proceso de build. +Generar source maps consume memoria adicional durante el proceso de build. Puedes deshabilitar la generación de source maps agregando `productionBrowserSourceMaps: false` y `experimental.serverSourceMaps: false` a tu configuración de Next.js. -> **Es bueno saberlo**: Algunos plugins pueden activar los source maps y pueden requerir configuración personalizada para deshabilitarlos. +> **Es bueno saberlo**: Algunos plugins pueden activar source maps y pueden requerir configuración personalizada para deshabilitarlos. ## Problemas de memoria en Edge -Next.js `v14.1.3` solucionó un problema de memoria al usar el runtime Edge. Actualiza a esta versión (o posterior) para ver si resuelve tu problema. \ No newline at end of file +Next.js `v14.1.3` solucionó un problema de memoria al usar el runtime Edge. Actualiza a esta versión (o posterior) para ver si resuelve tu problema. + +## Precarga de entradas + +Cuando el servidor de Next.js inicia, precarga los módulos JavaScript de cada página en memoria, en lugar de en el momento de la solicitud. + +Esta optimización permite tiempos de respuesta más rápidos, a cambio de una mayor huella de memoria inicial. + +Para deshabilitar esta optimización, establece el flag `experimental.preloadEntriesOnStart` en `false`. + +```ts filename="next.config.ts" switcher +import type { NextConfig } from 'next' + +const config: NextConfig = { + experimental: { + preloadEntriesOnStart: false, + }, +} + +export default config +``` + +```js filename="next.config.mjs" switcher +/** @type {import('next').NextConfig} */ +const config = { + experimental: { + preloadEntriesOnStart: false, + }, +} + +export default config +``` + +Next.js no descarga estos módulos JavaScript, lo que significa que incluso con esta optimización deshabilitada, la huella de memoria de tu servidor Next.js eventualmente será la misma si todas las páginas son solicitadas eventualmente. \ No newline at end of file diff --git a/apps/docs/content/es/docs/01-app/05-api-reference/04-functions/generate-metadata.mdx b/apps/docs/content/es/docs/01-app/05-api-reference/04-functions/generate-metadata.mdx index e59dd00a..f8d6dd13 100644 --- a/apps/docs/content/es/docs/01-app/05-api-reference/04-functions/generate-metadata.mdx +++ b/apps/docs/content/es/docs/01-app/05-api-reference/04-functions/generate-metadata.mdx @@ -1,8 +1,8 @@ --- -source-updated-at: 2025-06-01T01:32:20.000Z -translation-updated-at: 2025-06-02T20:14:42.431Z +source-updated-at: 2025-06-05T15:29:30.000Z +translation-updated-at: 2025-06-06T16:44:45.031Z title: generateMetadata -description: Aprende cómo agregar metadatos a tu aplicación Next.js para mejorar la optimización para motores de búsqueda (SEO) y la capacidad de compartir en la web. +description: Aprende cómo agregar metadatos a tu aplicación Next.js para mejorar la optimización en motores de búsqueda (SEO) y la capacidad de compartir en la web. related: title: Próximos pasos description: Consulta todas las opciones de la API de Metadatos. @@ -41,7 +41,7 @@ export default function Page() {} ## Función `generateMetadata` -Los metadatos dinámicos que dependen de **información dinámica**, como los parámetros de ruta actuales, datos externos o `metadata` en segmentos padres, pueden configurarse exportando una función `generateMetadata` que devuelva un [objeto `Metadata`](#campos-de-metadatos). +Los metadatos dinámicos que dependen de **información dinámica**, como parámetros de ruta actuales, datos externos o `metadata` en segmentos padres, pueden configurarse exportando una función `generateMetadata` que devuelve un [objeto `Metadata`](#campos-de-metadatos). ```tsx filename="app/products/[id]/page.tsx" switcher import type { Metadata, ResolvingMetadata } from 'next' @@ -97,13 +97,13 @@ export async function generateMetadata({ params, searchParams }, parent) { export default function Page({ params, searchParams }) {} ``` -> **Bueno saber**: +> **Es bueno saber**: > > - Los metadatos pueden agregarse a archivos `layout.js` y `page.js`. > - Next.js resolverá automáticamente los metadatos y creará las etiquetas `` relevantes para la página. > - Las exportaciones del objeto `metadata` y la función `generateMetadata` **solo son compatibles en Componentes de Servidor**. > - No puedes exportar tanto el objeto `metadata` como la función `generateMetadata` desde el mismo segmento de ruta. -> - Las solicitudes `fetch` dentro de `generateMetadata` se [memorizan](/docs/app/deep-dive/caching#request-memoization) automáticamente para los mismos datos entre `generateMetadata`, `generateStaticParams`, Layouts, Pages y Componentes de Servidor. +> - Las solicitudes `fetch` dentro de `generateMetadata` se [memorizan](/docs/app/deep-dive/caching#request-memoization) automáticamente para los mismos datos entre `generateMetadata`, `generateStaticParams`, Layouts, Pages y Server Components. > - Se puede usar [`cache` de React](/docs/app/deep-dive/caching#react-cache-function) si `fetch` no está disponible. > - Los [metadatos basados en archivos](/docs/app/api-reference/file-conventions/metadata) tienen mayor prioridad y anularán el objeto `metadata` y la función `generateMetadata`. @@ -132,14 +132,14 @@ La función `generateMetadata` acepta los siguientes parámetros: - `parent` - Una promesa de los metadatos resueltos de los segmentos de ruta padres. -### Retorno +### Devuelve `generateMetadata` debe devolver un [objeto `Metadata`](#campos-de-metadatos) que contenga uno o más campos de metadatos. -> **Bueno saber**: +> **Es bueno saber**: > > - Si los metadatos no dependen de información en tiempo de ejecución, deben definirse usando el objeto [`metadata` estático](#el-objeto-metadata) en lugar de `generateMetadata`. -> - Las solicitudes `fetch` se [memorizan](/docs/app/deep-dive/caching#request-memoization) automáticamente para los mismos datos entre `generateMetadata`, `generateStaticParams`, Layouts, Pages y Componentes de Servidor. Se puede usar [`cache` de React](/docs/app/deep-dive/caching#react-cache-function) si `fetch` no está disponible. +> - Las solicitudes `fetch` se [memorizan](/docs/app/deep-dive/caching#request-memoization) automáticamente para los mismos datos entre `generateMetadata`, `generateStaticParams`, Layouts, Pages y Server Components. Se puede usar [`cache` de React](/docs/app/deep-dive/caching#react-cache-function) si `fetch` no está disponible. > - `searchParams` solo está disponible en segmentos `page.js`. > - Los métodos [`redirect()`](/docs/app/api-reference/functions/redirect) y [`notFound()`](/docs/app/api-reference/functions/not-found) de Next.js también pueden usarse dentro de `generateMetadata`. @@ -195,7 +195,7 @@ import type { Metadata } from 'next' export const metadata: Metadata = { title: { template: '%s | Acme', - default: 'Acme', // se requiere un valor predeterminado al crear una plantilla + default: 'Acme', // se requiere un valor por defecto al crear una plantilla }, } ``` @@ -204,7 +204,7 @@ export const metadata: Metadata = { export const metadata = { title: { template: '%s | Acme', - default: 'Acme', // se requiere un valor predeterminado al crear una plantilla + default: 'Acme', // se requiere un valor por defecto al crear una plantilla }, } ``` @@ -227,7 +227,7 @@ export const metadata = { // Salida: About | Acme ``` -> **Bueno saber**: +> **Es bueno saber**: > > - `title.template` aplica a segmentos de ruta **hijos** y **no** al segmento donde se define. Esto significa: > @@ -281,7 +281,7 @@ export const metadata = { // Salida: About ``` -> **Bueno saber**: +> **Es bueno saber**: > > - `layout.js` > @@ -299,12 +299,12 @@ export const metadata = { ```jsx filename="layout.js | page.js" export const metadata = { - description: 'The React Framework for the Web', + description: 'El Framework de React para la Web', } ``` ```html filename=" output" hideLineNumbers - + ``` ### Otros campos @@ -345,7 +345,7 @@ export const metadata = { `metadataBase` es una opción conveniente para establecer un prefijo de URL base para campos de `metadata` que requieren una URL completa. - `metadataBase` permite que los campos de `metadata` basados en URL definidos en el **segmento de ruta actual y siguientes** usen una **ruta relativa** en lugar de una URL absoluta que de otro modo sería requerida. -- La ruta relativa del campo se combinará con `metadataBase` para formar una URL completa. +- La ruta relativa del campo se compondrá con `metadataBase` para formar una URL completa. ```jsx filename="layout.js | page.js" export const metadata = { @@ -370,21 +370,21 @@ export const metadata = { ``` -> **Bueno saber**: +> **Es bueno saber**: > > - `metadataBase` normalmente se establece en el archivo raíz `app/layout.js` para aplicar a campos de `metadata` basados en URL en todas las rutas. > - Todos los campos de `metadata` basados en URL que requieren URLs absolutas pueden configurarse con una opción `metadataBase`. -> - `metadataBase` puede contener un subdominio, por ejemplo `https://app.acme.com`, o una ruta base, por ejemplo `https://acme.com/start/from/here`. +> - `metadataBase` puede contener un subdominio, p.ej. `https://app.acme.com` o una ruta base, p.ej. `https://acme.com/start/from/here` > - Si un campo de `metadata` proporciona una URL absoluta, `metadataBase` será ignorado. > - Usar una ruta relativa en un campo de `metadata` basado en URL sin configurar un `metadataBase` causará un error de compilación. -> - Next.js normalizará barras duplicadas entre `metadataBase` (por ejemplo `https://acme.com/`) y un campo relativo (por ejemplo `/path`) a una sola barra (por ejemplo `https://acme.com/path`). +> - Next.js normalizará barras duplicadas entre `metadataBase` (p.ej. `https://acme.com/`) y un campo relativo (p.ej. `/path`) a una sola barra (p.ej. `https://acme.com/path`) #### Composición de URL La composición de URL favorece la intención del desarrollador sobre la semántica predeterminada de recorrido de directorios. - Las barras finales entre `metadataBase` y campos de `metadata` se normalizan. -- Una ruta "absoluta" en un campo de `metadata` (que normalmente reemplazaría toda la ruta de la URL) se trata como una ruta "relativa" (comenzando desde el final de `metadataBase`). +- Una ruta "absoluta" en un campo de `metadata` (que normalmente reemplazaría toda la ruta de URL) se trata como una ruta "relativa" (comenzando desde el final de `metadataBase`). Por ejemplo, dado el siguiente `metadataBase`: @@ -420,7 +420,7 @@ Cualquier campo de `metadata` que herede el `metadataBase` anterior y establezca export const metadata = { openGraph: { title: 'Next.js', - description: 'The React Framework for the Web', + description: 'El Framework React para la Web', url: 'https://nextjs.org', siteName: 'Next.js', images: [ @@ -456,7 +456,7 @@ export const metadata = { ```html filename=" output" hideLineNumbers - + @@ -466,7 +466,7 @@ export const metadata = { - + @@ -478,7 +478,7 @@ export const metadata = { export const metadata = { openGraph: { title: 'Next.js', - description: 'The React Framework for the Web', + description: 'El Framework React para la Web', type: 'article', publishedTime: '2023-01-01T00:00:00.000Z', authors: ['Seb', 'Josh'], @@ -488,7 +488,7 @@ export const metadata = { ```html filename=" output" hideLineNumbers - + @@ -497,7 +497,7 @@ export const metadata = { > **Nota importante**: > -> - Puede ser más conveniente usar la [API de Metadata basada en archivos](/docs/app/api-reference/file-conventions/metadata/opengraph-image#image-files-jpg-png-gif) para imágenes de Open Graph. En lugar de tener que sincronizar la exportación de configuración con archivos reales, la API basada en archivos generará automáticamente los metadatos correctos. +> - Puede ser más conveniente usar la [API de Metadatos basada en archivos](/docs/app/api-reference/file-conventions/metadata/opengraph-image#image-files-jpg-png-gif) para imágenes de Open Graph. En lugar de tener que sincronizar la exportación de configuración con archivos reales, la API basada en archivos generará automáticamente los metadatos correctos. ### `robots` @@ -531,7 +531,7 @@ export const metadata: Metadata = { ### `icons` -> **Nota importante**: Recomendamos usar la [API de Metadata basada en archivos](/docs/app/api-reference/file-conventions/metadata/app-icons#image-files-ico-jpg-png) para iconos cuando sea posible. En lugar de tener que sincronizar la exportación de configuración con archivos reales, la API basada en archivos generará automáticamente los metadatos correctos. +> **Nota importante**: Recomendamos usar la [API de Metadatos basada en archivos](/docs/app/api-reference/file-conventions/metadata/app-icons#image-files-ico-jpg-png) para iconos cuando sea posible. En lugar de tener que sincronizar la exportación de configuración con archivos reales, la API basada en archivos generará automáticamente los metadatos correctos. ```jsx filename="layout.js | page.js" export const metadata = { @@ -602,11 +602,11 @@ export const metadata = { ### `themeColor` -> **Obsoleto**: La opción `themeColor` en `metadata` está obsoleta a partir de Next.js 14. Utilice la [configuración de `viewport`](/docs/app/api-reference/functions/generate-viewport) en su lugar. +> **Obsoleto**: La opción `themeColor` en `metadata` está obsoleta a partir de Next.js 14. Utilice la [configuración `viewport`](/docs/app/api-reference/functions/generate-viewport) en su lugar. ### `colorScheme` -> **Obsoleto**: La opción `colorScheme` en `metadata` está obsoleta a partir de Next.js 14. Utilice la [configuración de `viewport`](/docs/app/api-reference/functions/generate-viewport) en su lugar. +> **Obsoleto**: La opción `colorScheme` en `metadata` está obsoleta a partir de Next.js 14. Utilice la [configuración `viewport`](/docs/app/api-reference/functions/generate-viewport) en su lugar. ### `manifest` @@ -626,14 +626,14 @@ export const metadata = { La especificación de Twitter se usa (sorprendentemente) para más que solo X (anteriormente conocido como Twitter). -Más información en la [referencia de marcado de Twitter Cards](https://developer.x.com/en/docs/twitter-for-websites/cards/overview/markup). +Más información sobre la [referencia de marcado de Twitter Cards](https://developer.x.com/en/docs/twitter-for-websites/cards/overview/markup). ```jsx filename="layout.js | page.js" export const metadata = { twitter: { card: 'summary_large_image', title: 'Next.js', - description: 'The React Framework for the Web', + description: 'El Framework React para la Web', siteId: '1467726470533754880', creator: '@nextjs', creatorId: '1467726470533754880', @@ -648,7 +648,7 @@ export const metadata = { - + ``` @@ -657,13 +657,13 @@ export const metadata = { twitter: { card: 'app', title: 'Next.js', - description: 'The React Framework for the Web', + description: 'El Framework React para la Web', siteId: '1467726470533754880', creator: '@nextjs', creatorId: '1467726470533754880', images: { url: 'https://nextjs.org/og.png', - alt: 'Next.js Logo', + alt: 'Logo de Next.js', }, app: { name: 'twitter_app', @@ -686,10 +686,10 @@ export const metadata = { - + - + @@ -702,7 +702,7 @@ export const metadata = { ### `viewport` -> **Obsoleto**: La opción `viewport` en `metadata` está obsoleta a partir de Next.js 14. Utilice la [configuración de `viewport`](/docs/app/api-reference/functions/generate-viewport) en su lugar. +> **Obsoleto**: La opción `viewport` en `metadata` está obsoleta a partir de Next.js 14. Utilice la [configuración `viewport`](/docs/app/api-reference/functions/generate-viewport) en su lugar. ### `verification` @@ -889,9 +889,9 @@ export const metadata = { ### `facebook` -Puede conectar una aplicación de Facebook o una cuenta de Facebook a su página web para ciertos Plugins Sociales de Facebook [Documentación de Facebook](https://developers.facebook.com/docs/plugins/comments/#moderation-setup-instructions) +Puedes conectar una aplicación de Facebook o una cuenta de Facebook a tu página web para ciertos Plugins Sociales de Facebook [Documentación de Facebook](https://developers.facebook.com/docs/plugins/comments/#moderation-setup-instructions) -> **Nota importante**: Puede especificar appId o admins, pero no ambos. +> **Nota importante**: Puedes especificar appId o admins, pero no ambos. ```jsx filename="layout.js | page.js" export const metadata = { @@ -917,7 +917,7 @@ export const metadata = { ``` -Si desea generar múltiples etiquetas meta fb:admins puede usar un valor de array. +Si deseas generar múltiples etiquetas meta fb:admins puedes usar un valor de array. ```jsx filename="layout.js | page.js" export const metadata = { @@ -934,7 +934,7 @@ export const metadata = { ### `pinterest` -Puede habilitar o deshabilitar [Pinterest Rich Pins](https://developers.pinterest.com/docs/web-features/rich-pins-overview/) en su página web. +Puedes habilitar o deshabilitar [Pinterest Rich Pins](https://developers.pinterest.com/docs/web-features/rich-pins-overview/) en tu página web. ```jsx filename="layout.js | page.js" export const metadata = { @@ -950,7 +950,7 @@ export const metadata = { ### `other` -Todas las opciones de metadatos deberían estar cubiertas usando el soporte incorporado. Sin embargo, puede haber etiquetas de metadatos personalizadas específicas para su sitio, o nuevas etiquetas de metadatos recién lanzadas. Puede usar la opción `other` para renderizar cualquier etiqueta de metadatos personalizada. +Todas las opciones de metadatos deberían estar cubiertas usando el soporte incorporado. Sin embargo, puede haber etiquetas meta personalizadas específicas para tu sitio o nuevas etiquetas meta recién lanzadas. Puedes usar la opción `other` para renderizar cualquier etiqueta meta personalizada. ```jsx filename="layout.js | page.js" export const metadata = { @@ -964,7 +964,7 @@ export const metadata = { ``` -Si desea generar múltiples etiquetas meta con la misma clave puede usar un valor de array. +Si deseas generar múltiples etiquetas meta con la misma clave puedes usar un valor de array. ```jsx filename="layout.js | page.js" export const metadata = { @@ -978,13 +978,13 @@ export const metadata = { ``` -### Metadatos no admitidos +### Metadatos no compatibles -Los siguientes tipos de metadatos no tienen soporte incorporado actualmente. Sin embargo, aún pueden renderizarse en el layout o página en sí. +Los siguientes tipos de metadatos no tienen soporte incorporado actualmente. Sin embargo, aún pueden renderizarse en el layout o página directamente. ### Tipos -Puedes añadir seguridad de tipos a tus metadatos utilizando el tipo `Metadata`. Si estás usando el [plugin de TypeScript integrado](/docs/app/api-reference/config/typescript) en tu IDE, no necesitas añadir manualmente el tipo, pero aún puedes hacerlo explícitamente si lo deseas. +Puede agregar seguridad de tipos a sus metadatos utilizando el tipo `Metadata`. Si está utilizando el [plugin integrado de TypeScript](/docs/app/api-reference/config/typescript) en su IDE, no necesita agregar el tipo manualmente, pero aún puede hacerlo explícitamente si lo desea. #### Objeto `metadata` @@ -1058,7 +1058,7 @@ export async function generateMetadata( ##### Proyectos JavaScript -Para proyectos JavaScript, puedes usar JSDoc para añadir seguridad de tipos. +Para proyectos JavaScript, puede usar JSDoc para agregar seguridad de tipos. ```js filename="layout.js | page.js" /** @type {import("next").Metadata} */ @@ -1069,21 +1069,21 @@ export const metadata = { | Metadatos | Recomendación | | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `` | Usa encabezados HTTP apropiados mediante [`redirect()`](/docs/app/api-reference/functions/redirect), [Middleware](/docs/app/building-your-application/routing/middleware#nextresponse), [Encabezados de Seguridad](/docs/app/api-reference/config/next-config-js/headers) | -| `` | Renderiza la etiqueta en el layout o la página directamente. | -| `