Skip to content

Switch dsh to English — DeepSeek Harness Guide

Open the dsh Web UI for the first time and you may land on a Chinese interface even if you don’t read Chinese. The fix is four clicks. The reason it happens is in the client locale source (@deepseek-ai/dsh-client-locale), and it’s worth a read if you want to know why your browser got a Chinese UI in the first place.

  1. Open the dsh Web UI (http://127.0.0.1:3080 by default).
  2. Open Settings (the settings trigger in the sidebar).
  3. In the General section, find the Language row.
  4. Click the language selector pill and choose English from the menu.

The UI switches over immediately. No restart.

As of 0.1.0-rc there are two locales, zh and en. On a fresh browser with no saved preference, the client picks between them like this (source: packages/client/locale/src/client/index.ts):

  1. It reads navigator.languages (falling back to navigator.language), in order.
  2. For each tag it looks at the primary subtag only. zh-Hans-CN and zh-TW both match zh; en-GB matches en.
  3. The first tag whose primary subtag is zh or en wins.
  4. If none of your browser’s languages are zh or en (a browser set to French or German only, say), it uses FALLBACK_LOCALE. That constant is hardcoded to zh.

Step 4 is what people are running into. With no usable signal from the browser, the fallback is Chinese, so a browser advertising only French ends up on a Chinese UI and nothing in the interface explains why. The design rationale is written up in an Agent Note.

Picking a language in Settings → General → Language writes locale.preference into $DSH_HOME/settings.yaml on the host machine. An explicit preference beats browser detection on every later visit. And because the value lives on the dsh host rather than in browser storage, it applies from whatever browser you connect with.