Skip to main content
GitWhisper supports commit messages and analysis in over 20 languages, making it easy for international teams and non-English speakers to maintain clear, professional commit histories in their preferred language.

Supported Languages

🇺🇸 English

English (US) and English (UK)

🇪🇸 Spanish

Español

🇫🇷 French

Français

🇩🇪 German

Deutsch

🇨🇳 Chinese

简体中文 / 繁體中文

🇯🇵 Japanese

日本語

🇰🇷 Korean

한국어

🇸🇦 Arabic

العربية

🇮🇹 Italian

Italiano

🇵🇹 Portuguese

Português

🇷🇺 Russian

Русский

🇳🇱 Dutch

Nederlands

🇸🇪 Swedish

Svenska

🇳🇴 Norwegian

Norsk

🇩🇰 Danish

Dansk

🇫🇮 Finnish

Suomi

🇬🇷 Greek

Ελληνικά

🇹🇷 Turkish

Türkçe

🇮🇳 Hindi

हिन्दी

🇿🇼 Shona

ChiShona

🇿🇦 Zulu

IsiZulu

Changing Your Language

1

Run the change-language command

gw change-language
2

Select your preferred language

Use arrow keys to navigate and press Enter to select:
Please select your preferred language for commit messages:
> English
  Spanish
  French
  German
  Chinese (simplified)
  Chinese (traditional)
  Japanese
  Korean
  Arabic
  Italian
  Portuguese
  Russian
  Dutch
  Swedish
  Norwegian
  Danish
  Finnish
  Greek
  Turkish
  Hindi
  English (US)
  English (UK)
  Shona
  Zulu
3

Confirmation

Your language preference is saved globally:
 Great! Spanish has been set as your default language for Git commit messages.

Language Examples

See how commit messages look in different languages:
$ gw commit

feat: add user authentication with JWT tokens

Implement secure authentication system using JSON Web Tokens
for stateless session management. Add login and registration
endpoints with bcrypt password hashing.

 Commit created successfully

Analysis in Multiple Languages

The analyze command also respects your language setting:
$ gw analyze

Analyzing changes using openai (gpt-4o)...

 Analysis complete:

## Summary
Added JWT authentication system with user registration
and login endpoints.

## Key Changes
- Authentication middleware using JWT tokens
- User model with bcrypt password hashing
- Login endpoint with token generation

## Potential Issues
⚠️  No rate limiting on authentication endpoints
⚠️  Missing password strength validation

## Recommendations
1. Add rate limiting to prevent brute force attacks
2. Implement password complexity requirements

Viewing Current Language

Check your current language configuration:
gw show-config
Output:
╔════════════════════════════════════════════╗
        GitWhisper Configuration
╠════════════════════════════════════════════╣
 Language: Spanish (es)                     ║
 Default Model: openai
 Model Variant: gpt-4o
 Confirm Commits: Yes
 Allow Emojis: Yes
╚════════════════════════════════════════════╝

Code Implementation

Languages are defined as an enum in language.dart:9:
enum Language {
  english('English', 'en', 'US'),
  spanish('Spanish', 'es', 'ES'),
  french('French', 'fr', 'FR'),
  german('German', 'de', 'DE'),
  chineseSimplified('Chinese (simplified)', 'zh', 'CN'),
  chineseTraditional('Chinese (traditional)', 'zh', 'TW'),
  japanese('Japanese', 'ja', 'JP'),
  korean('Korean', 'ko', 'KR'),
  arabic('Arabic', 'ar', 'SA'),
  italian('Italian', 'it', 'IT'),
  portuguese('Portuguese', 'pt', 'PT'),
  russian('Russian', 'ru', 'RU'),
  dutch('Dutch', 'nl', 'NL'),
  swedish('Swedish', 'sv', 'SE'),
  norwegian('Norwegian', 'no', 'NO'),
  danish('Danish', 'da', 'DK'),
  finnish('Finnish', 'fi', 'FI'),
  greek('Greek', 'el', 'GR'),
  turkish('Turkish', 'tr', 'TR'),
  hindi('Hindi', 'hi', 'IN'),
  englishUS('English (US)', 'en', 'US'),
  englishUK('English (UK)', 'en', 'GB'),
  shona('Shona', 'sn', 'ZW'),
  zulu('Zulu', 'zu', 'ZA');

  const Language(this.name, this.code, this.countryCode);
  final String name;
  final String code;
  final String countryCode;
}
The language is passed to the AI model in the commit prompt:
// From commit_utils.dart
String getCommitPrompt(
  String diff,
  Language language, {
  String? prefix,
  bool withEmoji = true,
}) {
  return '''
Generate a git commit message in ${language.name} for the following diff:

$diff

Follow conventional commit format.
${prefix != null ? 'Include prefix: $prefix' : ''}
${withEmoji ? 'You may include relevant emojis.' : 'Do not include emojis.'}
''';
}

Language Selection Command

Implemented in change_language_command.dart:29:
@override
Future<int> run() async {
  final configManager = ConfigManager();
  await configManager.load();

  const languages = Language.values;

  final Language language = _logger.chooseOne<Language>(
    'Please select your preferred language for commit messages:',
    choices: languages,
    defaultValue: Language.english,
    display: (language) => language.name,
  );

  configManager.setWhisperLanguage(language);
  await configManager.save();

  _logger.success(
    '✨ Great! ${language.name} has been set as your default language for '
    'Git commit messages.',
  );
  return ExitCode.success.code;
}

Use Cases

International Teams

Teams working across different regions can use their native language for commit messages, improving clarity and communication.

Non-English Speakers

Developers more comfortable in their native language can maintain professional commit histories without translation struggles.

Localized Projects

Projects targeting specific regions can maintain commit histories in the target language for consistency.

Educational Settings

Students learning programming can use their native language to better understand version control practices.

Best Practices

Maintain consistency by using the same language throughout a repository’s commit history. Mixed languages can be confusing for team members.
# Set at repository level
cd my-project
gw change-language
> Spanish
Make it clear which language is used for commits:
## Contributing

This project uses **Spanish** for commit messages. Please set
your GitWhisper language accordingly:

```bash
gw change-language
> Spanish
</Accordion>

<Accordion title="Consider international collaboration" icon="users">
For projects with international contributors, English might be the
most accessible choice:

```bash
gw change-language
> English
Conventional commit prefixes (feat, fix, etc.) remain in English across all languages for tool compatibility:
# Spanish commit
feat: agregar autenticación de usuario

# Not: característica: agregar autenticación de usuario

Translation Quality

GitWhisper leverages advanced AI models for translation, ensuring:
Context-aware translations
The AI understands technical context and uses appropriate terminology.
Natural language output
Commit messages read naturally, not like machine translations.
Technical terminology
Programming terms and conventions are preserved correctly.
Cultural appropriateness
Phrasing follows conventions of the target language.
Translation quality depends on the AI model used. Claude and GPT-4o generally provide the best results across all languages.

Adding New Languages

Want support for a language not listed? GitWhisper is open source!
1

Open an issue

Request a new language on the GitWhisper GitHub repository.
2

Or contribute directly

Add the language to language.dart and submit a pull request:
enum Language {
  // ... existing languages ...
  vietnamese('Vietnamese', 'vi', 'VN'),
}

Configuration

Set language and other default preferences

AI Models

Different models excel at different languages

Code Analysis

Get analysis output in your preferred language

Build docs developers (and LLMs) love