DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

Oskarosan /

Oskarosan/dsh-locale-es

Verified

Pack de idioma castellano (es) para la interfaz de DeepSeek Harness: 2603 claves en 57 namespaces, plugin de cliente y respaldo automatico a ingles.

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@caadeeaf

dsh-locale-es

Pack de idioma castellano (es) para la interfaz de DeepSeek Harness (DSH).

  • 2.603 de 2.603 claves traducidas (100 %), repartidas en 57 namespaces.
  • Entra como plugin de cliente del Loader de DSH: no parchea app.asar ni ningún fichero de la aplicación.
  • Cualquier clave que falte o que añada una versión nueva de DSH cae automáticamente al inglés, así que el pack nunca rompe la interfaz.

Estado

Cobertura 2.603/2.603 claves (100 %), 57/57 namespaces
Idioma es — etiqueta «Español», respaldo en
Paquete dsh-locale-es 1.0.0
Licencia MIT (ver LICENSE y NOTICE.md)
Núcleo de DSH probado app de escritorio con app.asar de 121 MB, 70 plugins de UI

Las tres comprobaciones se pueden repetir en cualquier momento y no necesitan la aplicación:

node tools/build-locale-pack.cjs i18n/catalog.json i18n/es . --check   # cobertura y marcadores
node tools/audit-es.cjs i18n/catalog.json i18n/es                      # claves ausentes y repetidas
node tools/check-portable.cjs i18n                                     # ni rutas ni secretos locales
node tools/verify-pack.cjs lib/client.js                               # ejecuta el bundle como lo hace DSH

Instalación

Hay dos caminos. El corto usa el gestor de plugins que trae DSH; el manual edita el perfil.

Vía corta: el gestor de plugins

En la interfaz: barra lateral → Plugins → Add plugin, y pega la especificación. O desde la terminal, con el mismo resultado:

# por nombre, si el paquete está publicado en npm
dsh plugin --profile desktop add dsh-locale-es

# directamente desde GitHub, sin publicar nada
dsh plugin --profile desktop add github:Oskarosan/dsh-locale-es

# o desde una copia local
dsh plugin --profile desktop add C:\ruta\a\dsh-locale-es

El gestor acepta nombre de paquete npm (con versión opcional), github:autor/repo o una URL de repositorio git, un .tgz y una ruta local. Antes de instalar comprueba que el paquete declare dsh.bundle; al terminar lo añade a dsh.profile.bundles del perfil. Después, recarga la interfaz y elige el idioma en Ajustes → General → Idioma → Español.

Vía manual: editar el perfil

Los plugins de un perfil se declaran en ~/.dsh/profiles/<perfil>/package.json. Añade el pack como dependencia y como bundle:

{
  "dependencies": {
    "dsh-locale-es": "link:C:/ruta/a/dsh-locale-es"
  },
  "dsh": {
    "profile": {
      "bundles": [
        "@deepseek-ai/dsh-base",
        "@deepseek-ai/dsh-web-app",
        "dsh-locale-es"
      ]
    }
  }
}

Después, en la carpeta del perfil:

pnpm install

Qué busca DSH para listar un plugin

Comprobado en el código de la aplicación (0.2.0-rc.2), por si hay que diagnosticar una tarjeta que no aparece:

  • dsh.bundle.patch en el package.json — imprescindible: sin ese campo el paquete se instala como dependencia plana, no como capa del perfil.
  • La tarjeta se pinta con los metadatos que DSH lee de locale/<idioma>.json (meta.title, meta.description), con el name y la description del package.json como respaldo; el icono sale del campo icon de nivel superior. Para que el resolutor ESM los encuentre, el mapa exports tiene que declarar ./locale/*.json y ./package.json.
  • tools/check-plugin-meta.cjs replica esas comprobaciones y corre en la integración continua.
  • DSH no lee las palabras clave de npm ni consulta ningún catálogo propio: no hay nada que «indexar». El descubrimiento es el README, npm o el directorio de la comunidad.

Notas

  • La ruta link: y github: están soportadas por pnpm; la primera es la que está probada aquí.
  • El fichero cordis.patch.yml del paquete es lo que inserta la fila locale-es en el árbol de plugins; lo aplica DSH al cargar el bundle, no hay que copiarlo a mano.
  • Si tras instalar el pack no ves «Español» en Ajustes, desactiva y vuelve a activar la fila locale-es en el gestor de plugins para forzar una revisión nueva del bundle de cliente.
  • Aviso comprobado: si modificas el perfil desde dentro de una sesión de DSH, la recarga en caliente dispone esa sesión y la aplicación abre una conversación nueva. Hazlo desde fuera o asume que esa conversación se corta (el historial no se pierde).
  • El rescate «Disable third-party plugins» del escritorio deja el perfil con los bundles de fábrica, así que se lleva por delante este pack: para volver a tenerlo hay que reinstalarlo.

Cómo funciona

Los plugins de cliente de DSH son fábricas lazy-CJS que el cargador ejecuta en el navegador:

window.__ModuleLoader__.load({ id, factory: (require) => { /* … */ return module.exports } })

lib/client.js —generado, no editado a mano— inyecta el servicio locale y, cuando está disponible, registra el idioma y un diccionario por namespace declarando cada registro como efecto propio del plugin, de modo que se retira limpiamente al descargarlo:

const LANGUAGE = { id: 'es', label: 'Español', fallback: 'en' };

function apply(ctx) {
  ctx.effect(() => ctx.locale.addLanguage(LANGUAGE), 'locale-es: idioma');
  for (const [ns, dict] of Object.entries(DICTIONARIES)) {
    ctx.effect(() => ctx.locale.register(ns, 'es', dict), 'locale-es: ' + ns);
  }
}

