From 3d568c9538793d833b15ad6cbb03e604a342fabd Mon Sep 17 00:00:00 2001 From: omar Date: Wed, 7 Oct 2026 16:49:49 -0500 Subject: [PATCH 1/3] feat(i18n): translate management and vehicle forms --- addon/components/vehicle/form.hbs | 252 +++--- .../management/fuel-transactions/index.js | 23 +- .../connectivity/devices/index/new.hbs | 2 +- .../connectivity/sensors/index/new.hbs | 2 +- .../management/contacts/customers/new.hbs | 2 +- .../management/contacts/index/new.hbs | 2 +- .../management/drivers/index/new.hbs | 2 +- addon/templates/management/fleets/index.hbs | 16 +- .../templates/management/fleets/index/new.hbs | 2 +- .../management/fuel-reports/index.hbs | 16 +- .../management/fuel-reports/index/new.hbs | 2 +- .../management/fuel-transactions/index.hbs | 4 +- addon/templates/management/issues/index.hbs | 16 +- .../templates/management/issues/index/new.hbs | 2 +- addon/templates/management/places/index.hbs | 16 +- addon/templates/management/vehicles/index.hbs | 16 +- .../management/vehicles/index/new.hbs | 2 +- .../management/vendors/index/new.hbs | 2 +- .../management/vendors/integrated.hbs | 12 +- translations/en-us.yaml | 399 +++++++++ translations/es-pa.yaml | 794 ++++++++++++++++-- 21 files changed, 1316 insertions(+), 268 deletions(-) diff --git a/addon/components/vehicle/form.hbs b/addon/components/vehicle/form.hbs index de3d89211..a8a489975 100644 --- a/addon/components/vehicle/form.hbs +++ b/addon/components/vehicle/form.hbs @@ -38,7 +38,7 @@
{{! Vehicle Identification }}
- Vehicle Identification + {{t "vehicle.form.vehicle-identification"}}
@@ -69,15 +69,15 @@ - - - - - + + + + + {{! Assignment & Status }}
- Assignment & Status + {{t "vehicle.form.assignment-status"}}
@@ -116,11 +116,11 @@
- + {{! Location }}
- Location + {{t "vehicle.form.location"}}
@@ -138,19 +138,19 @@ {{! MEASUREMENT & UNITS / ODOMETER }} - +
- Measurement & Units + {{t "vehicle.form.measurement-units"}}
- +
- +
- Odometer & Usage + {{t "vehicle.form.odometer-usage"}}
- + - +
- +
{{! BODY & USAGE }} - +
- Body & Usage + {{t "vehicle.form.body-usage"}}
- +
- +
- +
- +
- +
- +
{{! TECHNICAL SPECIFICATIONS (ENGINE, CAPACITY, REGULATORY) }} - +
{{! Powertrain & Engine }}
- Powertrain & Engine + {{t "vehicle.form.powertrain-engine"}}
- - - - - - - + + + + + + + - - + + - - + + - - + + - + - - + + - + {{! Capacity & Dimensions }}
- Capacity & Dimensions + {{t "vehicle.form.capacity-dimensions"}}
- - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + +
{{! Regulatory & Compliance }}
- Regulatory & Compliance + {{t "vehicle.form.regulatory-compliance"}}
- +
- - + + - - + + - - + +
{{! FINANCIAL & LIFECYCLE }} - +
- Asset Values + {{t "vehicle.form.asset-values"}}
- +
- + - + - + - +
- Lifecycle & Service Life + {{t "vehicle.form.lifecycle-service-life"}}
- - + + - +
- + - + - +
- Financing (Loan) + {{t "vehicle.form.financing-loan"}}
- + - + - + @@ -565,18 +565,18 @@ {{! ORCHESTRATOR CONSTRAINTS }} - +
- Skills & Capabilities + {{t "vehicle.form.skills-capabilities"}}
- +
- Availability Window + {{t "vehicle.form.availability-window"}}
- + - +
- Task Limits + {{t "vehicle.form.task-limits"}}
- - + +
diff --git a/addon/controllers/management/fuel-transactions/index.js b/addon/controllers/management/fuel-transactions/index.js index f3e1bfa52..47c75b353 100644 --- a/addon/controllers/management/fuel-transactions/index.js +++ b/addon/controllers/management/fuel-transactions/index.js @@ -11,6 +11,7 @@ export default class ManagementFuelTransactionsIndexController extends Controlle @service modalsManager; @service notifications; @service hostRouter; + @service intl; @tracked queryParams = ['page', 'limit', 'sort', 'query', 'provider', 'sync_status', 'vehicle', 'connection', 'transaction_at']; @tracked page = 1; @@ -38,26 +39,26 @@ export default class ManagementFuelTransactionsIndexController extends Controlle get emptyStateTitle() { if (this.sync_status === 'unmatched') { - return 'No unmatched fuel transactions'; + return this.intl.t('management.empty-states.fuel-transactions.no-unmatched-title'); } if (this.connection) { - return 'No transactions imported for this integration'; + return this.intl.t('management.empty-states.fuel-transactions.no-integration-title'); } - return 'No fuel transactions imported yet'; + return this.intl.t('management.empty-states.fuel-transactions.no-imported-title'); } get emptyStateMessage() { if (this.sync_status === 'unmatched') { - return 'Fleet-Ops did not find imported provider bills that still need vehicle or trip matching.'; + return this.intl.t('management.empty-states.fuel-transactions.no-unmatched-description'); } if (this.connection) { - return 'Run a sync from the fuel integration detail page to import provider bills into this ledger.'; + return this.intl.t('management.empty-states.fuel-transactions.no-integration-description'); } - return 'Connect PetroApp or another fuel integration, then run a transaction sync. Imported provider bills appear here before linked Fuel Reports are created.'; + return this.intl.t('management.empty-states.fuel-transactions.no-imported-description'); } get actionButtons() { @@ -66,12 +67,12 @@ export default class ManagementFuelTransactionsIndexController extends Controlle id: 'refresh', icon: 'refresh', onClick: this.refresh, - helpText: 'Refresh', + helpText: this.intl.t('management.empty-states.fuel-transactions.refresh'), }, { id: 'fuel-integrations', icon: 'gas-pump', - text: 'Fuel Integrations', + text: this.intl.t('management.empty-states.fuel-transactions.open-integrations'), onClick: () => this.hostRouter.transitionTo('console.fleet-ops.connectivity.fuel-providers.index'), permission: 'fleet-ops list fuel-provider-connection', }, @@ -100,7 +101,7 @@ export default class ManagementFuelTransactionsIndexController extends Controlle { id: 'provider-transaction-id', sticky: true, - label: 'Transaction', + label: this.intl.t('management.empty-states.fuel-transactions.columns.transaction'), valuePath: 'provider_transaction_id', cellComponent: 'cell/fuel-provider-transaction-identity', action: this.openDetails, @@ -207,7 +208,7 @@ export default class ManagementFuelTransactionsIndexController extends Controlle ddButtonText: false, ddButtonIcon: 'ellipsis-h', ddButtonIconPrefix: 'fas', - ddMenuLabel: 'Fuel Transaction Actions', + ddMenuLabel: this.intl.t('management.empty-states.fuel-transactions.actions-menu'), cellClassNames: 'overflow-visible', wrapperClass: 'flex items-center justify-end mx-2', sticky: 'right', @@ -257,7 +258,7 @@ export default class ManagementFuelTransactionsIndexController extends Controlle @action openFuelReport(transaction) { if (!transaction?.fuel_report_id) { - this.notifications.info('This transaction does not have a linked Fuel Report yet.'); + this.notifications.info(this.intl.t('management.empty-states.fuel-transactions.unlinked-info')); return; } diff --git a/addon/templates/connectivity/devices/index/new.hbs b/addon/templates/connectivity/devices/index/new.hbs index f251d43ea..fc4ea62a4 100644 --- a/addon/templates/connectivity/devices/index/new.hbs +++ b/addon/templates/connectivity/devices/index/new.hbs @@ -2,7 +2,7 @@ @resource={{this.device}} @controller={{this}} @actionButtons={{this.actionButtons}} - @headerTitle="Create a new device" + @headerTitle={{t "common.create-a-new-resource" resource=(lowercase (t "resource.device"))}} @saveTask={{this.save}} @onPressCancel={{transition-to "connectivity.devices.index"}} @onOverlayReady={{fn (mut this.overlay)}} diff --git a/addon/templates/connectivity/sensors/index/new.hbs b/addon/templates/connectivity/sensors/index/new.hbs index 092d70a0e..41ba7b81b 100644 --- a/addon/templates/connectivity/sensors/index/new.hbs +++ b/addon/templates/connectivity/sensors/index/new.hbs @@ -2,7 +2,7 @@ @resource={{this.sensor}} @controller={{this}} @actionButtons={{this.actionButtons}} - @headerTitle="Create a new sensor" + @headerTitle={{t "common.create-a-new-resource" resource=(lowercase (t "resource.sensor"))}} @saveTask={{this.save}} @onPressCancel={{transition-to "connectivity.sensors.index"}} @onOverlayReady={{fn (mut this.overlay)}} diff --git a/addon/templates/management/contacts/customers/new.hbs b/addon/templates/management/contacts/customers/new.hbs index 4b83183ab..1d0e501c4 100644 --- a/addon/templates/management/contacts/customers/new.hbs +++ b/addon/templates/management/contacts/customers/new.hbs @@ -2,7 +2,7 @@ @resource={{this.customer}} @controller={{this}} @actionButtons={{this.actionButtons}} - @headerTitle="Create a new customer" + @headerTitle={{t "common.create-a-new-resource" resource=(lowercase (t "resource.customer"))}} @modelName="Customer" @saveTask={{this.save}} @onPressCancel={{transition-to "management.contacts.customers"}} diff --git a/addon/templates/management/contacts/index/new.hbs b/addon/templates/management/contacts/index/new.hbs index ecf17c300..afdef74de 100644 --- a/addon/templates/management/contacts/index/new.hbs +++ b/addon/templates/management/contacts/index/new.hbs @@ -2,7 +2,7 @@ @resource={{this.contact}} @controller={{this}} @actionButtons={{this.actionButtons}} - @headerTitle="Create a new contact" + @headerTitle={{t "common.create-a-new-resource" resource=(lowercase (t "resource.contact"))}} @saveTask={{this.save}} @onPressCancel={{transition-to "management.contacts.index"}} @onOverlayReady={{fn (mut this.overlay)}} diff --git a/addon/templates/management/drivers/index/new.hbs b/addon/templates/management/drivers/index/new.hbs index 7eff60912..06d604a64 100644 --- a/addon/templates/management/drivers/index/new.hbs +++ b/addon/templates/management/drivers/index/new.hbs @@ -2,7 +2,7 @@ @resource={{this.driver}} @controller={{this}} @actionButtons={{this.actionButtons}} - @headerTitle="Create a new driver" + @headerTitle={{t "common.create-a-new-resource" resource=(lowercase (t "resource.driver"))}} @saveTask={{this.save}} @onPressCancel={{transition-to "management.drivers.index"}} @onOverlayReady={{fn (mut this.overlay)}} diff --git a/addon/templates/management/fleets/index.hbs b/addon/templates/management/fleets/index.hbs index a8a5f7b5c..28c93fd9c 100644 --- a/addon/templates/management/fleets/index.hbs +++ b/addon/templates/management/fleets/index.hbs @@ -15,19 +15,19 @@ @emptyStateComponent={{component "table/empty-state" icon="layer-group" - title="Create your first fleet" - description="Fleets help group vehicles and drivers for dispatching, reporting, and operational coverage." - filteredTitle="No fleets match your filters" - filteredDescription="Adjust the search or filters to find another fleet." - primaryText="New fleet" + title=(t "management.empty-states.fleets.title") + description=(t "management.empty-states.fleets.description") + filteredTitle=(t "management.empty-states.fleets.filtered-title") + filteredDescription=(t "management.empty-states.fleets.filtered-description") + primaryText=(t "management.empty-states.fleets.primary-text") primaryIcon="plus" primaryAction=this.fleetActions.transition.create - secondaryText="Import" + secondaryText=(t "common.import") secondaryIcon="upload" secondaryAction=this.fleetActions.import docsSlug="fleet-ops/resources/fleets/overview" - docsTitle="Fleets guide" - docsText="Fleet guide" + docsTitle=(t "management.empty-states.fleets.docs-title") + docsText=(t "management.empty-states.fleets.docs-text") docsSource="fleet-ops-empty-fleets" }} /> diff --git a/addon/templates/management/fleets/index/new.hbs b/addon/templates/management/fleets/index/new.hbs index a8b0ee5ad..5409620d5 100644 --- a/addon/templates/management/fleets/index/new.hbs +++ b/addon/templates/management/fleets/index/new.hbs @@ -2,7 +2,7 @@ @resource={{this.fleet}} @controller={{this}} @actionButtons={{this.actionButtons}} - @headerTitle="Create a new fleet" + @headerTitle={{t "common.create-a-new-resource" resource=(lowercase (t "resource.fleet"))}} @saveTask={{this.save}} @onPressCancel={{transition-to "management.fleets.index"}} @onOverlayReady={{fn (mut this.overlay)}} diff --git a/addon/templates/management/fuel-reports/index.hbs b/addon/templates/management/fuel-reports/index.hbs index 8ea417e3c..81b026a4a 100644 --- a/addon/templates/management/fuel-reports/index.hbs +++ b/addon/templates/management/fuel-reports/index.hbs @@ -15,19 +15,19 @@ @emptyStateComponent={{component "table/empty-state" icon="gas-pump" - title="No fuel reports yet" - description="Create fuel reports to track vehicle fuel usage, cost, and supporting transaction records." - filteredTitle="No fuel reports match your filters" - filteredDescription="Adjust the search or filters to find another fuel report." - primaryText="New fuel report" + title=(t "management.empty-states.fuel-reports.title") + description=(t "management.empty-states.fuel-reports.description") + filteredTitle=(t "management.empty-states.fuel-reports.filtered-title") + filteredDescription=(t "management.empty-states.fuel-reports.filtered-description") + primaryText=(t "management.empty-states.fuel-reports.primary-text") primaryIcon="plus" primaryAction=this.fuelReportActions.transition.create - secondaryText="Import" + secondaryText=(t "common.import") secondaryIcon="upload" secondaryAction=this.fuelReportActions.import docsSlug="fleet-ops/resources/fuel-reports/overview" - docsTitle="Fuel reports guide" - docsText="Fuel reports guide" + docsTitle=(t "management.empty-states.fuel-reports.docs-title") + docsText=(t "management.empty-states.fuel-reports.docs-text") docsSource="fleet-ops-empty-fuel-reports" }} /> diff --git a/addon/templates/management/fuel-reports/index/new.hbs b/addon/templates/management/fuel-reports/index/new.hbs index 7dac6e181..7f54ef2d8 100644 --- a/addon/templates/management/fuel-reports/index/new.hbs +++ b/addon/templates/management/fuel-reports/index/new.hbs @@ -2,7 +2,7 @@ @resource={{this.fuelReport}} @controller={{this}} @actionButtons={{this.actionButtons}} - @headerTitle="Create a new fuel report" + @headerTitle={{t "common.create-a-new-resource" resource=(lowercase (t "resource.fuel-report"))}} @saveTask={{this.save}} @onPressCancel={{transition-to "management.fuel-reports.index"}} @onOverlayReady={{fn (mut this.overlay)}} diff --git a/addon/templates/management/fuel-transactions/index.hbs b/addon/templates/management/fuel-transactions/index.hbs index db493e060..1221d42f4 100644 --- a/addon/templates/management/fuel-transactions/index.hbs +++ b/addon/templates/management/fuel-transactions/index.hbs @@ -26,8 +26,8 @@ primaryIcon="refresh" primaryAction=this.refresh docsSlug="fleet-ops/resources/fuel-reports/overview" - docsTitle="Fuel reports guide" - docsText="Fuel reports guide" + docsTitle=(t "management.empty-states.fuel-transactions.docs-title") + docsText=(t "management.empty-states.fuel-transactions.docs-text") }} /> diff --git a/addon/templates/management/issues/index.hbs b/addon/templates/management/issues/index.hbs index 27821a9a5..a67214fa5 100644 --- a/addon/templates/management/issues/index.hbs +++ b/addon/templates/management/issues/index.hbs @@ -15,19 +15,19 @@ @emptyStateComponent={{component "table/empty-state" icon="triangle-exclamation" - title="No issues reported" - description="Track vehicle, driver, facility, and service issues here so follow-up work stays visible." - filteredTitle="No issues match your filters" - filteredDescription="Clear the search or filters to review other reported issues." - primaryText="New issue" + title=(t "management.empty-states.issues.title") + description=(t "management.empty-states.issues.description") + filteredTitle=(t "management.empty-states.issues.filtered-title") + filteredDescription=(t "management.empty-states.issues.filtered-description") + primaryText=(t "management.empty-states.issues.primary-text") primaryIcon="plus" primaryAction=this.issueActions.transition.create - secondaryText="Import" + secondaryText=(t "common.import") secondaryIcon="upload" secondaryAction=this.issueActions.import docsSlug="fleet-ops/resources/issues/overview" - docsTitle="Issues guide" - docsText="Issues guide" + docsTitle=(t "management.empty-states.issues.docs-title") + docsText=(t "management.empty-states.issues.docs-text") docsSource="fleet-ops-empty-issues" }} /> diff --git a/addon/templates/management/issues/index/new.hbs b/addon/templates/management/issues/index/new.hbs index 9ebe79117..564086c20 100644 --- a/addon/templates/management/issues/index/new.hbs +++ b/addon/templates/management/issues/index/new.hbs @@ -2,7 +2,7 @@ @resource={{this.issue}} @controller={{this}} @actionButtons={{this.actionButtons}} - @headerTitle="Create a new issue" + @headerTitle={{t "common.create-a-new-resource" resource=(lowercase (t "resource.issue"))}} @saveTask={{this.save}} @onPressCancel={{transition-to "management.issues.index"}} @onOverlayReady={{fn (mut this.overlay)}} diff --git a/addon/templates/management/places/index.hbs b/addon/templates/management/places/index.hbs index 488912542..f52196352 100644 --- a/addon/templates/management/places/index.hbs +++ b/addon/templates/management/places/index.hbs @@ -14,19 +14,19 @@ @emptyStateComponent={{component "table/empty-state" icon="location-dot" - title="Add your first place" - description="Places keep frequent pickup, dropoff, facility, and service locations ready for orders and routing." - filteredTitle="No places match your filters" - filteredDescription="Adjust the search or filters to find another saved location." - primaryText="New place" + title=(t "management.empty-states.places.title") + description=(t "management.empty-states.places.description") + filteredTitle=(t "management.empty-states.places.filtered-title") + filteredDescription=(t "management.empty-states.places.filtered-description") + primaryText=(t "management.empty-states.places.primary-text") primaryIcon="plus" primaryAction=this.placeActions.transition.create - secondaryText="Import" + secondaryText=(t "common.import") secondaryIcon="upload" secondaryAction=this.placeActions.import docsSlug="fleet-ops/resources/places/overview" - docsTitle="Places guide" - docsText="Places guide" + docsTitle=(t "management.empty-states.places.docs-title") + docsText=(t "management.empty-states.places.docs-text") docsSource="fleet-ops-empty-places" }} /> diff --git a/addon/templates/management/vehicles/index.hbs b/addon/templates/management/vehicles/index.hbs index 433845987..ac2972771 100644 --- a/addon/templates/management/vehicles/index.hbs +++ b/addon/templates/management/vehicles/index.hbs @@ -16,19 +16,19 @@ @emptyStateComponent={{component "table/empty-state" icon="truck" - title="Add your first vehicle" - description="Vehicles connect assignments, live tracking, fleet capacity, maintenance, and compliance history." - filteredTitle="No vehicles match your filters" - filteredDescription="Adjust the search or filters to find another vehicle." - primaryText="New vehicle" + title=(t "management.empty-states.vehicles.title") + description=(t "management.empty-states.vehicles.description") + filteredTitle=(t "management.empty-states.vehicles.filtered-title") + filteredDescription=(t "management.empty-states.vehicles.filtered-description") + primaryText=(t "management.empty-states.vehicles.primary-text") primaryIcon="plus" primaryAction=this.vehicleActions.transition.create - secondaryText="Import" + secondaryText=(t "common.import") secondaryIcon="upload" secondaryAction=this.vehicleActions.import docsSlug="fleet-ops/resources/vehicles/overview" - docsTitle="Vehicles guide" - docsText="Vehicle guide" + docsTitle=(t "management.empty-states.vehicles.docs-title") + docsText=(t "management.empty-states.vehicles.docs-text") docsSource="fleet-ops-empty-vehicles" }} /> diff --git a/addon/templates/management/vehicles/index/new.hbs b/addon/templates/management/vehicles/index/new.hbs index 1502e373c..9111ced9a 100644 --- a/addon/templates/management/vehicles/index/new.hbs +++ b/addon/templates/management/vehicles/index/new.hbs @@ -2,7 +2,7 @@ @resource={{this.vehicle}} @controller={{this}} @actionButtons={{this.actionButtons}} - @headerTitle="Create a new vehicle" + @headerTitle={{t "common.create-a-new-resource" resource=(lowercase (t "resource.vehicle"))}} @saveTask={{this.save}} @onPressCancel={{transition-to "management.vehicles.index"}} @onOverlayReady={{fn (mut this.overlay)}} diff --git a/addon/templates/management/vendors/index/new.hbs b/addon/templates/management/vendors/index/new.hbs index e449f06c9..4c6b104cf 100644 --- a/addon/templates/management/vendors/index/new.hbs +++ b/addon/templates/management/vendors/index/new.hbs @@ -2,7 +2,7 @@ @resource={{this.vendor}} @controller={{this}} @actionButtons={{this.actionButtons}} - @headerTitle="Create a new vendor" + @headerTitle={{t "common.create-a-new-resource" resource=(lowercase (t "resource.vendor"))}} @saveTask={{this.save}} @onPressCancel={{transition-to "management.vendors.index"}} @onOverlayReady={{fn (mut this.overlay)}} diff --git a/addon/templates/management/vendors/integrated.hbs b/addon/templates/management/vendors/integrated.hbs index 31c395f23..1375abb6f 100644 --- a/addon/templates/management/vendors/integrated.hbs +++ b/addon/templates/management/vendors/integrated.hbs @@ -15,13 +15,13 @@ @emptyStateComponent={{component "table/empty-state" icon="plug" - title="No integrated vendors yet" - description="Integrated vendor records appear here after vendor integrations are connected and synchronized." - filteredTitle="No integrated vendors match your filters" - filteredDescription="Adjust the search or filters to find another integrated vendor." + title=(t "management.empty-states.integrated-vendors.title") + description=(t "management.empty-states.integrated-vendors.description") + filteredTitle=(t "management.empty-states.integrated-vendors.filtered-title") + filteredDescription=(t "management.empty-states.integrated-vendors.filtered-description") docsSlug="fleet-ops/resources/vendors/integrated-vendors" - docsTitle="Integrated vendors guide" - docsText="Integrated vendors guide" + docsTitle=(t "management.empty-states.integrated-vendors.docs-title") + docsText=(t "management.empty-states.integrated-vendors.docs-text") docsSource="fleet-ops-empty-integrated-vendors" }} /> diff --git a/translations/en-us.yaml b/translations/en-us.yaml index 8a51aa3cb..5e169914a 100644 --- a/translations/en-us.yaml +++ b/translations/en-us.yaml @@ -1,6 +1,272 @@ fleet-ops: extension-name: Fleet-Ops +management: + hub: + eyebrow: Resources + title: Resources Hub + subtitle: Manage the people, vehicles, places, partners, and operating records that keep dispatch grounded. + action-queue: Action Queue + action-queue-description: Prioritized from current resource readiness. + guides: Guides + guides-description: Read the guide before changing resource setup. + read-guide: Read the guide on {resource} + sections: + people_assets: + title: People and Assets + description: Keep dispatchable drivers, vehicles, and fleet groupings ready for live work. + network: + title: Operating Network + description: Maintain the partners, contacts, and places used while creating and dispatching orders. + exceptions: + title: Fuel and Exceptions + description: Review fuel activity and operational issues before they affect service quality. + links: + drivers: + label: Drivers + description: Manage driver profiles, assignments, and schedules. + vehicles: + label: Vehicles + description: Track vehicles, device links, equipment, and service context. + fleets: + label: Fleets + description: Group drivers and vehicles by team, region, or service type. + vendors: + label: Vendors + description: Service partners connected to operational work. + contacts: + label: Contacts + description: Customer and contact records for order workflows. + places: + label: Places + description: Reusable locations, zones, and address context. + fuel-reports: + label: Fuel Reports + description: Review reported fuel activity and costs. + fuel-transactions: + label: Fuel Transactions + description: Inspect transaction-level fueling data and matching context. + issues: + label: Issues + description: Track incidents, service issues, and follow-up work. + kpis: + drivers: + label: Drivers + caption-ready: Driver profiles available for dispatch. + caption-empty: Add driver profiles before dispatching work. + action: Manage Drivers + loading: Loading resource readiness. + vehicles: + label: Vehicles + caption-ready: Vehicles ready for assignment and tracking. + caption-empty: Add vehicles so dispatch has assignable assets. + action: Track Vehicles + loading: Loading fleet asset coverage. + issues: + label: Open Issues + caption-ready: Issues need review before they affect service quality. + caption-empty: No open issues are visible right now. + action: Review Issues + loading: Loading exception health. + fuel_records: + label: Fuel Records + caption-ready: Fuel activity is available for review. + caption-empty: Fuel records will appear as reports or transactions arrive. + action: Review Fuel Records + loading: Loading fuel activity. + docs: + drivers: + label: Drivers + title: Drivers guide + description: Create driver profiles, app access, assignment context, and operating status. + vehicles: + label: Vehicles + title: Vehicles guide + description: Track fleet assets, assignment readiness, and vehicle operating details. + fleets: + label: Fleets + title: Fleets guide + description: Group drivers and vehicles by team, region, or service coverage. + contacts: + label: Contacts + title: Contacts guide + description: Manage people and organizations used across orders and operational records. + places: + label: Places + title: Places guide + description: Manage reusable pickup, dropoff, hub, and facility locations. + issues: + label: Issues + title: Issues guide + description: Track incidents, service exceptions, and operational follow-up. + actions: + add_drivers: + label: Add driver profiles + description: Drivers are required before dispatch can assign live orders. + add_vehicles: + label: Add vehicles + description: Vehicles make assignment, tracking, and service context usable. + assign_vehicles_to_drivers: + label: Assign vehicles to drivers + description: '{count, plural, one {# driver does} other {# drivers do}} not have an assigned vehicle.' + assign_drivers_to_vehicles: + label: Assign drivers to vehicles + description: '{count, plural, one {# vehicle does} other {# vehicles do}} not have an assigned driver.' + attach_devices_to_vehicles: + label: Attach devices to vehicles + description: '{count, plural, one {# device is} other {# devices are}} ready to attach to vehicles without telemetry hardware.' + review_resource_issues: + label: Review vehicle and driver issues + description: '{count, plural, one {# issue is} other {# issues are}} linked to drivers or vehicles.' + review_issues: + label: Review open issues + description: '{count, plural, one {# issue needs} other {# issues need}} follow-up.' + prepare_vehicle_maintenance: + label: Prepare upcoming maintenance + description: '{count, plural, one {# vehicle schedule needs} other {# vehicle schedules need}} maintenance planning.' + close_overdue_work_orders: + label: Close overdue work orders + description: '{count, plural, one {# resource work order is} other {# resource work orders are}} past due.' + review_open_work_orders: + label: Review open work orders + description: '{count, plural, one {# resource work order is} other {# resource work orders are}} open for vehicles or equipment.' + replenish_low_stock_parts: + label: Replenish low-stock parts + description: '{count, plural, one {# stocked part is} other {# stocked parts are}} at or below the default threshold.' + review_unmatched_fuel_transactions: + label: Review unmatched fuel transactions + description: '{count, plural, one {# fuel transaction needs} other {# fuel transactions need}} resource matching.' + create_fleets: + label: Create fleet groups + description: Group active drivers and vehicles by team, region, or service type. + add_operating_places: + label: Add operating places + description: Places keep recurring pickup, dropoff, facility, and service locations ready. + add_service_vendors: + label: Add vendors for service work + description: Vendors connect maintenance, service work, and operating partners to resources. + add_contacts: + label: Add operating contacts + description: Contacts connect customers, partners, and service people to order workflows. + review_fuel: + label: Open fuel records + description: Fuel activity will appear here once reports or transactions are captured. + ready: + label: Core resources look ready + description: Drivers, vehicles, issues, and supporting records are in a healthy operating posture. + empty-states: + customers: + title: Add your first customer + description: Customers give orders an owner, contact details, and account context for service history. + filtered-title: No customers match your filters + filtered-description: Adjust the search or filters to find another customer. + primary-text: New customer + contacts: + title: Add your first contact + description: Contacts keep customer, vendor, and internal stakeholder details ready for orders and communication. + filtered-title: No contacts match your filters + filtered-description: Adjust the search or filters to find another contact. + primary-text: New contact + docs-title: Contacts guide + docs-text: Contacts guide + fleets: + title: Create your first fleet + description: Fleets help group vehicles and drivers for dispatching, reporting, and operational coverage. + filtered-title: No fleets match your filters + filtered-description: Adjust the search or filters to find another fleet. + primary-text: New fleet + docs-title: Fleets guide + docs-text: Fleet guide + fuel-reports: + title: No fuel reports yet + description: Create fuel reports to track vehicle fuel usage, cost, and supporting transaction records. + filtered-title: No fuel reports match your filters + filtered-description: Adjust the search or filters to find another fuel report. + primary-text: New fuel report + docs-title: Fuel reports guide + docs-text: Fuel reports guide + fuel-transactions: + ledger-title: Fuel transaction ledger + ledger-description: Imported fuel card bills and provider purchase records are reviewed here before, during, and after they match to vehicles, trips, and linked Fuel Reports. + title: No fuel transactions + description: Imported fuel card bills and provider purchase records appear here after provider syncs complete. + filtered-title: No transactions match your filters + filtered-description: Adjust the search or filters to review other imported transactions. + docs-title: Fuel reports guide + docs-text: Fuel reports guide + no-unmatched-title: No unmatched fuel transactions + no-unmatched-description: Fleet-Ops did not find imported provider bills that still need vehicle or trip matching. + no-integration-title: No transactions imported for this integration + no-integration-description: Run a sync from the fuel integration detail page to import provider bills into this ledger. + no-imported-title: No fuel transactions imported yet + no-imported-description: Connect PetroApp or another fuel integration, then run a transaction sync. Imported provider bills appear here before linked Fuel Reports are created. + open-integrations: Open Fuel Integrations + refresh: Refresh + reprocess-selected: 'Reprocess {count} selected' + actions-menu: Fuel Transaction Actions + review-details: Review Details + open-fuel-report: Open Fuel Report + match-vehicle: Match to Vehicle + match-order: Match to Order + reprocess-rematch: Reprocess / Rematch + ignore-transaction: Ignore Transaction + mark-reviewed: Mark Reviewed + unlinked-info: This transaction does not have a linked Fuel Report yet. + reprocessed: Fuel transaction reprocessed. + ignored: Fuel transaction ignored. + marked-reviewed: Fuel transaction marked reviewed. + columns: + transaction: Transaction + provider: Provider + status: Status + vehicle: Vehicle + card-internal: Card / Internal + trip: Trip + station: Station + liters: Liters + amount: Amount + fuel-report: Fuel Report + date: Date + issues: + title: No issues reported + description: Track vehicle, driver, facility, and service issues here so follow-up work stays visible. + filtered-title: No issues match your filters + filtered-description: Clear the search or filters to review other reported issues. + primary-text: New issue + docs-title: Issues guide + docs-text: Issues guide + places: + title: Add your first place + description: Places keep frequent pickup, dropoff, facility, and service locations ready for orders and routing. + filtered-title: No places match your filters + filtered-description: Adjust the search or filters to find another saved location. + primary-text: New place + docs-title: Places guide + docs-text: Places guide + vehicles: + title: Add your first vehicle + description: Vehicles connect assignments, live tracking, fleet capacity, maintenance, and compliance history. + filtered-title: No vehicles match your filters + filtered-description: Adjust the search or filters to find another vehicle. + primary-text: New vehicle + docs-title: Vehicles guide + docs-text: Vehicle guide + vendors: + title: Add your first vendor + description: Vendors let your team manage external carriers, service providers, and operational partners. + filtered-title: No vendors match your filters + filtered-description: Adjust the search or filters to find another vendor. + primary-text: New vendor + docs-title: Vendors guide + docs-text: Vendor guide + integrated-vendors: + title: No integrated vendors yet + description: Integrated vendor records appear here after vendor integrations are connected and synchronized. + filtered-title: No integrated vendors match your filters + filtered-description: Adjust the search or filters to find another integrated vendor. + docs-title: Integrated vendors guide + docs-text: Integrated vendors guide + common: last-modified: Last modified "yes": "Yes" @@ -813,6 +1079,15 @@ driver: driver-license: Drivers License license-expiry: License Expiry no-vehicle-assigned: No Vehicle Assigned + empty-state: + title: Add your first driver + description: Drivers power dispatching, live fleet visibility, assignments, and delivery activity. + filtered-title: No drivers match your search + filtered-description: Adjust the search or filters to find another driver. + primary-text: New driver + secondary-text: Import + docs-title: Drivers guide + docs-text: Driver guide actions: unassign-orders: Unassign Orders unassign-vehicle: Unassign Vehicle @@ -1532,6 +1807,130 @@ vehicle: vehicle-year: Vehicle year vin-number: VIN Number year: Year + form: + vehicle-identification: Vehicle Identification + trim: Trim + color: Color + vehicle-color: Vehicle Color + serial-number: Serial Number + fuel-card-number: Fuel Card Number + class: Class + assignment-status: Assignment & Status + call-sign: Call Sign + location: Location + measurement-units: Measurement & Units + system-of-measurement: System of Measurement + select-system-of-measurement: Select System of Measurement + fuel-volume-unit: Fuel Volume Unit + select-fuel-volume-unit: Select Fuel Volume Unit + odometer-usage: Odometer & Usage + current-odometer: 'Current Odometer ({unit})' + current-odometer-reading: Current Odometer Reading + odometer-unit: Odometer Unit + select-unit: Select unit + odometer-at-purchase: Odometer at Purchase + odometer-reading-at-purchase: Odometer reading at purchase + body-usage: Body & Usage + body-type: Body Type + select-body-type: Select body type + body-subtype: Body Subtype + select-body-subtype: Select body sub-type + usage-type: Usage Type + select-usage-type: Select usage type + ownership-type: Ownership Type + select-ownership-type: Select ownership type + fuel-type: Fuel Type + select-fuel-type: Select fuel type + transmission: Transmission + select-transmission: Select transmission + technical-specifications: Technical Specifications + powertrain-engine: Powertrain & Engine + engine-number: Engine Number + engine-make: Engine Make + engine-manufacturer: Engine Manufacturer + engine-model: Engine Model + engine-family: Engine Family + engine-configuration: Engine Configuration + engine-configuration-example: 'e.g., Inline-4, V6' + cylinder-arrangement: Cylinder Arrangement + cylinder-arrangement-example: 'e.g., I, V, H' + number-of-cylinders: Number of Cylinders + number-of-cylinders-example: 'e.g., 4, 6' + engine-size: Engine Size + engine-displacement: Engine Displacement + horsepower: Horsepower + horsepower-rpm: Horsepower RPM + rpm-at-max-horsepower: RPM at Max Horsepower + torque: Torque + torque-rpm: Torque RPM + rpm-at-max-torque: RPM at Max Torque + capacity-dimensions: Capacity & Dimensions + fuel-capacity: Fuel Capacity + fuel-tank-capacity: Fuel Tank Capacity + payload-capacity: Payload Capacity + maximum-payload: Maximum Payload + towing-capacity: Towing Capacity + seating-capacity: Seating Capacity + number-of-seats: Number of Seats + vehicle-weight: Vehicle Weight + length: Length + width: Width + height: Height + cargo-volume: Cargo Volume + payload-volume: Payload Volume (m³) + payload-volume-help: The maximum cargo volume this vehicle can carry, in cubic metres. + pallet-capacity: Pallet Capacity + pallet-capacity-help: The maximum number of standard pallets this vehicle can carry. + parcel-capacity: Parcel Capacity + parcel-capacity-help: The maximum number of parcels or packages this vehicle can carry. + passenger-volume: Passenger Volume + interior-volume: Interior Volume + ground-clearance: Ground Clearance + bed-length: Bed Length + example-40: 'e.g. 40' + example-20: 'e.g. 20' + example-200: 'e.g. 200' + regulatory-compliance: Regulatory & Compliance + emission-standard: Emission Standard + emission-standard-example: 'e.g., Euro 6, EPA Tier 3' + gvwr: GVWR (Gross Vehicle Weight Rating) + gvwr-short: GVWR + gcwr: GCWR (Gross Combined Weight Rating) + gcwr-short: GCWR + dpf-equipped: DPF Equipped + scr-equipped: SCR Equipped + financial-lifecycle: Financial & Lifecycle + asset-values: Asset Values + currency: Currency + acquisition-cost: Acquisition Cost + current-value: Current Value + insurance-value: Insurance Value + depreciation-rate: Depreciation Rate (%) + lifecycle-service-life: Lifecycle & Service Life + estimated-service-life-distance: Estimated Service Life (Distance) + total-distance: Total distance + service-life-distance-unit: Service Life Distance Unit + estimated-service-life-months: Estimated Service Life (Months) + purchase-date: Purchase Date + lease-expiry-date: Lease Expiry Date + date-placeholder: DD-MM-YYYY + financing-loan: Financing (Loan) + loan-amount: Loan Amount + number-of-payments: Number of Payments + first-payment-date: First Payment Date + orchestrator-constraints: Orchestrator Constraints + skills-capabilities: Skills & Capabilities + vehicle-skills: Vehicle Skills + vehicle-skills-help: Skills this vehicle can fulfil (e.g. refrigerated, hazmat). Used by the Orchestrator for order matching. + select-skills: Select skills… + availability-window: Availability Window + available-from: Available From + available-from-help: Earliest time this vehicle is available for dispatch (HH:MM). + available-until: Available Until + available-until-help: Latest time this vehicle should complete its last stop (HH:MM). + task-limits: Task Limits + max-tasks: Max Tasks + max-tasks-help: Maximum number of stops/orders this vehicle can be assigned per Orchestrator run. Leave blank for no limit. actions: attach-trailer: Attach trailer attach-equipment: Attach equipment diff --git a/translations/es-pa.yaml b/translations/es-pa.yaml index af2c83abb..4e29d33d6 100644 --- a/translations/es-pa.yaml +++ b/translations/es-pa.yaml @@ -1,6 +1,272 @@ fleet-ops: extension-name: Fleet-Ops +management: + hub: + eyebrow: Recursos + title: Centro de recursos + subtitle: Administra las personas, vehículos, ubicaciones, socios y registros operativos necesarios para organizar los despachos. + action-queue: Acciones pendientes + action-queue-description: Prioridad basada en la disponibilidad actual de los recursos. + guides: Guías + guides-description: Consulta la guía antes de cambiar la configuración de los recursos. + read-guide: Consultar la guía de {resource} + sections: + people_assets: + title: Personal y activos + description: Mantén listos para las operaciones a los conductores, vehículos y grupos de flota disponibles para despacho. + network: + title: Red operativa + description: Mantén al día los socios, contactos y lugares usados al crear y despachar pedidos. + exceptions: + title: Combustible e incidencias + description: Revisa la actividad de combustible y las incidencias operativas antes de que afecten la calidad del servicio. + links: + drivers: + label: Conductores + description: Administra perfiles, asignaciones y horarios de conductores. + vehicles: + label: Vehículos + description: Consulta vehículos, dispositivos vinculados, equipos y datos de servicio. + fleets: + label: Flotas + description: Agrupa conductores y vehículos por equipo, región o tipo de servicio. + vendors: + label: Proveedores + description: Socios de servicio vinculados con las operaciones. + contacts: + label: Contactos + description: Registros de clientes y contactos para los flujos de pedidos. + places: + label: Lugares + description: Ubicaciones, zonas y direcciones reutilizables. + fuel-reports: + label: Informes de combustible + description: Revisa los informes de actividad y costos de combustible. + fuel-transactions: + label: Transacciones de combustible + description: Consulta los detalles de las transacciones de combustible y sus datos de conciliación. + issues: + label: Incidencias + description: Da seguimiento a incidentes, problemas de servicio y tareas pendientes. + kpis: + drivers: + label: Conductores + caption-ready: Hay perfiles de conductores disponibles para los despachos. + caption-empty: Agrega perfiles de conductores antes de despachar trabajo. + action: Administrar conductores + loading: Cargando disponibilidad de recursos. + vehicles: + label: Vehículos + caption-ready: Hay vehículos listos para asignación y seguimiento. + caption-empty: Agrega vehículos para que puedan asignarse en los despachos. + action: Consultar vehículos + loading: Cargando cobertura de la flota. + issues: + label: Incidencias abiertas + caption-ready: Revisa las incidencias antes de que afecten la calidad del servicio. + caption-empty: No hay incidencias abiertas por el momento. + action: Revisar incidencias + loading: Cargando estado de las incidencias. + fuel_records: + label: Registros de combustible + caption-ready: Hay actividad de combustible disponible para revisar. + caption-empty: Los registros aparecerán cuando se agreguen informes o transacciones. + action: Revisar registros de combustible + loading: Cargando actividad de combustible. + docs: + drivers: + label: conductores + title: Guía de conductores + description: Crea perfiles, accesos a la aplicación y datos operativos y de asignación de conductores. + vehicles: + label: vehículos + title: Guía de vehículos + description: Consulta los activos de la flota, su disponibilidad para asignación y sus datos operativos. + fleets: + label: flotas + title: Guía de flotas + description: Agrupa conductores y vehículos por equipo, región o cobertura de servicio. + contacts: + label: contactos + title: Guía de contactos + description: Administra las personas y organizaciones relacionadas con pedidos y registros operativos. + places: + label: lugares + title: Guía de lugares + description: Administra ubicaciones reutilizables de recogida, entrega, centros y establecimientos. + issues: + label: incidencias + title: Guía de incidencias + description: Da seguimiento a incidentes, problemas de servicio y tareas pendientes. + actions: + add_drivers: + label: Agregar perfiles de conductores + description: Se necesitan perfiles de conductores para asignar pedidos activos. + add_vehicles: + label: Agregar vehículos + description: Los vehículos permiten realizar asignaciones, seguimiento y consultas de servicio. + assign_vehicles_to_drivers: + label: Asignar vehículos a conductores + description: '{count, plural, one {# conductor no tiene} other {# conductores no tienen}} un vehículo asignado.' + assign_drivers_to_vehicles: + label: Asignar conductores a vehículos + description: '{count, plural, one {# vehículo no tiene} other {# vehículos no tienen}} un conductor asignado.' + attach_devices_to_vehicles: + label: Vincular dispositivos a vehículos + description: '{count, plural, one {# dispositivo está listo} other {# dispositivos están listos}} para vincularse a vehículos sin equipo telemático.' + review_resource_issues: + label: Revisar incidencias de vehículos y conductores + description: '{count, plural, one {# incidencia está} other {# incidencias están}} vinculada(s) a conductores o vehículos.' + review_issues: + label: Revisar incidencias abiertas + description: '{count, plural, one {# incidencia requiere} other {# incidencias requieren}} seguimiento.' + prepare_vehicle_maintenance: + label: Preparar el próximo mantenimiento + description: '{count, plural, one {# programa de mantenimiento vehicular requiere} other {# programas de mantenimiento vehicular requieren}} planificación.' + close_overdue_work_orders: + label: Cerrar órdenes de trabajo vencidas + description: '{count, plural, one {# orden de trabajo de recursos está} other {# órdenes de trabajo de recursos están}} vencida(s).' + review_open_work_orders: + label: Revisar órdenes de trabajo abiertas + description: '{count, plural, one {# orden de trabajo de recursos está} other {# órdenes de trabajo de recursos están}} abiertas para vehículos o equipos.' + replenish_low_stock_parts: + label: Reabastecer piezas con poco inventario + description: '{count, plural, one {# pieza en inventario está} other {# piezas en inventario están}} en el límite mínimo predeterminado o por debajo.' + review_unmatched_fuel_transactions: + label: Revisar transacciones de combustible sin conciliar + description: '{count, plural, one {# transacción de combustible requiere} other {# transacciones de combustible requieren}} vincularse a un recurso.' + create_fleets: + label: Crear grupos de flota + description: Agrupa conductores y vehículos activos por equipo, región o tipo de servicio. + add_operating_places: + label: Agregar lugares de operación + description: Guarda ubicaciones frecuentes de recogida, entrega, establecimientos y servicio. + add_service_vendors: + label: Agregar proveedores de servicio + description: Vincula proveedores de mantenimiento, servicios y operaciones con los recursos. + add_contacts: + label: Agregar contactos de operación + description: Vincula clientes, socios y personal de servicio con los flujos de pedidos. + review_fuel: + label: Consultar registros de combustible + description: La actividad de combustible aparecerá cuando se registren informes o transacciones. + ready: + label: Los recursos principales están listos + description: Conductores, vehículos, incidencias y registros complementarios están en buen estado operativo. + empty-states: + customers: + title: Agrega tu primer cliente + description: Los clientes vinculan los pedidos con sus contactos y con el historial del servicio. + filtered-title: Ningún cliente coincide con los filtros + filtered-description: Ajusta la búsqueda o los filtros para encontrar otro cliente. + primary-text: Nuevo cliente + contacts: + title: Agrega tu primer contacto + description: Guarda los datos de clientes, proveedores y otras personas relacionadas con los pedidos y las comunicaciones. + filtered-title: Ningún contacto coincide con los filtros + filtered-description: Ajusta la búsqueda o los filtros para encontrar otro contacto. + primary-text: Nuevo contacto + docs-title: Guía de contactos + docs-text: Guía de contactos + fleets: + title: Crea tu primera flota + description: Agrupa vehículos y conductores para los despachos, informes y cobertura operativa. + filtered-title: Ninguna flota coincide con los filtros + filtered-description: Ajusta la búsqueda o los filtros para encontrar otra flota. + primary-text: Nueva flota + docs-title: Guía de flotas + docs-text: Guía de flotas + fuel-reports: + title: Aún no hay informes de combustible + description: Crea informes para registrar el consumo, los costos de combustible y las transacciones relacionadas con los vehículos. + filtered-title: Ningún informe de combustible coincide con los filtros + filtered-description: Ajusta la búsqueda o los filtros para encontrar otro informe de combustible. + primary-text: Nuevo informe de combustible + docs-title: Guía de informes de combustible + docs-text: Guía de informes de combustible + fuel-transactions: + ledger-title: Registro de transacciones de combustible + ledger-description: Aquí se revisan las facturas de tarjetas de combustible y las compras de proveedores, antes y después de conciliarlas con vehículos, viajes e informes de combustible relacionados. + title: No hay transacciones de combustible + description: Las facturas importadas de tarjetas de combustible y las compras de proveedores aparecerán aquí cuando se complete la sincronización. + filtered-title: Ninguna transacción coincide con los filtros + filtered-description: Ajusta la búsqueda o los filtros para revisar otras transacciones importadas. + docs-title: Guía de informes de combustible + docs-text: Guía de informes de combustible + no-unmatched-title: No hay transacciones de combustible sin conciliar + no-unmatched-description: Fleet-Ops no encontró facturas importadas de proveedores pendientes de conciliar con vehículos o viajes. + no-integration-title: No se importaron transacciones de esta integración + no-integration-description: Sincroniza desde el detalle de la integración de combustible para importar facturas de proveedores a este registro. + no-imported-title: Aún no se han importado transacciones de combustible + no-imported-description: Conecta PetroApp u otra integración de combustible y ejecuta una sincronización. Las facturas importadas aparecerán aquí antes de crear los informes de combustible relacionados. + open-integrations: Abrir integraciones de combustible + refresh: Actualizar + reprocess-selected: 'Volver a procesar {count} seleccionadas' + actions-menu: Acciones de transacción de combustible + review-details: Revisar detalles + open-fuel-report: Abrir informe de combustible + match-vehicle: Vincular con un vehículo + match-order: Vincular con un pedido + reprocess-rematch: Volver a procesar y conciliar + ignore-transaction: Ignorar transacción + mark-reviewed: Marcar como revisada + unlinked-info: Esta transacción aún no tiene un informe de combustible vinculado. + reprocessed: Transacción de combustible reprocesada. + ignored: Transacción de combustible ignorada. + marked-reviewed: Transacción de combustible marcada como revisada. + columns: + transaction: Transacción + provider: Proveedor + status: Estado + vehicle: Vehículo + card-internal: Tarjeta / interno + trip: Viaje + station: Estación + liters: Litros + amount: Monto + fuel-report: Informe de combustible + date: Fecha + issues: + title: No se han reportado incidencias + description: Registra aquí las incidencias relacionadas con vehículos, conductores, instalaciones y servicios para facilitar su seguimiento. + filtered-title: Ninguna incidencia coincide con los filtros + filtered-description: Limpia la búsqueda o los filtros para revisar otras incidencias reportadas. + primary-text: Nueva incidencia + docs-title: Guía de incidencias + docs-text: Guía de incidencias + places: + title: Agrega tu primer lugar + description: Guarda ubicaciones frecuentes de recogida, entrega, instalaciones y servicio para usarlas en pedidos y rutas. + filtered-title: Ningún lugar coincide con los filtros + filtered-description: Ajusta la búsqueda o los filtros para encontrar otra ubicación guardada. + primary-text: Nuevo lugar + docs-title: Guía de lugares + docs-text: Guía de lugares + vehicles: + title: Agrega tu primer vehículo + description: Los vehículos permiten administrar asignaciones, seguimiento en vivo, capacidad de flota, mantenimiento y cumplimiento. + filtered-title: Ningún vehículo coincide con los filtros + filtered-description: Ajusta la búsqueda o los filtros para encontrar otro vehículo. + primary-text: Nuevo vehículo + docs-title: Guía de vehículos + docs-text: Guía del vehículo + vendors: + title: Agrega tu primer proveedor + description: Administra transportistas externos, proveedores de servicios y socios operativos. + filtered-title: Ningún proveedor coincide con los filtros + filtered-description: Ajusta la búsqueda o los filtros para encontrar otro proveedor. + primary-text: Nuevo proveedor + docs-title: Guía de proveedores + docs-text: Guía del proveedor + integrated-vendors: + title: Aún no hay proveedores integrados + description: Los registros aparecerán aquí cuando se conecten y sincronicen las integraciones de proveedores. + filtered-title: Ningún proveedor integrado coincide con los filtros + filtered-description: Ajusta la búsqueda o los filtros para encontrar otro proveedor integrado. + docs-title: Guía de proveedores integrados + docs-text: Guía de proveedores integrados + common: last-modified: Última modificación change-layout: Cambiar disposición @@ -12,6 +278,7 @@ common: dispatch-orders: Órdenes de envío dispatch-order: Orden de envío assign-driver: Asignar conductor + unassign-driver: Desasignar conductor assign-drivers: Asignar conductores no-driver-assigned: Ningún conductor asignado no-vehicle-assigned: Sin vehículo asignado @@ -46,6 +313,23 @@ common: edit-address: Editar dirección new-address: Nueva dirección select-address: Seleccionar dirección + save: Guardar + save-changes: Guardar cambios + done: Listo + delete: Eliminar + overview: Resumen + notes: Notas + schedule: Programar + optional: Opcional + unauthorized-access: No tiene autorización para acceder a este recurso. + online: En línea + refresh: Actualizar + loading-route: Cargando ruta... + hover-to-load-route: Cargando vista previa de la ruta... + unable-to-load-route: No se pudo cargar la vista previa de la ruta. + calendar-view: Vista de calendario + change-layout: Cambiar diseño + positions: Posiciones current-job: Current Job "yes": Sí @@ -91,6 +375,13 @@ menu: custom-fields: Campos personalizados order-board: Tablero de pedidos avatars: Avatares + schedules: Horarios + maintenance-history: Historial de mantenimiento + map: Mapa + scheduling: Programación + maintenances: Mantenimientos + orchestrator: Orquestador + orchestrator-settings: Configuración del orquestador resource: asset: Activo @@ -141,6 +432,8 @@ resource: issues: Asuntos maintenance: Mantenimiento maintenances: Mantenimientos + maintenance-schedule: Programa de mantenimiento + maintenance-schedules: Programas de mantenimiento order-config: Configuración de pedido order-configs: Configuraciones de pedidos order: Orden @@ -211,6 +504,7 @@ column: updated-at: Actualizado en vehicle: Vehículo vendor: Proveedor + route-type: Tipo de ruta created: Creado email: Correo electrónico title: Título @@ -236,7 +530,7 @@ column: neighborhood: Vecindario postal-code: Código Postal state: Estado - make: Hacer + make: Marca model: Modelo plate-number: Número de placa year: Año @@ -244,11 +538,11 @@ column: created-by: Creado por customer: Cliente driver-assigned: Conductor asignado - dropoff: Dejar + dropoff: Entrega facilitator: Facilitador items: Elementos payload: Carga útil - pickup: Levantar + pickup: Recogida scheduled-at: Programado en tracking: Seguimiento transaction: Transacción @@ -260,6 +554,21 @@ column: current-job: Trabajo actual last-seen: Visto por última vez place: Lugar + subject: Asunto + summary: Resumen + total-cost: Costo total + due-at: Fecha de vencimiento + serial-number: Número de serie + manufacturer: Fabricante + part-number: Número de parte + quantity-on-hand: Cantidad disponible + quantity: Cantidad + unit-cost: Costo unitario + code: Código + interval: Intervalo + next-due: Próximo vencimiento + asset: Activo + performed-by: Realizado por map: visibility-controls: @@ -376,6 +685,8 @@ customer: select-address: Seleccionar dirección new-address: Nueva dirección select-user: Seleccionar usuario + send-welcome-email: Enviar correo de bienvenida al portal del cliente + send-welcome-email-help-text: Genera una contraseña temporal y envía a este cliente un enlace para iniciar sesión en el portal de clientes. upload-new-photo: Subir nueva foto user-account: Cuenta de usuario user-account-help-text: Cada perfil de cliente debe estar conectado a una cuenta de usuario específica. Esta asociación es esencial para manejar el proceso de autenticación, garantizando que cada cliente pueda acceder y administrar de forma segura su perfil y otros servicios. @@ -409,33 +720,43 @@ driver: vendor: Proveedor select-vendor: Seleccionar proveedor driver-license: Licencia de conducir + license-expiry: Vencimiento de la licencia no-vehicle-assigned: Ningún vehículo asignado + empty-state: + title: Agrega tu primer conductor + description: Los conductores facilitan los despachos, la visibilidad de la flota en tiempo real, las asignaciones y el seguimiento de entregas. + filtered-title: Ningún conductor coincide con tu búsqueda + filtered-description: Ajusta la búsqueda o los filtros para encontrar otro conductor. + primary-text: Nuevo conductor + secondary-text: Importar + docs-title: Guía de conductores + docs-text: Guía del conductor actions: - unassign-orders: Unassign Orders - unassign-vehicle: Unassign Vehicle - create-issue: Create Issue + unassign-orders: Desasignar pedidos + unassign-vehicle: Desasignar vehículo + create-issue: Crear incidencia assign-order: Asignar orden al conductor assign-vehicle: Asignar vehículo al conductor locate-driver: Localizar al conductor en el mapa prompts: - assign-order-success: Order assigned to {driverName}. - assign-order-title: "Assign order to {driverName}" - select-order-warning: "Select an order to assign." - assign-vehicle-title: "Assign vehicle to {driverName}" - assign-vehicle-success: "Vehicle assigned to {driverName}." - select-vehicle-warning: Select a vehicle to assign. - no-assigned-orders-warning: No assigned orders found for {driverName}. - select-orders-warning: Select at least one order to unassign. - unassign-orders-title: Unassign orders from {driverName} - confirm-unassign-orders-title: Unassign {count} order(s) from {driverName}? - confirm-unassign-orders-body: "This will remove {driverName} from these orders: {orders}." - unassign-orders-success: Unassigned {driverName} from {count} order(s). - no-vehicle-assigned-warning: No vehicle is assigned to {driverName}. - unassign-vehicle-title: Unassign {vehicleName} from {driverName}? - unassign-vehicle-body: This removes {driverName} from {vehicleName}. Order assignments are not changed. - unassign-vehicle-success: Unassigned {vehicleName} from {driverName}. - issue-title: Issue reported for {driverName} + assign-order-success: Pedido asignado a {driverName}. + assign-order-title: "Asignar pedido a {driverName}" + select-order-warning: "Seleccione un pedido para asignar." + assign-vehicle-title: "Asignar vehículo a {driverName}" + assign-vehicle-success: "Vehículo asignado a {driverName}." + select-vehicle-warning: Seleccione un vehículo para asignar. + no-assigned-orders-warning: No se encontraron pedidos asignados a {driverName}. + select-orders-warning: Seleccione al menos un pedido para desasignar. + unassign-orders-title: Desasignar pedidos de {driverName} + confirm-unassign-orders-title: ¿Desasignar {count} pedido(s) de {driverName}? + confirm-unassign-orders-body: "Esto quitará a {driverName} de estos pedidos: {orders}." + unassign-orders-success: Se desasignó a {driverName} de {count} pedido(s). + no-vehicle-assigned-warning: "{driverName} no tiene ningún vehículo asignado." + unassign-vehicle-title: ¿Desasignar {vehicleName} de {driverName}? + unassign-vehicle-body: Esto quitará a {driverName} de {vehicleName}. Las asignaciones de pedidos no cambiarán. + unassign-vehicle-success: Se desasignó {vehicleName} de {driverName}. + issue-title: Incidencia reportada para {driverName} device: attachment: title: Activo conectado @@ -565,16 +886,16 @@ fleet: add-vehicle: Agregar vehículo a la flota loading-message: Cargando vehículo de flota... actions: - assign-vehicle: Assign Vehicle to Fleet + assign-vehicle: Asignar vehículo a la flota assign-driver: Asignar conductor a la flota prompts: - assign-driver-title: Assign driver to {fleetName} - assign-vehicle-title: Assign vehicle to {fleetName} - select-driver-warning: Select a driver to assign. - select-vehicle-warning: Select a vehicle to assign. - assign-driver-success: Driver assigned to {fleetName}. - assign-vehicle-success: Vehicle assigned to {fleetName}. + assign-driver-title: Asignar conductor a {fleetName} + assign-vehicle-title: Asignar vehículo a {fleetName} + select-driver-warning: Seleccione un conductor para asignar. + select-vehicle-warning: Seleccione un vehículo para asignar. + assign-driver-success: Conductor asignado a {fleetName}. + assign-vehicle-success: Vehículo asignado a {fleetName}. fuel-report: fields: details: Detalles del informe de combustible @@ -608,19 +929,19 @@ order: placeholders: filter-internal-id: Escriba o escanee IDs internos card: - linked-order: Linked Order - unknown-order: Unknown order - no-type: No type - pickup: Pickup - dropoff: Dropoff - return: Return - waypoints: Waypoints - additional-stop: additional stop - additional-stops: additional stops - no-pickup-address: No pickup address - no-dropoff-address: No dropoff address - no-route-details: No route details available. - no-order-linked: No order is linked to this issue. + linked-order: Pedido vinculado + unknown-order: Pedido desconocido + no-type: Sin tipo + pickup: Recogida + dropoff: Entrega + return: Devolución + waypoints: Puntos de ruta + additional-stop: parada adicional + additional-stops: paradas adicionales + no-pickup-address: No hay dirección de recogida + no-dropoff-address: No hay dirección de entrega + no-route-details: No hay detalles de la ruta disponibles. + no-order-linked: No hay ningún pedido vinculado a esta incidencia. fields: ad-hoc: ad hoc ad-hoc-help-text: Alternar Ad-Hoc permitirá que el pedido haga ping de manera inteligente a los conductores dentro del área de recogida del pedido sobre el pedido, lo que permitirá que el primer conductor disponible acepte el pedido. Esta es una alternativa a la asignación manual del conductor para pedidos en tiempo real. @@ -628,7 +949,7 @@ order: add-item-button: Agregar artículo add-item-order: Agregar artículo al pedido add-waypoint: Agregar punto de ruta - add-waypoint-help-text: "Utilice el botón `Add Waypoint` para agregar más paradas para este pedido. El motor de rutas de Fleetbase optimizará automáticamente la ruta a medida que se agregue o elimine cada parada." + add-waypoint-help-text: "Utilice el botón `Agregar punto de ruta` para agregar más paradas a este pedido. El motor de rutas de Fleetbase optimizará automáticamente la ruta cada vez que agregue o elimine una parada." adhoc-ping: Distancia de ping ad hoc adhoc-ping-help-text: Esta configuración determina la distancia ad hoc para hacer ping para esta orden; si no se configura, volverá a la configuración predeterminada. adhoc-ping-message: La distancia debe estar en metros. @@ -646,7 +967,7 @@ order: dispatch: Despacho dispatch-help-text: Al alternar el envío se enviará este pedido inmediatamente después de su creación. documents-panel-title: "Documentos y archivos" - dropoff: Dejar + dropoff: Entrega edit-address: Editar dirección edit-item: Editar artículo facilitator: Facilitador @@ -658,6 +979,7 @@ order: invalid-coordinates: "¡Coordenadas no válidas!" items-drop: Los artículos caen en loading-message: Cargando cotizaciones de servicios... + updating-service-quotes-message: Actualizando cotizaciones de servicios... notes-placeholder: Introduzca aquí las notas del pedido.... notes-title: Notas optimize-route: Optimizar ruta @@ -666,7 +988,7 @@ order: order-type-help-text: Seleccionar el tipo de orden le indicará a Fleetbase qué configuraciones de orden usar. order-type-placeholder: Seleccionar tipo de pedido payload-entities: Carga útil / Entidades - pickup: Levantar + pickup: Recogida proof-delivery: Prueba de entrega proof-delivery-help-text: Seleccione el tipo de comprobante de entrega a solicitar. Puede ser un escaneo de código QR o un método de firma. proof-delivery-placeholder: Seleccione el método de prueba de entrega @@ -699,6 +1021,7 @@ order: driver: Conductor driver-assigned: Conductor asignado no-driver-assigned: Ningún conductor asignado + date-created: Fecha de creación get-label: Obtener etiqueta order-notes-updated: Notas de pedido actualizadas. payload: Carga útil @@ -774,6 +1097,7 @@ order: assign-text: Está a punto de asignar un nuevo conductor ({driverName}) al pedido {orderId}. Haga clic en continuar para confirmar el conductor. assign-button: Continuar y asignar conductor date: Fecha prevista + date-created: Fecha de creación driver-assigned: Conductor vehicle-assigned: Vehículo no-driver: Sin conductor @@ -903,7 +1227,7 @@ service-rate: calculation-method-help-text: Método utilizado para calcular la tarifa COD. calculation-method-label: Método de cálculo de la tarifa COD calculation-method-placeholder: Seleccione el método de cálculo de la tarifa COD - cash-delivery-label: "¿Habilitar tarifa adicional para pedidos `cash on delivery`?" + cash-delivery-label: "¿Habilitar una tarifa adicional para pedidos con pago contra entrega?" cash-delivery-title: Contra reembolso custom-algorithm-info-message: "Esta opción es para definir un cálculo personalizado para la tarifa de este servicio con variables." custom-algorithm-info-second-message: Tenga en cuenta que las variables deben estar encerradas entre una sola llave. @@ -951,7 +1275,7 @@ service-rate: peak-hours-fee-help-text: Método utilizado para calcular la tarifa de horas punta. peak-hours-fee-label: Método de cálculo de la tarifa de horas pico peak-hours-fee-placeholder: Seleccione el método de cálculo de la tarifa de horas pico - peak-hours-label: "¿Habilitar cargo adicional por pedido realizado durante el servicio definido `peak hours`?" + peak-hours-label: "¿Habilitar una tarifa adicional para pedidos realizados durante las horas pico definidas?" peak-hours-percentage-help-text: Define una tarifa basada en porcentaje del subtotal de la tarifa de servicio que se agregará durante las horas pico. peak-hours-percentage-label: Porcentaje de tarifa en horas pico peak-hours-start-help-text: Define la hora a la que comienza la tarifa de hora pico. @@ -976,7 +1300,7 @@ service-rate: select-unit-placeholder: Seleccionar unidad select-order-type: Seleccionar tipo de pedido service-area-help-text: Restrinja este servicio a solicitudes de pedido que se originen en un área de servicio. - service-area-label: Vía de Servício + service-area-label: Área de servicio service-area-placeholder: Restringir al área de servicio service-name: Nombre del servicio service-name-help-text: Nombre para mostrar de este servicio. @@ -992,7 +1316,7 @@ service-rate: zone-help-text: Restrinja este servicio a solicitudes de pedidos que se originen en una zona específica. zone-label: Zona zone-placeholder: Restringir a zona - cod-fee-label: Etiqueta de tarifa de bacalao + cod-fee-label: Etiqueta de la tarifa COD vehicle: placeholders: @@ -1010,7 +1334,7 @@ vehicle: updated-at: Última actualización avatar: Avatar driver-assigned: Conductor asignado - make: Hacer + make: Marca model: Modelo plate-number: Número de placa select-driver: Seleccionar conductor @@ -1020,10 +1344,134 @@ vehicle: vehicle-year: Año del vehículo vin-number: Número de bastidor year: Año + form: + vehicle-identification: Identificación del vehículo + trim: Versión + color: Color + vehicle-color: Color del vehículo + serial-number: Número de serie + fuel-card-number: Número de tarjeta de combustible + class: Clase + assignment-status: Asignación y estado + call-sign: Distintivo + location: Ubicación + measurement-units: Medidas y unidades + system-of-measurement: Sistema de unidades + select-system-of-measurement: Seleccione el sistema de unidades + fuel-volume-unit: Unidad de volumen de combustible + select-fuel-volume-unit: Seleccione la unidad de volumen de combustible + odometer-usage: Odómetro y uso + current-odometer: 'Odómetro actual ({unit})' + current-odometer-reading: Lectura actual del odómetro + odometer-unit: Unidad del odómetro + select-unit: Seleccione una unidad + odometer-at-purchase: Lectura del odómetro al momento de la compra + odometer-reading-at-purchase: Lectura del odómetro al momento de la compra + body-usage: Carrocería y uso + body-type: Tipo de carrocería + select-body-type: Seleccione el tipo de carrocería + body-subtype: Subtipo de carrocería + select-body-subtype: Seleccione el subtipo de carrocería + usage-type: Tipo de uso + select-usage-type: Seleccione el tipo de uso + ownership-type: Tipo de propiedad + select-ownership-type: Seleccione el tipo de propiedad + fuel-type: Tipo de combustible + select-fuel-type: Seleccione el tipo de combustible + transmission: Transmisión + select-transmission: Seleccione el tipo de transmisión + technical-specifications: Especificaciones técnicas + powertrain-engine: Tren motriz y motor + engine-number: Número de motor + engine-make: Marca del motor + engine-manufacturer: Fabricante del motor + engine-model: Modelo del motor + engine-family: Familia del motor + engine-configuration: Configuración del motor + engine-configuration-example: 'p. ej., en línea de 4 cilindros, V6' + cylinder-arrangement: Disposición de los cilindros + cylinder-arrangement-example: 'p. ej., en línea, V, H' + number-of-cylinders: Número de cilindros + number-of-cylinders-example: 'p. ej., 4, 6' + engine-size: Tamaño del motor + engine-displacement: Cilindrada + horsepower: Potencia + horsepower-rpm: RPM de potencia máxima + rpm-at-max-horsepower: RPM a potencia máxima + torque: Torque + torque-rpm: RPM de torque + rpm-at-max-torque: RPM a torque máximo + capacity-dimensions: Capacidad y dimensiones + fuel-capacity: Capacidad de combustible + fuel-tank-capacity: Capacidad del tanque de combustible + payload-capacity: Capacidad de carga + maximum-payload: Carga máxima + towing-capacity: Capacidad de remolque + seating-capacity: Capacidad de pasajeros + number-of-seats: Número de asientos + vehicle-weight: Peso del vehículo + length: Largo + width: Ancho + height: Alto + cargo-volume: Volumen de carga + payload-volume: Volumen de carga (m³) + payload-volume-help: Volumen máximo de carga que puede transportar este vehículo, en metros cúbicos. + pallet-capacity: Capacidad de palés + pallet-capacity-help: Número máximo de palés estándar que puede transportar este vehículo. + parcel-capacity: Capacidad de paquetes + parcel-capacity-help: Número máximo de paquetes o bultos que puede transportar este vehículo. + passenger-volume: Volumen para pasajeros + interior-volume: Volumen interior + ground-clearance: Altura libre sobre el suelo + bed-length: Largo de la plataforma + example-40: 'p. ej., 40' + example-20: 'p. ej., 20' + example-200: 'p. ej., 200' + regulatory-compliance: Normativa y cumplimiento + emission-standard: Norma de emisiones + emission-standard-example: 'p. ej., Euro 6, EPA Tier 3' + gvwr: PBV (peso bruto vehicular) + gvwr-short: PBV + gcwr: PBC (peso bruto combinado) + gcwr-short: PBC + dpf-equipped: Equipado con filtro de partículas diésel (DPF) + scr-equipped: Equipado con reducción catalítica selectiva (SCR) + financial-lifecycle: Finanzas y ciclo de vida + asset-values: Valores del activo + currency: Moneda + acquisition-cost: Costo de adquisición + current-value: Valor actual + insurance-value: Valor asegurable + depreciation-rate: Tasa de depreciación (%) + lifecycle-service-life: Ciclo de vida y vida útil + estimated-service-life-distance: Vida útil estimada (distancia) + total-distance: Distancia total + service-life-distance-unit: Unidad de distancia de vida útil + estimated-service-life-months: Vida útil estimada (meses) + purchase-date: Fecha de compra + lease-expiry-date: Fecha de vencimiento del arrendamiento + date-placeholder: DD-MM-AAAA + financing-loan: Financiamiento (préstamo) + loan-amount: Monto del préstamo + number-of-payments: Número de pagos + first-payment-date: Fecha del primer pago + orchestrator-constraints: Restricciones del orquestador + skills-capabilities: Habilidades y capacidades + vehicle-skills: Habilidades del vehículo + vehicle-skills-help: Habilidades que puede cubrir este vehículo (p. ej., refrigeración o materiales peligrosos). El orquestador las usa para asignar pedidos. + select-skills: Seleccione las habilidades… + availability-window: Horario de disponibilidad + available-from: Disponible desde + available-from-help: Hora más temprana a partir de la cual este vehículo puede despacharse (HH:MM). + available-until: Disponible hasta + available-until-help: Hora límite para que este vehículo complete su última parada (HH:MM). + task-limits: Límites de tareas + max-tasks: Máximo de tareas + max-tasks-help: Número máximo de paradas o pedidos que se pueden asignar a este vehículo en cada ejecución del orquestador. Déjelo en blanco para no establecer un límite. actions: - attach-device: Attach Device - unassign-orders: Unassign Orders - create-issue: Create Issue + attach-device: Vincular dispositivo + unassign-orders: Desasignar pedidos + create-issue: Crear incidencia locate-vehicle: Localizar vehículo en el mapa attach-trailer: Enganchar remolque attach-equipment: Conectar equipamiento @@ -1073,7 +1521,7 @@ vendor: integrated-vendor: fields: provider: Proveedor - credentials: Cartas credenciales + credentials: Credenciales credentials-configure-help-text: Opcionalmente, proporcione su propio {param} para configurar este proveedor. options: Opciones choose-vendor: Elija proveedor de proveedor integrado @@ -1082,10 +1530,10 @@ integrated-vendor: cancel-credentials: Cancelar restablecimiento de credenciales sensitive-credentials: Las credenciales confidenciales solo se pueden restablecer; para actualizar las credenciales, debe volver a ingresarlas. reset-credentials: Haga clic aquí para restablecer las credenciales - sandbox: Salvadera + sandbox: Entorno de pruebas webhook: URL de webhook webhook-help-text: Los proveedores integrados normalmente requerirán esto para que Fleetbase pueda recibir actualizaciones de la actividad del pedido. ¡No cambies a menos que sepas lo que estás haciendo! ¡Cambiar esto puede interrumpir las actualizaciones de tus pedidos! - host: Anfitrión personalizado + host: Host personalizado host-help-text: Opcionalmente, proporcione un host personalizado que se deba utilizar para esta integración. namespace: Espacio de nombres personalizado namespace-help-text: Opcionalmente, proporcione un espacio de nombres personalizado o una versión de API que se deba utilizar para la integración. @@ -1261,6 +1709,132 @@ scheduler: scheduled-orders: Órdenes programadas unauthorized-to-schedule: No está autorizado a programar pedidos. scheduling-for: Programación para {orderId} + add-shift: Agregar turno + create-shift: Crear turno + edit-shift: Editar turno + delete-shift: Eliminar turno + delete-shift-confirm: ¿Está seguro de que desea eliminar este turno? Esta acción no se puede deshacer. + shift-created: Turno creado correctamente. + shift-updated: Turno actualizado correctamente. + shift-title: Título del turno + shift-title-placeholder: p. ej., Ruta de entregas de la mañana + shift-start: Inicio del turno + shift-end: Fin del turno + shift-notes-placeholder: Notas opcionales sobre este turno + select-start-datetime: Seleccionar fecha y hora de inicio + select-end-datetime: Seleccionar fecha y hora de fin + select-driver: Seleccionar conductor + upcoming-shifts: Próximos turnos + no-upcoming-shifts: No hay próximos turnos programados. + hours-of-service: Horas de servicio + daily-driving-hours: Horas de conducción diarias + weekly-hours: Horas semanales + compliance-status: Estado de cumplimiento + set-availability: Establecer disponibilidad + availability-set: Disponibilidad guardada correctamente. + availability-time-off: Disponibilidad y tiempo libre + no-availability-restrictions: No hay restricciones de disponibilidad. + available: Disponible + unavailable: No disponible + unavailable-time-off: No disponible / Tiempo libre + availability-type: Tipo de disponibilidad + request-time-off: Solicitar tiempo libre + submit-request: Enviar solicitud + time-off-requested: Solicitud de tiempo libre enviada. + delete-availability: Eliminar disponibilidad + delete-availability-confirm: ¿Está seguro de que desea eliminar este registro de disponibilidad? + availability-deleted: Registro de disponibilidad eliminado. + start-date: Fecha de inicio + end-date: Fecha de fin + select-start-date: Seleccionar fecha de inicio + select-end-date: Seleccionar fecha de fin + reason: Motivo + reason-placeholder: p. ej., Cita personal + notes-placeholder: Notas adicionales opcionales + shift: Turno + add-shift-hint: Haga clic en "Agregar turno" para programar un nuevo turno. + time-off-exceptions: Tiempo libre y excepciones + no-exceptions: No hay tiempo libre ni excepciones registradas. + exception-approved: Excepción aprobada. + exception-rejected: Excepción rechazada. + exception-deleted: Excepción eliminada. + delete-exception: Eliminar excepción + delete-exception-confirm: ¿Está seguro de que desea eliminar esta excepción? + approve: Aprobar + reject: Rechazar + recurring-schedule-created: Programa recurrente creado y turnos generados. + recurring-schedule: Programa recurrente + is-recurring: Recurrente + recurrence-pattern: Patrón de repetición + recurrence-start-date: Fecha de inicio + recurrence-end-date: Fecha de fin (opcional) + template-name: Nombre de la plantilla + template-name-placeholder: p. ej., Semana estándar + schedule-name: Nombre del programa + schedule-name-placeholder: p. ej., Semana estándar + one-off-shift: Turno único + one-off-shift-help: Active esta opción para agregar un solo turno en una fecha y hora específicas en lugar de un programa recurrente. + template-color: Color + shift-start-time: Hora de inicio del turno + shift-end-time: Hora de fin del turno + break-start-time: Hora de inicio del descanso + break-end-time: Hora de fin del descanso + day-monday: Lunes + day-tuesday: Martes + day-wednesday: Miércoles + day-thursday: Jueves + day-friday: Viernes + day-saturday: Sábado + day-sunday: Domingo + frequency-daily: Diario + frequency-weekly: Semanal + frequency-monthly: Mensual + today: Hoy + orders-tab: Programa de pedidos + fleet-schedule-tab: Programa de flota + break-start: Inicio del descanso + break-end: Fin del descanso + select-break-start: Seleccionar hora de inicio del descanso + select-break-end: Seleccionar hora de fin del descanso + select-date: Seleccionar fecha + working-days: Días laborables + recurrence-start: Fecha de inicio + recurrence-end: Fecha de fin + recurring-schedule-help: Defina un patrón de turnos recurrentes con días y horas. Los turnos se crearán automáticamente para el conductor. + shift-deleted: Turno eliminado correctamente. + day-mon: Lun + day-tue: Mar + day-wed: Mié + day-thu: Jue + day-fri: Vie + day-sat: Sáb + day-sun: Dom + view-day: Día + view-week: Semana + undo: Deshacer última acción + redo: Rehacer última acción + search-orders: Buscar pedidos... + select-all: Seleccionar todo + all-scheduled: Todos los pedidos están programados + not-scheduled: Sin programar + expand-sidebar: Expandir panel lateral + collapse-sidebar: Contraer panel lateral + bulk-assign: Asignar {count} pedidos + bulk-assign-title: Asignar {count} pedidos en bloque + bulk-assign-success: '{count} pedidos asignados correctamente.' + bulk-assign-order-count: '{count} pedidos seleccionados para asignar' + bulk-assign-spacing-hint: Los pedidos se programarán en secuencia desde la fecha y hora seleccionadas, con intervalos según la duración estimada. + assign-to-driver: Asignar al conductor + assign-orders: Asignar pedidos + orders-to-assign: '{count} pedidos por asignar' + scheduled-date: Fecha programada + conflict-title: Se detectó un conflicto de programación + conflict-description: '{orderTracking} se superpone con un pedido existente de {driverName}.' + conflicting-orders: Pedidos en conflicto + conflict-resolution-prompt: ¿Cómo desea resolver este conflicto? + auto-adjust: Ajustar hora automáticamente + assign-anyway: Asignar de todos modos + clear-selection: Borrar selección modals: new-custom-field-group: @@ -1465,13 +2039,13 @@ modals: optimize: Optimizar ruta optimize-text: Fleetbase optimizará automáticamente la ruta. add: Agregar punto de ruta - add-text: Utilice el botón `Add Waypoint` para agregar más paradas para este pedido. El motor de rutas de Fleetbase optimizará automáticamente la ruta a medida que se agregue o elimine cada parada. + add-text: Utilice el botón `Agregar punto de ruta` para agregar más paradas a este pedido. El motor de rutas de Fleetbase optimizará automáticamente la ruta cada vez que agregue o elimine una parada. select-waypoint: Seleccionar punto de referencia - pickup: Levantar + pickup: Recogida edit-address: Editar dirección select-pickup: Seleccionar recogida invalid: ¡Coordenadas no válidas! - dropoff: Dejar + dropoff: Entrega select-dropoff: Seleccionar entrega return: Devolver select-return: Seleccionar retorno @@ -1521,7 +2095,7 @@ modals: sub-message: Se perderán todas las configuraciones y ajustes personalizados. vehicle-details: - make: Hacer + make: Marca model: Modelo year: Año driver-assigned: Conductor asignado @@ -1591,18 +2165,18 @@ modals: fuel-cap: Volumen de la tapa de combustible (L) vendor-details: - sandbox: Salvadera - host: Anfitrión + sandbox: Entorno de pruebas + host: Host namespace: Espacio de nombres vendor-form: choose-vendor: Elija proveedor integrado create-vendor: Crear proveedor personalizado - credentials: Cartas credenciales + credentials: Credenciales options: Opciones hide-advanced: Ocultar Avanzado show-advanced: Mostrar avanzado - custom-host: Anfitrión personalizado + custom-host: Host personalizado host-text: Opcionalmente, proporcione un host personalizado que se deba utilizar para esta integración. custom-namespace: Espacio de nombres personalizado namespace-text: Opcionalmente, proporcione un espacio de nombres personalizado o una versión de API que se deba utilizar para la integración. @@ -1613,7 +2187,7 @@ modals: optionally: Opcionalmente proporcione el suyo propio configure-vendor: para configurar este proveedor. select: Seleccionar - sandbox: Salvadera + sandbox: Entorno de pruebas name-text: El nombre del proveedor, normalmente el nombre de una empresa. email-text: El correo electrónico del proveedor, esto se puede utilizar para enviar correos electrónicos al proveedor. phone-text: El teléfono del proveedor \#, esto se puede utilizar para enviar SMS o mensajes al proveedor. @@ -1631,18 +2205,51 @@ modals: description-zone: Descripción de la Zona widget: + refresh: Actualizar + kpi-earnings: + title: Ingresos + kpi-distance: + title: Distancia recorrida + kpi-aov: + title: Valor promedio del pedido + kpi-active-orders: + title: Pedidos activos + kpi-drivers-online: + title: Conductores en línea + kpi-open-issues: + title: Incidencias abiertas + operations-pulse: + title: Pulso operativo + revenue-trend: + title: Tendencia de ingresos + orders-by-status: + title: Volumen de pedidos por estado + on-time-delivery: + title: Entregas a tiempo + top-drivers: + title: Conductores destacados + fuel-efficiency: + title: Costo y eficiencia del combustible + issues-insights: + title: Análisis de incidencias + maintenance-overview: + title: Resumen de mantenimiento + geofence-violations: + title: Incumplimientos de geocerca + live-fleet: + title: Mapa de flota en vivo fleet-ops-quickstart: message: Veamos qué puedes hacer para impulsar las operaciones... start-task: Iniciar tarea get-started: - title: Get Started with Fleet-Ops - subtitle: Set up the essentials and complete your first dispatch flow. - completed: completed - preview-title: First order workflow + title: Primeros pasos con Fleet-Ops + subtitle: Configura lo esencial y completa tu primer flujo de despacho. + completed: completado + preview-title: Flujo del primer pedido recommended-features: - title: Recommended features for you - subtitle: Explore tools that help new operations teams get productive faster. - learn-more: Learn more + title: Funciones recomendadas para ti + subtitle: Explora herramientas que ayudan a los nuevos equipos de operaciones a mejorar su productividad desde el inicio. + learn-more: Más información key-metrics: title: Métricas de operaciones de flota earnings: Ganancias @@ -1839,6 +2446,47 @@ route-list: settings: avatar-management: Gestión de avatares custom-fields: Campos personalizados + map: + fleet-ops-map-settings: Configuración del mapa de Fleet-Ops + fleet-ops-map: Mapa de Fleet-Ops + configure-map: Configurar mapa + map-provider: Proveedor de mapas + map-provider-help-text: Elija el motor de mapas para mostrar el mapa de operaciones en vivo. Leaflet usa mosaicos de OpenStreetMap y no requiere una clave de API. Google Maps requiere una clave válida de Google Maps JavaScript API. + select-map-provider: Seleccionar proveedor de mapas + google-maps-map-type: Tipo de mapa + google-maps-map-type-help-text: Estilo de mapa predeterminado cuando Google Maps está activo. + select-map-type: Seleccionar tipo de mapa + show-traffic-layer: Mostrar capa de tráfico + show-traffic-layer-help-text: Mostrar las condiciones del tráfico en tiempo real en Google Maps. + show-transit-layer: Mostrar capa de transporte público + show-transit-layer-help-text: Mostrar las rutas de transporte público en Google Maps. + settings-saved: Configuración del mapa guardada correctamente. + settings-save-failed: No se pudo guardar la configuración del mapa. Inténtelo de nuevo. + scheduling: + scheduling-settings: Configuración de programación + materialisation: Generación de turnos + horizon-days: Horizonte de programación (días) + horizon-days-help: Cuántos días por adelantado se deben generar turnos al aplicar una plantilla de programa. + default-shift-duration: Duración predeterminada del turno (horas) + default-shift-duration-help: Cantidad predeterminada de horas de un turno cuando no se especifica una hora de fin. + hours-of-service: Límites de horas de servicio + hos-daily-limit: Límite diario de conducción (horas) + hos-daily-limit-help: Máximo de horas que un conductor puede manejar en un solo día. + hos-weekly-limit: Límite semanal de conducción (horas) + hos-weekly-limit-help: Máximo de horas que un conductor puede manejar en un período continuo de 7 días. + behaviour: Comportamiento + auto-activate-schedule: Activar programa automáticamente + auto-activate-schedule-help: Cambiar automáticamente un programa de Borrador a Activo cuando se crea el primer turno. + notify-drivers: Notificar a los conductores sobre cambios de turno + notify-drivers-help: Enviar una notificación push a los conductores cuando se creen, actualicen o eliminen sus turnos. + schedule-templates: Plantillas de programa reutilizables + no-templates: Aún no se han creado plantillas reutilizables. + new-template: Nueva plantilla + edit-template: Editar plantilla + delete-template: Eliminar plantilla + delete-template-confirm: ¿Está seguro de que desea eliminar la plantilla "{name}"? Esto no afectará los programas existentes. + template-deleted: Plantilla eliminada correctamente. + settings-saved: Configuración de programación guardada. notifications: fleet-ops-notification-settings: Configuración de notificaciones de operaciones de flota fleet-ops-notifications: Notificaciones de operaciones de flota From 2f3d297cd774a0b5e466c011d4edd8d3d2544a9c Mon Sep 17 00:00:00 2001 From: omar Date: Fri, 23 Oct 2026 16:04:20 -0500 Subject: [PATCH 2/3] fix(i18n): port management translations to current Fleet-Ops --- .../management/fuel-transactions/index.js | 51 ++++++++++++------- .../management/contacts/customers.hbs | 12 ++--- addon/templates/management/contacts/index.hbs | 16 +++--- addon/templates/management/drivers/index.hbs | 16 +++--- .../management/fuel-transactions/index.hbs | 10 ++-- addon/templates/management/vendors/index.hbs | 16 +++--- translations/en-us.yaml | 3 ++ translations/es-pa.yaml | 35 +++++++++---- 8 files changed, 96 insertions(+), 63 deletions(-) diff --git a/addon/controllers/management/fuel-transactions/index.js b/addon/controllers/management/fuel-transactions/index.js index 47c75b353..287ed0c9a 100644 --- a/addon/controllers/management/fuel-transactions/index.js +++ b/addon/controllers/management/fuel-transactions/index.js @@ -89,7 +89,7 @@ export default class ManagementFuelTransactionsIndexController extends Controlle return [ { id: 'bulk-reprocess', - label: `Reprocess ${selected.length} selected`, + label: this.intl.t('management.empty-states.fuel-transactions.reprocess-selected', { count: selected.length }), fn: () => this.confirmAction('reprocess', selected), permission: 'fleet-ops update fuel-provider-transaction', }, @@ -113,7 +113,7 @@ export default class ManagementFuelTransactionsIndexController extends Controlle }, { id: 'provider', - label: 'Provider', + label: this.intl.t('management.empty-states.fuel-transactions.columns.provider'), valuePath: 'provider', resizable: true, sortable: true, @@ -122,7 +122,7 @@ export default class ManagementFuelTransactionsIndexController extends Controlle }, { id: 'sync-status', - label: 'Status', + label: this.intl.t('management.empty-states.fuel-transactions.columns.status'), valuePath: 'sync_status', cellComponent: 'fuel-transaction-status', resizable: true, @@ -133,7 +133,7 @@ export default class ManagementFuelTransactionsIndexController extends Controlle }, { id: 'vehicle-name', - label: 'Vehicle', + label: this.intl.t('management.empty-states.fuel-transactions.columns.vehicle'), valuePath: 'vehicle_name', cellComponent: 'cell/vehicle-identity', permission: 'fleet-ops view vehicle', @@ -148,33 +148,33 @@ export default class ManagementFuelTransactionsIndexController extends Controlle }, { id: 'vehicle-card-id', - label: 'Card / Internal', + label: this.intl.t('management.empty-states.fuel-transactions.columns.card-internal'), valuePath: 'vehicle_card_id', resizable: true, }, { id: 'trip-number', - label: 'Trip', + label: this.intl.t('management.empty-states.fuel-transactions.columns.trip'), valuePath: 'trip_number', resizable: true, hidden: true, }, { id: 'station-name', - label: 'Station', + label: this.intl.t('management.empty-states.fuel-transactions.columns.station'), valuePath: 'station_name', resizable: true, }, { id: 'volume', - label: 'Liters', + label: this.intl.t('management.empty-states.fuel-transactions.columns.liters'), valuePath: 'volume', resizable: true, sortable: true, }, { id: 'amount', - label: 'Amount', + label: this.intl.t('management.empty-states.fuel-transactions.columns.amount'), valuePath: 'amount', cellComponent: 'table/cell/currency', resizable: true, @@ -182,7 +182,7 @@ export default class ManagementFuelTransactionsIndexController extends Controlle }, { id: 'fuel-report-id', - label: 'Fuel Report', + label: this.intl.t('management.empty-states.fuel-transactions.columns.fuel-report'), valuePath: 'fuel_report_id', cellComponent: 'cell/fuel-report-identity', resourcePath: (transaction) => @@ -192,7 +192,7 @@ export default class ManagementFuelTransactionsIndexController extends Controlle }, { id: 'transaction-at', - label: 'Date', + label: this.intl.t('management.empty-states.fuel-transactions.columns.date'), valuePath: 'transactionAt', sortParam: 'transaction_at', resizable: true, @@ -214,32 +214,47 @@ export default class ManagementFuelTransactionsIndexController extends Controlle sticky: 'right', width: 60, actions: [ - { id: 'open-details', label: 'Review Details', fn: this.openDetails, permission: 'fleet-ops view fuel-provider-transaction' }, + { + id: 'open-details', + label: this.intl.t('management.empty-states.fuel-transactions.review-details'), + fn: this.openDetails, + permission: 'fleet-ops view fuel-provider-transaction', + }, { id: 'open-fuel-report', - label: 'Open Fuel Report', + label: this.intl.t('management.empty-states.fuel-transactions.open-fuel-report'), fn: this.openFuelReport, isVisible: (transaction) => Boolean(transaction.fuel_report_id), permission: 'fleet-ops view fuel-report', }, { separator: true }, - { id: 'match-vehicle', label: 'Match to Vehicle', fn: this.matchVehicle, permission: 'fleet-ops update fuel-provider-transaction' }, - { id: 'match-order', label: 'Match to Order', fn: this.matchOrder, permission: 'fleet-ops update fuel-provider-transaction' }, + { + id: 'match-vehicle', + label: this.intl.t('management.empty-states.fuel-transactions.match-vehicle'), + fn: this.matchVehicle, + permission: 'fleet-ops update fuel-provider-transaction', + }, + { + id: 'match-order', + label: this.intl.t('management.empty-states.fuel-transactions.match-order'), + fn: this.matchOrder, + permission: 'fleet-ops update fuel-provider-transaction', + }, { id: 'reprocess', - label: 'Reprocess / Rematch', + label: this.intl.t('management.empty-states.fuel-transactions.reprocess-rematch'), fn: (transaction) => this.confirmAction('reprocess', transaction), permission: 'fleet-ops update fuel-provider-transaction', }, { id: 'ignore', - label: 'Ignore Transaction', + label: this.intl.t('management.empty-states.fuel-transactions.ignore-transaction'), fn: (transaction) => this.confirmAction('ignored', transaction), permission: 'fleet-ops review fuel-provider-transaction', }, { id: 'mark-reviewed', - label: 'Mark Reviewed', + label: this.intl.t('management.empty-states.fuel-transactions.mark-reviewed'), fn: (transaction) => this.confirmAction('reviewed', transaction), permission: 'fleet-ops review fuel-provider-transaction', }, diff --git a/addon/templates/management/contacts/customers.hbs b/addon/templates/management/contacts/customers.hbs index 1e4ce53bf..b0b5e0bf1 100644 --- a/addon/templates/management/contacts/customers.hbs +++ b/addon/templates/management/contacts/customers.hbs @@ -16,14 +16,14 @@ @emptyStateComponent={{component "table/empty-state" icon="user-group" - title="Add your first customer" - description="Customers give orders an owner, contact details, and account context for service history." - filteredTitle="No customers match your filters" - filteredDescription="Adjust the search or filters to find another customer." - primaryText="New customer" + title=(t "management.empty-states.customers.title") + description=(t "management.empty-states.customers.description") + filteredTitle=(t "management.empty-states.customers.filtered-title") + filteredDescription=(t "management.empty-states.customers.filtered-description") + primaryText=(t "management.empty-states.customers.primary-text") primaryIcon="plus" primaryAction=this.customerActions.transition.create - secondaryText="Import" + secondaryText=(t "common.import") secondaryIcon="upload" secondaryAction=this.customerActions.import }} diff --git a/addon/templates/management/contacts/index.hbs b/addon/templates/management/contacts/index.hbs index f68e0b485..7ef1ce7ef 100644 --- a/addon/templates/management/contacts/index.hbs +++ b/addon/templates/management/contacts/index.hbs @@ -16,19 +16,19 @@ @emptyStateComponent={{component "table/empty-state" icon="address-book" - title="Add your first contact" - description="Contacts keep customer, vendor, and internal stakeholder details ready for orders and communication." - filteredTitle="No contacts match your filters" - filteredDescription="Adjust the search or filters to find another contact." - primaryText="New contact" + title=(t "management.empty-states.contacts.title") + description=(t "management.empty-states.contacts.description") + filteredTitle=(t "management.empty-states.contacts.filtered-title") + filteredDescription=(t "management.empty-states.contacts.filtered-description") + primaryText=(t "management.empty-states.contacts.primary-text") primaryIcon="plus" primaryAction=this.contactActions.transition.create - secondaryText="Import" + secondaryText=(t "common.import") secondaryIcon="upload" secondaryAction=this.contactActions.import docsSlug="fleet-ops/resources/contacts/overview" - docsTitle="Contacts guide" - docsText="Contacts guide" + docsTitle=(t "management.empty-states.contacts.docs-title") + docsText=(t "management.empty-states.contacts.docs-text") docsSource="fleet-ops-empty-contacts" }} @withoutHeader={{true}} diff --git a/addon/templates/management/drivers/index.hbs b/addon/templates/management/drivers/index.hbs index c3e0ca204..129faa365 100644 --- a/addon/templates/management/drivers/index.hbs +++ b/addon/templates/management/drivers/index.hbs @@ -16,19 +16,19 @@ @emptyStateComponent={{component "table/empty-state" icon="id-card" - title="Add your first driver" - description="Drivers power dispatching, live fleet visibility, assignments, and delivery activity." - filteredTitle="No drivers match your search" - filteredDescription="Adjust the search or filters to find another driver." - primaryText="New driver" + title=(t "driver.empty-state.title") + description=(t "driver.empty-state.description") + filteredTitle=(t "driver.empty-state.filtered-title") + filteredDescription=(t "driver.empty-state.filtered-description") + primaryText=(t "driver.empty-state.primary-text") primaryIcon="plus" primaryAction=this.driverActions.transition.create - secondaryText="Import" + secondaryText=(t "driver.empty-state.secondary-text") secondaryIcon="upload" secondaryAction=this.driverActions.import docsSlug="fleet-ops/resources/drivers/overview" - docsTitle="Drivers guide" - docsText="Driver guide" + docsTitle=(t "driver.empty-state.docs-title") + docsText=(t "driver.empty-state.docs-text") docsSource="fleet-ops-empty-drivers" }} /> diff --git a/addon/templates/management/fuel-transactions/index.hbs b/addon/templates/management/fuel-transactions/index.hbs index 1221d42f4..a7df06459 100644 --- a/addon/templates/management/fuel-transactions/index.hbs +++ b/addon/templates/management/fuel-transactions/index.hbs @@ -18,11 +18,11 @@ @emptyStateComponent={{component "table/empty-state" icon="receipt" - title=(if this.hasFilters "No transactions match your filters" "No fuel transactions") - description="Imported fuel card bills and provider purchase records appear here after provider syncs complete." - filteredTitle="No transactions match your filters" - filteredDescription="Adjust the search or filters to review other imported transactions." - primaryText="Refresh" + title=(if this.hasFilters (t "management.empty-states.fuel-transactions.filtered-title") (t "management.empty-states.fuel-transactions.title")) + description=(t "management.empty-states.fuel-transactions.description") + filteredTitle=(t "management.empty-states.fuel-transactions.filtered-title") + filteredDescription=(t "management.empty-states.fuel-transactions.filtered-description") + primaryText=(t "management.empty-states.fuel-transactions.refresh") primaryIcon="refresh" primaryAction=this.refresh docsSlug="fleet-ops/resources/fuel-reports/overview" diff --git a/addon/templates/management/vendors/index.hbs b/addon/templates/management/vendors/index.hbs index 7f65fc1be..d4214ed2e 100644 --- a/addon/templates/management/vendors/index.hbs +++ b/addon/templates/management/vendors/index.hbs @@ -16,19 +16,19 @@ @emptyStateComponent={{component "table/empty-state" icon="building" - title="Add your first vendor" - description="Vendors let your team manage external carriers, service providers, and operational partners." - filteredTitle="No vendors match your filters" - filteredDescription="Adjust the search or filters to find another vendor." - primaryText="New vendor" + title=(t "management.empty-states.vendors.title") + description=(t "management.empty-states.vendors.description") + filteredTitle=(t "management.empty-states.vendors.filtered-title") + filteredDescription=(t "management.empty-states.vendors.filtered-description") + primaryText=(t "management.empty-states.vendors.primary-text") primaryIcon="plus" primaryAction=this.vendorActions.transition.create - secondaryText="Import" + secondaryText=(t "common.import") secondaryIcon="upload" secondaryAction=this.vendorActions.import docsSlug="fleet-ops/resources/vendors/overview" - docsTitle="Vendors guide" - docsText="Vendor guide" + docsTitle=(t "management.empty-states.vendors.docs-title") + docsText=(t "management.empty-states.vendors.docs-text") docsSource="fleet-ops-empty-vendors" }} /> diff --git a/translations/en-us.yaml b/translations/en-us.yaml index 5e169914a..7df281fb1 100644 --- a/translations/en-us.yaml +++ b/translations/en-us.yaml @@ -268,6 +268,7 @@ management: docs-text: Integrated vendors guide common: + import: Import last-modified: Last modified "yes": "Yes" "no": "No" @@ -1071,10 +1072,12 @@ driver: fields: avatar: Avatar driver-details: Driver Details + select-user: Select User select-vehicle: Select Vehicle upload-new-photo: Upload new photo user-account: User Account vendor: Vendor + user-account-help-text: Each driver profile needs to be connected to a specific user account. This association is essential for managing authentication so each driver can securely access and manage their profile. select-vendor: Select Vendor driver-license: Drivers License license-expiry: License Expiry diff --git a/translations/es-pa.yaml b/translations/es-pa.yaml index 4e29d33d6..18f877749 100644 --- a/translations/es-pa.yaml +++ b/translations/es-pa.yaml @@ -268,6 +268,7 @@ management: docs-text: Guía de proveedores integrados common: + import: Importar last-modified: Última modificación change-layout: Cambiar disposición online: En línea @@ -816,10 +817,24 @@ device: notes-placeholder: Notas actions: + schedule-maintenance: Programar mantenimiento + create-work-order: Crear orden de trabajo + log-maintenance: Registrar mantenimiento + attach-device: Vincular dispositivo attach-to-vehicle: Attach to Vehicle detach-from-vehicle: Detach from Vehicle attach-to-asset: Conectar a activo prompts: + select-device-to-attach-title: Seleccione un dispositivo para vincular + confirm-attach-device: "¿Vincular {deviceName} a {vehicleName}?" + attach-device-success: Dispositivo vinculado correctamente. + detach-from-resource-title: "¿Desvincular {deviceName} del recurso?" + detach-from-resource-body: Esto detendrá las actualizaciones telemáticas hasta volver a vincular el dispositivo. + detach-from-resource-success: Dispositivo desvinculado del recurso. + detach-telematic-device-title: "¿Desvincular {deviceName}?" + detach-telematic-device-body: Esto detendrá las actualizaciones telemáticas hasta volver a vincular el dispositivo. + no-devices-attached-title: No hay dispositivos vinculados + no-devices-attached-body: Vincule un dispositivo para recibir posiciones y eventos telemáticos. manager-description: "Dispositivos telemáticos instalados en este {resourceType}. Vincule un dispositivo para empezar a recibir posiciones y eventos." attach-to-vehicle-title: Attach device to vehicle attach-device-to-vehicle-title: "Attach {deviceName} to vehicle" @@ -1478,16 +1493,16 @@ vehicle: detach-equipment: Desconectar equipamiento prompts: - attach-device-title: Attach device to {vehicleName} - select-device-warning: Select a device to attach. - attach-device-success: Device attached to {vehicleName}. - no-assigned-orders-warning: No assigned orders found for {vehicleName}. - select-orders-warning: Select at least one order to unassign. - unassign-orders-title: Unassign orders from {vehicleName} - confirm-unassign-orders-title: Unassign {count} order(s) from {vehicleName}? - confirm-unassign-orders-body: "This will remove {vehicleName} from these orders: {orders}." - unassign-orders-success: Unassigned {vehicleName} from {count} order(s). - issue-title: Issue reported for {vehicleName} + attach-device-title: Vincular dispositivo a {vehicleName} + select-device-warning: Seleccione un dispositivo para vincular. + attach-device-success: Dispositivo vinculado a {vehicleName}. + no-assigned-orders-warning: No se encontraron pedidos asignados a {vehicleName}. + select-orders-warning: Seleccione al menos un pedido para desasignar. + unassign-orders-title: Desasignar pedidos de {vehicleName} + confirm-unassign-orders-title: ¿Desasignar {count} pedido(s) de {vehicleName}? + confirm-unassign-orders-body: "Esto quitará a {vehicleName} de estos pedidos: {orders}." + unassign-orders-success: Se desasignó {vehicleName} de {count} pedido(s). + issue-title: Incidencia reportada para {vehicleName} attach-trailer-title: "Enganchar un remolque a {vehicleName}" select-trailer-warning: Seleccione un remolque para enganchar a este vehículo. attach-trailer-success: "{trailerName} enganchado a {vehicleName}." From 3627fa5d48c1d993dc4c5630fac45a725e2a84a2 Mon Sep 17 00:00:00 2001 From: omar Date: Thu, 29 Oct 2026 10:17:26 -0500 Subject: [PATCH 3/3] fix(i18n): remove duplicate Spanish common keys --- translations/es-pa.yaml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/translations/es-pa.yaml b/translations/es-pa.yaml index 18f877749..41ea26d0b 100644 --- a/translations/es-pa.yaml +++ b/translations/es-pa.yaml @@ -323,16 +323,12 @@ common: schedule: Programar optional: Opcional unauthorized-access: No tiene autorización para acceder a este recurso. - online: En línea refresh: Actualizar loading-route: Cargando ruta... hover-to-load-route: Cargando vista previa de la ruta... unable-to-load-route: No se pudo cargar la vista previa de la ruta. calendar-view: Vista de calendario - change-layout: Cambiar diseño - positions: Posiciones - - current-job: Current Job + current-job: Trabajo actual "yes": Sí "no": No menu: