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:
parent
b8b3e8b9f6
commit
e2376855ce
11 changed files with 473 additions and 87 deletions
113
frontend/locales/ca/admin.json
Normal file
113
frontend/locales/ca/admin.json
Normal file
|
|
@ -0,0 +1,113 @@
|
|||
{
|
||||
"invites": {
|
||||
"title": "Invitacions",
|
||||
"createInvite": "Crear Invitació",
|
||||
"godfatherLabel": "Padrí (usuari que pot compartir aquesta invitació)",
|
||||
"selectUser": "Seleccionar un usuari...",
|
||||
"noUsersHint": "Encara no hi ha usuaris carregats. Crea almenys una invitació per omplir la llista.",
|
||||
"creating": "Creant...",
|
||||
"allInvites": "Totes les Invitacions",
|
||||
"allStatuses": "Tots els estats",
|
||||
"statusReady": "Llista",
|
||||
"statusSpent": "Usada",
|
||||
"statusRevoked": "Revocada",
|
||||
"invitesCount": "{count} invitacions",
|
||||
"tableHeaders": {
|
||||
"code": "Codi",
|
||||
"godfather": "Padrí",
|
||||
"status": "Estat",
|
||||
"usedBy": "Usada Per",
|
||||
"created": "Creada",
|
||||
"actions": "Accions"
|
||||
},
|
||||
"noInvites": "Encara no hi ha invitacions",
|
||||
"revoke": "Revocar",
|
||||
"errors": {
|
||||
"loadFailed": "Error en carregar invitacions",
|
||||
"revokeFailed": "Error en revocar invitació"
|
||||
}
|
||||
},
|
||||
"trades": {
|
||||
"title": "Intercanvis",
|
||||
"subtitle": "Gestionar intercanvis de Bitcoin",
|
||||
"tabs": {
|
||||
"upcoming": "Pròxims ({count})",
|
||||
"history": "Historial ({count})"
|
||||
},
|
||||
"filters": {
|
||||
"allStatuses": "Tots els Estats",
|
||||
"completed": "Completat",
|
||||
"noShow": "No Presentat",
|
||||
"userCancelled": "Cancel·lat per Usuari",
|
||||
"adminCancelled": "Cancel·lat per Admin"
|
||||
},
|
||||
"searchPlaceholder": "Buscar per correu electrònic...",
|
||||
"loading": "Carregant intercanvis...",
|
||||
"emptyStates": {
|
||||
"upcoming": "No hi ha intercanvis propers.",
|
||||
"past": "No s'han trobat intercanvis."
|
||||
},
|
||||
"tradeDetails": {
|
||||
"rate": "Taxa:",
|
||||
"market": "Mercat:",
|
||||
"sellBtc": "VENDE BTC",
|
||||
"buyBtc": "COMPRA BTC",
|
||||
"sendVia": "Enviar via {method}",
|
||||
"receiveVia": "Rebre via {method}",
|
||||
"onchain": "Onchain",
|
||||
"lightning": "Lightning",
|
||||
"signal": "Signal: {value}"
|
||||
},
|
||||
"actions": {
|
||||
"complete": "Completar",
|
||||
"noShow": "No Presentat",
|
||||
"cancel": "Cancel·lar"
|
||||
},
|
||||
"errors": {
|
||||
"loadUpcomingFailed": "Error en carregar intercanvis propers",
|
||||
"loadPastFailed": "Error en carregar historial d'intercanvis",
|
||||
"actionFailed": "Error en {action} intercanvi"
|
||||
}
|
||||
},
|
||||
"priceHistory": {
|
||||
"title": "Historial de Preus de Bitcoin",
|
||||
"recordsCount": "{count} registres",
|
||||
"refresh": "Actualitzar",
|
||||
"fetching": "Obtenint...",
|
||||
"fetchNow": "Obtindre Ara",
|
||||
"tableHeaders": {
|
||||
"source": "Font",
|
||||
"pair": "Parella",
|
||||
"price": "Preu",
|
||||
"timestamp": "Data i Hora"
|
||||
},
|
||||
"loading": "Carregant...",
|
||||
"emptyState": "Encara no hi ha registres de preus. Fes clic a \"Obtindre Ara\" per obtenir el preu actual."
|
||||
},
|
||||
"availability": {
|
||||
"title": "Disponibilitat",
|
||||
"subtitle": "Configurar les teves franges horàries disponibles per als propers {days} dies",
|
||||
"copyMode": {
|
||||
"hint": "Selecciona els dies als quals copiar, després fes clic a Copiar",
|
||||
"copyTo": "Copiar a {count} dia(s)",
|
||||
"copying": "Copiant...",
|
||||
"cancel": "Cancel·lar"
|
||||
},
|
||||
"modal": {
|
||||
"title": "Editar Franges Horàries",
|
||||
"startTime": "Hora d'inici",
|
||||
"endTime": "Hora de fi",
|
||||
"addSlot": "Afegir franja",
|
||||
"removeSlot": "Eliminar",
|
||||
"save": "Guardar",
|
||||
"clear": "Netejar",
|
||||
"close": "Tancar",
|
||||
"noAvailability": "Sense disponibilitat"
|
||||
},
|
||||
"errors": {
|
||||
"saveFailed": "Error en guardar",
|
||||
"clearFailed": "Error en netejar",
|
||||
"copyFailed": "Error en copiar"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,6 +2,7 @@
|
|||
"loading": "Carregant...",
|
||||
"error": "Error",
|
||||
"save": "Desar",
|
||||
"saving": "Desant...",
|
||||
"cancel": "Cancel·lar",
|
||||
"back": "Enrere",
|
||||
"continue": "Continuar",
|
||||
|
|
|
|||
113
frontend/locales/en/admin.json
Normal file
113
frontend/locales/en/admin.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,6 +2,7 @@
|
|||
"loading": "Loading...",
|
||||
"error": "Error",
|
||||
"save": "Save",
|
||||
"saving": "Saving...",
|
||||
"cancel": "Cancel",
|
||||
"back": "Back",
|
||||
"continue": "Continue",
|
||||
|
|
|
|||
113
frontend/locales/es/admin.json
Normal file
113
frontend/locales/es/admin.json
Normal file
|
|
@ -0,0 +1,113 @@
|
|||
{
|
||||
"invites": {
|
||||
"title": "Invitaciones",
|
||||
"createInvite": "Crear Invitación",
|
||||
"godfatherLabel": "Padrino (usuario que puede compartir esta invitación)",
|
||||
"selectUser": "Seleccionar un usuario...",
|
||||
"noUsersHint": "Aún no hay usuarios cargados. Crea al menos una invitación para poblar la lista.",
|
||||
"creating": "Creando...",
|
||||
"allInvites": "Todas las Invitaciones",
|
||||
"allStatuses": "Todos los estados",
|
||||
"statusReady": "Lista",
|
||||
"statusSpent": "Usada",
|
||||
"statusRevoked": "Revocada",
|
||||
"invitesCount": "{count} invitaciones",
|
||||
"tableHeaders": {
|
||||
"code": "Código",
|
||||
"godfather": "Padrino",
|
||||
"status": "Estado",
|
||||
"usedBy": "Usada Por",
|
||||
"created": "Creada",
|
||||
"actions": "Acciones"
|
||||
},
|
||||
"noInvites": "Aún no hay invitaciones",
|
||||
"revoke": "Revocar",
|
||||
"errors": {
|
||||
"loadFailed": "Error al cargar invitaciones",
|
||||
"revokeFailed": "Error al revocar invitación"
|
||||
}
|
||||
},
|
||||
"trades": {
|
||||
"title": "Intercambios",
|
||||
"subtitle": "Gestionar intercambios de Bitcoin",
|
||||
"tabs": {
|
||||
"upcoming": "Próximos ({count})",
|
||||
"history": "Historial ({count})"
|
||||
},
|
||||
"filters": {
|
||||
"allStatuses": "Todos los Estados",
|
||||
"completed": "Completado",
|
||||
"noShow": "No Presentado",
|
||||
"userCancelled": "Cancelado por Usuario",
|
||||
"adminCancelled": "Cancelado por Admin"
|
||||
},
|
||||
"searchPlaceholder": "Buscar por email...",
|
||||
"loading": "Cargando intercambios...",
|
||||
"emptyStates": {
|
||||
"upcoming": "No hay intercambios próximos.",
|
||||
"past": "No se encontraron intercambios."
|
||||
},
|
||||
"tradeDetails": {
|
||||
"rate": "Tasa:",
|
||||
"market": "Mercado:",
|
||||
"sellBtc": "VENDER BTC",
|
||||
"buyBtc": "COMPRAR BTC",
|
||||
"sendVia": "Enviar vía {method}",
|
||||
"receiveVia": "Recibir vía {method}",
|
||||
"onchain": "Onchain",
|
||||
"lightning": "Lightning",
|
||||
"signal": "Signal: {value}"
|
||||
},
|
||||
"actions": {
|
||||
"complete": "Completar",
|
||||
"noShow": "No Presentado",
|
||||
"cancel": "Cancelar"
|
||||
},
|
||||
"errors": {
|
||||
"loadUpcomingFailed": "Error al cargar intercambios próximos",
|
||||
"loadPastFailed": "Error al cargar historial de intercambios",
|
||||
"actionFailed": "Error al {action} intercambio"
|
||||
}
|
||||
},
|
||||
"priceHistory": {
|
||||
"title": "Historial de Precios de Bitcoin",
|
||||
"recordsCount": "{count} registros",
|
||||
"refresh": "Actualizar",
|
||||
"fetching": "Obteniendo...",
|
||||
"fetchNow": "Obtener Ahora",
|
||||
"tableHeaders": {
|
||||
"source": "Fuente",
|
||||
"pair": "Par",
|
||||
"price": "Precio",
|
||||
"timestamp": "Fecha y Hora"
|
||||
},
|
||||
"loading": "Cargando...",
|
||||
"emptyState": "Aún no hay registros de precios. Haz clic en \"Obtener Ahora\" para obtener el precio actual."
|
||||
},
|
||||
"availability": {
|
||||
"title": "Disponibilidad",
|
||||
"subtitle": "Configurar tus franjas horarias disponibles para los próximos {days} días",
|
||||
"copyMode": {
|
||||
"hint": "Selecciona los días a los que copiar, luego haz clic en Copiar",
|
||||
"copyTo": "Copiar a {count} día(s)",
|
||||
"copying": "Copiando...",
|
||||
"cancel": "Cancelar"
|
||||
},
|
||||
"modal": {
|
||||
"title": "Editar Franjas Horarias",
|
||||
"startTime": "Hora de inicio",
|
||||
"endTime": "Hora de fin",
|
||||
"addSlot": "Añadir franja",
|
||||
"removeSlot": "Eliminar",
|
||||
"save": "Guardar",
|
||||
"clear": "Limpiar",
|
||||
"close": "Cerrar",
|
||||
"noAvailability": "Sin disponibilidad"
|
||||
},
|
||||
"errors": {
|
||||
"saveFailed": "Error al guardar",
|
||||
"clearFailed": "Error al limpiar",
|
||||
"copyFailed": "Error al copiar"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,6 +2,7 @@
|
|||
"loading": "Cargando...",
|
||||
"error": "Error",
|
||||
"save": "Guardar",
|
||||
"saving": "Guardando...",
|
||||
"cancel": "Cancelar",
|
||||
"back": "Atrás",
|
||||
"continue": "Continuar",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue