🗣️Multi-Language Support

The YSeries phone system provides multi-language support, allowing you to customize the phone interface for different languages and regions.

Adding New Languages

Step 1: Configure Language Entry

  1. Navigate to /config/config.locales.lua

  2. Add a new entry to the Config.Locales array:

Config.Locales = {
    {
        value = "en",
        label = "English"
    },
    {
        value = "es", 
        label = "Español"
    },
    {
        value = "fr",
        label = "Français" 
    },
    -- Add your new language here
    {
        value = "de",
        label = "Deutsch"
    }
}

Step 2: Create Language File

  1. Navigate to /ui/build/locales/

  2. Create a new JSON file named exactly the same as the value field from Step 1

  3. Example: For German, create de.json

Step 3: Restart Server

Restart the server to apply the language changes.

Language File Structure

Basic Structure

Language files should follow this JSON structure:

{
    "common": {
        "save": "Save",
        "cancel": "Cancel", 
        "delete": "Delete",
        "edit": "Edit",
        "add": "Add",
        "close": "Close",
        "ok": "OK"
    },
    "apps": {
        "phone": "Phone",
        "messages": "Messages",
        "contacts": "Contacts",
        "settings": "Settings",
        "camera": "Camera",
        "gallery": "Gallery"
    },
    "settings": {
        "general": "General",
        "display": "Display", 
        "sounds": "Sounds",
        "privacy": "Privacy"
    }
}

Language Selection

User Language Selection

Players can typically change their language through:

  1. Settings App: Navigate to Settings -> Language

  2. Initial Setup: Language selection during first phone setup

Server Default Language

Configure the default server language in config/config.locales.lua:

Config.DefaultLocale = "en" -- Set default language

Advanced Features

Dynamic Language Loading

The system supports dynamic language loading, meaning:

  • Languages can be switched without restart

  • New translations take effect immediately

  • Fallback to default language for missing translations

Translation Fallbacks

If a translation is missing:

  1. System checks current language file

  2. Falls back to default language (usually English)

  3. Shows translation key if no fallback exists

Regional Variants

Support for regional language variants:

Config.Locales = {
    {
        value = "en_US",
        label = "English (US)"
    },
    {
        value = "en_GB", 
        label = "English (UK)"
    },
    {
        value = "fr_FR",
        label = "Français (France)"
    },
    {
        value = "fr_CA",
        label = "Français (Canada)"
    }
}

Troubleshooting

Common Issues

  1. Translations not appearing:

    • Check file naming matches value field exactly

    • Verify JSON syntax is valid

    • Ensure server restart was completed

  2. Partial translations:

    • Check for missing translation keys

    • Verify JSON structure is complete

    • Test fallback language functionality

  3. Language selection not working:

    • Verify locale configuration is correct

    • Check player language preference storage

    • Test with different language options

Debug Steps

  1. File Validation: Use JSON validators for syntax checking

  2. Console Logs: Check for language loading errors

  3. UI Testing: Test interface with different languages

  4. Player Testing: Have players test language switching


Last updated