DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

neobones /

neobones/dsh-locale-es-cl

Verified

Pack de idioma espanol de Chile (es-CL) para la interfaz web de DeepSeek Harness: 2603 cadenas, plugin de cliente sin parchear la app.

★ 1 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@768a7419

dsh-locale-es-cl

Pack de idioma español de Chile (es-CL) para la interfaz de DeepSeek Harness (DSH).

  • 2.603 de 2.603 claves traducidas (100 %), repartidas en 57 namespaces.
  • 285 de esas 2.603 cadenas (10,9 %) se separan de la traducción castellana de partida: es la adaptación chilena propiamente tal y está listada cadena por cadena, con su inglés y su referencia, en docs/revision-es-cl.md y docs/revision-es-cl.csv.
  • 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 un catálogo incompleto degrada a la lengua de origen en lugar de romperse. El matiz importa: lo que cae a inglés es la clave ausente, porque el runtime resuelve con ?? key; un namespace del que no se registrara ningún diccionario no tendría de dónde caer y mostraría sus claves en crudo. Eso último no ocurre en este pack —los 57 namespaces tienen diccionario—, pero es la frontera real de la garantía.

Instalar en una línea

dsh plugin --profile desktop add github:neobones/dsh-locale-es-cl

Recarga la interfaz (Ctrl+R) y elige Ajustes → General → Idioma → Español (Chile). La elección se guarda y sobrevive reinicios; un navegador en es-CL (o en es) lo activa solo.

Las demás vías —npm, tarball, instalación manual del perfil y qué hacer si el selector no aparece— están en Instalación.

Estado

Cobertura 2.603/2.603 claves (100 %), 57/57 namespaces
Adaptación chilena 285/2.603 cadenas (10,9 %) distintas de la referencia castellana
Términos en inglés 15 conservados por política, de los que 11 tienen claves que ejercerlos; el informe de delta cierra con protegidos 0
Idioma es-CL — etiqueta «Español (Chile)», respaldo en
Paquete dsh-locale-es-cl 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

La política de términos en inglés cubre quince palabras, pero el catálogo de la app solo contiene texto para once de ellas: plugin (95 claves), api (25), tool call (23), token (14), json (14), prompt (12), log (6), shell (5), chat (5), diff (4) y markdown (4). Las otras cuatro —commit, push, pull request y deploy— no aparecen ni una vez en el catálogo, así que se conservan como política declarada pero no hay ninguna clave que las ejerza: protegidos 0 mide las once primeras, no quince.

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

node tools/build-locale-pack.cjs i18n/catalog.json i18n/es-cl . --check    # cobertura y marcadores
node tools/audit-es.cjs i18n/catalog.json i18n/es-cl                       # claves ausentes, desalineadas y repetidas
node tools/apply-terminology.cjs i18n/terminology.json i18n/es-cl --check  # términos y fraseología prohibidas
node tools/check-coherence.cjs i18n/es-cl                                  # concordancia y duplicados entre lotes
node tools/check-portable.cjs i18n                                         # ni rutas ni secretos locales
node tools/delta-report.cjs i18n/catalog.json i18n/reference/es.json i18n/es-cl --strict-protegidos  # protegidos 0 como puerta
node tools/verify-pack.cjs lib/client.js                                   # ejecuta el bundle como lo hace DSH

delta-report.cjs cierra protegidos 0 y con --strict-protegidos sale con código 1 si ese total no es cero: sin la bandera el total solo se informa (lo que necesitan los lotes intermedios), con ella es una puerta. check-coherence.cjs tiene dos partes: la concordancia junto a los términos en inglés y un barrido de duplicados que informa cuando un mismo origen inglés produce más de una forma en español, o cuando dos orígenes distintos comparten una misma frase hecha.

Instalación

Basta una línea. El gestor de plugins que trae DSH añade la dependencia y selecciona el bundle:

# desde npm (lo más simple)
dsh plugin --profile desktop add dsh-locale-es-cl

# o directo desde GitHub, sin registro de por medio
dsh plugin --profile desktop add github:neobones/dsh-locale-es-cl

# o desde un tarball ya empaquetado
dsh plugin --profile desktop add ./dsh-locale-es-cl-1.0.0.tgz

# o el tarball publicado en la release (lo mismo, sin descargarlo a mano)
dsh plugin --profile desktop add https://github.com/neobones/dsh-locale-es-cl/releases/download/v1.0.0/dsh-locale-es-cl-1.0.0.tgz

Usa el perfil que realmente ejecutes: desktop para la app de escritorio, web para dsh web. La instalación desde GitHub funciona sin autorizar scripts de build, porque el bundle del navegador (lib/client.js) va versionado en el repositorio: no hay paso de compilación que pnpm tenga que permitir.

El mismo resultado desde la interfaz: barra lateral → Plugins → Add plugin, y pegas la especificación. 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; comprueba que el paquete declare dsh.bundle y al terminar lo añade a dsh.profile.bundles.

Después, recarga la interfaz (Ctrl+R) y elige el idioma en Ajustes → General → Idioma → Español (Chile). La elección se guarda y sobrevive reinicios; un navegador en es-CL (o en es) lo activa solo.

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-cl": "link:C:/ruta/a/dsh-locale-es-cl"
  },
  "dsh": {
    "profile": {
      "bundles": [
        "@deepseek-ai/dsh-base",
        "@deepseek-ai/dsh-web-app",
        "dsh-locale-es-cl"
      ]
    }
  }
}

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-cl 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 (Chile)» en Ajustes, desactiva y vuelve a activar la fila locale-es-cl 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-CL', label: 'Español (Chile)', fallback: 'en' };

