Skip to content

Update translations #61

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 7 commits into from
Jun 6, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Original file line number Diff line number Diff line change
Expand Up @@ -203,8 +203,6 @@ Next.js **غير متحيز** بشأن كيفية تنظيم وترتيب ملف
height="863"
/>

</AppOnly>

### التنسيق المشترك (Colocation)

في دليل `app`، تحدد المجلدات المتداخلة بنية المسار (route). كل مجلد يمثل جزءًا من المسار (route segment) يتم تعيينه إلى جزء مقابل في مسار URL.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ npm install @vercel/otel @opentelemetry/sdk-logs @opentelemetry/api-logs @opente

بعد ذلك، قم بإنشاء ملف [`instrumentation.ts`](/docs/pages/guides/instrumentation) (أو `.js`) مخصص في **الدليل الجذري** للمشروع (أو داخل مجلد `src` إذا كنت تستخدم واحدًا):

</AppOnly>
</PagesOnly>

```ts filename="your-project/instrumentation.ts" switcher
import { registerOTel } from '@vercel/otel'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 `<PagesOnly>Content</PagesOnly>` component to add content that is specific to the Pages Router. Any shared content should not be wrapped in a component. */}
Original file line number Diff line number Diff line change
Expand Up @@ -203,8 +203,6 @@ Die Komponenten werden rekursiv in verschachtelten Routen gerendert, was bedeute
height="863"
/>

</AppOnly>

### 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.
Expand Down
2 changes: 0 additions & 2 deletions apps/docs/content/de/docs/01-app/02-guides/authentication.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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).

</AppOnly>

#### 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.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -485,7 +485,7 @@ Die Callback-Funktion wird mit einem Argument aufgerufen, einer Referenz auf das
<Image onLoadingComplete={(img) => console.log(img.naturalWidth)} />
```

</AppOnly>
</PagesOnly>

<AppOnly>

