165 lines
3.6 KiB
TOML
Raw Permalink Normal View History

2026-01-12 03:31:00 +00:00
# i18n Configuration for TypeDialog Example 17
# Defines fallback chains, locale information, and translation rules
[locales]
default = "en-US"
fallback = "en-US"
# Locale definitions with metadata
[locales.en-US]
name = "English (United States)"
direction = "ltr"
plurals = 2
decimal_separator = "."
thousands_separator = ","
date_format = "MM/DD/YYYY"
currency_symbol = "$"
currency_position = "prefix"
[locales.en-GB]
name = "English (United Kingdom)"
direction = "ltr"
plurals = 2
decimal_separator = "."
thousands_separator = ","
date_format = "DD/MM/YYYY"
currency_symbol = "£"
currency_position = "prefix"
[locales.es-ES]
name = "Spanish (Spain)"
direction = "ltr"
plurals = 2
decimal_separator = ","
thousands_separator = "."
date_format = "DD/MM/YYYY"
currency_symbol = "€"
currency_position = "suffix"
gender_aware = true
[locales.es-MX]
name = "Spanish (Mexico)"
direction = "ltr"
plurals = 2
decimal_separator = "."
thousands_separator = ","
date_format = "DD/MM/YYYY"
currency_symbol = "$"
currency_position = "prefix"
gender_aware = true
[locales.pt-BR]
name = "Portuguese (Brazil)"
direction = "ltr"
plurals = 2
decimal_separator = ","
thousands_separator = "."
date_format = "DD/MM/YYYY"
currency_symbol = "R$"
currency_position = "prefix"
[locales.pt-PT]
name = "Portuguese (Portugal)"
direction = "ltr"
plurals = 2
decimal_separator = ","
thousands_separator = "."
date_format = "DD/MM/YYYY"
currency_symbol = "€"
currency_position = "suffix"
[locales.fr-FR]
name = "French (France)"
direction = "ltr"
plurals = 3
special_plural_rules = true
decimal_separator = ","
thousands_separator = "."
date_format = "DD/MM/YYYY"
currency_symbol = "€"
currency_position = "suffix"
gender_aware = true
[locales.ja-JP]
name = "Japanese (Japan)"
direction = "ltr"
plurals = 1
decimal_separator = "."
thousands_separator = ","
date_format = "YYYY年M月D日"
currency_symbol = "¥"
currency_position = "prefix"
decimal_places = 0
[locales.ar-SA]
name = "Arabic (Saudi Arabia)"
direction = "rtl"
plurals = 6
decimal_separator = "."
thousands_separator = ","
date_format = "DD MMMM YYYY"
currency_symbol = "﷼"
currency_position = "prefix"
use_arabic_numerals = true
# Fallback chains for locale resolution
[fallback_chains]
# Portuguese Brazil → Portuguese Portugal → Spanish Spain → English
pt-BR = ["pt-PT", "es-ES", "en-US"]
# Portuguese Portugal → Spanish Spain → English
pt-PT = ["es-ES", "en-US"]
# Spanish Mexico → Spanish Spain → English
es-MX = ["es-ES", "en-US"]
# Spanish Spain → English
es-ES = ["en-US"]
# English UK → English US
en-GB = ["en-US"]
# French → English
fr-FR = ["en-US"]
# Japanese → English
ja-JP = ["en-US"]
# Arabic → English
ar-SA = ["en-US"]
# Feature detection
[features]
pluralization = true
gender_agreement = true
number_formatting = true
date_formatting = true
rtl_support = true
fallback_chains = true
context_variables = true
# Validation rules
[validation]
require_all_keys_in_default = false
require_all_keys_in_fallback = false
warn_missing_keys = true
warn_incomplete_translations = true
validate_plural_forms = true
# Coverage thresholds
[coverage]
critical_locales = ["en-US", "es-ES", "fr-FR", "ja-JP", "ar-SA"]
required_coverage_percent = 90
warning_coverage_percent = 75
[testing]
# Test all pluralization forms
test_plurals = true
test_count_values = [0, 1, 2, 3, 5, 10, 11, 21, 100, 1000]
# Test with various dates and amounts
test_dates = true
test_amounts = true
test_amount_values = [1.99, 10.00, 100.50, 1234.56, 9999.99]
# Test RTL text handling
test_rtl = true
rtl_test_locales = ["ar-SA"]
# Test gender-aware strings
test_gender = true
gender_test_locales = ["es-ES", "es-MX", "pt-BR", "pt-PT", "fr-FR", "ar-SA"]