Translate admin pages - Create admin.json files and translate all admin pages

- Create admin.json translation files for es, en, ca with all admin strings
- Update IntlProvider to include admin namespace
- Translate admin/invites/page.tsx - all strings now use translations
- Translate admin/trades/page.tsx - all strings now use translations
- Translate admin/price-history/page.tsx - all strings now use translations
- Translate admin/availability/page.tsx - all strings now use translations
- Add 'saving' key to common.json for all languages
- Fix linting errors: add t to useCallback dependencies
- All admin pages now fully multilingual
This commit is contained in:
counterweight 2025-12-26 11:49:50 +01:00
parent b8b3e8b9f6
commit e2376855ce
Signed by: counterweight
GPG key ID: 883EDBAA726BD96C
11 changed files with 473 additions and 87 deletions

View file

@ -0,0 +1,113 @@
{
"invites": {
"title": "Invites",
"createInvite": "Create Invite",
"godfatherLabel": "Godfather (user who can share this invite)",
"selectUser": "Select a user...",
"noUsersHint": "No users loaded yet. Create at least one invite to populate the list.",
"creating": "Creating...",
"allInvites": "All Invites",
"allStatuses": "All statuses",
"statusReady": "Ready",
"statusSpent": "Spent",
"statusRevoked": "Revoked",
"invitesCount": "{count} invites",
"tableHeaders": {
"code": "Code",
"godfather": "Godfather",
"status": "Status",
"usedBy": "Used By",
"created": "Created",
"actions": "Actions"
},
"noInvites": "No invites yet",
"revoke": "Revoke",
"errors": {
"loadFailed": "Failed to load invites",
"revokeFailed": "Failed to revoke invite"
}
},
"trades": {
"title": "Trades",
"subtitle": "Manage Bitcoin exchange trades",
"tabs": {
"upcoming": "Upcoming ({count})",
"history": "History ({count})"
},
"filters": {
"allStatuses": "All Statuses",
"completed": "Completed",
"noShow": "No Show",
"userCancelled": "User Cancelled",
"adminCancelled": "Admin Cancelled"
},
"searchPlaceholder": "Search by email...",
"loading": "Loading trades...",
"emptyStates": {
"upcoming": "No upcoming trades.",
"past": "No trades found."
},
"tradeDetails": {
"rate": "Rate:",
"market": "Market:",
"sellBtc": "SELL BTC",
"buyBtc": "BUY BTC",
"sendVia": "Send via {method}",
"receiveVia": "Receive via {method}",
"onchain": "Onchain",
"lightning": "Lightning",
"signal": "Signal: {value}"
},
"actions": {
"complete": "Complete",
"noShow": "No Show",
"cancel": "Cancel"
},
"errors": {
"loadUpcomingFailed": "Failed to load upcoming trades",
"loadPastFailed": "Failed to load past trades",
"actionFailed": "Failed to {action} trade"
}
},
"priceHistory": {
"title": "Bitcoin Price History",
"recordsCount": "{count} records",
"refresh": "Refresh",
"fetching": "Fetching...",
"fetchNow": "Fetch Now",
"tableHeaders": {
"source": "Source",
"pair": "Pair",
"price": "Price",
"timestamp": "Timestamp"
},
"loading": "Loading...",
"emptyState": "No price records yet. Click \"Fetch Now\" to get the current price."
},
"availability": {
"title": "Availability",
"subtitle": "Configure your available time slots for the next {days} days",
"copyMode": {
"hint": "Select days to copy to, then click Copy",
"copyTo": "Copy to {count} day(s)",
"copying": "Copying...",
"cancel": "Cancel"
},
"modal": {
"title": "Edit Time Slots",
"startTime": "Start Time",
"endTime": "End Time",
"addSlot": "Add Slot",
"removeSlot": "Remove",
"save": "Save",
"clear": "Clear",
"close": "Close",
"noAvailability": "No availability"
},
"errors": {
"saveFailed": "Failed to save",
"clearFailed": "Failed to clear",
"copyFailed": "Failed to copy"
}
}
}