{
	"$schema": "http://json-schema.org/draft-04/schema#",
	"type": "object",
	"definitions": {
		"configurations": {
			"type": "array",
			"items": {
				"type": "object",
				"required": [
					"name"
				],
				"properties": {
					"name": {
						"markdownDescription": "Identificador de configuración. `Mac`, `Linux`, y `Win32` son identificadores especiales de configuraciones que se seleccionarán automáticamente en esas plataformas, pero el identificador puede ser cualquier texto.",
						"descriptionHint": "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered.",
						"type": "string"
					},
					"compilerPath": {
						"markdownDescription": "Ruta de acceso completa del compilador usado (por ejemplo, `/usr/bin/gcc`) para que IntelliSense sea más preciso.",
						"descriptionHint": "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered.",
						"type": [
							"null",
							"string"
						]
					},
					"compilerArgs": {
						"markdownDescription": "Argumentos del compilador para modificar las inclusiones o definiciones usadas, por ejemplo, `-nostdinc++`, `-m32`, etc. Los argumentos que toman argumentos adicionales delimitados por espacios deben especificarse como argumentos independientes en la matriz; por ejemplo, para `--sysroot <arg>` use `\"--sysroot\", \"<arg>\"`.",
						"descriptionHint": "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered, except potentially the `arg` text which is a placeholder and not literal text, i.e. an abbreviation for `argument`.",
						"type": "array",
						"items": {
							"type": "string"
						}
					},
					"cStandard": {
						"description": "Versión del estándar del lenguaje C que se va a usar para IntelliSense. Nota: Los estándares GNU solo se usan para consultar el compilador de conjuntos a fin de obtener definiciones GNU e IntelliSense emulará la versión del estándar C equivalente.",
						"type": "string",
						"enum": [
							"c89",
							"c99",
							"c11",
							"c17",
							"c23",
							"gnu89",
							"gnu99",
							"gnu11",
							"gnu17",
							"gnu23",
							"${default}"
						]
					},
					"cppStandard": {
						"description": "Versión del estándar del lenguaje C++ que se va a usar para IntelliSense. Nota: Los estándares GNU solo se usan para consultar el compilador de conjuntos a fin de obtener definiciones GNU e IntelliSense emulará la versión del estándar C++ equivalente.",
						"type": "string",
						"enum": [
							"c++98",
							"c++03",
							"c++11",
							"c++14",
							"c++17",
							"c++20",
							"c++23",
							"c++26",
							"gnu++98",
							"gnu++03",
							"gnu++11",
							"gnu++14",
							"gnu++17",
							"gnu++20",
							"gnu++23",
							"gnu++26",
							"${default}"
						]
					},
					"compileCommands": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "array",
								"items": {
									"type": "string"
								},
								"uniqueItems": true
							}
						],
						"markdownDescription": "Ruta de acceso completa o una lista de rutas de acceso completas a los archivos `compile_commands.json` para el área de trabajo.",
						"descriptionHint": "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered."
					},
					"includePath": {
						"markdownDescription": "Lista de rutas de acceso que el motor de IntelliSense debe usar al buscar los encabezados incluidos. La búsqueda en estas rutas de acceso no es recursiva. Especifique `**` para indicar una búsqueda recursiva. Por ejemplo, `${workspaceFolder}/**` buscará en todos los subdirectorios, mientras que `${workspaceFolder}` no lo hará. Normalmente, esto no debería incluir las inclusiones del sistema. Si desea que lo haga, establezca `C_Cpp.default.compilerPath`.",
						"descriptionHint": "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered.",
						"type": "array",
						"items": {
							"type": "string"
						}
					},
					"macFrameworkPath": {
						"description": "Lista de rutas de acceso que el motor de IntelliSense necesita usar para buscar los encabezados incluidos de las plataformas Mac. Solo se admite en configuraciones para Mac.",
						"type": "array",
						"items": {
							"type": "string"
						}
					},
					"windowsSdkVersion": {
						"markdownDescription": "Versión de la ruta de acceso de inclusión de Windows SDK que debe usarse en Windows; por ejemplo, `10.0.17134.0`.",
						"descriptionHint": "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered.",
						"type": "string",
						"pattern": "^\\d{2}\\.\\d{1}\\.\\d{5}\\.\\d{1}$|^8\\.1$"
					},
					"dotConfig": {
						"description": "Ruta de acceso a un archivo .config creado por el sistema Kconfig. El sistema Kconfig genera un archivo con todas las definiciones para compilar un proyecto. Algunos ejemplos de proyectos que usan el sistema Kconfig son Kernel Linux y NuttX RTOS.",
						"type": "string"
					},
					"defines": {
						"markdownDescription": "Lista de definiciones del preprocesador que usará el motor de IntelliSense al analizar los archivos. También se puede usar `=` para establecer un valor (por ejemplo, `VERSION=1`).",
						"descriptionHint": "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered.",
						"type": "array",
						"items": {
							"type": "string"
						}
					},
					"intelliSenseMode": {
						"markdownDescription": "El modo IntelliSense que se usará y que se asigna a una variante de plataforma y arquitectura de MSVC, gcc o Clang. Si se establece en `${default}` o no se establece, la extensión usará el valor predeterminado para esa plataforma. De forma predeterminada, Windows usa `windows-msvc-x64`, Linux usa `linux-gcc-x64` y macOS usa `macos-clang-x64`. Los modos IntelliSense que solo especifican variantes de `<compilador>-<arquitectura>` (por ejemplo, `gcc-x64`) son modos heredados y se convierten automáticamente a las variantes de `<plataforma>-<compilador>-<arquitectura>` en función de la plataforma del host.",
						"descriptionHint": "Uses of words 'platform', 'compiler', and 'architecture' are meant to be descriptive placeholders for literal values, so they should be translated, but without changing the surrounding `<>-<>` symbols. All other text inside `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered.",
						"type": "string",
						"enum": [
							"macos-clang-x86",
							"macos-clang-x64",
							"macos-clang-arm",
							"macos-clang-arm64",
							"macos-gcc-x86",
							"macos-gcc-x64",
							"macos-gcc-arm",
							"macos-gcc-arm64",
							"linux-clang-x86",
							"linux-clang-x64",
							"linux-clang-arm",
							"linux-clang-arm64",
							"linux-gcc-x86",
							"linux-gcc-x64",
							"linux-gcc-arm",
							"linux-gcc-arm64",
							"windows-clang-x86",
							"windows-clang-x64",
							"windows-clang-arm",
							"windows-clang-arm64",
							"windows-gcc-x86",
							"windows-gcc-x64",
							"windows-gcc-arm",
							"windows-gcc-arm64",
							"windows-msvc-x86",
							"windows-msvc-x64",
							"windows-msvc-arm",
							"windows-msvc-arm64",
							"clang-x86",
							"clang-x64",
							"clang-arm",
							"clang-arm64",
							"gcc-x86",
							"gcc-x64",
							"gcc-arm",
							"gcc-arm64",
							"msvc-x86",
							"msvc-x64",
							"msvc-arm",
							"msvc-arm64",
							"${default}"
						]
					},
					"forcedInclude": {
						"description": "Lista de archivos que tienen que incluirse antes que cualquier archivo de inclusión en una unidad de traducción.",
						"type": "array",
						"items": {
							"type": "string"
						}
					},
					"configurationProvider": {
						"description": "El identificador de una extensión de VS Code que puede proporcionar información de configuración de IntelliSense para los archivos de código fuente.",
						"type": "string"
					},
					"mergeConfigurations": {
						"markdownDescription": "Se establece en `true` para combinar `includePath`, `defines`, `forcedInclude` y `browse.path` con los recibidos del proveedor de configuración.",
						"descriptionHint": "{Locked=\"`true`\"} {Locked=\"`includePath`\"} {Locked=\"`defines`\"} {Locked=\"`forcedInclude`\"} {Locked=\"`browse.path`\"}",
						"type": "boolean"
					},
					"browse": {
						"type": "object",
						"properties": {
							"limitSymbolsToIncludedHeaders": {
								"markdownDescription": "Establecer `true` para procesar únicamente los archivos incluidos directa o indirectamente como encabezados. Establecer `false` para procesar todos los archivos en las rutas de acceso de inclusión especificadas.",
								"descriptionHint": "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered.",
								"type": [
									"boolean",
									"string"
								]
							},
							"databaseFilename": {
								"description": "Ruta de acceso a la base de datos de símbolos generada. Si se especifica una ruta de acceso relativa, será relativa a la ubicación de almacenamiento predeterminada del área de trabajo.",
								"type": "string"
							},
							"path": {
								"markdownDescription": "Lista de rutas de acceso que se usarán para indexar y analizar símbolos del área de trabajo (que se usarán con comandos como 'Go to Definition', 'Find All References', etc.). La búsqueda en estas rutas de acceso es recursiva de forma predeterminada. Especifique `*` para indicar una búsqueda no recursiva. Por ejemplo, `${workspaceFolder}` buscará en todos los subdirectorios, mientras que `${workspaceFolder}/*` no lo hará.",
								"descriptionHint": "Text in '' is a command and should be translated in the same way that VS Code itself translates it. Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered.",
								"type": "array",
								"items": {
									"type": "string"
								}
							}
						},
						"additionalProperties": false
					},
					"recursiveIncludes": {
						"type": "object",
						"properties": {
							"reduce": {
								"markdownDescription": "Establézcalo en `always` para reducir siempre el número de rutas de inclusión recursivas proporcionadas a IntelliSense solo a aquellas rutas a las que hacen referencia actualmente las instrucciones #include. Esto requiere primero analizar los archivos para determinar qué encabezados se incluyen. Establézcalo en `never` para proporcionar todas las rutas de inclusión recursivas a IntelliSense. Reducir el número de rutas de inclusiones recursivas puede mejorar el rendimiento de IntelliSense cuando hay un gran número de rutas de inclusión recursivas involucradas. No reducir el número de rutas de inclusión recursivas puede mejorar el rendimiento de IntelliSense al evitar la necesidad de analizar archivos para determinar qué rutas de inclusión proporcionar. El valor `default` actualmente es para reducir el número de rutas de inclusión recursivas proporcionadas a IntelliSense.",
								"descriptionHint": "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered.",
								"type": "string",
								"enum": [
									"always",
									"never",
									"default",
									"${default}"
								]
							},
							"priority": {
								"markdownDescription": "La prioridad de las rutas de acceso de inclusión recursivas. Si se establece en `beforeSystemIncludes`, se buscarán las rutas de inclusión recursivas antes que las rutas de inclusión del sistema. Si se establece en `afterSystemIncludes`, se buscarán las rutas de inclusión recursivas después de las rutas de inclusión del sistema. `beforeSystemIncludes` reflejaría más fielmente el orden de búsqueda de un compilador, mientras que `afterSystemIncludes` podría resultar en un mejor rendimiento.",
								"descriptionHint": "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered.",
								"type": "string",
								"enum": [
									"beforeSystemIncludes",
									"afterSystemIncludes",
									"${default}"
								]
							},
							"order": {
								"markdownDescription": "El orden en el que se buscan los subdirectorios de las inclusiones recursivas.",
								"type": "string",
								"enum": [
									"depthFirst",
									"breadthFirst",
									"${default}"
								]
							}
						},
						"additionalProperties": false
					},
					"customConfigurationVariables": {
						"type": "object",
						"markdownDescription": "Variables personalizadas que pueden consultarse mediante el comando `${cpptools:activeConfigCustomVariable}` para utilizarlas en las variables de entrada en `launch.json` o `tasks.json`.",
						"descriptionHint": "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered.",
						"patternProperties": {
							"(^.+$)": {
								"type": "string"
							}
						},
						"additionalProperties": false
					}
				},
				"additionalProperties": false
			}
		},
		"env": {
			"type": "object",
			"markdownDescription": "Las variables personalizadas se pueden reutilizar en cualquier ubicación del archivo mediante la sintaxis `${variable}` o `${env:variable}`.",
			"descriptionHint": "The word 'variable' within curly braces should be translated. The \"env\" should not be translated, and the capitalization, spacing, and punctuation (\"${:}\", including the ``) should be preserved.",
			"patternProperties": {
				"(?!^workspaceFolder$)(?!^workspaceRoot$)(?!^workspaceFolderBasename$)(?!^execPath$)(?!^pathSeparator$)(?!^default$)(^.+$)": {
					"oneOf": [
						{
							"type": "string"
						},
						{
							"type": "array",
							"items": {
								"type": "string"
							}
						}
					]
				}
			},
			"additionalProperties": false
		},
		"version": {
			"type": "integer",
			"description": "Versión del archivo de configuración. La extensión administra esta propiedad, no la modifique."
		},
		"enableConfigurationSquiggles": {
			"type": "boolean",
			"markdownDescription": "Controla si la extensión notificará los errores detectados en `c_cpp_properties.json`.",
			"descriptionHint": "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered."
		}
	},
	"properties": {
		"configurations": {
			"$ref": "#/definitions/configurations"
		},
		"env": {
			"$ref": "#/definitions/env"
		},
		"version": {
			"$ref": "#/definitions/version"
		},
		"enableConfigurationSquiggles": {
			"$ref": "#/definitions/enableConfigurationSquiggles"
		}
	},
	"required": [
		"configurations",
		"version"
	],
	"additionalProperties": false
}