Configuration
The central configuration asset for your project.
Location: Assets/Resources/LocalizationSettings.asset
General Settings
| Property | Type | Description |
|---|---|---|
DefaultLocale | Locale | Fallback language when detection fails |
SupportedLocales | List<Locale> | All available languages |
DetectSystemLocale | bool | Auto-detect user's language on startup |
PreloadOnStart | bool | Load all tables immediately on initialization |
Tables
| Property | Type | Description |
|---|---|---|
StringTables | List<StringTable> | Text translation tables |
AssetTables | List<AssetTable> | Asset localization tables |
AddressableAssetTables | List<ScriptableObject> | Async-loaded asset tables |
Provider Settings
| Property | Type | Description |
|---|---|---|
DefaultProvider | ProviderConfig | Data source configuration |
ProviderOverrides | List<LocaleProviderOverride> | Per-locale provider settings |
Debugging
| Property | Type | Default | Description |
|---|---|---|---|
MissingTranslationText | string | [MISSING: {0}] | Format for missing keys |
LogMissingTranslations | bool | true | Log warnings for missing translations |
UseLocaleFormatting | bool | true | Use CultureInfo for number/date formatting |
Each locale defines a supported language.
public class Locale
{
string Code; // ISO 639-1: "en", "de", "zh-Hans"
string DisplayName; // English name: "German"
string NativeName; // Native name: "Deutsch"
string FallbackCode; // Fallback: "en" for "en-US"
bool IsRTL; // Right-to-left text
TMP_FontAsset Font; // Per-locale font (requires TMP)
}Locale Code Examples
| Code | Language | Region |
|---|---|---|
en | English | — |
en-US | English | United States |
en-GB | English | United Kingdom |
de | German | — |
de-AT | German | Austria |
zh-Hans | Chinese | Simplified |
zh-Hant | Chinese | Traditional |
ja | Japanese | — |
ar | Arabic | — (RTL) |
Provider Configuration controls where Lexis loads translation data from. This is an advanced feature - most projects using StringTable assets don't need to configure providers at all.
When to Use Provider Configuration
Use provider configuration when you need to load translations from external sources:
| Scenario | Solution |
|---|---|
| All translations in StringTable assets | No configuration needed (default) |
| Load translations from JSON/CSV/PO files | Set DefaultProvider |
| Different locales from different sources | Use ProviderOverrides |
| Collaborative translation via Google Sheets | Configure Google Sheets provider |
Settings Overview
| Property | Type | Description |
|---|---|---|
DefaultProvider | ProviderConfig | The default data source for all locales |
ProviderOverrides | List | Per-locale overrides when some locales use different sources |
ProviderConfig Fields
Each provider configuration has two fields:
| Field | Description |
|---|---|
ProviderId | The provider type: json, csv, po, or googlesheets |
ConfigJson | JSON string with provider-specific settings |
ConfigJson Examples by Provider
JSON Provider:
{
"folderPath": "Assets/Localization/Strings",
"prettyPrint": true
}CSV Provider:
{
"filePath": "Assets/Localization/strings.csv",
"delimiter": ",",
"hasHeaderRow": true
}Google Sheets Provider:
{
"spreadsheetId": "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms",
"sheetNames": ["UI", "Dialogues", "Tutorials"]
}Note
The sheetNames field supports multiple sheet names. Each sheet maps to a StringTable by TableId (e.g., sheet "UI" syncs with StringTable where TableId = "UI").
Example: Outsourced Japanese Translations
Your dev team manages English and German locally, but Japanese translations come from an external agency's Google Sheet:
Inspector Setup:
Provider Configuration
├── Default Provider
│ ├── Provider Id: json
│ └── Config Json: { "folderPath": "Assets/Localization" }
│
└── Provider Overrides
└── [0]
├── Locale Code: ja
└── Provider
├── Provider Id: googlesheets
└── Config Json: { "spreadsheetId": "...", "sheetName": "Japanese" }How it works:
- When loading
enorde: Uses JSON files fromAssets/Localization/ - When loading
ja: Fetches from the configured Google Sheet
Example: Legacy Migration
Migrating from CSV to JSON, but keeping legacy French translations:
Provider Configuration
├── Default Provider
│ ├── Provider Id: json
│ └── Config Json: { "folderPath": "Assets/Localization/New" }
│
└── Provider Overrides
└── [0]
├── Locale Code: fr
└── Provider
├── Provider Id: csv
└── Config Json: { "filePath": "Assets/Legacy/french.csv" }