|
| 1 | +# Fundamentos de WebGPU |
| 2 | + |
| 3 | +Esta es [una serie de lecciones o tutoriales sobre WebGPU](http://webgpufundamentals.org/webgpu/lessons/es/). |
| 4 | + |
| 5 | +Este es un trabajo en progreso. Siéntete libre de contribuir, especialmente con las localizaciones (traducciones). |
| 6 | + |
| 7 | +- [English](README.md) |
| 8 | +- [简体中文](README.zh-CN.md) |
| 9 | +- [한국어](README.ko.md) |
| 10 | + |
| 11 | +## Cómo contribuir |
| 12 | + |
| 13 | +Por supuesto, las correcciones de errores siempre son bienvenidas. |
| 14 | + |
| 15 | +Si deseas escribir un artículo nuevo, por favor intenta hacerlo siempre paso a paso. No hagas 2 o más cosas en un solo paso. Explica cualquier concepto matemático nuevo en los términos más sencillos posibles. Idealmente con diagramas donde sea posible. También es mejor preguntar para asegurarse de que nadie más esté trabajando ya en un artículo similar. |
| 16 | + |
| 17 | +### Traducir |
| 18 | + |
| 19 | +Cada traducción va en una carpeta bajo `webgpu/lessons/<código-de-país>`. |
| 20 | + |
| 21 | +Los archivos requeridos son: |
| 22 | + |
| 23 | + langinfo.hanson |
| 24 | + index.md |
| 25 | + toc.html |
| 26 | + |
| 27 | +#### `langinfo.hanson` |
| 28 | + |
| 29 | +Define varias opciones específicas del idioma. |
| 30 | +[Hanson](https://github.com/timjansen/hanson) es un formato similar a JSON pero permite comentarios. |
| 31 | + |
| 32 | +Los campos actuales son: |
| 33 | + |
| 34 | +```hanson |
| 35 | +{ |
| 36 | + // El idioma (aparecerá en el menú de selección de idioma) |
| 37 | + language: 'Español', |
| 38 | +
|
| 39 | + // Frase que aparece debajo de los ejemplos |
| 40 | + defaultExampleCaption: "haz clic aquí para abrir en una ventana separada", |
| 41 | +
|
| 42 | + // Título que aparece en cada página |
| 43 | + title: 'Fundamentos de WebGPU', |
| 44 | +
|
| 45 | + // Descripción básica que aparece en cada página |
| 46 | + description: 'Aprende WebGPU', |
| 47 | +
|
| 48 | + // Enlace a la raíz del idioma. |
| 49 | + link: 'http://webgpufundamentals.org/webgpu/lessons/es', |
| 50 | +
|
| 51 | + // html que aparece después del artículo y antes de los comentarios |
| 52 | + commentSectionHeader: '<div>¿Preguntas? <a href="http://stackoverflow.com/questions/tagged/webgpu">Pregunta en stackoverflow</a>.</div>\n <div>¿Problema/Bug? <a href="http://github.com/webgpu/webgpufundamentals/issues">Crea un issue en github</a>.</div>', |
| 53 | +
|
| 54 | + // markdown que aparece para artículos no traducidos |
| 55 | + missing: "Lo sentimos, este artículo aún no ha sido traducido. ¡[Las traducciones son bienvenidas](https://github.com/webgpu/webgpufundamentals)! 😄\n\n[Aquí está el artículo original en inglés por ahora]({{{origLink}}}).", |
| 56 | +
|
| 57 | + // la frase "Tabla de Contenidos" |
| 58 | + toc: "Tabla de Contenidos", |
| 59 | +
|
| 60 | + // traducción de categorías |
| 61 | + categoryMapping: { |
| 62 | + 'basics': 'Conceptos básicos', |
| 63 | + 'solutions': 'Soluciones', |
| 64 | + 'webvr': 'WebVR', |
| 65 | + 'optimization': 'Optimización', |
| 66 | + 'tips': 'Consejos', |
| 67 | + 'fundamentals': 'Fundamentos', |
| 68 | + 'reference': 'Referencia', |
| 69 | + }, |
| 70 | +} |
| 71 | +``` |
| 72 | + |
| 73 | +#### `index.md` |
| 74 | + |
| 75 | +Esta es la plantilla para la página principal de cada idioma. |
| 76 | + |
| 77 | +#### `toc.html` |
| 78 | + |
| 79 | +Esta es la plantilla para la tabla de contenidos del idioma. Se incluye tanto en el índice como en cada artículo. Las únicas partes que no se generan automáticamente son los enlaces finales que puedes traducir si lo deseas. |
| 80 | +El sistema de build creará un marcador de posición (placeholder) para cada artículo en inglés para el cual no haya un artículo correspondiente en ese idioma. Se rellenará con el mensaje `missing` de arriba. |
| 81 | + |
| 82 | +#### `lang.css` |
| 83 | + |
| 84 | +Este se incluye si y solo si existe. Preferiría fuertemente no tener que usarlo. En particular, no quiero que la gente entre en discusiones sobre fuentes, pero básicamente es una forma de elegir las fuentes por idioma. Solo debes establecer las variables que sean absolutamente necesarias. Ejemplo: |
| 85 | + |
| 86 | +```css |
| 87 | +/* lessons/es/lang.css */ |
| 88 | + |
| 89 | +/* ¡Solo comenta los cambios que sean absolutamente necesarios! */ |
| 90 | +:root { |
| 91 | + --article-font-family: "la mejor fuente para el texto de los artículos en español"; |
| 92 | + --headline-font-family: "la mejor fuente para los titulares en español"; |
| 93 | + /* un bloque de código */ |
| 94 | + /* --code-block-font-family: "Lucida Console", Monaco, monospace; */ |
| 95 | + /* una palabra en una oración */ |
| 96 | + /* --code-font-family: monospace; */ |
| 97 | +} |
| 98 | +``` |
| 99 | + |
| 100 | +Observa que hay 2 configuraciones que no se han cambiado. Me parece poco probable que el código necesite una fuente diferente por idioma. |
| 101 | + |
| 102 | +PD: Ya que estamos aquí, me encantan las fuentes de código con ligaduras, pero parecen una mala idea para un sitio de tutoriales porque las ligaduras ocultan los caracteres reales necesarios, así que, por favor, no pidas ni uses una fuente de código con ligaduras aquí. |
| 103 | + |
| 104 | +#### Notas de traducción |
| 105 | + |
| 106 | +El proceso de build creará un archivo html de marcador de posición para cada artículo que tenga un archivo .md en inglés en `webgpu/lessons` pero no tenga el archivo .md correspondiente para el idioma. Esto es para facilitar la inclusión de enlaces en un artículo que apunten a otro artículo, incluso si ese otro artículo aún no ha sido traducido. De esta manera, no tienes que volver atrás y arreglar artículos ya traducidos. Simplemente traduce un artículo a la vez y deja los enlaces como están. Enlazarán a los marcadores de posición hasta que alguien traduzca los artículos faltantes. |
| 107 | + |
| 108 | +Los artículos tienen front matter en la parte superior: |
| 109 | + |
| 110 | +``` |
| 111 | +Title: Título localizado del artículo |
| 112 | +Description: Descripción localizada del artículo (usada en RSS y etiquetas de redes sociales) |
| 113 | +TOC: Texto localizado para la Tabla de Contenidos |
| 114 | +``` |
| 115 | + |
| 116 | +**NO CAMBIES LOS ENLACES**: Por ejemplo, un enlace a recursos locales podría verse así: |
| 117 | + |
| 118 | + [texto](enlace) |
| 119 | + |
| 120 | +o |
| 121 | + |
| 122 | + <img src="algun_enlace"> |
| 123 | + |
| 124 | +Aunque puedes añadir parámetros de consulta (ver abajo), no añadas "../" para intentar que el enlace sea relativo al archivo .md. Los enlaces deben permanecer como si el artículo existiera en la misma ubicación que el original en inglés. |
| 125 | + |
| 126 | +### Filosofía y Reglas de Traducción al español |
| 127 | + |
| 128 | +Para mantener la consistencia en la versión en español, seguimos estas directrices: |
| 129 | + |
| 130 | +#### Qué se traduce |
| 131 | +- El texto explicativo y los comentarios en fragmentos de pseudocódigo. |
| 132 | +- Los campos `Title:`, `Description:` y `TOC:` (excepto si contienen términos técnicos estándar). |
| 133 | +- Los textos interactivos de la interfaz de usuario (ej: "arrastra los vértices"). |
| 134 | + |
| 135 | +#### Qué NO se traduce (Términos Técnicos) |
| 136 | +Para evitar confusión con la API real de WebGPU y la jerga de la industria, **no traducimos** los siguientes términos: |
| 137 | +- **Objetos de la API**: buffer, bind group, bind group layout, pipeline, render pipeline, compute pipeline, sampler, encoder. |
| 138 | +- **Conceptos de memoria**: storage buffer, vertex buffer, uniform buffer, staging buffer, offset, stride. |
| 139 | +- **Técnicas y Texturas**: cubemap, environment map, skybox, mipmap, post-processing, compute shader. |
| 140 | +- **Código**: Nombres de funciones, variables y atributos en JS, WGSL, HTML o CSS. |
| 141 | + |
| 142 | +#### Estilo y Tono |
| 143 | +- Usamos un **español neutro e internacional** (evitando regionalismos). |
| 144 | +- El tono es **didáctico e informal**, dirigiéndonos al lector de "tú" (como el "you" original). |
| 145 | +- En la primera mención de un término técnico complejo, se puede incluir una traducción literal entre paréntesis, pero luego se usa siempre el término en inglés. Ejemplo: "...usaremos un **storage buffer** (buffer de almacenamiento)..." |
| 146 | + |
| 147 | +#### Integridad Estructural |
| 148 | +- **Paridad de Enlaces**: Los enlaces internos deben ser idénticos al original. Si el original tiene un error en un enlace, la traducción debe mantenerlo para evitar fallos en el sistema de build. |
| 149 | +- **Sin HTML extra**: No añadir etiquetas `<script>`, `<style>` o `<img>` que no existan en el original. |
| 150 | + |
| 151 | +### Cómo construir |
| 152 | + |
| 153 | +El sitio se construye en la carpeta `out`. |
| 154 | + |
| 155 | +Pasos: |
| 156 | + |
| 157 | + git clone https://github.com/webgpu/webgpufundamentals.git |
| 158 | + npm ci |
| 159 | + npm run build |
| 160 | + npm run serve |
| 161 | + |
| 162 | +Ahora abre tu navegador en `http://localhost:8080`. |
| 163 | + |
| 164 | +### Construcción continua |
| 165 | + |
| 166 | +Puedes ejecutar `npm run start` para obtener una construcción continua. Solo se admiten los archivos .md de artículos que existan en el momento en que ejecutas el comando y los archivos que normalmente se copian. La tabla de contenidos, las plantillas y las páginas de índice no son vigiladas. |
| 167 | + |
| 168 | +### Desarrollo |
| 169 | + |
| 170 | +Si estás trabajando en la actualización de dependencias con `npm link`, puedes usar `npm run build-ci` y/o `npm run watch-no-check` para omitir la verificación de dependencias. |
| 171 | + |
| 172 | +## Construyendo la Referencia de Funciones WGSL |
| 173 | + |
| 174 | +La [referencia de funciones WGSL](https://webgpufundamentals.org/webgpu/lessons/webgpu-wgsl-function-reference.html) se genera actualmente de forma automática para el inglés escaneando de manera un tanto rudimentaria el HTML de la especificación. "Rudimentaria" significa que es probable que se rompa, pero funciona en su mayor parte o al menos parece proporcionar algo útil, por ahora. |
| 175 | + |
| 176 | +Para escanear la última especificación de nuevo, usa `npm run generate-wgsl-function-reference` y luego comprueba que funcionó (construye y mira la página). En particular, comprueba que los corchetes angulares como `vec4<f32>` existan donde deberían y también comprueba que las secciones `<pre>` como en `textureGather` estén correctamente formateadas. |
| 177 | + |
| 178 | +Para otros idiomas, probablemente necesitarás copiar el archivo en inglés y traducirlo. |
0 commit comments