function apply(ctx) {
  ctx.effect(() => ctx.locale.addLanguage(LANGUAGE), 'locale-es-cl: idioma');
  for (const [ns, dict] of Object.entries(DICTIONARIES)) {
    ctx.effect(() => ctx.locale.register(ns, 'es-CL', dict), 'locale-es-cl: ' + 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-cl/
├── 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)
│   ├── terminology.json    tabla de reemplazos y términos prohibidos (política de estilo)
│   ├── reference/es.json   traducción castellana de referencia, de solo lectura (obra derivada)
│   └── es-cl/<namespace>.json  un fichero por namespace con la traducción chilena
├── locale/
│   ├── en.json             metadatos de la tarjeta del plugin (meta.title / meta.description)
│   ├── es-CL.json          los mismos metadatos en español de Chile
│   └── es.json             copia de es-CL.json, por si el resolutor indexa por subetiqueta
├── docs/
│   ├── revision-es-cl.md   hoja de revisión del delta, agrupada por namespace
│   └── revision-es-cl.csv  la misma hoja en CSV (namespace, clave, inglés, referencia, es-CL)
├── 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
│   ├── show-ns.cjs              imprime los diccionarios ingleses de los namespaces indicados
│   ├── apply-terminology.cjs    aplica (o comprueba con --check) la tabla de terminología
│   ├── delta-report.cjs         compara con la referencia, emite la hoja y con --strict-protegidos es puerta
│   ├── check-coherence.cjs      concordancia de artículo y género, más el barrido de duplicados entre lotes
│   ├── 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, términos estrictos, coherencia, metadatos y bundle sincronizado
└── CONTRIBUTING.md · NOTICE.md · CHANGELOG.md · LICENSE · README.md

Flujo de trabajo

Traducir o corregir

  1. Edita i18n/es-cl/<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-cl . --check   # cobertura y marcadores
node tools/audit-es.cjs i18n/catalog.json i18n/es-cl                      # claves ausentes y repetidas
node tools/build-locale-pack.cjs i18n/catalog.json i18n/es-cl .           # 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

# 1. Extraer el catálogo de la instalación nueva
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

# 2. Ver qué falta y traducirlo en i18n/es-cl/<namespace>.json
node tools/build-locale-pack.cjs i18n/catalog.json i18n/es-cl . --check # lista lo nuevo por traducir

# 3. Volver a pasar las puertas de estilo y reconstruir el bundle
node tools/apply-terminology.cjs i18n/terminology.json i18n/es-cl --check
node tools/apply-terminology.cjs i18n/terminology.json i18n/es-cl        # aplica lo que quede pendiente
node tools/check-coherence.cjs i18n/es-cl                                # concordancia y duplicados entre lotes
node tools/delta-report.cjs i18n/catalog.json i18n/reference/es.json i18n/es-cl --strict-protegidos  # protegidos 0
node tools/build-locale-pack.cjs i18n/catalog.json i18n/es-cl .          # regenera lib/ y cordis.patch.yml
node tools/verify-pack.cjs lib/client.js

# 4. Refrescar la hoja de revisión que revisa el usuario
node tools/delta-report.cjs i18n/catalog.json i18n/reference/es.json i18n/es-cl --md docs/revision-es-cl.md --csv docs/revision-es-cl.csv

Las claves nuevas aparecen como «sin traducir» y en la interfaz se ven en inglés hasta que alguien las traduzca. docs/revision-es-cl.md y su .csv son informes generados: se rehacen con el último comando y no se editan a mano.

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-cl) 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-cl/batch-NN.json …
node tools/split-by-namespace.cjs _i18n/es-cl i18n/es-cl         # 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.

Créditos

  • Traducción castellana de base (i18n/reference/es.json): Oskarosan/dsh-locale-es, MIT. La adaptación chilena es una obra derivada suya: ver NOTICE.md.
  • Diccionarios en y zh (i18n/catalog.json): los que registran los plugins de interfaz de DeepSeek Harness; se extraen de una instalación local solo para verificar la cobertura, la paridad de claves y los marcadores.
  • Adaptación al español de Chile y herramientas (i18n/es-cl/, tools/): este repositorio, MIT.

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. La adaptación al español de Chile es una obra derivada de la traducción castellana de Oskarosan/dsh-locale-es (MIT), que se conserva como i18n/reference/es.json justamente para poder auditar ese delta. Los detalles y las marcas están en NOTICE.md. La licencia MIT cubre el contenido propio de este repositorio: la adaptación, las herramientas y la documentación.


English

Chilean Spanish (es-CL) 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 a missing key falls back to English through the runtime's ?? key, so an incomplete catalog degrades to the source language instead of breaking. The boundary matters: a namespace with no es-CL dictionary at all would have nothing to fall back from and would render its keys — that does not happen in this pack, where all 57 namespaces ship a dictionary, but it is the real edge of the guarantee. 285 of the 2,603 strings (10.9 %) differ from the Castilian base translation; every one of them is listed, with its English source and its reference, in docs/revision-es-cl.md (and the matching .csv).

The English-term policy names fifteen terms, but the catalog only has text for eleven of them: plugin (95 keys), api (25), tool call (23), token (14), json (14), prompt (12), log (6), shell (5), chat (5), diff (4) and markdown (4). The remaining four — commit, push, pull request and deploy — never occur in the catalog, so protegidos 0 measures the first eleven, not fifteen. The same report closes that gate as a real check with --strict-protegidos (exit 1 when the total is above zero), and tools/check-coherence.cjs adds a systematic duplicate scan across namespaces.

This fork has no public remote of its own; install it from a local checkout by adding dsh-locale-es-cl 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 (Chile) 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; the Chilean adaptation is a derived work of Oskarosan/dsh-locale-es and the en/zh dictionaries come from DSH itself — see NOTICE.md.

—/ 5

No ratings yet

Verified DSH bundle

Commit 768a74198b23

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