Skip to main content
LoFi Engine is designed for a global audience with comprehensive multi-language support. All UI text, labels, and descriptions are fully localized.

Supported Languages

LoFi Engine currently supports 7 languages:

English

Default language (en)

French

Français (fr)

Dutch

Nederlands (nl)

Russian

Русский (ru)

Japanese

日本語 (ja)

Chinese

中文 (zh)

Hindi

हिन्दी (hi)

Changing Language

Switch languages in the Settings panel:
1

Open Settings

Press J to open the settings panel
2

Find Language Section

Scroll to the “Language” section
3

Select Language

Click your preferred language from the dropdown
4

Instant Update

All text updates immediately - no restart required
Language preference is saved locally and persists across app restarts.

What Gets Translated

All user-facing text is localized:
  • Button labels
  • Menu items
  • Section headings
  • Tooltips
  • Error messages

Translation Structure

Translations follow a hierarchical structure:
{
  settings: {
    title: 'Settings',
    background: { ... },
    volume: { ... },
    autodj: {
      title: 'Immersion',
      modes: {
        music: { label: '...', desc: '...' },
        atmosphere: { label: '...', desc: '...' },
        world: { label: '...', desc: '...' },
        manual: { label: '...', desc: '...' }
      }
    }
  },
  info: { ... },
  context_menu: { ... },
  tracks: { ... }
}

Translation Examples

English: “Just the beat and chords. No atmosphere or world effects.”French: “Juste le rythme et les accords. Aucun effet d’atmosphère ou de monde.”Japanese: “ビートとコードだけ。雰囲気やワールドエフェクトはありません。”
English: “Adds the core weather and nature effects”Dutch: “Voegt de kern weer- en natuureffecten toe”Russian: “Добавляет основные погодные и природные эффекты”

Localization Coverage

Comprehensive translation coverage:
CategoryItems TranslatedCoverage
Settings20+ strings100%
Info/Shortcuts25+ strings100%
Context Menu8 strings100%
Track Quotes9 strings100%
Tooltips15+ strings100%
All 7 languages have complete translations for every UI element in the app.

Technical Implementation

Store System

LoFi Engine uses a reactive translation store:
import { t } from '../../locales/store';

// In components:
{$t.settings.background.title}
{$t.info.shortcuts.general.esc}

Language Files

Each language has its own file:
  • src/lib/locales/en.ts - English (base)
  • src/lib/locales/fr.ts - French
  • src/lib/locales/nl.ts - Dutch
  • src/lib/locales/ru.ts - Russian
  • src/lib/locales/ja.ts - Japanese
  • src/lib/locales/zh.ts - Chinese
  • src/lib/locales/hi.ts - Hindi

Type Safety

Translations are fully typed:
export type Translations = typeof en;
This ensures:
  • All languages have the same keys
  • TypeScript catches missing translations
  • Auto-completion in code

Adding New Languages

Current version does not support user-added languages. Language support is built-in at compile time.
To request a new language:
  1. Check if it’s already in development
  2. File an issue/feature request
  3. Consider contributing a translation file

Right-to-Left (RTL) Support

LoFi Engine does not currently support RTL languages like Arabic or Hebrew. All supported languages use left-to-right text direction.

Persistent Language Selection

Language preference is stored locally:
  • Location: Browser localStorage
  • Key: locale or language
  • Format: Two-letter language code (e.g., “en”, “ja”, “fr”)
  • Persistence: Survives app restarts
  • Default: Falls back to English if invalid/missing

Language Detection

The app can detect your browser’s preferred language:
1

First Launch

App checks navigator.language or navigator.userLanguage
2

Match Supported Languages

If browser language is supported, app uses it
3

Fallback to English

If browser language isn’t supported, defaults to English
4

Remember Choice

Once you manually select a language, that preference is saved

Translation Quality

All translations are:

Contextual

Translations consider UI context and space constraints

Natural

Phrasing sounds native, not machine-translated

Consistent

Same terms translated consistently throughout

Up-to-date

Maintained alongside English source

Special Considerations

Different languages have different text lengths:
  • German: Often longer (compound words)
  • Japanese: Usually more compact
  • English: Medium length baseline
UI is designed to accommodate these variations without breaking.
Some translations adapt for cultural context:
  • Quotes may be different across languages
  • Examples use culturally relevant references
  • Tone matches local communication norms
Keyboard shortcuts remain the same across languages:
  • A, S, D, F for effects (not localized)
  • Number keys 1-9 for tracks
  • Arrow keys for navigation
Only the descriptions of shortcuts are translated.

Reporting Translation Issues

If you find translation errors:
  1. Note the incorrect text: Screenshot or copy the text
  2. Identify the language: Which language has the error?
  3. Describe the issue: What’s wrong? What should it say?
  4. Provide context: Where in the app does this appear?
Native speakers are invaluable for improving translation quality. Contributions are welcome!

Future Language Support

Potential languages for future releases:
  • Spanish (es)
  • German (de)
  • Italian (it)
  • Portuguese (pt)
  • Korean (ko)
  • Arabic (ar) - requires RTL support
Language priorities are based on user demand and contributor availability.

Accessibility

Multi-language support enhances accessibility:
  • Users can interact in their preferred language
  • Reduces cognitive load for non-English speakers
  • Makes the app more inclusive globally
  • Screen readers work correctly with localized text

Build docs developers (and LLMs) love