FAQ

Home > FAQs > Supported languages

Which languages does OpenCues support?

OpenCues has no fixed list of supported languages, and it would be dishonest to print one: language capability follows whichever model you configure. What the runtime itself contributes is script-aware plumbing (sentence boundaries, spans, and command detection that don't assume English), plus some measured caveats worth knowing.

What the runtime handles explicitly

  • CJK sentence terminators. The sentence segmenter and blank routing recognise fullwidth directly (no trailing space needed), alongside ASCII .!?. The CJK comma is deliberately not a terminator.
  • Spaceless scripts. In text without word spaces, several sentences can share one whitespace-delimited word; the runtime re-homes them to synthetic span keys and uses character ranges rather than word ranges, so a Japanese or Chinese sentence dims fully and cycles correctly.
  • Language-invariant settings commands. The boundary of a trailing settings phrase is found by a dedicated model call rather than English punctuation rules, validated 10/10 across English, Japanese, Korean, Thai, French, and Chinese, including Thai, which has neither sentence punctuation nor spaces. A regex over terminators remains the deterministic floor.

What's exercised in the test suites

Translation is the best-covered multilingual surface: the benchmark suites assert transforms into Spanish, Japanese, French, Chinese, Korean, Polish, Swedish, Turkish, Arabic, and Hindi, and fluid-blank lookups across French, Japanese, Spanish, German, Italian, Portuguese, Latin, Korean, Hebrew, and Russian. Grammar and rewrite prompts are written language-neutrally, but their benchmarks are English-heavy, so treat non-English rewrite quality as model-dependent rather than verified.

The honest caveats

CaveatDetail
Dense scripts cost more tokensJapanese, other CJK, and Arabic run 2-3 tokens per character. An early output budget truncated a ~700-character Japanese translation mid-sentence; budgets were raised (and the bug class documented) after exactly that failure.
Long-buffer declinesThe default model occasionally answers "nothing to do" under budget pressure on long buffers; the runtime distrusts such a verdict on buffers past a 400-character floor and takes a fresh look.
Simple segmenterSentence splitting is regex-based; unusual abbreviations can split oddly, with the model's decline path as the safety net.
Model differences are realIn the project's own benches, a faster candidate model measurably underperformed the default on the multilingual set (77% vs 90%), one reason the default hasn't moved.

Practical guidance

For writing in or translating between major languages on the default provider, things just work, and inline translation is one of the most-used features. For heavy work in one specific language, spend ten minutes benchmarking your own provider choice on your own text; switching is one scalar.

Related: Translate inline · For non-native English writers · Sentence cues · GitHub repo