Each module can now ship its own i18n/ directory with translation files (default_de.json, default_en.json). At boot time, ModuleI18nLoader preloads core translations then merges module translations on top via Reflection into I18n::$strings — the t() helper stays unchanged. - Add i18nPath property to ModuleManifest - Add ModuleI18nLoader with Reflection-based preload - Extract 59 module-exclusive keys from core i18n into module files (notifications: 8, bookmarks: 41, addressbook: 10) - Expand TranslationKeysTest to scan modules/ and validate against merged core + module translations - Add ModuleI18nContractTest for per-module de/en parity and completeness Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
13 lines
305 B
JSON
13 lines
305 B
JSON
{
|
|
"About": "About",
|
|
"Address book": "Address book",
|
|
"Call mobile": "Call mobile",
|
|
"Call phone": "Call phone",
|
|
"From": "From",
|
|
"No departments": "No departments",
|
|
"Quick actions": "Quick actions",
|
|
"Send email": "Send email",
|
|
"To": "To",
|
|
"View in address book": "View in address book"
|
|
}
|