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>
44 lines
1.6 KiB
JSON
44 lines
1.6 KiB
JSON
{
|
|
"Bookmarks": "Bookmarks",
|
|
"Bookmark this page": "Bookmark this page",
|
|
"Save bookmark": "Save bookmark",
|
|
"Bookmark name": "Bookmark name",
|
|
"Delete bookmark": "Delete bookmark",
|
|
"Delete this bookmark?": "Delete this bookmark?",
|
|
"No bookmarks yet": "No bookmarks yet",
|
|
"New group": "New group",
|
|
"No group": "No group",
|
|
"Assign to group": "Assign to group",
|
|
"Group name": "Group name",
|
|
"Delete group": "Delete group",
|
|
"Group": "Group",
|
|
"Icon": "Icon",
|
|
"Maximum bookmarks reached": "Maximum bookmarks reached",
|
|
"Edit bookmark": "Edit bookmark",
|
|
"Save changes": "Save changes",
|
|
"Bookmark saved": "Bookmark saved",
|
|
"Bookmark updated": "Bookmark updated",
|
|
"Bookmark deleted": "Bookmark deleted",
|
|
"Group created": "Group created",
|
|
"Group deleted": "Group deleted",
|
|
"Group delete failed": "Group delete failed",
|
|
"Delete group and keep bookmarks?": "Delete group and keep bookmarks?",
|
|
"Bookmark action failed": "Bookmark action failed",
|
|
"Group action failed": "Group action failed",
|
|
"Reorder saved": "Reorder saved",
|
|
"Reorder failed": "Reorder failed",
|
|
"Move group up": "Move group up",
|
|
"Move group down": "Move group down",
|
|
"Move bookmark up": "Move bookmark up",
|
|
"Move bookmark down": "Move bookmark down",
|
|
"Group actions": "Group actions",
|
|
"Bookmark actions": "Bookmark actions",
|
|
"Bookmark name is required": "Bookmark name is required",
|
|
"Bookmark URL is invalid": "Bookmark URL is invalid",
|
|
"Group not found": "Group not found",
|
|
"Edit group": "Edit group",
|
|
"Group updated": "Group updated",
|
|
"Group name is required": "Group name is required",
|
|
"Maximum groups reached": "Maximum groups reached"
|
|
}
|