Multi-language support (i18n) #50

Closed
opened 2026-02-15 04:44:39 +03:00 by NiXTheDev · 1 comment
NiXTheDev commented 2026-02-15 04:44:39 +03:00 (Migrated from github.com)

Description

Add multi-language (i18n) support for all user-facing messages.

Languages to Support

Phase 1 (European):

  • English (default)
  • German (Deutsch)
  • Italian (Italiano)
  • Polish (Polski)
  • Swedish (Svenska)
  • Spanish (Español)

Phase 2 (Eastern European):

  • Russian (Русский)
  • Ukrainian (Українська)

Phase 3 (Asian):

  • Japanese (日本語)
  • Korean (한국어)
  • Chinese Simplified (简体中文)

Implementation Plan

  1. Language detection

    • Check user's Telegram language setting
    • Fall back to English if unsupported
    • Allow override via /language command
  2. i18n structure

    • Create src/i18n/ directory
    • JSON files per language: en.json, de.json, etc.
    • Keys for all user-facing strings
    • Nested structure by feature area
  3. Translation keys needed

    • Error messages (rate limit, invalid regex, etc.)
    • Command responses (/start, /help, /privacy)
    • Substitution results
    • Tips and suggestions
    • Performance stats
    • All new features
  4. Implementation pattern

    const t = i18n.getTranslator(ctx.from?.language_code || "en");
    await ctx.reply(t("errors.rateLimit", { seconds: 30 }));
    
  5. Translation workflow

    • English as source of truth
    • Community contributions welcome
    • Machine translation as starting point
    • Native speaker review for quality
  6. Language command

    • /language - Show current language
    • /language list - Show available languages
    • /language set - Change language

Acceptance Criteria

  • Language auto-detection from Telegram
  • Fallback to English for unsupported languages
  • All user-facing strings translatable
  • Phase 1 languages implemented
  • /language command works
  • Tests for i18n system
  • Documentation for translators

Example

German user receives:

Rate-Limit überschritten. Bitte warte 30 Sekunden.

Instead of:

Rate limit exceeded. Please wait 30 seconds.

Part of Epic #38

## Description Add multi-language (i18n) support for all user-facing messages. ## Languages to Support **Phase 1 (European):** - English (default) - German (Deutsch) - Italian (Italiano) - Polish (Polski) - Swedish (Svenska) - Spanish (Español) **Phase 2 (Eastern European):** - Russian (Русский) - Ukrainian (Українська) **Phase 3 (Asian):** - Japanese (日本語) - Korean (한국어) - Chinese Simplified (简体中文) ## Implementation Plan 1. **Language detection** - Check user's Telegram language setting - Fall back to English if unsupported - Allow override via /language command 2. **i18n structure** - Create src/i18n/ directory - JSON files per language: en.json, de.json, etc. - Keys for all user-facing strings - Nested structure by feature area 3. **Translation keys needed** - Error messages (rate limit, invalid regex, etc.) - Command responses (/start, /help, /privacy) - Substitution results - Tips and suggestions - Performance stats - All new features 4. **Implementation pattern** ```typescript const t = i18n.getTranslator(ctx.from?.language_code || "en"); await ctx.reply(t("errors.rateLimit", { seconds: 30 })); ``` 5. **Translation workflow** - English as source of truth - Community contributions welcome - Machine translation as starting point - Native speaker review for quality 6. **Language command** - /language - Show current language - /language list - Show available languages - /language set <code> - Change language ## Acceptance Criteria - [ ] Language auto-detection from Telegram - [ ] Fallback to English for unsupported languages - [ ] All user-facing strings translatable - [ ] Phase 1 languages implemented - [ ] /language command works - [ ] Tests for i18n system - [ ] Documentation for translators ## Example German user receives: ``` Rate-Limit überschritten. Bitte warte 30 Sekunden. ``` Instead of: ``` Rate limit exceeded. Please wait 30 seconds. ``` ## Related Part of Epic #38
NiXTheDev commented 2026-02-17 06:34:12 +03:00 (Migrated from github.com)

Completed as part of #53 (0.1.10 Release). Multi-language support with 11 languages has been merged.

Completed as part of #53 (0.1.10 Release). Multi-language support with 11 languages has been merged.
Sign in to join this conversation.
No description provided.