Overview
GitHub Achievement CLI supports 16 languages with a fully localized interface. All prompts, menus, error messages, and status updates appear in your selected language.Supported Languages
The CLI supports the following languages (fromsrc/i18n/translations.ts:15-32):
| Language | Code | Native Name | Flag |
|---|---|---|---|
| English | en | English | 🇺🇸 |
| Persian/Farsi | fa | فارسی | 🇮🇷 |
| German | de | Deutsch | 🇩🇪 |
| French | fr | Français | 🇫🇷 |
| Russian | ru | Русский | 🇷🇺 |
| Turkish | tr | Türkçe | 🇹🇷 |
| Dutch | nl | Nederlands | 🇳🇱 |
| Chinese | zh | 中文 | 🇨🇳 |
| Spanish | es | Español | 🇪🇸 |
| Arabic | ar | العربية | 🇸🇦 |
| Indonesian | id | Bahasa Indonesia | 🇮🇩 |
| Japanese | ja | 日本語 | 🇯🇵 |
| Hindi | hi | हिन्दी | 🇮🇳 |
| Swahili | sw | Kiswahili | 🇰🇪 |
| Armenian | hy | Հայերեն | 🇦🇲 |
| Vietnamese | vi | Tiếng Việt | 🇻🇳 |
All languages use the same CLI functionality - only the interface text changes. GitHub API interactions are in English regardless of your language selection.
Language Selection Flow
First Run
When you first run the CLI, you’ll see the language selection screen:src/i18n/translations.ts:154:
Navigation
Use arrow keys to navigate:- ↑/↓ - Move between languages
- Enter - Select language
- Esc - Exit (if not first run)
Language Persistence
Your language choice is saved in the configuration and persists across sessions. The CLI remembers your preference automatically.Changing Language After Setup
You can change the language at any time:- Launch the CLI:
npm start - Select Reconfigure from the main menu
- Choose Change Language
- Select your new preferred language
Changing the language only affects the CLI interface. Your GitHub account settings, achievement data, and repository content are not affected.
How Translations Work
Translation System
The CLI uses a key-based translation system (fromsrc/i18n/translations.ts:731-733):
- Selected language (e.g.,
frfor French) - English default (if key not found in selected language)
- Raw key name (if key not found at all)
Translation Coverage
Fromsrc/i18n/translations.ts:34-151, the translation interface includes:
UI Elements:
- Menu titles and options
- Navigation hints
- Button labels (Yes/No, Confirm/Cancel)
- Loading and status messages
- Welcome messages
- Token input prompts
- Repository configuration
- Helper account setup
- Validation messages
- Pair Extraordinaire
- Pull Shark
- Galaxy Brain
- Quickdraw
- YOLO
- Tier levels (Bronze/Silver/Gold)
- Progress indicators
- Success/failure messages
- Error descriptions
- Time elapsed displays
- Warning messages
- Confirmation prompts
- Success notifications
Example Translations
Here’s how the main menu appears in different languages: English:Localization Features
Right-to-Left (RTL) Support
The CLI supports RTL languages like Arabic:Terminal RTL rendering depends on your terminal emulator’s support. Modern terminals like Windows Terminal and iTerm2 handle RTL text correctly.
Date and Time Formatting
Time displays use standard formats that are universally understood:Number Formatting
Numbers (progress, counts, etc.) use standard international format:- 1,024 operations
- 15 ops/min
- 2 concurrent
Translation Quality
Full Translations
These languages have complete translations (150+ strings):- English (
en) - Persian/Farsi (
fa) - German (
de) - French (
fr) - Russian (
ru)
Partial Translations
These languages have key UI elements translated with English fallbacks:- Turkish (
tr) - Dutch (
nl) - Chinese (
zh) - Spanish (
es) - Arabic (
ar) - Indonesian (
id) - Japanese (
ja) - Hindi (
hi) - Swahili (
sw) - Armenian (
hy) - Vietnamese (
vi)
src/i18n/translations.ts:703-714:
Partial translations fall back to English for untranslated strings, ensuring the CLI always displays meaningful text.
Contributing Translations
To improve or add translations:- File location:
src/i18n/translations.ts - Interface:
Translations(lines 34-151) - Add your language: Follow existing pattern
- Test: Run
npm startand select your language - Submit: Create a pull request
Translation Template
Translation Guidelines
✅ Do:- Keep technical terms in English (e.g., “Pull Request”, “GitHub”)
- Use formal tone for UI (polite “you”)
- Test RTL languages in a supporting terminal
- Include native script (don’t transliterate)
- Translate achievement names (they’re official GitHub terms)
- Use machine translation without review
- Include cultural idioms that don’t translate
- Change formatting of technical values
Language API
If using the CLI as a library, you can programmatically control language:Available Functions
Fromsrc/i18n/translations.ts:723-737:
| Function | Description | Returns |
|---|---|---|
setLanguage(lang) | Change active language | void |
getLanguage() | Get current language code | Language |
t(key) | Translate a key | string |
getTranslations() | Get all translations for current lang | Translations |
See Also
- Configuration - CLI setup and environment variables
- GitHub Contributing Guide - How to contribute translations