lib/index.js es la mitad host: existe para que el paquete sea una fila cargable del Loader y para que el escaneo de plugins de cliente encuentre su declaración dsh.client del package.json. Todo el trabajo real ocurre en el cliente.

Estructura del repositorio

dsh-locale-es/
├── package.json            ficha del paquete y contrato con el Loader (dsh.bundle / dsh.client)
├── cordis.patch.yml        fila que inserta el plugin en el árbol (generado)
├── lib/
│   ├── client.js           bundle del cliente con los 57 diccionarios (generado)
│   └── index.js            mitad host (generado)
├── i18n/
│   ├── catalog.json        catálogo inglés extraído de la app (claves + textos de origen)
│   └── es/<namespace>.json un fichero por namespace con la traducción castellana
├── locale/
│   ├── en.json             metadatos de la tarjeta del plugin (meta.title / meta.description)
│   └── es.json             los mismos metadatos en castellano
├── icon.svg                icono de la tarjeta (relativo, ≤256 KiB, SVG/PNG/JPEG/WebP)
├── tools/                  cadena de herramientas, sin dependencias externas
│   ├── extract-app.cjs          extrae el código de app.asar verificando SHA-256
│   ├── extract-locale.cjs       extrae los diccionarios en/zh de los plugins de UI
│   ├── split-batches.cjs        reparte el catálogo en lotes para traducir en paralelo
│   ├── split-by-namespace.cjs   convierte los lotes en un fichero por namespace
│   ├── build-locale-pack.cjs    emite lib/ y cordis.patch.yml, e informa de la cobertura
│   ├── audit-es.cjs             busca claves ausentes, ficheros mal alineados y repetidas
│   ├── check-portable.cjs       evita publicar rutas de la máquina que extrajo el catálogo
│   ├── check-plugin-meta.cjs    comprueba lo que DSH exige para listar el plugin
│   └── verify-pack.cjs          ejecuta el bundle en un cargador simulado y lo comprueba
├── .github/workflows/ci.yml     cobertura, auditoría, portabilidad, metadatos y bundle sincronizado
└── CONTRIBUTING.md · NOTICE.md · CHANGELOG.md · LICENSE · README.md

Flujo de trabajo

Traducir o corregir

  1. Edita i18n/es/<namespace>.json (un namespace por fichero).
  2. Conserva los marcadores {count}, {label}, {toolName}… exactamente como están en i18n/catalog.json: el compilador rechaza cualquier traducción que pierda o invente uno.
  3. Reconstruye y comprueba:
node tools/build-locale-pack.cjs i18n/catalog.json i18n/es . --check   # cobertura y marcadores
node tools/audit-es.cjs i18n/catalog.json i18n/es                      # claves ausentes y repetidas
node tools/build-locale-pack.cjs i18n/catalog.json i18n/es .           # regenera lib/
node tools/verify-pack.cjs lib/client.js                               # el bundle carga como en DSH

--check sale con código 1 si falta alguna clave o hay marcadores mal, así que sirve como puerta en integración continua, igual que audit-es.cjs.

Actualizar el catálogo tras una actualización de DSH

node tools/extract-app.cjs "C:\ruta\a\resources\app.asar" _referencia-dsh
node tools/extract-locale.cjs _referencia-dsh/dsh/node_modules/@deepseek-ai i18n/catalog.json
node tools/check-portable.cjs i18n                                     # el catálogo no lleva rutas locales
node tools/build-locale-pack.cjs i18n/catalog.json i18n/es . --check   # lista lo nuevo por traducir

Las claves nuevas aparecen como «sin traducir» y en la interfaz se ven en inglés hasta que alguien las traduzca.

Empezar otro idioma con este repositorio como plantilla

Haz un fork y cambia tres constantes en tools/build-locale-pack.cjs (PKG_NAME, LANG_ID, LANG_LABEL), el identificador de la fila en el generador de cordis.patch.yml (- id: locale-es) y los campos name del package.json. El catálogo inglés y toda la cadena de herramientas se reutilizan tal cual.

Traducir en paralelo con agentes o por lotes

node tools/split-batches.cjs i18n/catalog.json _i18n/batches     # lotes equilibrados
# … cada lote se traduce a _i18n/es/batch-NN.json …
node tools/split-by-namespace.cjs _i18n/es i18n/es               # vuelve al formato del repositorio

Contribuir

Las correcciones de traducción son bienvenidas, y también los avisos de textos que suenen a máquina. Lee CONTRIBUTING.md: es corto y evita que un envío se quede sin poder fusionar por un marcador perdido.

Aviso legal

DeepSeek Harness es una aplicación de DeepSeek; este repositorio no contiene código de la aplicación. El catálogo inglés (i18n/catalog.json) se extrae de una instalación local únicamente para poder verificar la cobertura, la paridad de claves y los marcadores. Los detalles y las marcas están en NOTICE.md. La licencia MIT cubre el contenido original de este repositorio: las traducciones y las herramientas.


English

Spanish (es) language pack for the DeepSeek Harness (DSH) web interface: 2,603 of 2,603 keys (100 %) across 57 namespaces, shipped as a client plugin — the application's app.asar is never patched, and untranslated keys fall back to English automatically.

Install it by adding dsh-locale-es to dependencies and to dsh.profile.bundles in your DSH profile's package.json, then run pnpm install in the profile folder and pick Español in Settings → General → Language. See Cómo funciona for the plugin protocol, and CONTRIBUTING.md to send translation fixes (keep placeholders such as {count} intact). Licensed under MIT.

—/ 5

No ratings yet

Verified DSH bundle

Commit caadeeafce8c

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout