Merge pull request #996 from diegozpy/i18n/es-panels

# Conflicts:
#	crates/ui-egui/src/i18n/ui.rs
This commit is contained in:
Brandon Thomas committed 2026-10-13 04:29:17 -04:00
commit 8a256a67ef
1 file changed
+572 -2
+572 -2
View File
@@ -19,7 +19,7 @@ use std::fmt::Display;
use std::sync::OnceLock; use std::sync::OnceLock;
thread_local! { thread_local! {
/// The resolved interface language ("en", "ja", "zh-hans", "zh-hant", "uk", "pt-br", "cs"); "en" until the first /// The resolved interface language ("en", "ja", "zh-hans", "zh-hant", "uk", "pt-br", "cs", "es"); "en" until the first
/// frame sets it. /// frame sets it.
static CURRENT: Cell<&'static str> = const { Cell::new("en") }; static CURRENT: Cell<&'static str> = const { Cell::new("en") };
} }
@@ -46,6 +46,7 @@ fn catalog(language: &str) -> Option<&'static Index> {
static UK: OnceLock<Index> = OnceLock::new(); static UK: OnceLock<Index> = OnceLock::new();
static PT_BR: OnceLock<Index> = OnceLock::new(); static PT_BR: OnceLock<Index> = OnceLock::new();
static CS: OnceLock<Index> = OnceLock::new(); static CS: OnceLock<Index> = OnceLock::new();
static ES: OnceLock<Index> = OnceLock::new();
let (index, rows) = match language { let (index, rows) = match language {
"ja" => (&JA, JAPANESE), "ja" => (&JA, JAPANESE),
"zh-hans" => (&HANS, SIMPLIFIED_CHINESE), "zh-hans" => (&HANS, SIMPLIFIED_CHINESE),
@@ -53,6 +54,7 @@ fn catalog(language: &str) -> Option<&'static Index> {
"uk" => (&UK, UKRAINIAN), "uk" => (&UK, UKRAINIAN),
"pt-br" => (&PT_BR, PORTUGUESE), "pt-br" => (&PT_BR, PORTUGUESE),
"cs" => (&CS, CZECH), "cs" => (&CS, CZECH),
"es" => (&ES, SPANISH),
_ => return None, _ => return None,
}; };
Some(index.get_or_init(|| rows.iter().copied().collect())) Some(index.get_or_init(|| rows.iter().copied().collect()))
@@ -3607,6 +3609,557 @@ const CZECH: &[(&str, &str)] = &[
("Per Layer", "Na vrstvu"), ("Per Layer", "Na vrstvu"),
]; ];
/// Spanish: neutral, tú, sentence case; the same source strings as the Chinese catalogs, in the same
/// order. Terms follow the Spanish menu catalog (composición, material de archivo, cola de procesamiento,
/// ajuste preestablecido, método abreviado). Written from the English source.
const SPANISH: &[(&str, &str)] = &[
("Appearance Settings…", "Ajustes de apariencia…"),
("Add to favorites", "Añadir a favoritos"),
("Remove from favorites", "Quitar de favoritos"),
(" OK ", " Aceptar "),
(" Delete ", " Eliminar "),
(" Open Auto-Save ", " Abrir guardado automático "),
("(missing)", "(ausente)"),
("360 View Orientation", "Orientación de la vista 360°"),
("3:2 Pulldown: {}", "Pulldown 3:2: {}"),
(
"A clean-room, open-source compositor for motion graphics and visual effects: native on macOS, Windows and Linux, and in the browser. Part of the ArtCraft family of creative apps.",
"Un compositor de código abierto y desarrollado en sala limpia para gráficos en movimiento y efectos visuales: nativo en macOS, Windows y Linux, y en el navegador. Forma parte de la familia de aplicaciones creativas ArtCraft.",
),
("About EffectCraft", "Acerca de EffectCraft"),
("About...", "Acerca de..."),
("Active", "Activo"),
("Active Camera", "Cámara activa"),
("Alpha", "Alfa"),
("Adapt Feature On Every Frame", "Adaptar la característica en cada fotograma"),
("Adaptive Sample Limit:", "Límite de muestras adaptativas:"),
("Add Animator", "Añadir animador"),
("Add Comment", "Añadir comentario"),
("Add Formatting", "Añadir formato"),
("Add Group", "Añadir grupo"),
("Add Mirror", "Añadir espejo"),
("Add Selected As", "Añadir seleccionados como"),
("Add a comment", "Añadir un comentario"),
("Add a shape, fill, stroke or path operation", "Añadir una forma, relleno, trazo u operación de trazado"),
("Add to Composition", "Añadir a la composición"),
("Add to Favorites", "Añadir a favoritos"),
("Add:", "Añadir:"),
("Adjust Exposure (stops)", "Ajustar exposición (pasos)"),
(
"Adjust composition duration to the time span of the selected layers",
"Ajustar la duración de la composición al intervalo de tiempo de las capas seleccionadas",
),
("Advanced 3D", "3D avanzado"),
("Align Layers to:", "Alinear capas con:"),
("All six face cameras turn together; the scene is not changed.", "Las seis cámaras de las caras giran juntas; la escena no cambia."),
("Anchor:", "Punto de anclaje:"),
("Aperture", "Abertura"),
("Appearance Mode", "Modo de apariencia"),
("Appearance Mode: {}", "Modo de apariencia: {}"),
("Apply Dimensions:", "Aplicar dimensiones:"),
("Apply Motion To:", "Aplicar movimiento a:"),
("Arrange", "Organizar"),
("Assign", "Asignar"),
("Auto", "Automático"),
("Auto-saves", "Guardados automáticos"),
("Back", "Atrás"),
("Background Color:", "Color de fondo:"),
("Blend Mode:", "Modo de fusión:"),
("Blending Mode", "Modo de fusión"),
("Blur", "Desenfoque"),
("Blur Level", "Nivel de desenfoque"),
("Boundary", "Límite"),
("Browser Storage", "Almacenamiento del navegador"),
("Browse…", "Examinar…"),
("Brush Dynamics", "Dinámica del pincel"),
("Caching frames…", "Almacenando fotogramas en caché…"),
("Cancel", "Cancelar"),
("Casts Shadows", "Proyecta sombras"),
("Change Renderer…", "Cambiar motor de procesamiento…"),
(
"Changing a shortcut creates a custom preset; the default stays as it is.",
"Cambiar un método abreviado crea un ajuste preestablecido personalizado; el predeterminado no cambia.",
),
("Channel", "Canal"),
("Channel:", "Canal:"),
("Chapter:", "Capítulo:"),
("Choose...", "Elegir..."),
("Classic 3D", "3D clásico"),
("Clear", "Borrar"),
("Clear list", "Borrar lista"),
("Click a key to see its commands.", "Haz clic en una tecla para ver sus comandos."),
(
"Click above the bar to add an opacity stop, below it to add a color stop.",
"Haz clic encima de la barra para añadir una parada de opacidad; debajo, para añadir una parada de color.",
),
("Click adds a point (½ height = no change)", "Al hacer clic se añade un punto (½ altura = sin cambios)"),
("Click adds a point; drag one off to remove", "Al hacer clic se añade un punto; arrastra uno fuera para quitarlo"),
("Click to make this viewer active", "Haz clic para activar este visor"),
("Click to reveal the expression in the timeline", "Haz clic para mostrar la expresión en la cronología"),
("Click to show the active composition here", "Haz clic para mostrar la composición activa aquí"),
("Click, then click in the Composition panel", "Haz clic y, a continuación, haz clic en el panel Composición"),
("Clone Options", "Opciones de clonación"),
("Clone Source Overlay:", "Superposición del origen del clon:"),
("Close", "Cerrar"),
("Close Panel", "Cerrar panel"),
("Close tutorial", "Cerrar tutorial"),
("Color", "Color"),
("Color Depth: {}", "Profundidad de color: {}"),
("Color:", "Color:"),
("Colour map", "Mapa de color"),
("Columns", "Columnas"),
("Comment:", "Comentario:"),
("Community", "Comunidad"),
("Composition", "Composición"),
("Composition Mini-Flowchart", "Minidiagrama de flujo de la composición"),
("Composition Name:", "Nombre de la composición:"),
("Composition Settings ▸ 3D Renderer", "Configuración de la composición ▸ Motor de procesamiento 3D"),
("Composition Settings…", "Configuración de la composición…"),
("Composition marker bin: drag a marker to the time ruler", "Contenedor de marcadores de composición: arrastra un marcador a la regla de tiempo"),
("Cone Angle", "Ángulo del cono"),
("Cone Feather", "Calado del cono"),
("Constrain Proportions", "Restringir proporciones"),
("Continuous (Lock Outgoing to Incoming)", "Continuo (igualar la velocidad de salida a la de entrada)"),
("Cue Point", "Punto de referencia"),
("Current Render", "Procesamiento actual"),
("Dark", "Oscuro"),
("Dark Theme", "Tema oscuro"),
("Darker", "Más oscuro"),
("Default Output:", "Salida predeterminada:"),
("Default: {}", "Predeterminado: {}"),
("Defaults", "Predeterminados"),
("Delete", "Eliminar"),
("Delete Selected Points", "Eliminar puntos seleccionados"),
("Delete selected project items", "Eliminar elementos del proyecto seleccionados"),
("Delete this template", "Eliminar esta plantilla"),
("Depth of Field", "Profundidad de campo"),
("Discord", "Discord"),
("Distribute Layers:", "Distribuir capas:"),
("Don't Recover", "No recuperar"),
("Don't Save", "No guardar"),
("Double-click a layer to open it in the Layer panel", "Haz doble clic en una capa para abrirla en el panel Capa"),
("Double-click footage in the Project panel to open it here", "Haz doble clic en el material de archivo del panel Proyecto para abrirlo aquí"),
("Double-click to edit the comment", "Haz doble clic para editar el comentario"),
("Download", "Descargar"),
(
"Drag properties here from the timeline,\nor use Animation > Add Property to Essential Graphics.",
"Arrastra propiedades aquí desde la cronología,\no usa Animación > Añadir propiedad a Gráficos esenciales.",
),
("Drag to change", "Arrastra para cambiar"),
("Drag to create a guide", "Arrastra para crear una guía"),
("Drag to slip the source", "Arrastra para deslizar el origen"),
("Drop Frame", "Drop frame"),
("Duplicate", "Duplicar"),
("Duration:", "Duración:"),
("Edit Gradient…", "Editar degradado…"),
("Edit Target: {}", "Destino de la edición: {}"),
("Edit in the Timeline", "Editar en la cronología"),
("EffectCraft didn't quit normally last time.", "EffectCraft no se cerró normalmente la última vez."),
("Effects & Presets options", "Opciones de Efectos y ajustes preestablecidos"),
("Effects: {}", "Efectos: {}"),
("Empty folder", "Carpeta vacía"),
("Enable Depth of Field", "Habilitar profundidad de campo"),
("Enable Expression", "Habilitar expresión"),
("Enhance", "Mejorar"),
("Essential Properties — {}", "Propiedades esenciales — {}"),
("Event", "Evento"),
("Export Template…", "Exportar plantilla…"),
("Export...", "Exportar..."),
("Expression Language Menu", "Menú de lenguaje de expresiones"),
("Expression pick whip: drag onto a property", "Selector de expresión: arrastra hasta una propiedad"),
("Expression:", "Expresión:"),
("Eyedropper: click, then click in the Composition panel", "Cuentagotas: haz clic y, a continuación, haz clic en el panel Composición"),
("Falloff", "Atenuación"),
("Falloff Distance", "Distancia de atenuación"),
("Favorites", "Favoritos"),
("Field Render: {}", "Procesamiento de campos: {}"),
("Figures", "Cifras"),
("Fill Target", "Destino del relleno"),
("Finished", "Finalizado"),
("Flowchart: {}", "Diagrama de flujo: {}"),
("Focus Distance", "Distancia de enfoque"),
("Follow Feature Rotation and Scale", "Seguir la rotación y la escala de la característica"),
("Footage: {}", "Material de archivo: {}"),
("Format: {}", "Formato: {}"),
("Frame Aspect Ratio: {}", "Relación de aspecto del fotograma: {}"),
("Frame Blending: {}", "Fusión de fotogramas: {}"),
("Frame Rate:", "Velocidad de fotogramas:"),
("Frame Render Time {}ms", "Tiempo de procesamiento del fotograma {}ms"),
("Frame Target:", "Marco de destino:"),
("Freeze", "Congelar"),
("Grab bag", "Varios"),
("Gradient Editor", "Editor de degradados"),
("Grid", "Cuadrícula"),
("Guide Layers: {}", "Capas de guía: {}"),
("Guides", "Guías"),
("Height:", "Altura:"),
("Hide This", "Ocultar esto"),
("Histogram", "Histograma"),
("Hold In Place", "Mantener en el lugar"),
("Home", "Inicio"),
("If Confidence is Below", "Si la confianza es inferior a"),
("Import", "Importar"),
("Import and Add to Composition", "Importar y añadir a la composición"),
("Import...", "Importar..."),
("Imported media", "Medios importados"),
("Influence:", "Influencia:"),
("Install from File…", "Instalar desde archivo…"),
("Intensity", "Intensidad"),
("Inverted", "Invertida"),
("Join the ArtCraft community on Discord", "Únete a la comunidad de ArtCraft en Discord"),
("Key: {}", "Tecla: {}"),
("LEARN", "APRENDER"),
("Label", "Etiqueta"),
("Label Colors and Names:", "Colores y nombres de etiquetas:"),
("Label:", "Etiqueta:"),
("Latest auto-save: {}", "Último guardado automático: {}"),
("Layer", "Capa"),
("Layer controls", "Controles de capa"),
("Layer {}", "Capa {}"),
("Layer:", "Capa:"),
("Layer: {}", "Capa: {}"),
("Learn", "Aprender"),
("Leave all attributes in \"{}\"", "Dejar todos los atributos en \"{}\""),
("Licence: {}", "Licencia: {}"),
("Ligatures", "Ligaduras"),
("Light", "Claro"),
("Light Theme", "Tema claro"),
("Light Type", "Tipo de luz"),
("Lighter", "Más claro"),
("Link Selected Property", "Vincular propiedad seleccionada"),
("Location:", "Ubicación:"),
("Lock Aspect Ratio to {}", "Bloquear relación de aspecto en {}"),
("Lock to Zoom", "Bloquear al zoom"),
("Locked: {} — {}", "Bloqueado: {} — {}"),
("Log:", "Registro:"),
("Loop (Trace Path)", "Bucle (trazar trazado)"),
("MIT OR Apache-2.0 • Fonts: Inter, JetBrains Mono (OFL)", "MIT OR Apache-2.0 • Fuentes: Inter, JetBrains Mono (OFL)"),
("Magnification ratio popup", "Menú de proporción de ampliación"),
("Make Comp Size", "Ajustar al tamaño de la composición"),
("Masks", "Máscaras"),
("Maximize Panel", "Maximizar panel"),
("Media Replacement", "Sustitución de medios"),
("Mesh:", "Malla:"),
("Diameter:", "Diámetro:"),
("Method Used: {} Average Error: {} pixels", "Método usado: {} Error promedio: {} píxeles"),
("Models folder: {}", "Carpeta de modelos: {}"),
("Modifiers:", "Modificadores:"),
("More", "Más"),
("More ArtCraft apps", "Más aplicaciones de ArtCraft"),
("More tutorials", "Más tutoriales"),
("Motion Blur", "Desenfoque de movimiento"),
("Motion Blur: {}", "Desenfoque de movimiento: {}"),
("Motion Sketch: drag to record", "Boceto de movimiento: arrastra para grabar"),
("Move Down", "Mover hacia abajo"),
("Move Up", "Mover hacia arriba"),
("Move to Project Root", "Mover a la raíz del proyecto"),
("Name", "Nombre"),
("Name:", "Nombre:"),
("Navigation", "Navegación"),
("New", "Nuevo"),
("New Comp from Selection", "Nueva composición a partir de la selección"),
("New Duration:", "Nueva duración:"),
("New composition name:", "Nombre de la nueva composición:"),
("New from Render Queue item:", "Nuevo a partir del elemento de la cola de procesamiento:"),
("New from Template", "Nuevo a partir de plantilla"),
("Next", "Siguiente"),
("Nice work. Pick another tutorial on the Home screen's Learn tab.", "Buen trabajo. Elige otro tutorial en la pestaña Aprender de la pantalla de inicio."),
(
"No VR environments yet. Create one with Composition ▸ VR ▸ Create VR Environment…",
"Aún no hay entornos de RV. Crea uno con Composición ▸ RV ▸ Crear entorno de RV…",
),
("No audio layer selected", "No hay ninguna capa de audio seleccionada"),
("No background jobs running", "No hay tareas en segundo plano en ejecución"),
("No composition markers", "No hay marcadores de composición"),
("No contributor data was built into this copy.", "No se incluyeron datos de colaboradores en esta copia."),
(
"No device list from this host; the system default output is used.",
"Este host no proporcionó una lista de dispositivos; se usa la salida predeterminada del sistema.",
),
("No layer selected", "No hay ninguna capa seleccionada"),
("No matching effects or presets", "No hay efectos ni ajustes preestablecidos que coincidan"),
("No matching fonts", "No hay fuentes coincidentes"),
("Variable fonts only", "Solo fuentes variables"),
("No model credits were built into this copy.", "No se incluyeron créditos de modelos en esta copia."),
("No nested compositions", "No hay composiciones anidadas"),
("No shortcut", "Sin método abreviado"),
("No unlocked layer selected", "No hay ninguna capa desbloqueada seleccionada"),
("No video", "Sin vídeo"),
("None", "Ninguno"),
("Not applied: tick it in the list to add it.", "No aplicado: márcalo en la lista para añadirlo."),
("Not assigned", "Sin asignar"),
("Note: Shadows are only cast from layers with Cast Shadows enabled.", "Nota: Las sombras solo se proyectan desde capas con Proyectar sombras activado."),
("Notify", "Notificar"),
("OK", "Aceptar"),
("Offset:", "Desplazamiento:"),
("On ({}) stop:", "Al parar ({}):"),
("One-Node Camera", "Cámara de un nodo"),
("Opacity:", "Opacidad:"),
("Open Composition", "Abrir composición"),
("Open Last Saved Project", "Abrir el último proyecto guardado"),
("Open New Composition", "Abrir nueva composición"),
("Open Output", "Abrir salida"),
("Open a composition to build Essential Graphics", "Abre una composición para crear Gráficos esenciales"),
("Open a composition to see its scopes", "Abre una composición para ver sus ámbitos"),
("Open a composition to track motion.", "Abre una composición para seguir movimiento."),
("Opus Tuning: {}", "Ajuste de Opus: {}"),
("Original Duration:", "Duración original:"),
("Output Cycle: {}", "Ciclo de salida: {}"),
("Output To:", "Salida a:"),
("Overlay", "Superposición"),
("Parameter Name:", "Nombre del parámetro:"),
("Parent pick whip: drag onto a layer", "Selector de capa padre: arrastra hasta una capa"),
("Pixel Aspect Ratio:", "Relación de aspecto de píxel:"),
("Playing on Video Preview", "Reproduciendo en la previsualización de vídeo"),
("Post-Render Action: {}", "Acción posterior al procesamiento: {}"),
("Preserve frame rate when nested or in render queue", "Conservar la velocidad de fotogramas cuando se anida o está en la cola de procesamiento"),
("Preserve resolution when nested", "Conservar la resolución al anidar"),
("Preset", "Ajuste preestablecido"),
("Preset:", "Ajuste preestablecido:"),
("Presets", "Ajustes preestablecidos"),
("Previous", "Anterior"),
("Primary:", "Principal:"),
("Process Before Match", "Procesar antes de buscar coincidencias"),
("Profile: {}", "Perfil: {}"),
(
"Project color depth: click to cycle 8/16/32 bpc, Alt-click for Project Settings",
"Profundidad de color del proyecto: haz clic para alternar entre 8/16/32 bpc; Alt+clic para la configuración del proyecto",
),
("Project: {}", "Proyecto: {}"),
("Projects", "Proyectos"),
("Property pick whip: drag onto a property", "Selector de propiedad: arrastra hasta una propiedad"),
("Protected Region", "Región protegida"),
("Proxy Use: {}", "Uso de proxy: {}"),
("Push All to Comp", "Enviar todo a la composición"),
("RGB", "RGB"),
("Radius", "Radio"),
("Rate Control: {}", "Control de tasa: {}"),
("Recent", "Recientes"),
("Recording", "Grabando"),
("Remove", "Quitar"),
("Rename", "Cambiar nombre"),
("Render: {} ms • UI {} fps{}", "Procesamiento: {} ms • IU {} fps{}"),
("Renderer:", "Motor de procesamiento:"),
("Request Persistent Storage", "Solicitar almacenamiento persistente"),
("Reset", "Restablecer"),
("Reset Labels", "Restablecer etiquetas"),
("Reset Preset", "Restablecer ajuste preestablecido"),
("Reset to Default", "Restablecer valores predeterminados"),
("Reset to Saved Layout", "Restablecer al diseño guardado"),
("Resolution/Down Sample Factor Popup", "Menú emergente de resolución/factor de reducción de muestreo"),
("Restore Panel Size", "Restaurar tamaño del panel"),
("Reverse the order", "Invertir el orden"),
("Revert All", "Revertir todo"),
("Roman Hanging Punctuation", "Puntuación colgante latina"),
("Roving:", "Itinerante:"),
("Ruler zero point (drag to move, double-click to reset)", "Punto cero de la regla (arrastra para mover, haz doble clic para restablecer)"),
("Rulers", "Reglas"),
("Run", "Ejecutar"),
("Sample Format: {}", "Formato de muestra: {}"),
("Samples Per Frame:", "Muestras por fotograma:"),
("Save from #{}", "Guardar desde #{}"),
("Saved {}", "Guardado {}"),
("Script… (⌘/Ctrl+Enter runs)", "Script… (⌘/Ctrl+Enter ejecuta)"),
("Search commands or shortcuts", "Buscar comandos o métodos abreviados"),
("Select", "Seleccionar"),
("Select a command to change its shortcut.", "Selecciona un comando para cambiar su método abreviado."),
("Select a layer to see its effects", "Selecciona una capa para ver sus efectos"),
("Select a layer to see its properties", "Selecciona una capa para ver sus propiedades"),
("({}) Selected Objects", "({}) objetos seleccionados"),
(
"Select a layer with a mask or shape path (or the path property), or Puppet pins.",
"Selecciona una capa con una máscara o un trazado de forma (o la propiedad de trazado), o pines de marioneta.",
),
("Select a text layer", "Selecciona una capa de texto"),
("Select an item in the Project panel", "Selecciona un elemento en el panel Proyecto"),
("Select animated properties to show them in the Graph Editor", "Selecciona propiedades animadas para mostrarlas en el editor de gráficos"),
(
"Select the leader pin, then Shift-click the pins that should trail it (hair, cloth, tails)",
"Selecciona el pin guía y luego haz Mayús+clic en los pines que deben seguirlo (pelo, tela, colas)",
),
("Set Ground Plane and Origin", "Definir plano de suelo y origen"),
("Set Paint Colors to Black and White (D)", "Definir colores de pintura como negro y blanco (D)"),
("Settings", "Ajustes"),
("Settings Name:", "Nombre de los ajustes:"),
("Shadow Darkness", "Oscuridad de la sombra"),
("Shadow Diffusion", "Difusión de la sombra"),
("Shadows", "Sombras"),
("Shape…", "Forma…"),
("Show", "Mostrar"),
("Show Layer Name", "Mostrar nombre de la capa"),
("Show Source Name", "Mostrar nombre del origen"),
("Show me", "Mostrar cómo hacerlo"),
("Show:", "Mostrar:"),
("Shutter Angle:", "Ángulo del obturador:"),
("Shutter Phase:", "Fase del obturador:"),
("Size", "Tamaño"),
("Skip", "Omitir"),
("Snapping", "Ajuste"),
("Snapping options", "Opciones de ajuste"),
("Snapshot", "Instantánea"),
("Solo Supported Properties", "Mostrar solo las propiedades compatibles"),
("Solo Switches: {}", "Conmutadores de solo: {}"),
("Sort", "Ordenar"),
("Spacing:", "Espaciado:"),
("Spatial Interpolation:", "Interpolación espacial:"),
("Speed:", "Velocidad:"),
("Start Timecode:", "Código de tiempo inicial:"),
("Start: {} Duration: {}", "Inicio: {} Duración: {}"),
("Step {} of {}: {}", "Paso {} de {}: {}"),
("Stop", "Detener"),
("Stop {} at {}°", "Parada {} en {}°"),
("Stored in: {}", "Guardado en: {}"),
("Stretch", "Estirar"),
("Stretch Factor:", "Factor de estiramiento:"),
("Stylistic Sets", "Conjuntos estilísticos"),
("Subpixel Positioning", "Posicionamiento de subpíxeles"),
("Swap Paint Colors (X)", "Intercambiar colores de pintura (X)"),
("Sync with System", "Sincronizar con el sistema"),
("System Default", "Predeterminado del sistema"),
("Table", "Tabla"),
("Template name", "Nombre de la plantilla"),
("Template: {}\n{}", "Plantilla: {}\n{}"),
("Temporal Interpolation:", "Interpolación temporal:"),
("The Media Browser is not available here (use File ▸ Import)", "El Navegador de medios no está disponible aquí (usa Archivo ▸ Importar)"),
("The OpenEXR layer shown in red, green, blue and alpha", "La capa de OpenEXR mostrada en rojo, verde, azul y alfa"),
("The render queue is empty.", "La cola de procesamiento está vacía."),
(
"These adjacent keyframes cannot interpolate because their stop counts differ.",
"Estos fotogramas clave adyacentes no pueden interpolarse porque sus números de paradas son distintos.",
),
("This ScriptUI panel has closed", "Este panel de ScriptUI se ha cerrado"),
("This change will create a new solid for this layer.", "Este cambio creará un nuevo sólido para esta capa."),
("Time", "Tiempo"),
("Time Stretch…", "Estirar el tiempo…"),
("Time:", "Tiempo:"),
("Time: {}", "Tiempo: {}"),
("Title/Action Safe", "Área segura de título/acción"),
("Title/action safe", "Área segura de título/acción"),
("Toggle Switches / Modes", "Alternar conmutadores / modos"),
("Track Name:", "Nombre del seguimiento:"),
(
"Trained models are available in the desktop app; the browser uses the classic engine.",
"Los modelos entrenados están disponibles en la aplicación de escritorio; el navegador usa el motor clásico.",
),
("Transform", "Transformar"),
("Transparency grid", "Cuadrícula de transparencia"),
("Tutorial complete", "Tutorial completado"),
("Two-Node Camera", "Cámara de dos nodos"),
("Type", "Tipo"),
("Type a command or effect…", "Escribe un comando o efecto…"),
("URL:", "URL:"),
("Undock Panel", "Desacoplar panel"),
("Move Panel to New Window", "Mover panel a una ventana nueva"),
("Move Panel to Main Window", "Mover panel a la ventana principal"),
("Unfreeze", "Descongelar"),
("Unlink {}", "Desvincular {}"),
(
"Use this option to place the currently selected layers together into a new intermediate composition.",
"Usa esta opción para colocar las capas seleccionadas juntas en una nueva composición intermedia.",
),
("VR Environments", "Entornos de RV"),
("Value:", "Valor:"),
("Variable Font Axes", "Ejes de fuente variable"),
("Video Codec: {}", "Códec de vídeo: {}"),
("View:", "Vista:"),
("Welcome to EffectCraft", "Te damos la bienvenida a EffectCraft"),
("Width:", "Ancho:"),
("You can undo this.", "Puedes deshacer esto."),
("Your changes will be lost if you don't save them.", "Tus cambios se perderán si no los guardas."),
("Zoom", "Zoom"),
("built-in", "integrado"),
("frames per second", "fotogramas por segundo"),
("template name", "nombre de plantilla"),
("{} contributors · {} commits", "{} colaboradores · {} commits"),
("{} x {}, {}MB per 8bpc frame", "{} x {}, {}MB por fotograma de 8 bpc"),
("{} — coming soon", "{} — próximamente"),
("{} — double-click to open, {}-click to reveal", "{} — doble clic para abrir, clic con {} para mostrar"),
("⌘/Ctrl-drag a pin to record its motion", "⌘/Ctrl + arrastra un pin para grabar su movimiento"),
("▣ {}", "▣ {}"),
("⚠ {} is used by:", "⚠ {} se usa en:"),
("3D Reference Axes", "Ejes de referencia 3D"),
("Affect all layers that use this solid", "Afectar a todas las capas que usan este sólido"),
("Choose grid and guide options", "Elegir opciones de cuadrícula y guías"),
("Colorize", "Colorear"),
("Custom", "Personalizado"),
("Custom...", "Personalizada..."),
("Fit", "Ajustar"),
("Fit up to 100%", "Ajustar hasta el 100%"),
("Full", "Completa"),
("Half", "Mitad"),
("Only this layer uses this solid.", "Solo esta capa usa este sólido."),
("Proportional Grid", "Cuadrícula proporcional"),
("Quarter", "Cuarto"),
("Region of Interest", "Región de interés"),
("Reset Exposure", "Restablecer exposición"),
("Show Channel and Color Management Settings", "Mostrar ajustes de canal y gestión del color"),
("Show Snapshot (hold)", "Mostrar instantánea (mantener)"),
("Take Snapshot", "Tomar instantánea"),
("Third", "Tercio"),
("Toggle Mask and Shape Path Visibility", "Alternar visibilidad de máscara y trazado de forma"),
("Toggle Transparency Grid", "Alternar cuadrícula de transparencia"),
("16 bits per channel", "16 bits por canal"),
("32 bits per channel (float)", "32 bits por canal (flotante)"),
("8 bits per channel", "8 bits por canal"),
("Adaptive Resolution", "Resolución adaptable"),
("Adobe-style built-in", "Integrado al estilo Adobe"),
("Blue", "Azul"),
("Current Settings", "Ajustes actuales"),
("Disable Per-character 3D", "Deshabilitar 3D por carácter"),
("Draft", "Borrador"),
("Enable Per-character 3D", "Habilitar 3D por carácter"),
("Fast Draft", "Borrador rápido"),
("Fast Previews (Draft 3D, Faster Effects)", "Previsualizaciones rápidas (borrador 3D, efectos más rápidos)"),
("Green", "Verde"),
("Import Image Sequence", "Importar secuencia de imágenes"),
("Import PDF / Illustrator File", "Importar archivo PDF / Illustrator"),
("Import Photoshop File", "Importar archivo de Photoshop"),
("Interpret Unlabeled Alpha As", "Interpretar alfa sin etiquetar como"),
("Join the ArtCraft Discord", "Únete al Discord de ArtCraft"),
("Mercury GPU Acceleration ({})", "Aceleración por GPU Mercury ({})"),
("Mercury Software Only", "Solo software Mercury"),
("OCIO (built-in ACES config)", "OCIO (configuración ACES integrada)"),
("Off (Final Quality)", "Desactivado (calidad final)"),
("OpenGL (compatibility)", "OpenGL (compatibilidad)"),
("Opus Bitrate: {} kbps", "Tasa de bits de Opus: {} kbps"),
("RGB Straight", "RGB sin premultiplicar"),
("Red", "Rojo"),
("Tone map", "Mapeo de tonos"),
("Use In-Window Menu Bar on macOS", "Usar la barra de menús en la ventana en macOS"),
("Wireframe", "Estructura alámbrica"),
("sRGB IEC61966-2.1 (default)", "sRGB IEC61966-2.1 (predeterminado)"),
("New Project", "Nuevo proyecto"),
("Open Project…", "Abrir proyecto…"),
("Templates", "Plantillas"),
("EffectCraft home page", "Página de inicio de EffectCraft"),
("EffectCraft on GitHub", "EffectCraft en GitHub"),
("Motion graphics and visual effects · version {}", "Gráficos en movimiento y efectos visuales · versión {}"),
("New Composition", "Nueva composición"),
("Open Demo Project", "Abrir proyecto de demostración"),
("Import Footage…", "Importar material de archivo…"),
("Filter recent files", "Filtrar archivos recientes"),
("NAME", "NOMBRE"),
("OPENED", "ABIERTO"),
("SIZE", "TAMAÑO"),
("KIND", "TIPO"),
("Your recent files will show here", "Tus archivos recientes aparecerán aquí"),
("Create a new project, or open the demo project to look around.", "Crea un proyecto nuevo o abre el proyecto de demostración para explorar."),
("No recent files match the filter", "Ningún archivo reciente coincide con el filtro"),
("Try another name or folder.", "Prueba con otro nombre o carpeta."),
("Just now", "Ahora mismo"),
("Yesterday", "Ayer"),
("{} minute ago", "Hace {} minuto"),
("{} minutes ago", "Hace {} minutos"),
("{} hour ago", "Hace {} hora"),
("{} hours ago", "Hace {} horas"),
("{} day ago", "Hace {} día"),
("{} days ago", "Hace {} días"),
("EffectCraft project", "Proyecto de EffectCraft"),
("After Effects project", "Proyecto de After Effects"),
("Lottie animation", "Animación de Lottie"),
("Project", "Proyecto"),
];
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::*; use super::*;
@@ -3708,6 +4261,7 @@ mod tests {
.chain(UKRAINIAN.iter().copied()) .chain(UKRAINIAN.iter().copied())
.chain(PORTUGUESE.iter().copied()) .chain(PORTUGUESE.iter().copied())
.chain(CZECH.iter().copied()) .chain(CZECH.iter().copied())
.chain(SPANISH.iter().copied())
.collect() .collect()
} }
@@ -3738,7 +4292,7 @@ mod tests {
let hant: Vec<&str> = TRADITIONAL_CHINESE.iter().map(|(en, _)| *en).collect(); let hant: Vec<&str> = TRADITIONAL_CHINESE.iter().map(|(en, _)| *en).collect();
assert_eq!(hans, hant, "the two Chinese catalogs list different source strings"); assert_eq!(hans, hant, "the two Chinese catalogs list different source strings");
// Japanese, Ukrainian and Czech may lag the Chinese catalogs: a missing row falls back to English. // Japanese, Ukrainian and Czech may lag the Chinese catalogs: a missing row falls back to English.
for (name, cat) in [("Japanese", JAPANESE), ("Ukrainian", UKRAINIAN), ("Brazilian Portuguese", PORTUGUESE), ("Czech", CZECH)] { for (name, cat) in [("Japanese", JAPANESE), ("Ukrainian", UKRAINIAN), ("Brazilian Portuguese", PORTUGUESE), ("Czech", CZECH), ("Spanish", SPANISH)] {
let extra: Vec<&str> = cat.iter().map(|(en, _)| *en).filter(|en| !hans.contains(en)).collect(); let extra: Vec<&str> = cat.iter().map(|(en, _)| *en).filter(|en| !hans.contains(en)).collect();
assert!(extra.is_empty(), "the {name} catalog lists source strings the Chinese ones don't: {extra:?}"); assert!(extra.is_empty(), "the {name} catalog lists source strings the Chinese ones don't: {extra:?}");
} }
@@ -3796,6 +4350,22 @@ mod tests {
assert_eq!(tr("Cancel"), "Cancel"); assert_eq!(tr("Cancel"), "Cancel");
} }
/// Spanish panels translate, fill values in order and keep project content; every Chinese source
/// string has a Spanish row.
#[test]
fn spanish_panels_translate_and_keep_project_content() {
let es: Vec<&str> = SPANISH.iter().map(|(en, _)| *en).collect();
let hans: Vec<&str> = SIMPLIFIED_CHINESE.iter().map(|(en, _)| *en).collect();
assert_eq!(es, hans, "the Spanish catalog lists different source strings than the Chinese ones");
set_current("es");
assert_eq!(tr("Composition Name:"), "Nombre de la composición:");
assert_eq!(tr("Cancel"), "Cancelar");
assert_eq!(tr("my layer.mp4"), "my layer.mp4");
assert_eq!(tr_args("Step {} of {}: {}", &[&1, &3, &"Colour"]), "Paso 1 de 3: Colour");
set_current("en");
assert_eq!(tr("Cancel"), "Cancel");
}
/// Values fill the placeholders in order, and a missing value is dropped instead of panicking. /// Values fill the placeholders in order, and a missing value is dropped instead of panicking.
#[test] #[test]
fn tr_args_fills_values_in_order() { fn tr_args_fills_values_in_order() {