Translating
Improve a translation or add a language by updating locale files, preserving placeholders and running generation checks.
The Calends interface is available in 14 languages: English, 简体中文, 繁體中文(台灣), 繁體中文(香港), 日本語, 한국어, Español, Français, Deutsch, Português (Brasil), Русский, Türkçe, Bahasa Indonesia and Tiếng Việt. English and Simplified Chinese are the source languages.
Where the strings are
Section titled “Where the strings are”shared/locales/<locale>/<namespace>.jsonOne folder per language, split by module into nested JSON files (settings.json, report.json, notify.json and so on). The same strings are used for reminder messages and MCP responses.
Rules:
- Placeholders such as
{name}and{count}must be kept as they are. - Plurals use CLDR categories:
{ "one": "...", "other": "..." }. Russian also hasfewandmany; Chinese, Japanese, Korean, Indonesian and Vietnamese use onlyother.
Improving a translation
Section titled “Improving a translation”- Edit the JSON files in that language’s folder;
- run
npm run i18n:checkto make sure nothing is missing or extra; - open a pull request.
Machine-drafted translations are welcome; a review by a native speaker is even better.
Adding a language
Section titled “Adding a language”- Copy
shared/locales/ento a new locale folder and translate it; - add it to
LOCALESinshared/i18n.ts; - copy an existing
src/locales/<code>.tsand change its JSON import path to the new locale directory; - run
npm run i18nto generate files, thennpm run i18n:check.
These docs
Section titled “These docs”The documentation site itself is available in Simplified Chinese and English.