Files
breadcrumb-the-shire/modules/bookmarks/i18n/default_en.json
fs 1f0b1caf54 feat: module-owned i18n with merge-at-boot translation loading
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>
2026-03-19 22:08:34 +01:00

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"
}