Skip to main content

Overview

KVantage is available in eight languages, making it accessible to users around the world. The application automatically detects your system’s locale and displays in the appropriate language.
KVantage uses Android/Compose Multiplatform’s resource system for localization, with strings stored in XML files for each supported language.

Supported Languages

KVantage currently supports the following languages:

English

Default language (values/)

Español (Spanish)

values-es/

日本語 (Japanese)

values-ja/ - Translated by the author

Deutsch (German)

values-de/

Français (French)

values-fr/

Português (Portuguese)

values-pt/

한국어 (Korean)

values-kr/

中文 (Chinese)

values-zh/

Translation Quality

Human Translated

English

Native language of the application

Japanese

Personally translated by the author (kosail)

AI Translated

The following languages were translated using AI assistance:
  • Spanish (Español)
  • German (Deutsch)
  • French (Français)
  • Portuguese (Português)
  • Korean (한국어)
  • Chinese (中文)
AI translations may contain errors or awkward phrasing. If you’re a native speaker of any of these languages and notice translation issues, please consider contributing improvements to the project!

How Language Detection Works

Automatic Locale Detection

KVantage automatically selects the appropriate language based on your system configuration:
  1. System Locale: KVantage reads your operating system’s locale setting
  2. Language Match: Attempts to find a matching translation resource folder
  3. Fallback: If no match is found, defaults to English
For example:
  • System locale ja_JP → Uses values-ja/ (Japanese)
  • System locale es_MX → Uses values-es/ (Spanish)
  • System locale pt_BR → Uses values-pt/ (Portuguese)
  • System locale en_US → Uses values/ (English)
KVantage follows the standard Android/Compose resource naming convention for locales, making it easy to add new languages.

Resource Folder Structure

Translations are stored in the Compose resources directory:
composeApp/src/jvmMain/composeResources/
├── values/              # English (default)
│   └── strings.xml
├── values-de/           # German
│   └── strings.xml
├── values-es/           # Spanish
│   └── strings.xml
├── values-fr/           # French
│   └── strings.xml
├── values-ja/           # Japanese
│   └── strings.xml
├── values-kr/           # Korean
│   └── strings.xml
├── values-pt/           # Portuguese
│   └── strings.xml
└── values-zh/           # Chinese
    └── strings.xml

Translated Strings

KVantage translates all user-facing text, including:

Main Interface

  • Performance profile names (Performance, Intelligent cooling, Power saving)
  • Feature toggles (Battery Threshold, Rapid Charge)
  • Battery status information
  • Settings dialog

Settings Dialog

  • “Settings” title
  • “Dark mode” toggle
  • “Animated Background” toggle
  • “Show battery life” toggle
  • “Battery name” field
  • “Themes” section

First Run Dialog

  • Welcome message
  • Installation prompts
  • Success and error messages

Warning Messages

  • Battery threshold warning about premium feature limitations
  • Battery interface error messages
  • Copyright and attribution text

Example: Strings in Use

Here’s how strings are used in the application code:
Text(
    text = stringResource(Res.string.performance_profile),
    fontSize = 20.sp
)

SwitchWithText(
    text = Res.string.rapid_charge,
    isChecked = isChecked,
    onCheckedChange = { checked -> ... }
)
The stringResource() function automatically loads the correct translation based on your system locale.

Changing Language Manually

Currently, KVantage does not include a manual language selector in the UI. The language is always determined by your system locale. To change the language:
1

Change your system locale

Modify your operating system’s language settings
2

Restart KVantage

Close and reopen KVantage to apply the new locale
3

Verify language

The interface should now display in your selected language
On most Linux distributions, you can change your locale using your desktop environment’s Settings app, or by modifying the LANG environment variable before launching KVantage.

Contributing Translations

KVantage is open source and welcomes translation contributions!

Improving Existing Translations

If you’re a native speaker and notice translation errors:
  1. Navigate to the appropriate values-XX/strings.xml file
  2. Update the incorrect translations
  3. Submit a pull request to the KVantage GitHub repository

Adding New Languages

To add support for a new language:
1

Create resource folder

Create a new folder like values-XX/ where XX is the ISO 639-1 language code
2

Copy strings.xml

Copy values/strings.xml (English) as a template
3

Translate all strings

Translate each <string> entry to your target language
4

Test locally

Change your system locale and test the translation
5

Submit pull request

Contribute your translation back to the project

Translation Guidelines

Keep format specifiers like %s in the same positions:
<string name="ask_install">We noticed that this is your first time running the app.%sWould you like to install KVantage?%s</string>
Keep technical terms like “ACPI”, “pkexec”, “BAT*” unchanged:
<string name="battery_interface_not_found">Cannot get the battery information because the interface seems not to comply with the standard structure ("/sys/class/power_supply/BAT*/*")</string>
KVantage uses friendly, informative language. Maintain this tone in translations.
Some UI elements have limited space. Try to keep translations reasonably concise.

String Resource Examples

Here are some key strings from the English version (values/strings.xml):
<string name="performance_profile">Performance Profile</string>
<string name="power_profile_performance">Performance</string>
<string name="power_profile_balanced">Intelligent cooling</string>
<string name="power_profile_powersave">Power saving</string>
<string name="battery_threshold">Battery Threshold</string>
<string name="rapid_charge">Rapid Charge</string>
<string name="settings">Settings</string>
<string name="dark_mode">Dark mode</string>
<string name="animated_background">Animated Background</string>
<string name="themes">Themes</string>

Locale Code Reference

LanguageLocale CodeFolder Name
Englishenvalues/
Spanishesvalues-es/
Japanesejavalues-ja/
Germandevalues-de/
Frenchfrvalues-fr/
Portugueseptvalues-pt/
Koreanko/krvalues-kr/
Chinesezhvalues-zh/
KVantage uses values-kr/ instead of the standard values-ko/ for Korean. This is a non-standard naming but works correctly with the Compose Multiplatform resource system.

Troubleshooting

Your locale may not match any of the supported languages. KVantage falls back to English when no matching translation is found. Check your system’s LANG environment variable.
If only certain strings appear in English, the translation file may be incomplete. Consider contributing the missing translations.
You can temporarily change your locale: LANG=ja_JP.UTF-8 kvantage to launch KVantage in Japanese, for example.
Currently, KVantage doesn’t have a manual language selector. This would be a great feature contribution! The implementation would involve storing a language preference and overriding the system locale.

Future Improvements

Potential enhancements to KVantage’s localization:
  • Manual language selector: Allow users to choose language independently of system locale
  • More languages: Expand support to additional languages
  • RTL support: Add right-to-left language support (Arabic, Hebrew)
  • Professional translations: Replace AI translations with professional or community-reviewed versions
  • Translation context: Add developer notes in string resources to help translators
If you’d like to work on any of these improvements, the KVantage project welcomes contributions on GitHub!
  • Themes - Customize KVantage’s visual appearance
  • Settings dialog: Access all user preferences and customization options

Build docs developers (and LLMs) love