Expand Down Expand Up @@ -629,7 +629,7 @@ export default function myImageLoader({ src, width, quality }) {
}
```

</AppOnly>
</PagesOnly>

**Beispiel:**

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -203,8 +203,6 @@ Los componentes se renderizan recursivamente en rutas anidadas, lo que significa
height="863"
/>

</AppOnly>

### 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.
Expand Down
Original file line number Diff line number Diff line change
@@ -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 `<form>` usando la prop `action`,
- Se pasan a un `<button>` usando la prop `formAction`
- Se pasan a `useActionState`

## Creando Funciones del Servidor
## Creación de Funciones de Servidor

Una Función del Servidor puede definirse usando la directiva [`use server`](https://react.dev/reference/rsc/use-server). Puedes colocar la directiva al inicio de una función **asíncrona** para marcar la función como una Función del Servidor, o al inicio de un archivo separado para marcar todas las exportaciones de ese archivo.
Una Función de Servidor puede definirse usando la directiva [`use server`](https://react.dev/reference/rsc/use-server). Puedes colocar la directiva al inicio de una función **asíncrona** para marcarla como Función de Servidor, o al inicio de un archivo separado para marcar todas las exportaciones de ese archivo.

```ts filename="app/lib/actions.ts" switcher
export async function createPost(formData: FormData) {
Expand Down Expand Up @@ -67,13 +67,13 @@ export async function deletePost(formData) {
}
```

### Componentes del Servidor
### Componentes de Servidor

Las Funciones del Servidor pueden incluirse en línea en Componentes del Servidor añadiendo la directiva `"use server"` al inicio del cuerpo de la función:
Las Funciones de Servidor pueden incluirse en línea en Componentes de Servidor añadiendo la directiva `"use server"` al inicio del cuerpo de la función:

```tsx filename="app/page.tsx" switcher
export default function Page() {
// Acción del Servidor
// Acción de Servidor
async function createPost(formData: FormData) {
'use server'
// ...
Expand All @@ -85,7 +85,7 @@ export default function Page() {

```jsx filename="app/page.js" switcher
export default function Page() {
// Acción del Servidor
// Acción de Servidor
async function createPost(formData) {
'use server'
// ...
Expand All @@ -95,9 +95,9 @@ export default function Page() {
}
```

### Componentes del Cliente
### Componentes de Cliente

No es posible definir Funciones del Servidor en Componentes del Cliente. Sin embargo, puedes invocarlas en Componentes del Cliente importándolas desde un archivo que tenga la directiva `"use server"` al inicio:
No es posible definir Funciones de Servidor en Componentes de Cliente. Sin embargo, puedes invocarlas en Componentes de Cliente importándolas desde un archivo que tenga la directiva `"use server"` al inicio:

```ts filename="app/actions.ts" switcher
'use server'
Expand Down Expand Up @@ -131,16 +131,16 @@ export function Button() {
}
```

## Invocando Funciones del Servidor
## Invocación de Funciones de Servidor

Hay dos formas principales de invocar una Función del Servidor:
Hay dos formas principales de invocar una Función de Servidor:

1. [Formularios](#formularios) en Componentes del Servidor y del Cliente
2. [Manejadores de Eventos](#manejadores-de-eventos) en Componentes del Cliente
1. [Formularios](#formularios) en Componentes de Servidor y Cliente
2. [Manejadores de Eventos](#manejadores-de-eventos) en Componentes de Cliente

### Formularios

React extiende el elemento HTML [`<form>`](https://react.dev/reference/react-dom/components/form) para permitir que una Función del Servidor sea invocada con la prop `action` de HTML.
React extiende el elemento HTML [`<form>`](https://react.dev/reference/react-dom/components/form) para permitir que una Función de Servidor sea invocada con la prop `action` de HTML.

Cuando se invoca en un formulario, la función recibe automáticamente el objeto [`FormData`](https://developer.mozilla.org/docs/Web/API/FormData/FormData). Puedes extraer los datos usando los [métodos nativos de `FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData#instance_methods):

Expand Down Expand Up @@ -196,11 +196,11 @@ export async function createPost(formData) {
}
```

> **Nota importante:** Cuando se pasan a la prop `action`, las Funciones del Servidor también se conocen como _Acciones del Servidor (Server Actions)_.
> **Nota importante:** Cuando se pasan a la prop `action`, las Funciones de Servidor también se conocen como _Acciones de Servidor (Server Actions)_.

### Manejadores de Eventos

Puedes invocar una Función del Servidor en un Componente del Cliente usando manejadores de eventos como `onClick`.
Puedes invocar una Función de Servidor en un Componente de Cliente usando manejadores de eventos como `onClick`.

```tsx filename="app/like-button.tsx" switcher
'use client'
Expand All @@ -213,7 +213,7 @@ export default function LikeButton({ initialLikes }: { initialLikes: number }) {

return (
<>
<p>Me gustas totales: {likes}</p>
<p>Total de Me gusta: {likes}</p>
<button
onClick={async () => {
const updatedLikes = await incrementLike()
Expand All @@ -238,7 +238,7 @@ export default function LikeButton({ initialLikes }) {

return (
<>
<p>Me gustas totales: {likes}</p>
<p>Total de Me gusta: {likes}</p>
<button
onClick={async () => {
const updatedLikes = await incrementLike()
Expand All @@ -254,23 +254,23 @@ export default function LikeButton({ initialLikes }) {

## Ejemplos

### Mostrando un estado pendiente
### Mostrar un estado pendiente

Mientras se ejecuta una Función del Servidor, puedes mostrar un indicador de carga con el hook [`useActionState`](https://react.dev/reference/react/useActionState) de React. Este hook devuelve un booleano `pending`:
Durante la ejecución de una Función de Servidor, puedes mostrar un indicador de carga con el hook [`useActionState`](https://react.dev/reference/react/useActionState) de React. Este hook devuelve un booleano `pending`:

```tsx filename="app/ui/button.tsx" switcher
'use client'

import { useActionState } from 'react'
import { useActionState, startTransition } from 'react'
import { createPost } from '@/app/actions'
import { LoadingSpinner } from '@/app/ui/loading-spinner'

export function Button() {
const [state, action, pending] = useActionState(createPost, false)

return (
<button onClick={async () => action()}>
{pending ? <LoadingSpinner /> : 'Crear publicación'}
<button onClick={() => startTransition(action)}>
{pending ? <LoadingSpinner /> : 'Crear Publicación'}
</button>
)
}
Expand All @@ -279,24 +279,24 @@ 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'

export function Button() {
const [state, action, pending] = useActionState(createPost, false)

return (
<button onClick={async () => action()}>
{pending ? <LoadingSpinner /> : 'Crear publicación'}
<button onClick={() => startTransition(action)}>
{pending ? <LoadingSpinner /> : 'Crear Publicación'}
</button>
)
}
```

### 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'
Expand All @@ -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'
Expand Down
Loading