From 74ed0073ce965e3717f0fbc0662446c61b3807f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Castillo?= Date: Sun, 22 Dec 2024 19:33:49 +0100 Subject: [PATCH] i18n(es): translation of quick start to spanish (#3059) Co-authored-by: Paul Valladares <85648028+dreyfus92@users.noreply.github.com> --- .prettierignore | 1 + src/content/docs/es/start/frontend/nextjs.mdx | 193 +++++++++++------- src/content/docs/es/start/frontend/nuxt.mdx | 185 +++++++++-------- src/content/docs/es/start/frontend/qwik.mdx | 142 +++++++++++++ .../docs/es/start/frontend/sveltekit.mdx | 136 ++++++++++++ src/content/docs/es/start/frontend/trunk.mdx | 69 ++++--- src/content/docs/es/start/index.mdx | 50 +++++ .../docs/es/start/migrate/from-tauri-1.mdx | 54 +++-- src/content/docs/es/start/prerequisites.mdx | 130 ++++++++++-- 9 files changed, 736 insertions(+), 224 deletions(-) create mode 100644 src/content/docs/es/start/frontend/qwik.mdx create mode 100644 src/content/docs/es/start/frontend/sveltekit.mdx create mode 100644 src/content/docs/es/start/index.mdx diff --git a/.prettierignore b/.prettierignore index d0ebb4e924..97aa354326 100644 --- a/.prettierignore +++ b/.prettierignore @@ -30,5 +30,6 @@ src/content/docs/learn/Security/using-plugin-permissions.mdx src/content/docs/learn/Security/writing-plugin-permissions.mdx src/content/docs/start/frontend/qwik.mdx src/content/docs/zh-cn/start/frontend/qwik.mdx +src/content/docs/es/start/frontend/qwik.mdx src/content/docs/learn/splashscreen.mdx src/content/docs/security/http-headers.mdx diff --git a/src/content/docs/es/start/frontend/nextjs.mdx b/src/content/docs/es/start/frontend/nextjs.mdx index 43969fe697..ff0d9f7f1e 100644 --- a/src/content/docs/es/start/frontend/nextjs.mdx +++ b/src/content/docs/es/start/frontend/nextjs.mdx @@ -1,90 +1,131 @@ --- title: Next.js i18nReady: true +tableOfContents: + collapseLevel: 1 + minHeadingLevel: 2 + maxHeadingLevel: 5 --- -import { Tabs, TabItem } from '@astrojs/starlight/components'; +import { Tabs, TabItem, Steps } from '@astrojs/starlight/components'; import CommandTabs from '@components/CommandTabs.astro'; -Next.js es un framework para React. Aprende más sobre Next.js en https://nextjs.org. Esta guía es precisa a partir de Next.js 13.4.19. +Next.js es un meta framework para React. Aprende más sobre Next.js en https://nextjs.org. Esta guía es válida para Next.js 14.2.3. ## Checklist - Usa exports estáticos estableciendo `output: 'export'`. Tauri no soporta soluciones basadas en el servidor. -- Usa `out/` como `distDir` en `tauri.conf.json`. +- Usa el directorio `out` como `frontendDist` en `tauri.conf.json`. ## Ejemplo de Configuración -1. Actualiza la configuración de Tauri: - - - - -```json -// tauri.conf.json -{ - "build": { - "beforeDevCommand": "npm run dev", - "beforeBuildCommand": "npm run build", - "devPath": "http://localhost:3000", - "distDir": "../dist" - } -} -``` - - - - -```json -// tauri.conf.json -{ - "build": { - "beforeDevCommand": "yarn dev", - "beforeBuildCommand": "yarn generate", - "devPath": "http://localhost:3000", - "distDir": "../dist" - } -} -``` - - - - -```json -// tauri.conf.json -{ - "build": { - "beforeDevCommand": "pnpm dev", - "beforeBuildCommand": "pnpm generate", - "devPath": "http://localhost:3000", - "distDir": "../dist" - } -} -``` - - - - -2. Actualiza la configuración de Next.js: - -```ts -// next.conf.ts -const isProd = process.env.NODE_ENV === 'production'; -module.exports = async (phase, { defaultConfig }) => { - // En modo de desarrollo usamos TAURI_DEV_HOST para servir los archivos si es necesario - const internalHost = process.env.TAURI_DEV_HOST || 'localhost'; - const nextConfig = { - // Aségurate de que Next.js use SSG en lugar de SSR - // https://nextjs.org/docs/pages/building-your-application/deploying/static-exports - output: 'export', - // Nota: Esta función experimental es necesaria para usar NextJS Image en modo SSG. - // Consulta https://nextjs.org/docs/messages/export-image-api para ver diferentes soluciones. - images: { - unoptimized: true, - }, - // Configura assetPrefix o el servidor no resolverá correctamente tus archivos. - assetPrefix: isProd ? null : `http://${internalHost}:3000`, - }; - return nextConfig; -}; -``` + + +1. ##### Actualiza la configuración de Tauri + + + + + + ```json + // src-tauri/tauri.conf.json + { + "build": { + "beforeDevCommand": "npm run dev", + "beforeBuildCommand": "npm run build", + "devUrl": "http://localhost:3000", + "frontendDist": "../out" + } + } + ``` + + + + + + ```json + // src-tauri/tauri.conf.json + { + "build": { + "beforeDevCommand": "yarn dev", + "beforeBuildCommand": "yarn build", + "devUrl": "http://localhost:3000", + "frontendDist": "../out" + } + } + ``` + + + + + + ```json + // src-tauri/tauri.conf.json + { + "build": { + "beforeDevCommand": "pnpm dev", + "beforeBuildCommand": "pnpm build", + "devUrl": "http://localhost:3000", + "frontendDist": "../out" + } + } + ``` + + + + + + ```json + // src-tauri/tauri.conf.json + { + "build": { + "beforeDevCommand": "deno task dev", + "beforeBuildCommand": "deno task build", + "devUrl": "http://localhost:3000", + "frontendDist": "../out" + } + } + ``` + + + + + +2. ##### Actualiza la configuración de Next.js + + ```ts + // next.conf.mjs + const isProd = process.env.NODE_ENV === 'production'; + + const internalHost = process.env.TAURI_DEV_HOST || 'localhost'; + + /** @type {import('next').NextConfig} */ + const nextConfig = { + // Asegurate de que Next.js usa SSG en lugar de SSR + // https://nextjs.org/docs/pages/building-your-application/deploying/static-exports + output: 'export', + // Nota: Esta función es necesaria para usar el componente Image de Next.js en modo SSG. + // Consulta https://nextjs.org/docs/messages/export-image-api para ver algunas soluciones alternativas. + images: { + unoptimized: true, + }, + // Configura assetPrefix; de lo contrario, el servidor no resolverá correctamente tus recursos. + assetPrefix: isProd ? undefined : `http://${internalHost}:3000`, + }; + + export default nextConfig; + ``` + +3. ##### Actualiza la configuración de package.json + + ```json + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint", + "tauri": "tauri" + } + ``` + + diff --git a/src/content/docs/es/start/frontend/nuxt.mdx b/src/content/docs/es/start/frontend/nuxt.mdx index a3a4b0c7f0..88dd828b3a 100644 --- a/src/content/docs/es/start/frontend/nuxt.mdx +++ b/src/content/docs/es/start/frontend/nuxt.mdx @@ -1,102 +1,117 @@ --- title: Nuxt i18nReady: true +tableOfContents: + minHeadingLevel: 2 + maxHeadingLevel: 5 --- -import { Tabs, TabItem } from '@astrojs/starlight/components'; +import { Tabs, TabItem, Steps } from '@astrojs/starlight/components'; -Aprende más sobre Nuxt en https://nuxt.com. Esta guía es precisa a partir de Nuxt 3.7. +Nuxt es un meta framework para Vue. Aprende más sobre Nuxt en https://nuxt.com. Esta guía es válida para Nuxt 3.11. ## Checklist - Usa SSG estableciendo `ssr: false`. Tauri no soporta soluciones basadas en el servidor. -- Configura el host a `0.0.0.0`. +- Usa `process.env.TAURI_DEV_HOST` como dirección IP del servidor de desarrollo cuando se configure para ejecutarse en dispositivos físicos con iOS. - Usa `dist/` como `distDir` en `tauri.conf.json`. - Compila usando `nuxi generate`. - (Opcional): Deshabilita la telemetría estableciendo `telemetry: false` en `nuxt.config.ts`. ## Ejemplo de Configuración -1. Actualiza la configuración de Tauri: - - - - -```json -// tauri.conf.json -{ - "build": { - "beforeDevCommand": "npm run dev", - "beforeBuildCommand": "npm run generate", - "devPath": "http://localhost:3000", - "distDir": "../dist" - } -} -``` - - - - -```json -// tauri.conf.json -{ - "build": { - "beforeDevCommand": "yarn dev", - "beforeBuildCommand": "yarn generate", - "devPath": "http://localhost:3000", - "distDir": "../dist" - } -} -``` - - - - -```json -// tauri.conf.json -{ - "build": { - "beforeDevCommand": "pnpm dev", - "beforeBuildCommand": "pnpm generate", - "devPath": "http://localhost:3000", - "distDir": "../dist" - } -} -``` - - - - - -2. Actualiza la configuración de Nuxt: - -```ts -export default defineNuxtConfig({ - // (opcional) Habilita las herramientas de desarrollo de Nuxt - devtools: { enabled: true }, - // Habilita SSG - ssr: false, - vite: { - // Mejor soporte para la salida de Tauri CLI - clearScreen: false, - // Habilita las variables de entorno - // Las variables de entorno adicionales se pueden encontrar en - // https://v2.tauri.app/reference/environment-variables/ - envPrefix: ['VITE_', 'TAURI_'], - server: { - // Tauri requiere un puerto consistente - strictPort: true, - // Habilita el servidor de desarrollo para pueda ser accedido por otros dispositivos para el desarrollo móvil - host: '0.0.0.0', - hmr: { - // Usa un websocket para la recarga rápida en móviles - protocol: 'ws', - // Asegúrate de que esté disponible en la red - host: '0.0.0.0', - // Usa un puerto específico para hmr - port: 5183, + + +1. ##### Actualiza la configuración de Tauri: + + + + + + ```json + // tauri.conf.json + { + "build": { + "beforeDevCommand": "npm run dev", + "beforeBuildCommand": "npm run generate", + "devUrl": "http://localhost:3000", + "frontendDist": "../dist" + } + } + ``` + + + + + ```json + // tauri.conf.json + { + "build": { + "beforeDevCommand": "yarn dev", + "beforeBuildCommand": "yarn generate", + "devUrl": "http://localhost:3000", + "frontendDist": "../dist" + } + } + ``` + + + + + ```json + // tauri.conf.json + { + "build": { + "beforeDevCommand": "pnpm dev", + "beforeBuildCommand": "pnpm generate", + "devUrl": "http://localhost:3000", + "frontendDist": "../dist" + } + } + ``` + + + + + ```json + // tauri.conf.json + { + "build": { + "beforeDevCommand": "deno task dev", + "beforeBuildCommand": "deno task generate", + "devUrl": "http://localhost:3000", + "frontendDist": "../dist" + } + } + ``` + + + + + +2. ##### Actualiza la configuración de Nuxt: + + ```ts + export default defineNuxtConfig({ + // (opcional) Habilita las herramientas de desarrollo de Nuxt + devtools: { enabled: true }, + // Habilita SSG + ssr: false, + // Permite que el servidor de desarrollo sea detectable por otros dispositivos al ejecutarse en dispositivos físicos con iOS + devServer: { host: process.env.TAURI_DEV_HOST || 'localhost' }, + vite: { + // Mejor soporte para la salida de Tauri CLI + clearScreen: false, + // Habilita las variables de entorno + // Las variables de entorno adicionales se pueden encontrar en + // https://v2.tauri.app/reference/environment-variables/ + envPrefix: ['VITE_', 'TAURI_'], + server: { + // Tauri requiere un puerto consistente + strictPort: true, + }, }, - }, - }, -}); -``` + }); + ``` + + diff --git a/src/content/docs/es/start/frontend/qwik.mdx b/src/content/docs/es/start/frontend/qwik.mdx new file mode 100644 index 0000000000..03ac887c9c --- /dev/null +++ b/src/content/docs/es/start/frontend/qwik.mdx @@ -0,0 +1,142 @@ +--- +title: Qwik +i18nReady: true +tableOfContents: + minHeadingLevel: 2 + maxHeadingLevel: 5 +--- + +import { Steps, TabItem, Tabs } from '@astrojs/starlight/components'; +import CommandTabs from '@components/CommandTabs.astro'; + +Esta guía te llevará paso a paso para crear aplicación Tauri usando el framework web Qwik. Aprende más sobre Qwik en https://qwik.dev. + +## Checklist + +- Usa [SSG](https://qwik.dev/docs/guides/static-site-generation/). Tauri no soporta oficialmente soluciones basadas en el servidor. +- Usa `dist/` en lugar de `frontendDist` en `tauri.conf.json`. + +## Ejemplo de Configuración + + + +1. ##### Crea una nueva aplicación Qwik + + `} + yarn={`yarn create qwik@latest + cd `} + pnpm={`pnpm create qwik@latest + cd `} + deno={`deno run -A npm:create-qwik@latest + cd `} + /> + +1. ##### Instala el `static adapter` + + + +1. ##### Añade la CLI de Tauri a tu proyecto + + + +1. ##### Inicializa un nuevo projecto Tauri + + + +1. ##### Configura Tauri + + + + + + ```json + // tauri.conf.json + { + "build": { + "devUrl": "http://localhost:5173" + "frontendDist": "../dist", + "beforeDevCommand": "npm run dev", + "beforeBuildCommand": "npm run build" + } + } + ``` + + + + + + ```json + // tauri.conf.json + { + "build": { + "devUrl": "http://localhost:5173" + "frontendDist": "../dist", + "beforeDevCommand": "yarn dev", + "beforeBuildCommand": "yarn build" + } + } + ``` + + + + + + ```json + // tauri.conf.json + { + "build": { + "devUrl": "http://localhost:5173" + "frontendDist": "../dist", + "beforeDevCommand": "pnpm dev", + "beforeBuildCommand": "pnpm build" + } + } + ``` + + + + + + ```json + // tauri.conf.json + { + "build": { + "devUrl": "http://localhost:5173" + "frontendDist": "../dist", + "beforeDevCommand": "deno task dev", + "beforeBuildCommand": "deno task build" + } + } + ``` + + + + + +1. ##### Ejecuta tu aplicación `tauri` + + + + diff --git a/src/content/docs/es/start/frontend/sveltekit.mdx b/src/content/docs/es/start/frontend/sveltekit.mdx new file mode 100644 index 0000000000..b0f60e8958 --- /dev/null +++ b/src/content/docs/es/start/frontend/sveltekit.mdx @@ -0,0 +1,136 @@ +--- +title: SvelteKit +i18nReady: true +tableOfContents: + minHeadingLevel: 2 + maxHeadingLevel: 5 +--- + +import { Tabs, TabItem, Steps } from '@astrojs/starlight/components'; +import CommandTabs from '@components/CommandTabs.astro'; + +SvelteKit es un meta framework para Svelte. Aprende más sobre SvelteKit en https://kit.svelte.dev/. Esta guía es válida para SvelteKit 2.5.7 y Svelte 4.2.15. + +## Checklist + +- Usa [SSG](https://kit.svelte.dev/docs/adapter-static) y/o [SPA](https://kit.svelte.dev/docs/single-page-apps) a través de `static-adapter`. Tauri no soporta oficialmente soluciones basadas en el servidor. +- Usa `build/` en lugar de `frontendDist` en `tauri.conf.json`. + +## Ejemplo de Configuración + + + +1. ##### Instala `@sveltejs/adapter-static` + + + +1. ##### Actualiza la configuración de Tauri + + + + + + ```json + // tauri.conf.json + { + "build": { + "beforeDevCommand": "npm run dev", + "beforeBuildCommand": "npm run build", + "devUrl": "http://localhost:5173", + "frontendDist": "../build" + } + } + ``` + + + + + + ```json + // tauri.conf.json + { + "build": { + "beforeDevCommand": "yarn dev", + "beforeBuildCommand": "yarn build", + "devUrl": "http://localhost:5173", + "frontendDist": "../build" + } + } + ``` + + + + + + ```json + // tauri.conf.json + { + "build": { + "beforeDevCommand": "pnpm dev", + "beforeBuildCommand": "pnpm build", + "devUrl": "http://localhost:5173", + "frontendDist": "../build" + } + } + ``` + + + + + + ```json + // tauri.conf.json + { + "build": { + "beforeDevCommand": "deno task dev", + "beforeBuildCommand": "deno task build", + "devUrl": "http://localhost:5173", + "frontendDist": "../build" + } + } + ``` + + + + + +1. ##### Actualiza la configuración de SvelteKit: + + ```js title="svelte.config.js" {1} + import adapter from '@sveltejs/adapter-static'; + import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; + + /** @type {import('@sveltejs/kit').Config} */ + const config = { + // Consulta https://kit.svelte.dev/docs/integrations#preprocessors + // para más información sobre preprocesadores + preprocess: vitePreprocess(), + + kit: { + adapter: adapter(), + }, + }; + + export default config; + ``` + +1. ##### Desactiva el SSR + + Por último, necesitamos desactivar el SRR y habilitar el prerenderizado añadiendo un archivo raíz `+layout.ts` (o `+layout.js` si no estás usando TypeScript) con el siguiente contenido: + + ```ts + // src/routes/+layout.ts + export const prerender = true; + export const ssr = false; + ``` + + Ten en cuenta que `static-adapter` no requiere desactivar el SSR para toda la aplicación, pero permite usar APIs que dependen del objeto global window (como la API de Tauri) sin necesidad de realizar [comprobaciones del lado del cliente](https://kit.svelte.dev/docs/faq#how-do-i-use-x-with-sveltekit-how-do-i-use-a-client-side-only-library-that-depends-on-document-or-window). + + Además, si prefieres el modo de Aplicación de Página Única (SPA) en lugar de SSG, puedes cambiar las configuraciones del adaptador y el archivo `+layout.ts` según la [documentación del adaptador](https://kit.svelte.dev/docs/single-page-apps). + + diff --git a/src/content/docs/es/start/frontend/trunk.mdx b/src/content/docs/es/start/frontend/trunk.mdx index b8c8ea594f..31ab0a9d17 100644 --- a/src/content/docs/es/start/frontend/trunk.mdx +++ b/src/content/docs/es/start/frontend/trunk.mdx @@ -1,44 +1,51 @@ --- title: Trunk i18nReady: true +tableOfContents: + minHeadingLevel: 2 + maxHeadingLevel: 5 --- -Trunk es una herramienta de empaquetado de aplicaciones web WASM para Rust. Obtén más información sobre Trunk en https://trunkrs.dev. Esta guía es precisa a partir de Trunk 0.17.5. +import { Tabs, TabItem, Steps } from '@astrojs/starlight/components'; + +Trunk es una herramienta de empaquetado de aplicaciones web WASM para Rust. Aprende más sobre Trunk en https://trunkrs.dev. Esta guía es válida para Trunk 0.17.5. ## Checklist - Usa SSG, Tauri no soporta oficialmente soluciones basadas en el servidor. -- Usa `address = "0.0.0.0"` para que el servidor web esté disponible en la red para el desarrollo móvil. -- Usa `ws_protocol = "ws"` para que el websocket de recarga rápida pueda conectarse correctamente para el desarrollo móvil. +- Usa `serve.ws_protocol = "ws"` para que el websocket de recarga rápida pueda conectarse correctamente para el desarrollo móvil. - Habilita `withGlobalTauri` para asegurarte de que las APIs de Tauri están disponibles en la variable `window.__TAURI__` y pueden ser importadas usando `wasm-bindgen`. ## Ejemplo de Configuración -1. Actualiza la configuración de Tauri: - -```json -// tauri.conf.json -{ - "build": { - "beforeDevCommand": "trunk serve", - "beforeBuildCommand": "trunk build", - "devPath": "http://localhost:8080", - "distDir": "../dist" - }, - "app": { - "withGlobalTauri": true - } -} -``` - -2. Actualiza la configuración de Trunk: - -```toml -# Trunk.toml -[watch] -ignore = ["./src-tauri"] - -[serve] -address = "0.0.0.0" -ws_protocol = "ws" -``` + + +1. ##### Actualiza la configuración de Tauri + + ```json + // tauri.conf.json + { + "build": { + "beforeDevCommand": "trunk serve", + "beforeBuildCommand": "trunk build", + "devUrl": "http://localhost:8080", + "frontendDist": "../dist" + }, + "app": { + "withGlobalTauri": true + } + } + ``` + +1. ##### Actualiza la configuración de Trunk + + ```toml + # Trunk.toml + [watch] + ignore = ["./src-tauri"] + + [serve] + ws_protocol = "ws" + ``` + + diff --git a/src/content/docs/es/start/index.mdx b/src/content/docs/es/start/index.mdx new file mode 100644 index 0000000000..17655a9785 --- /dev/null +++ b/src/content/docs/es/start/index.mdx @@ -0,0 +1,50 @@ +--- +title: ¿Qué es Tauri? +i18nReady: true +sidebar: + order: 0 +--- + +Tauri es un framework que sirve para crear binarios pequeños y rápidos para las principales plataformas de escritorio y móviles. Los desarrolladores pueden usar cualquier framework de frontend que compile a HTML, JavaScript y CSS para crear su experiencia de usuario, y al mismo tiempo aprovechar lenguajes como Rust, Swift y Kotlin para la lógica del backend cuando sea necesario. + +Empieza a construir tu aplicación con [`create-tauri-app`](https://github.com/tauri-apps/create-tauri-app) usando uno de los comandos que se encuentran abajo. Asegurate de seguir la [guía the prerrequisitos](/start/prerequisites/) para instalar todas las dependencias requeridas por Tauri y después mira las [guías de Configuración de Frontend](/start/frontend/) para ver las configuraciones recomendadas. + +import Cta from '../../_fragments/cta.mdx'; + + + +Después de haber creado tu primera aplicación, puedes explorar las diferentes características y fórmulas de Tauri en el [Listado de Características y Fórmulas](/plugin/). + +## ¿Por qué Tauri? + +Tauri tiene 3 ventajas principales que los desarrolladores pueden aprovechar: + +- Base segura para construir aplicaciones +- Tamaño de paquete más pequeño usando la vista web nativa del sistema +- Flexibilidad para que los desarrolladores usen cualquier frontend y soporte para múltiples lenguajes + +Aprende más sobre la filosofía de Tauri en la [publicación del blog de Tauri 1.0](/blog/tauri-1-0/). + +### Base segura + +Al estar contruido en Rust, Tauri es capaz the aprovechar la memoria, hilos y tipado seguro ofrecidos por Rust. Las aplicaciones construidas en Tauri pueden obtener estos beneficios automáticamente sin la necesidad de estar desarrolladas por expertos en Rust. + +Además, Tauri se somete a auditorías de seguridad para sus versiones principales y secundarias. Esto no solo abarca el código en la organización de Tauri, sino que también todas las dependencias de las que Tauri depende. Por supuesto, esto no elimina todo el riesgo, pero provee de una base muy sólida para que los desarrolladores construyan sobre ella. + +Lee la [póliza de seguidad de Tauri](https://github.com/tauri-apps/tauri/security/policy) y el [reporte de auditoría de Tauri 2.0](https://github.com/tauri-apps/tauri/blob/dev/audits/Radically_Open_Security-v2-report.pdf). + +### Tamaño de aplicaciones más pequeño + +Las aplicaciones hechas con Tauri se aprovechan de la vista web nativa del sistema del usuario. Una aplicación de Tauri solo contiene el código y los recursos específicos para esa aplicación, sin la necesidad de tener que empaquetar un motor de navegador en cada aplicación. Esto significa que una aplicación sencilla de Tauri puede tener un tamaño menor a 600KB. + +Aprende más sobre como crear aplicaciones optimizadas en el [concepto de Tamaño de Aplicación](/concept/size/). + +### Arquitectura flexible + +Dado que Tauri usa tecnologías web, prácticamente cualquier framework de frontend es compatible con Tauri. La [guía de Configuración de Frontend](/start/frontend/) incluye configuraciones comunes para frameworks de frontend populares. + +Las conexiones entre JavaScript y Rust están disponibles para los desarrolladores usando la función `invoke` en JavaScript, mientras que los enlaces para Swift y Kotlin están disponibles para [los Plugins de Tauri](/develop/plugins/). + +[TAO](https://github.com/tauri-apps/tao) se encarga de la creación de ventanas en Tauri y [WRY](https://github.com/tauri-apps/wry) de la renderización web. Ambas librerías son mantenidas por Tauri y pueden ser utilizadas directamente si se requiere un nivel más profundo de integración al que Tauri expone. + +Además, Tauri mantiene varios plugins para ampliar las funcionalidades que ofrece el núcleo de Tauri. Puedes encontrar estos plugins junto con los proporcionados por la comunidad en la [sección de Plugins](/plugin/). diff --git a/src/content/docs/es/start/migrate/from-tauri-1.mdx b/src/content/docs/es/start/migrate/from-tauri-1.mdx index 8eecd5db01..bb886a690a 100644 --- a/src/content/docs/es/start/migrate/from-tauri-1.mdx +++ b/src/content/docs/es/start/migrate/from-tauri-1.mdx @@ -2,7 +2,7 @@ title: Actualizar desde Tauri 1.0 i18nReady: true sidebar: - order: 12 + order: 15 --- import { Tabs, TabItem } from '@astrojs/starlight/components'; @@ -10,7 +10,7 @@ import CommandTabs from '@components/CommandTabs.astro'; Esta guía te guiará a través de la actualización de tu aplicación Tauri 1.0 a Tauri 2.0. -## Preparándose para móvil +## Preparación para móvil La interfaz móvil de Tauri requiere que tu proyecto produzca una biblioteca compartida. Si estás apuntando a móviles para tu aplicación existente, debes cambiar tu crate para producir ese tipo de artefacto junto con el ejecutable de escritorio. @@ -63,8 +63,6 @@ La CLI de Tauri v2 incluye un comando `migrate` que automatiza la mayor parte de cargo tauri migrate' /> -{/* TODO: 2.0 */} - Para saber más sobre el comando `migrate`, consulta la [Referencia de la interfaz de línea de comandos](/reference/cli/#migrate) ## Resumen de los cambios @@ -74,6 +72,7 @@ A continuación se resumen los cambios de Tauri 1.0 a Tauri 2.0: ### Configuración de Tauri - Los campos `package > productName` y `package > version` se han trasladado al campo de nivel superior. +- el nombre del binario ya no se renombra automáticamente para coincidir con `productName`, por lo que debes agregar una string `mainBinaryName` en el objeto de nivel superior que coincida con `productName`. - `package` eliminado. - La clave `tauri` ha pasado a ser `app`. - `tauri > allowlist` eliminado. Véase [Migrar permisos](#migrar-permisos). @@ -83,15 +82,19 @@ A continuación se resumen los cambios de Tauri 1.0 a Tauri 2.0: - `tauri > updater > active` eliminado. - `tauri > updater > dialog` eliminado. - `tauri > updater` movido a `plugins > updater`. +- Se ha agragado `bundle > createUpdaterArtifacts`, debe ser configurado al usar el actualizador de la aplicación. + - configúralo a `v1Compatible` cuando actualices desde aplicaciones de la V1 que ya habían sido distribuidas. Consulta la [guía del actualizador](/plugin/updater/) para más información. - `tauri > systemTray` renombrado a `app > trayIcon`. - `tauri > pattern` movido a `app > security > pattern`. - `tauri > bundle` movido a nivel superior. +- `tauri > bundle > identifier` movido a objeto del nivel superior. - `tauri > bundle > dmg` movido a `bundle > macOS > dmg` - `tauri > bundle > deb` movido a `bundle > linux > deb` - `tauri > bundle > appimage` movido a `bundle > linux > appimage` - `tauri > bundle > macOS > license` eliminado, utiliza `bundle > licenseFile` en su lugar. - `tauri > bundle > windows > wix > license` eliminado, utiliza `bundle > licenseFile` en su lugar. - `tauri > bundle > windows > nsis > license` eliminado, utiliza `bundle > licenseFile` en su lugar. +- `tauri > bundle > windows > webviewFixedRuntimePath` eliminado, utiliza `bundle > windows > webviewInstallMode` en su lugar. - `build > withGlobalTauri` movido a `app > withGlobalTauri`. - `build > distDir` renombrado a `frontendDist`. - `build > devPath` renombrado a `devUrl`. @@ -132,7 +135,6 @@ A continuación se resumen los cambios de Tauri 1.0 a Tauri 2.0: - El método `Plugin::setup_with_config` ha sido eliminado. Utiliza el actualizado `tauri::Plugin::PluginApi` en su lugar. - Los métodos `scope::ipc::RemoteDomainAccessScope::enable_tauri_api` y `scope::ipc::RemoteDomainAccessScope::enables_tauri_api` han sido eliminados. Habilita cada plugin del núcleo individualmente mediante `scope::ipc::RemoteDomainAccessScope::add_plugin` en su lugar. - El módulo `scope::IpcScope` ha sido eliminado, utiliza `scope::ipc::Scope` en su lugar. -- El módulo `scope::IpcScope` ha sido eliminado, utiliza `scope::ipc::Scope` en su lugar. - Los módulos `scope::FsScope`, `scope::GlobPattern` y `scope::FsScopeEvent` han sido eliminados, utiliza `scope::fs::Scope`, `scope::fs::Pattern` y `scope::fs::Event` respectivamente. - El módulo `updater` ha sido eliminado. Utiliza `tauri-plugin-updater` en su lugar. [Migración](#migrar-al-plugin-de-actualizaciones) - El campo `Env.args` ha sido eliminado, utiliza el campo `Env.args_os` en su lugar. @@ -157,6 +159,8 @@ El paquete `@tauri-apps/api` ya no proporciona módulos no centrales. Sólo se e - El módulo `@tauri-apps/api/updater` ha sido eliminado. Utiliza `@tauri-apps/plugin-updater` en su lugar. [Migración](#migrar-al-plugin-de-actualizaciones) - El módulo `@tauri-apps/api/window` ha sido renombrado a `@tauri-apps/api/webviewWindow`. [Migración](#migrar-a-la-nueva-api-de-ventanas) +Los plugins the la V1 ahora están publicados como `@tauri-apps/plugin-`. Anteriormente, estaban disponibles desde git como `tauri-plugin--api`. + ### Cambios en las variables de entorno La mayoría de las variables de entorno leídas y escritas por el CLI de Tauri fueron renombradas por consistencia y prevención de errores: @@ -193,6 +197,10 @@ Para admitirlo, renombramos el tipo de ventana Rust `Window` a `WebviewWindow` y El tipo de API JS `WebviewWindow` ahora se reexporta desde `@tauri-apps/api/webviewWindow` en lugar de `@tauri-apps/api/window`. +### Nueva URL de origen en Windows + +On Windows the frontend files in production apps are now hosted on `http://tauri.localhost` instead of `https://tauri.localhost`. Because of this IndexedDB, LocalStorage and Cookies will be reset unless `dangerousUseHttpScheme` was used in v1. To prevent this you can set `app > windows > useHttpsScheme` to `true` or use `WebviewWindowBuilder::use_https_scheme` to keep using the `https` scheme. + ## Pasos Detallados de Migración Escenarios comunes que puedes encontrar al migrar tu aplicación de Tauri 1.0 a Tauri 2.0. @@ -566,7 +574,7 @@ tauri::Builder::default() }) ``` -El plugin HTTP reexporta [reqwest](https://docs.rs/reqwest/latest/reqwest/) para que puedas consultar su documentación para obtener más información. +El plugin HTTP reexporta [reqwest](https://docs.rs/reqwest/latest/reqwest/) así que puedes consultar su documentación para obtener más información. @@ -1007,7 +1015,7 @@ Consulta [TrayIconBuilder](https://docs.rs/tauri/2.0.0/tauri/tray/struct.TrayIco #### Migrar a Menú -Utiliza `tauri::menu::Menu` en lugar de `tauri::SystemTrayMenu`, `tauri::menu::Submenu` en lugar de `tauri::SystemTraySubmenu`, y `tauri::menu::PredefinedMenuItem` en lugar de `tauri::SystemTrayMenuItem`. [Migración](#migrar-a-menú) +Utiliza `tauri::menu::Menu` en lugar de `tauri::SystemTrayMenu`, `tauri::menu::Submenu` en lugar de `tauri::SystemTraySubmenu`, y `tauri::menu::PredefinedMenuItem` en lugar de `tauri::SystemTrayMenuItem`. #### Eventos de Bandeja @@ -1016,7 +1024,7 @@ Utiliza `tauri::menu::Menu` en lugar de `tauri::SystemTrayMenu`, `tauri::menu::S ```rust use tauri::{ menu::{MenuBuilder, MenuItemBuilder}, - tray::{ClickType, TrayIconBuilder}, + tray::{MouseButton, MouseButtonState, TrayIconBuilder, TrayIconEvent}, }; tauri::Builder::default() @@ -1032,7 +1040,12 @@ tauri::Builder::default() _ => (), }) .on_tray_icon_event(|tray, event| { - if event.click_type == ClickType::Left { + if let TrayIconEvent::Click { + button: MouseButton::Left, + button_state: MouseButtonState::Up, + .. + } = event + { let app = tray.app_handle(); if let Some(webview_window) = app.get_webview_window("main") { let _ = webview_window.show(); @@ -1086,10 +1099,12 @@ import { relaunch } from '@tauri-apps/plugin-process'; const update = await check(); if (update?.available) { - console.log(`Update to ${update.version} available! Date: ${update.date}`); - console.log(`Release notes: ${update.body}`); + console.log( + `¡Actualización a ${update.version} disponible! Fecha: ${update.date}` + ); + console.log(`Notas del parche: ${update.body}`); await update.downloadAndInstall(); - // requires the `process` plugin + // requiere el plugin `process` await relaunch(); } ``` @@ -1141,9 +1156,9 @@ use tauri::{path::BaseDirectory, Manager}; tauri::Builder::default() .setup(|app| { - let home_dir_path = app.path().home_dir().expect("failed to get home dir"); + let home_dir_path = app.path().home_dir().expect("no se pudo obtener el directorio home"); - let path = app.path().resolve("path/to/something", BaseDirectory::Config)?; + let path = app.path().resolve("path/haz/algo", BaseDirectory::Config)?; Ok(()) }) @@ -1151,7 +1166,7 @@ tauri::Builder::default() ### Migrar a la nueva API de Ventanas -En el lado de Rust, `Window` fue renombrado a `WebviewWindow` y su constructor `WindowBuilder` ahora se llama `WebviewWindowBuilder`. +En el lado de Rust, `Window` fue renombrado a `WebviewWindow`, su constructor `WindowBuilder` ahora se llama `WebviewWindowBuilder` y `WindowUrl` ahora se llama `WebviewUrl`. Además, la función `Manager::get_window` fue renombrada a `get_webview_window` y la API `parent_window` de la ventana fue renombrada a `parent_raw` para admitir una API de ventana principal de alto nivel. @@ -1160,6 +1175,13 @@ En el lado de JavaScript, la clase `WebviewWindow` ahora se exporta en la ruta ` La función `onMenuClicked` fue eliminada, ahora puedes interceptar eventos de menú al crear un menú en JavaScript en su lugar. +### Migrar Archivos Adicionales Incrustados (Recursos) + +En el lado de JavaScript, asegúrate de [Migrar al Plugin del Sistema de Archivos](#migrar-al-plugin-del-sistema-de-archivos). +Además, ten en cuenta que los cambios hechos en la lista blanca de la v1 en [Migrar Permisos](#migrar-permisos). + +En el lado de Rust, asegúrate de [Migrar de Path a Tauri Manager](#migrar-de-path-a-tauri-manager). + ### Migrar de Binarios Externos Incrustados (Sidecar) En Tauri v1, los binarios externos y sus argumentos se definían en la lista blanca. En la v2, utiliza el nuevo sistema de permisos. Lee [Migración de Permisos](#migrar-permisos) para más información. @@ -1179,4 +1201,4 @@ Para habilitar permisos para tu aplicación, debes crear archivos de capacidades El comando `migrate` de la CLI analiza automáticamente tu lista blanca v1 y genera el archivo de capacidad asociado. -Para obtener más información sobre permisos y capacidades, consulta [la documentación](/security/). +Para obtener más información sobre permisos y capacidades, consulta [la documentación de seguridad](/security/). diff --git a/src/content/docs/es/start/prerequisites.mdx b/src/content/docs/es/start/prerequisites.mdx index e26bd247c4..a0711b4660 100644 --- a/src/content/docs/es/start/prerequisites.mdx +++ b/src/content/docs/es/start/prerequisites.mdx @@ -1,6 +1,8 @@ --- title: Prerrequisitos i18nReady: true +sidebar: + order: 0 --- import { Tabs, TabItem, Card } from '@astrojs/starlight/components'; @@ -36,6 +38,7 @@ sudo apt install libwebkit2gtk-4.1-dev \ curl \ wget \ file \ + libxdo-dev \ libssl-dev \ libayatana-appindicator3-dev \ librsvg2-dev @@ -70,7 +73,7 @@ sudo dnf install webkit2gtk4.1-devel \ file \ libappindicator-gtk3-devel \ librsvg2-devel -sudo dnf group install "C Development Tools and Libraries" +sudo dnf group install "c-development" ``` @@ -100,10 +103,57 @@ sudo zypper in webkit2gtk3-devel \ sudo zypper in -t pattern devel_basis ``` + + +```sh +sudo apk add \ + build-base \ + webkit2gtk \ + curl \ + wget \ + file \ + openssl \ + libayatana-appindicator-dev \ + librsvg +``` -TODO: Need to build out NixOS instructions +:::note +Esto también instalará Rust y Node.js, además de la CLI de `cargo-tauri` por ti, por lo que puedes omitir esos pasos a continuación. +::: + +Using `nix-shell`: + +```nix +let + pkgs = import { }; +in +pkgs.mkShell { + nativeBuildInputs = with pkgs; [ + pkg-config + gobject-introspection + cargo + cargo-tauri + nodejs + ]; + + buildInputs = with pkgs;[ + at-spi2-atk + atkmm + cairo + gdk-pixbuf + glib + gtk3 + harfbuzz + librsvg + libsoup_3 + pango + webkitgtk_4_1 + openssl + ]; +} +``` @@ -146,7 +196,7 @@ Sigue los pasos a continuación para instalar las dependencias requeridas. 1. Descarga el instalador de [Microsoft C++ Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/) y ábrelo para comenzar la instalación. 2. Durante la instalación marque la opción "Desarrollo de escritorio con C ++". -![Visual Studio C++ Build Tools installer screenshot](./visual-studio-build-tools-installer.png) +![Captura de pantalla de Visual Studio C++ Build Tools installer](./visual-studio-build-tools-installer.png) Siguiente: [Instalar WebView2](#webview2). @@ -186,12 +236,53 @@ Aquí está el archivo como un script plano: [rustup.sh](https://sh.rustup.rs/) Visita https://www.rust-lang.org/tools/install para instalar `rustup`. +Alternativamente, puedes user `winget` para instalar rustup usando el siguiente comando en PowerShell: + +```powershell +winget install --id Rustlang.Rustup +``` + +:::caution[MSVC toolchain como predeterminado] + +Para un soporte total para Tauri y herramientas como [`trunk`](https://trunkrs.dev/) asegurate de que la toolchain MSVC de Rust sea el `default host triple` en el diálogo del instalador. Dependiendo de tu sistema, debería ser `x86_64-pc-windows-msvc`, `i686-pc-windows-msvc`, o `aarch64-pc-windows-msvc`. + +Si ya tienes Rust instalado, puedes asegurarte de que esté instalada la toolchain correcta ejecutando el siguiente comando: + +```powershell +rustup default stable-msvc +``` + +::: + -Asegúrate de reiniciar tu Terminal (y en algunos casos tu sistema) para que los cambios surtan efecto. +**Asegúrate de reiniciar tu Terminal (y en algunos casos tu sistema) para que los cambios surtan efecto.** -Siguiente: [Configurar para Móvil](#configurar-para-móvil) si deseas construir para Android e iOS. De lo contrario, [Crea un Proyecto](/start/create-project/). +Siguiente: [Configurar para Móvil](#configurar-para-móvil) si deseas construir para Android e iOS, o, si te gustaría usar un framework de JavaScript, [instala Node](#nodejs). De lo contrario, [Crea un Proyecto](/start/create-project/). + +## Node.js + +:::note[Ecosistema de JavaScript] +Solo si tu intención es usar un framework frontend de JavaScript +::: + +1. Visita la [web de Node.js](https://nodejs.org), descarga la version de Soporte a Largo Plazo (LTS) e instálala. + +2. Comprueba si Node se ha instalado correctamente ejecutando: + +```sh +node -v +# v20.10.0 +npm -v +# 10.2.3 +``` + +Es importante reiniciar tu Terminal para asegurarse de que reconoce la nueva instalación. En algunos casos, puede que necesites reiniciar tu ordenador. + +Aunque npm es el gestor de paquetes predeterminado para Node.js, puedes usar otros como por ejemplo pnpm o yarn. Para habilitarlos, ejecuta `corepack enable` en tu Terminal. Este paso es opcional y únicamente necesario si prefieres usar otro gestor de paquetes que no sea npm. + +Next: [Configurar para Móvil](#configurar-para-móvil) o [Crea un proyecto](/start/create-project/). ## Configurar para Móvil @@ -207,7 +298,7 @@ Si deseas compilar tu aplicación para Android o iOS, entonces hay algunas depen {/* TODO: Can this be done in the 4th step? */} - + ```sh @@ -238,16 +329,16 @@ export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home" - Android SDK Build-Tools - Android SDK Command-line Tools -4. Establece las variables de entorno `ANDROID_HOME` y `NDK_HOME`. Reemplaza los números de versión para que coincidan con la versión instalada. +4. Establece las variables de entorno `ANDROID_HOME` y `NDK_HOME`. {/* TODO: Does the version number change below? */} - + ```sh export ANDROID_HOME="$HOME/Android/Sdk" -export NDK_HOME="$ANDROID_HOME/ndk/25.0.8775105" +export NDK_HOME="$ANDROID_HOME/ndk/$(ls -1 $ANDROID_HOME/ndk)" ``` @@ -255,19 +346,28 @@ export NDK_HOME="$ANDROID_HOME/ndk/25.0.8775105" ```sh export ANDROID_HOME="$HOME/Library/Android/sdk" -export NDK_HOME="$ANDROID_HOME/ndk/25.0.8775105" +export NDK_HOME="$ANDROID_HOME/ndk/$(ls -1 $ANDROID_HOME/ndk)" ``` -{/* TODO: Do we need a note about this version? */} - ```ps [System.Environment]::SetEnvironmentVariable("ANDROID_HOME", "$env:LocalAppData\Android\Sdk", "User") -[System.Environment]::SetEnvironmentVariable("NDK_HOME", "$env:LocalAppData\Android\Sdk\ndk\25.0.8775105", "User") +$VERSION = Get-ChildItem -Name "$env:LocalAppData\Android\Sdk\ndk" +[System.Environment]::SetEnvironmentVariable("NDK_HOME", "$env:LocalAppData\Android\Sdk\ndk\$VERSION", "User") +``` + +:::tip +PowerShell no detectará las nuevas variables de entorno hasta que reinicies o cierres sesión. +Sin embargo, puedes actualizar la sesión actual: + +```ps +[System.Environment]::GetEnvironmentVariables("User").GetEnumerator() | % { Set-Item -Path "Env:\$($_.key)" -Value $_.value } ``` +::: + @@ -299,14 +399,12 @@ Siguiente: [Configurar para iOS](#ios) o [Crear un proyecto](/start/create-proje El desarrollo de iOS requiere Xcode y solo está disponible en macOS. Asegúrate de haber instalado Xcode y no Xcode Command Line Tools en la [sección de dependencias del sistema de macOS](#macos). ::: -1. Agrega los destinos de compilación de iOS con `rustup` en Terminal: +1. Agrega los destinos de compilación de iOS con `rustup` en la Terminal: ```sh rustup target add aarch64-apple-ios x86_64-apple-ios aarch64-apple-ios-sim ``` -Asegúrate de haber instalado Xcode y no Xcode Command Line Tools en la [sección de dependencias del sistema de macOS](#macos). - 2. Instala [Homebrew](https://brew.sh): ```sh