diff --git a/locales/es.json b/locales/es.json
new file mode 100644
index 0000000000..00162e69fb
--- /dev/null
+++ b/locales/es.json
@@ -0,0 +1,777 @@
+{
+ "lang": "es",
+ "rules": {
+ "accesskeys": {
+ "description": "Garantiza que cada valor para el atributo accesskey es único",
+ "help": "El valor del atributo accesskey debe ser único"
+ },
+ "area-alt": {
+ "description": "Garantiza que los elementos de los mapas de imágenes tienen texto alternativo",
+ "help": "Los elementos activos deben tener texto alternativo"
+ },
+ "aria-allowed-attr": {
+ "description": "Garantiza que los atributos ARIA están permitidos para el rol de un elemento",
+ "help": "Los elementos solo deben usar atributos ARIA permitidos"
+ },
+ "aria-allowed-role": {
+ "description": "Garantiza que el atributo role tiene un valor apropiado para el elemento",
+ "help": "ARIA role debe ser apropiado para el elemento"
+ },
+ "aria-dpub-role-fallback": {
+ "description": "Garantiza que los 'DPUB roles' no admitidos solo se usan en elementos con roles alternativos implícitos",
+ "help": "Los 'DPUB ARIA roles' no admitidos deberían usarse en elementos con roles alternativos implícitos"
+ },
+ "aria-hidden-body": {
+ "description": "Garantiza que aria-hidden='true' no está presente en el 'body' del documento.",
+ "help": "aria-hidden='true' no debe estar presente en el 'body' del documento"
+ },
+ "aria-hidden-focus": {
+ "description": "Garantiza que los elementos 'aria-hidden' no contienen elementos que admitan el foco",
+ "help": "Los elementos 'ARIA hidden' no deben contener elementos que admitan el foco"
+ },
+ "aria-input-field-name": {
+ "description": "Garantiza que cada 'ARIA input field' tiene un nombre accesible",
+ "help": "Los 'ARIA input fields' tienen un nombre accesible"
+ },
+ "aria-required-attr": {
+ "description": "Garantiza que los elementos con 'ARIA roles' tienen todos los atributos ARIA requeridos",
+ "help": "Deben proporcionarse los atributos ARIA requeridos"
+ },
+ "aria-required-children": {
+ "description": "Garantiza que los elementos con un 'ARIA role' que requieren 'child roles' los contienen",
+ "help": "Ciertos 'ARIA roles' deben contener determinados hijos"
+ },
+ "aria-required-parent": {
+ "description": "Garantiza que los elementos con un 'ARIA role' que requieren 'parent roles' están contenidos en ellos",
+ "help": "Ciertos 'ARIA roles' deben estar contenidos en determinados padres"
+ },
+ "aria-roles": {
+ "description": "Garantiza que todos los elementos con un atributo role usan un valor válido",
+ "help": "Los 'ARIA roles' usados deben cumplir los requisitos para valores válidos"
+ },
+ "aria-toggle-field-name": {
+ "description": "Garantiza que cada 'ARIA toggle field' tiene un nombre accesible",
+ "help": "Los 'ARIA toggle fields' tienen un nombre accesible"
+ },
+ "aria-valid-attr-value": {
+ "description": "Garantiza que todos los atributos ARIA tienen valores válidos",
+ "help": "Los atributos ARIA deben cumplir los requisitos para valores válidos"
+ },
+ "aria-valid-attr": {
+ "description": "Garantiza que los atributos que empiezan por aria- son atributos ARIA válidos",
+ "help": "Los atributos ARIA deben cumplir los requisitos para nombres válidos"
+ },
+ "audio-caption": {
+ "description": "Garantiza que los elementos