-
Notifications
You must be signed in to change notification settings - Fork 2.9k
/
es.ts
5430 lines (5419 loc) · 314 KB
/
es.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
import CONST from '@src/CONST';
import type en from './en';
import type {
AccountOwnerParams,
ActionsAreCurrentlyRestricted,
AddEmployeeParams,
AddressLineParams,
AdminCanceledRequestParams,
AlreadySignedInParams,
ApprovalWorkflowErrorParams,
ApprovedAmountParams,
AssignCardParams,
AssignedYouCardParams,
AssigneeParams,
AuthenticationErrorParams,
AutoPayApprovedReportsLimitErrorParams,
BadgeFreeTrialParams,
BeginningOfChatHistoryAdminRoomPartOneParams,
BeginningOfChatHistoryAnnounceRoomPartOneParams,
BeginningOfChatHistoryDomainRoomPartOneParams,
BillingBannerCardAuthenticationRequiredParams,
BillingBannerCardExpiredParams,
BillingBannerCardOnDisputeParams,
BillingBannerDisputePendingParams,
BillingBannerInsufficientFundsParams,
BillingBannerSubtitleWithDateParams,
CanceledRequestParams,
CardEndingParams,
CardInfoParams,
CardNextPaymentParams,
CategoryNameParams,
ChangeFieldParams,
ChangeOwnerDuplicateSubscriptionParams,
ChangeOwnerHasFailedSettlementsParams,
ChangeOwnerSubscriptionParams,
ChangePolicyParams,
ChangeTypeParams,
CharacterLengthLimitParams,
CharacterLimitParams,
CompanyCardFeedNameParams,
ConfirmThatParams,
ConnectionNameParams,
ConnectionParams,
CustomersOrJobsLabelParams,
DateParams,
DateShouldBeAfterParams,
DateShouldBeBeforeParams,
DefaultAmountParams,
DefaultVendorDescriptionParams,
DelegateRoleParams,
DelegateSubmitParams,
DelegatorParams,
DeleteActionParams,
DeleteConfirmationParams,
DidSplitAmountMessageParams,
EditActionParams,
ElectronicFundsParams,
EnterMagicCodeParams,
ExportAgainModalDescriptionParams,
ExportedToIntegrationParams,
ExportIntegrationSelectedParams,
FeatureNameParams,
FiltersAmountBetweenParams,
FormattedMaxLengthParams,
ForwardedAmountParams,
GoBackMessageParams,
GoToRoomParams,
ImportedTagsMessageParams,
ImportedTypesParams,
ImportFieldParams,
ImportMembersSuccessfullDescriptionParams,
ImportTagsSuccessfullDescriptionParams,
IncorrectZipFormatParams,
InstantSummaryParams,
IntacctMappingTitleParams,
IntegrationExportParams,
IntegrationSyncFailedParams,
InvalidPropertyParams,
InvalidValueParams,
IssueVirtualCardParams,
LastSyncAccountingParams,
LastSyncDateParams,
LocalTimeParams,
LoggedInAsParams,
LogSizeParams,
ManagerApprovedAmountParams,
ManagerApprovedParams,
MarkedReimbursedParams,
MarkReimbursedFromIntegrationParams,
MissingPropertyParams,
NoLongerHaveAccessParams,
NotAllowedExtensionParams,
NotYouParams,
OOOEventSummaryFullDayParams,
OOOEventSummaryPartialDayParams,
OptionalParam,
OurEmailProviderParams,
OwnerOwesAmountParams,
PaidElsewhereWithAmountParams,
PaidWithExpensifyWithAmountParams,
ParentNavigationSummaryParams,
PayerOwesAmountParams,
PayerOwesParams,
PayerPaidAmountParams,
PayerPaidParams,
PayerSettledParams,
PaySomeoneParams,
ReconciliationWorksParams,
ReimbursementRateParams,
RemovedFromApprovalWorkflowParams,
RemovedTheRequestParams,
RemoveMemberPromptParams,
RemoveMembersWarningPrompt,
RenamedRoomActionParams,
ReportArchiveReasonsClosedParams,
ReportArchiveReasonsInvoiceReceiverPolicyDeletedParams,
ReportArchiveReasonsMergedParams,
ReportArchiveReasonsRemovedFromPolicyParams,
ReportPolicyNameParams,
RequestAmountParams,
RequestCountParams,
RequestedAmountMessageParams,
RequiredFieldParams,
ResolutionConstraintsParams,
RoleNamesParams,
RoomNameReservedErrorParams,
RoomRenamedToParams,
SecondaryLoginParams,
SetTheDistanceMerchantParams,
SetTheRequestParams,
SettledAfterAddedBankAccountParams,
SettleExpensifyCardParams,
ShareParams,
SignUpNewFaceCodeParams,
SizeExceededParams,
SplitAmountParams,
SpreadCategoriesParams,
SpreadFieldNameParams,
SpreadSheetColumnParams,
StatementTitleParams,
StepCounterParams,
StripePaidParams,
SubscriptionCommitmentParams,
SubscriptionSettingsRenewsOnParams,
SubscriptionSettingsSaveUpToParams,
SubscriptionSizeParams,
SyncStageNameConnectionsParams,
TaskCreatedActionParams,
TaxAmountParams,
TermsParams,
ThreadRequestReportNameParams,
ThreadSentMoneyReportNameParams,
ToValidateLoginParams,
TransferParams,
TrialStartedTitleParams,
UnapprovedParams,
UnapproveWithIntegrationWarningParams,
UnshareParams,
UntilTimeParams,
UpdatedTheDistanceMerchantParams,
UpdatedTheRequestParams,
UpdateRoleParams,
UsePlusButtonParams,
UserIsAlreadyMemberParams,
UserSplitParams,
ViolationsAutoReportedRejectedExpenseParams,
ViolationsCashExpenseWithNoReceiptParams,
ViolationsConversionSurchargeParams,
ViolationsInvoiceMarkupParams,
ViolationsMaxAgeParams,
ViolationsMissingTagParams,
ViolationsModifiedAmountParams,
ViolationsOverAutoApprovalLimitParams,
ViolationsOverCategoryLimitParams,
ViolationsOverLimitParams,
ViolationsPerDayLimitParams,
ViolationsReceiptRequiredParams,
ViolationsRterParams,
ViolationsTagOutOfPolicyParams,
ViolationsTaxOutOfPolicyParams,
WaitingOnBankAccountParams,
WalletProgramParams,
WelcomeEnterMagicCodeParams,
WelcomeNoteParams,
WelcomeToRoomParams,
WeSentYouMagicSignInLinkParams,
WorkspaceOwnerWillNeedToAddOrUpdatePaymentCardParams,
YourPlanPriceParams,
ZipCodeExampleFormatParams,
} from './params';
import type {TranslationDeepObject} from './types';
/* eslint-disable max-len */
const translations = {
common: {
cancel: 'Cancelar',
dismiss: 'Descartar',
yes: 'Sí',
no: 'No',
ok: 'OK',
notNow: 'Ahora no',
learnMore: 'Más información',
buttonConfirm: 'Ok, entendido',
name: 'Nombre',
attachment: 'Archivo adjunto',
attachments: 'Archivos adjuntos',
from: 'De',
to: 'A',
in: 'En',
optional: 'Opcional',
new: 'Nuevo',
center: 'Centrar',
search: 'Buscar',
find: 'Encontrar',
searchWithThreeDots: 'Buscar...',
select: 'Seleccionar',
selectMultiple: 'Seleccionar varios',
next: 'Siguiente',
create: 'Crear',
previous: 'Anterior',
goBack: 'Volver',
add: 'Añadir',
resend: 'Reenviar',
save: 'Guardar',
saveChanges: 'Guardar cambios',
submit: 'Enviar',
rotate: 'Rotar',
zoom: 'Zoom',
password: 'Contraseña',
magicCode: 'Código mágico',
twoFactorCode: 'Autenticación de dos factores',
workspaces: 'Espacios de trabajo',
inbox: 'Recibidos',
group: 'Grupo',
profile: 'Perfil',
referral: 'Remisión',
payments: 'Pagos',
approvals: 'Aprobaciones',
wallet: 'Billetera',
preferences: 'Preferencias',
view: 'Ver',
review: 'Revisar',
not: 'No',
privacyPolicy: 'la Política de Privacidad de Expensify',
addCardTermsOfService: 'Términos de Servicio',
signIn: 'Conectarse',
signInWithGoogle: 'Iniciar sesión con Google',
signInWithApple: 'Iniciar sesión con Apple',
signInWith: 'Iniciar sesión con',
continue: 'Continuar',
firstName: 'Nombre',
lastName: 'Apellidos',
phone: 'Teléfono',
phoneNumber: 'Número de teléfono',
phoneNumberPlaceholder: '(xxx) xxx-xxxx',
email: 'Email',
and: 'y',
or: 'o',
details: 'Detalles',
privacy: 'Privacidad',
hidden: 'Oculto',
visible: 'Visible',
delete: 'Eliminar',
archived: 'archivado',
contacts: 'Contactos',
recents: 'Recientes',
close: 'Cerrar',
download: 'Descargar',
downloading: 'Descargando',
pin: 'Fijar',
unPin: 'Desfijar',
back: 'Volver',
saveAndContinue: 'Guardar y continuar',
settings: 'Configuración',
termsOfService: 'Términos de Servicio',
members: 'Miembros',
invite: 'Invitar',
here: 'aquí',
date: 'Fecha',
dob: 'Fecha de nacimiento',
currentYear: 'Año actual',
currentMonth: 'Mes actual',
ssnLast4: 'Últimos 4 dígitos de tu SSN',
ssnFull9: 'Los 9 dígitos del SSN',
addressLine: ({lineNumber}: AddressLineParams) => `Dirección línea ${lineNumber}`,
personalAddress: 'Dirección física personal',
companyAddress: 'Dirección física de la empresa',
noPO: 'No se aceptan apartados ni direcciones postales',
city: 'Ciudad',
state: 'Estado',
streetAddress: 'Dirección',
stateOrProvince: 'Estado / Provincia',
country: 'País',
zip: 'Código postal',
zipPostCode: 'Código postal',
whatThis: '¿Qué es esto?',
iAcceptThe: 'Acepto los ',
remove: 'Eliminar',
admin: 'Administrador',
owner: 'Dueño',
dateFormat: 'AAAA-MM-DD',
send: 'Enviar',
notifications: 'Notificaciones',
na: 'N/A',
noResultsFound: 'No se han encontrado resultados',
recentDestinations: 'Destinos recientes',
timePrefix: 'Son las',
conjunctionFor: 'para',
todayAt: 'Hoy a las',
tomorrowAt: 'Mañana a las',
yesterdayAt: 'Ayer a las',
conjunctionAt: 'a',
conjunctionTo: 'a',
genericErrorMessage: 'Ups... algo no ha ido bien y la acción no se ha podido completar. Por favor, inténtalo más tarde.',
percentage: 'Porcentaje',
error: {
invalidAmount: 'Importe no válido.',
acceptTerms: 'Debes aceptar los Términos de Servicio para continuar.',
phoneNumber: `Introduce un teléfono válido, incluyendo el código del país (p. ej. ${CONST.EXAMPLE_PHONE_NUMBER})`,
fieldRequired: 'Este campo es obligatorio.',
requestModified: 'Esta solicitud está siendo modificada por otro miembro.',
characterLimit: ({limit}: CharacterLimitParams) => `Supera el límite de ${limit} caracteres`,
characterLimitExceedCounter: ({length, limit}: CharacterLengthLimitParams) => `Se superó el límite de caracteres (${length}/${limit})`,
dateInvalid: 'Por favor, selecciona una fecha válida.',
invalidDateShouldBeFuture: 'Por favor, elige una fecha igual o posterior a hoy.',
invalidTimeShouldBeFuture: 'Por favor, elige una hora al menos un minuto en el futuro.',
invalidCharacter: 'Carácter invalido.',
enterMerchant: 'Introduce un comerciante.',
enterAmount: 'Introduce un importe.',
enterDate: 'Introduce una fecha.',
invalidTimeRange: 'Por favor, introduce una hora entre 1 y 12 (por ejemplo, 2:30 PM).',
pleaseCompleteForm: 'Por favor complete el formulario de arriba para continuar.',
pleaseSelectOne: 'Seleccione una de las opciones.',
invalidRateError: 'Por favor, introduce una tarifa válida.',
lowRateError: 'La tarifa debe ser mayor que 0.',
},
comma: 'la coma',
semicolon: 'el punto y coma',
please: 'Por favor',
rename: 'Renombrar',
contactUs: 'contáctenos',
pleaseEnterEmailOrPhoneNumber: 'Por favor, escribe un email o número de teléfono',
fixTheErrors: 'corrige los errores',
inTheFormBeforeContinuing: 'en el formulario antes de continuar',
confirm: 'Confirmar',
reset: 'Restablecer',
done: 'Listo',
more: 'Más',
debitCard: 'Tarjeta de débito',
bankAccount: 'Cuenta bancaria',
personalBankAccount: 'Cuenta bancaria personal',
businessBankAccount: 'Cuenta bancaria comercial',
join: 'Unirse',
leave: 'Salir',
decline: 'Rechazar',
transferBalance: 'Transferencia de saldo',
cantFindAddress: '¿No encuentras tu dirección? ',
enterManually: 'Introducir manualmente',
message: 'Chatear con ',
leaveThread: 'Salir del hilo',
you: 'Tú',
youAfterPreposition: 'ti',
your: 'tu',
conciergeHelp: 'Por favor, contacta con Concierge para obtener ayuda.',
youAppearToBeOffline: 'Parece que estás desconectado.',
thisFeatureRequiresInternet: 'Esta función requiere una conexión a Internet activa.',
attachementWillBeAvailableOnceBackOnline: 'El archivo adjunto estará disponible cuando vuelvas a estar en línea.',
areYouSure: '¿Estás seguro?',
verify: 'Verifique',
yesContinue: 'Sí, continuar',
websiteExample: 'p. ej. https://www.expensify.com',
zipCodeExampleFormat: ({zipSampleFormat}: ZipCodeExampleFormatParams) => (zipSampleFormat ? `p. ej. ${zipSampleFormat}` : ''),
description: 'Descripción',
with: 'con',
shareCode: 'Compartir código',
share: 'Compartir',
per: 'por',
mi: 'milla',
km: 'kilómetro',
copied: '¡Copiado!',
someone: 'Alguien',
total: 'Total',
edit: 'Editar',
letsDoThis: '¡Hagámoslo!',
letsStart: 'Empecemos',
showMore: 'Mostrar más',
merchant: 'Comerciante',
category: 'Categoría',
billable: 'Facturable',
nonBillable: 'No facturable',
tag: 'Etiqueta',
receipt: 'Recibo',
verified: 'Verificado',
replace: 'Sustituir',
distance: 'Distancia',
mile: 'milla',
miles: 'millas',
kilometer: 'kilómetro',
kilometers: 'kilómetros',
recent: 'Reciente',
all: 'Todo',
am: 'AM',
pm: 'PM',
tbd: 'Por determinar',
selectCurrency: 'Selecciona una moneda',
card: 'Tarjeta',
whyDoWeAskForThis: '¿Por qué pedimos esto?',
required: 'Obligatorio',
showing: 'Mostrando',
of: 'de',
default: 'Predeterminado',
update: 'Actualizar',
member: 'Miembro',
auditor: 'Auditor',
role: 'Role',
currency: 'Divisa',
rate: 'Tarifa',
emptyLHN: {
title: 'Woohoo! Todo al día.',
subtitleText1: 'Encuentra un chat usando el botón',
subtitleText2: 'o crea algo usando el botón',
subtitleText3: '.',
},
businessName: 'Nombre de la empresa',
clear: 'Borrar',
type: 'Tipo',
action: 'Acción',
expenses: 'Gastos',
tax: 'Impuesto',
shared: 'Compartidos',
drafts: 'Borradores',
finished: 'Finalizados',
upgrade: 'Mejora',
companyID: 'Empresa ID',
userID: 'Usuario ID',
disable: 'Deshabilitar',
export: 'Exportar',
initialValue: 'Valor inicial',
currentDate: 'Fecha actual',
value: 'Valor',
downloadFailedTitle: 'Error en la descarga',
downloadFailedDescription: 'No se pudo completar la descarga. Por favor, inténtalo más tarde.',
filterLogs: 'Registros de filtrado',
network: 'La red',
reportID: 'ID del informe',
bankAccounts: 'Cuentas bancarias',
chooseFile: 'Elegir archivo',
dropTitle: 'Suéltalo',
dropMessage: 'Suelta tu archivo aquí',
enabled: 'Habilitado',
ignore: 'Ignorar',
import: 'Importar',
offlinePrompt: 'No puedes realizar esta acción ahora mismo.',
outstanding: 'Pendiente',
chats: 'Chats',
unread: 'No leído',
sent: 'Enviado',
links: 'Enlaces',
days: 'días',
},
connectionComplete: {
title: 'Conexión completa',
supportingText: 'Ya puedes cerrar esta página y volver a la App de Expensify.',
},
location: {
useCurrent: 'Usar ubicación actual',
notFound: 'No pudimos encontrar tu ubicación. Inténtalo de nuevo o introduce una dirección manualmente.',
permissionDenied: 'Parece que has denegado el permiso a tu ubicación.',
please: 'Por favor,',
allowPermission: 'habilita el permiso de ubicación en la configuración',
tryAgain: 'e inténtalo de nuevo.',
},
anonymousReportFooter: {
logoTagline: 'Únete a la discusión.',
},
attachmentPicker: {
cameraPermissionRequired: 'Permiso para acceder a la cámara',
expensifyDoesntHaveAccessToCamera: 'Expensify no puede tomar fotos sin acceso a la cámara. Haz click en configuración para actualizar los permisos.',
attachmentError: 'Error al adjuntar archivo',
errorWhileSelectingAttachment: 'Se ha producido un error al seleccionar un archivo adjunto. Por favor, inténtalo de nuevo.',
errorWhileSelectingCorruptedAttachment: 'Se ha producido un error al seleccionar un archivo adjunto corrupto. Por favor, inténtalo con otro archivo.',
takePhoto: 'Hacer una foto',
chooseFromGallery: 'Elegir de la galería',
chooseDocument: 'Elegir un archivo',
attachmentTooLarge: 'Archivo adjunto demasiado grande',
sizeExceeded: 'El archivo adjunto supera el límite de 24 MB.',
attachmentTooSmall: 'Archivo adjunto demasiado pequeño',
sizeNotMet: 'El archivo adjunto debe ser más grande que 240 bytes.',
wrongFileType: 'Tipo de archivo inválido',
notAllowedExtension: 'Este tipo de archivo no es compatible',
folderNotAllowedMessage: 'Subir una carpeta no está permitido. Prueba con otro archivo.',
protectedPDFNotSupported: 'Los PDFs con contraseña no son compatibles',
attachmentImageResized: 'Se ha cambiado el tamaño de esta imagen para obtener una vista previa. Descargar para resolución completa.',
attachmentImageTooLarge: 'Esta imagen es demasiado grande para obtener una vista previa antes de subirla.',
},
filePicker: {
fileError: 'Error de archivo',
errorWhileSelectingFile: 'An error occurred while selecting an file. Please try again.',
},
avatarCropModal: {
title: 'Editar foto',
description: 'Arrastra, haz zoom y rota tu imagen para que quede como te gusta.',
},
composer: {
noExtensionFoundForMimeType: 'No se encontró una extension para este tipo de contenido',
problemGettingImageYouPasted: 'Ha ocurrido un problema al obtener la imagen que has pegado',
commentExceededMaxLength: ({formattedMaxLength}: FormattedMaxLengthParams) => `El comentario debe tener máximo ${formattedMaxLength} caracteres.`,
},
baseUpdateAppModal: {
updateApp: 'Actualizar app',
updatePrompt: 'Existe una nueva versión de esta aplicación.\nActualiza ahora or reinicia la aplicación más tarde para recibir la última versión.',
},
deeplinkWrapper: {
launching: 'Cargando Expensify',
expired: 'Tu sesión ha expirado.',
signIn: 'Por favor, inicia sesión de nuevo.',
redirectedToDesktopApp: 'Te hemos redirigido a la aplicación de escritorio.',
youCanAlso: 'También puedes',
openLinkInBrowser: 'abrir este enlace en tu navegador',
loggedInAs: ({email}: LoggedInAsParams) =>
`Has iniciado sesión como ${email}. Haz clic en "Abrir enlace" en el aviso para iniciar sesión en la aplicación de escritorio con esta cuenta.`,
doNotSeePrompt: '¿No ves el aviso?',
tryAgain: 'Inténtalo de nuevo',
or: ', o',
continueInWeb: 'continuar en la web',
},
validateCodeModal: {
successfulSignInTitle: 'Abracadabra,\n¡sesión iniciada!',
successfulSignInDescription: 'Vuelve a la pestaña original para continuar.',
title: 'Aquí está tu código mágico',
or: ', ¡o',
description: 'Por favor, introduce el código utilizando el dispositivo\nen el que se solicitó originalmente',
signInHere: 'simplemente inicia sesión aquí',
expiredCodeTitle: 'Código mágico caducado',
expiredCodeDescription: 'Vuelve al dispositivo original y solicita un código nuevo',
successfulNewCodeRequest: 'Código solicitado. Por favor, comprueba tu dispositivo.',
tfaRequiredTitle: 'Se requiere autenticación\nde dos factores',
tfaRequiredDescription: 'Por favor, introduce el código de autenticación de dos factores\ndonde estás intentando iniciar sesión.',
requestOneHere: 'solicite uno aquí.',
},
moneyRequestConfirmationList: {
paidBy: 'Pagado por',
whatsItFor: '¿Para qué es?',
},
selectionList: {
nameEmailOrPhoneNumber: 'Nombre, email o número de teléfono',
findMember: 'Encuentra un miembro',
},
emptyList: {
[CONST.IOU.TYPE.SUBMIT]: {
title: 'Presentar un gasto',
subtitleText1: 'Presente un gasto a alguien y ',
subtitleText2: `recibe ${CONST.REFERRAL_PROGRAM.REVENUE} dólares`,
subtitleText3: ' cuando se convierta en client.',
},
[CONST.IOU.TYPE.SPLIT]: {
title: 'Dividir un gasto',
subtitleText1: 'Divide con un amigo y ',
subtitleText2: `recibe ${CONST.REFERRAL_PROGRAM.REVENUE} dólares`,
subtitleText3: ' cuando se convierta en client.',
},
[CONST.IOU.TYPE.PAY]: {
title: 'Pagar a alguien',
subtitleText1: 'Paga a quien quieras y ',
subtitleText2: `recibe ${CONST.REFERRAL_PROGRAM.REVENUE} dólares`,
subtitleText3: ' cuando se convierta en client.',
},
},
videoChatButtonAndMenu: {
tooltip: 'Programar una llamada',
},
hello: 'Hola',
phoneCountryCode: '34',
welcomeText: {
getStarted: 'Comience a continuación.',
anotherLoginPageIsOpen: 'Otra página de inicio de sesión está abierta.',
anotherLoginPageIsOpenExplanation: 'Ha abierto la página de inicio de sesión en una pestaña separada. Inicie sesión desde esa pestaña específica.',
welcome: '¡Bienvenido!',
welcomeWithoutExclamation: 'Bienvenido',
phrase2: 'El dinero habla. Y ahora que chat y pagos están en un mismo lugar, es también fácil.',
phrase3: 'Tus pagos llegan tan rápido como tus mensajes.',
enterPassword: 'Por favor, introduce tu contraseña',
welcomeNewFace: ({login}: SignUpNewFaceCodeParams) => `${login}, siempre es genial ver una cara nueva por aquí!`,
welcomeEnterMagicCode: ({login}: WelcomeEnterMagicCodeParams) => `Por favor, introduce el código mágico enviado a ${login}. Debería llegar en un par de minutos.`,
},
login: {
hero: {
header: 'Gestiona, divide gastos y chatea con tu equipo.',
body: 'Bienvenido al futuro de Expensify, tu nuevo lugar de referencia para la colaboración financiera con amigos y compañeros de equipo por igual.',
},
},
thirdPartySignIn: {
alreadySignedIn: ({email}: AlreadySignedInParams) => `Ya has iniciado sesión con ${email}.`,
goBackMessage: ({provider}: GoBackMessageParams) => `No quieres iniciar sesión con ${provider}?`,
continueWithMyCurrentSession: 'Continuar con mi sesión actual',
redirectToDesktopMessage: 'Lo redirigiremos a la aplicación de escritorio una vez que termine de iniciar sesión.',
signInAgreementMessage: 'Al iniciar sesión, aceptas las',
termsOfService: 'Términos de servicio',
privacy: 'Privacidad',
},
samlSignIn: {
welcomeSAMLEnabled: 'Continua iniciando sesión con el inicio de sesión único:',
orContinueWithMagicCode: 'También puedes iniciar sesión con un código mágico',
useSingleSignOn: 'Usar el inicio de sesión único',
useMagicCode: 'Usar código mágico',
launching: 'Cargando...',
oneMoment: 'Un momento mientras te redirigimos al portal de inicio de sesión único de tu empresa.',
},
reportActionCompose: {
dropToUpload: 'Suelta el archivo aquí para compartirlo',
sendAttachment: 'Enviar adjunto',
addAttachment: 'Añadir archivo adjunto',
writeSomething: 'Escribe algo...',
blockedFromConcierge: 'Comunicación no permitida',
fileUploadFailed: 'Subida fallida. El archivo no es compatible.',
localTime: ({user, time}: LocalTimeParams) => `Son las ${time} para ${user}`,
edited: '(editado)',
emoji: 'Emoji',
collapse: 'Colapsar',
expand: 'Expandir',
tooltip: {
title: '¡Empecemos!',
subtitle: ' Presenta tu primer gasto',
},
},
reportActionContextMenu: {
copyToClipboard: 'Copiar al portapapeles',
copied: '¡Copiado!',
copyLink: 'Copiar enlace',
copyURLToClipboard: 'Copiar URL al portapapeles',
copyEmailToClipboard: 'Copiar email al portapapeles',
markAsUnread: 'Marcar como no leído',
markAsRead: 'Marcar como leído',
editAction: ({action}: EditActionParams) => `Editar ${action?.actionName === CONST.REPORT.ACTIONS.TYPE.IOU ? 'gastos' : 'comentario'}`,
deleteAction: ({action}: DeleteActionParams) => `Eliminar ${action?.actionName === CONST.REPORT.ACTIONS.TYPE.IOU ? 'gastos' : 'comentario'}`,
deleteConfirmation: ({action}: DeleteConfirmationParams) =>
`¿Estás seguro de que quieres eliminar este ${action?.actionName === CONST.REPORT.ACTIONS.TYPE.IOU ? 'gasto' : 'comentario'}`,
onlyVisible: 'Visible sólo para',
replyInThread: 'Responder en el hilo',
joinThread: 'Unirse al hilo',
leaveThread: 'Dejar hilo',
copyOnyxData: 'Copiar datos de Onyx',
flagAsOffensive: 'Marcar como ofensivo',
menu: 'Menú',
},
emojiReactions: {
addReactionTooltip: 'Añadir una reacción',
reactedWith: 'reaccionó con',
},
reportActionsView: {
beginningOfArchivedRoomPartOne: 'Te perdiste la fiesta en ',
beginningOfArchivedRoomPartTwo: ', no hay nada que ver aquí.',
beginningOfChatHistoryDomainRoomPartOne: ({domainRoom}: BeginningOfChatHistoryDomainRoomPartOneParams) =>
`Este chat es con todos los miembros de Expensify en el dominio ${domainRoom}.`,
beginningOfChatHistoryDomainRoomPartTwo: ' Úsalo para chatear con colegas, compartir consejos y hacer preguntas.',
beginningOfChatHistoryAdminRoomPartOne: ({workspaceName}: BeginningOfChatHistoryAdminRoomPartOneParams) =>
`Este chat es con los administradores del espacio de trabajo ${workspaceName}.`,
beginningOfChatHistoryAdminRoomPartTwo: ' Use it to chat about workspace setup and more.',
beginningOfChatHistoryAnnounceRoomPartOne: ({workspaceName}: BeginningOfChatHistoryAnnounceRoomPartOneParams) => `Este chat es con todos en el espacio de trabajo ${workspaceName}.`,
beginningOfChatHistoryAnnounceRoomPartTwo: ` Úsalo para hablar sobre la configuración del espacio de trabajo y más.`,
beginningOfChatHistoryUserRoomPartOne: 'ste chat es para todo lo relacionado con ',
beginningOfChatHistoryUserRoomPartTwo: ' Fue creado por.',
beginningOfChatHistoryInvoiceRoomPartOne: `Este chat es para facturas entre `,
beginningOfChatHistoryInvoiceRoomPartTwo: `. Usa el botón + para enviar una factura.`,
beginningOfChatHistory: 'Este chat es con',
beginningOfChatHistoryPolicyExpenseChatPartOne: 'Aquí es donde ',
beginningOfChatHistoryPolicyExpenseChatPartTwo: ' enviará los gastos al espacio de trabajo ',
beginningOfChatHistoryPolicyExpenseChatPartThree: '. Solo usa el botón +.',
beginningOfChatHistorySelfDM: 'Este es tu espacio personal. Úsalo para notas, tareas, borradores y recordatorios.',
beginningOfChatHistorySystemDM: '¡Bienvenido! Vamos a configurar tu cuenta.',
chatWithAccountManager: 'Chatea con tu gestor de cuenta aquí',
sayHello: '¡Saluda!',
yourSpace: 'Tu espacio',
welcomeToRoom: ({roomName}: WelcomeToRoomParams) => `¡Bienvenido a ${roomName}!`,
usePlusButton: ({additionalText}: UsePlusButtonParams) => `\nUsa el botón + para ${additionalText} un gasto`,
askConcierge: 'Haz preguntas y obtén soporte en tiempo real las 24/7.',
iouTypes: {
pay: 'pagar',
split: 'dividir',
submit: 'presentar',
track: 'rastrear',
invoice: 'facturar',
},
},
adminOnlyCanPost: 'Solo los administradores pueden enviar mensajes en esta sala.',
reportAction: {
asCopilot: 'como copiloto de',
},
mentionSuggestions: {
hereAlternateText: 'Notificar a todos en esta conversación',
},
newMessages: 'Mensajes nuevos',
youHaveBeenBanned: 'Nota: Se te ha prohibido comunicarte en este canal',
reportTypingIndicator: {
isTyping: 'está escribiendo...',
areTyping: 'están escribiendo...',
multipleUsers: 'Varios miembros',
},
reportArchiveReasons: {
[CONST.REPORT.ARCHIVE_REASON.DEFAULT]: 'Esta sala de chat ha sido eliminada.',
[CONST.REPORT.ARCHIVE_REASON.ACCOUNT_CLOSED]: ({displayName}: ReportArchiveReasonsClosedParams) => `Este chat está desactivado porque ${displayName} ha cerrado tu cuenta.`,
[CONST.REPORT.ARCHIVE_REASON.ACCOUNT_MERGED]: ({displayName, oldDisplayName}: ReportArchiveReasonsMergedParams) =>
`Este chat está desactivado porque ${oldDisplayName} ha combinado tu cuenta con ${displayName}`,
[CONST.REPORT.ARCHIVE_REASON.REMOVED_FROM_POLICY]: ({displayName, policyName, shouldUseYou = false}: ReportArchiveReasonsRemovedFromPolicyParams) =>
shouldUseYou
? `Este chat ya no está activo porque <strong>tu</strong> ya no eres miembro del espacio de trabajo ${policyName}.`
: `Este chat está desactivado porque ${displayName} ha dejado de ser miembro del espacio de trabajo ${policyName}.`,
[CONST.REPORT.ARCHIVE_REASON.POLICY_DELETED]: ({policyName}: ReportArchiveReasonsInvoiceReceiverPolicyDeletedParams) =>
`Este chat está desactivado porque el espacio de trabajo ${policyName} se ha eliminado.`,
[CONST.REPORT.ARCHIVE_REASON.INVOICE_RECEIVER_POLICY_DELETED]: ({policyName}: ReportArchiveReasonsInvoiceReceiverPolicyDeletedParams) =>
`Este chat está desactivado porque el espacio de trabajo ${policyName} se ha eliminado.`,
[CONST.REPORT.ARCHIVE_REASON.BOOKING_END_DATE_HAS_PASSED]: 'Esta reserva está archivada.',
},
writeCapabilityPage: {
label: 'Quién puede postear',
writeCapability: {
all: 'Todos los miembros',
admins: 'Solo administradores',
},
},
sidebarScreen: {
buttonFind: 'Encuentre algo...',
buttonMySettings: 'Mi configuración',
fabNewChat: 'Iniciar chat',
fabNewChatExplained: 'Iniciar chat (Acción flotante)',
chatPinned: 'Chat fijado',
draftedMessage: 'Mensaje borrador',
listOfChatMessages: 'Lista de mensajes del chat',
listOfChats: 'lista de chats',
saveTheWorld: 'Salvar el mundo',
tooltip: '¡Comienza aquí!',
},
allSettingsScreen: {
subscription: 'Suscripcion',
domains: 'Dominios',
},
tabSelector: {
chat: 'Chat',
room: 'Sala',
distance: 'Distancia',
manual: 'Manual',
scan: 'Escanear',
},
spreadsheet: {
upload: 'Importar',
dragAndDrop: 'Arrastra y suelta un archivo de hoja de cálculo aquí',
chooseSpreadsheet: 'Subir',
fileContainsHeader: 'El archivo contiene encabezados',
column: ({name}: SpreadSheetColumnParams) => `Columna ${name}`,
fieldNotMapped: ({fieldName}: SpreadFieldNameParams) => `¡Vaya! Un campo obligatorio ("${fieldName}") no ha sido mapeado. Por favor, revisa e inténtalo de nuevo.`,
singleFieldMultipleColumns: ({fieldName}: SpreadFieldNameParams) => `¡Vaya! Has mapeado un solo campo ("${fieldName}") a varias columnas. Por favor, revisa e inténtalo de nuevo.`,
importFailedTitle: 'Fallo en la importación',
importFailedDescription: 'Por favor, asegúrate de que todos los campos estén llenos correctamente e inténtalo de nuevo. Si el problema persiste, por favor contacta a Concierge.',
importCategoriesSuccessfullDescription: ({categories}: SpreadCategoriesParams) => (categories > 1 ? `Se han agregado ${categories} categorías.` : 'Se ha agregado 1 categoría.'),
importMembersSuccessfullDescription: ({members}: ImportMembersSuccessfullDescriptionParams) => (members > 1 ? `Se han agregado ${members} miembros.` : 'Se ha agregado 1 miembro.'),
importTagsSuccessfullDescription: ({tags}: ImportTagsSuccessfullDescriptionParams) => (tags > 1 ? `Se han agregado ${tags} etiquetas.` : 'Se ha agregado 1 etiqueta.'),
importSuccessfullTitle: 'Importar categorías',
importDescription: 'Elige qué campos mapear desde tu hoja de cálculo haciendo clic en el menú desplegable junto a cada columna importada a continuación.',
sizeNotMet: 'El archivo adjunto debe ser más grande que 0 bytes.',
invalidFileMessage:
'El archivo que subiste está vacío o contiene datos no válidos. Asegúrate de que el archivo esté correctamente formateado y contenga la información necesaria antes de volver a subirlo.',
importSpreadsheet: 'Importar hoja de cálculo',
downloadCSV: 'Descargar CSV',
},
receipt: {
upload: 'Subir recibo',
dragReceiptBeforeEmail: 'Arrastra un recibo a esta página, reenvíalo a ',
dragReceiptAfterEmail: ' o elije un archivo para subir a continuación.',
chooseReceipt: 'Elige un recibo para subir o reenvía un recibo a ',
takePhoto: 'Haz una foto',
cameraAccess: 'Se requiere acceso a la cámara para hacer fotos de los recibos.',
cameraErrorTitle: 'Error en la cámara',
locationAccessTitle: 'Permitir acceso a la ubicación',
locationAccessMessage: 'El acceso a la ubicación nos ayuda a mantener tu zona horaria y moneda precisas dondequiera que vayas.',
locationErrorTitle: 'Permitir acceso a la ubicación',
locationErrorMessage: 'El acceso a la ubicación nos ayuda a mantener tu zona horaria y moneda precisas dondequiera que vayas.',
cameraErrorMessage: 'Se ha producido un error al hacer una foto. Por favor, inténtalo de nuevo.',
dropTitle: 'Suéltalo',
dropMessage: 'Suelta tu archivo aquí',
flash: 'flash',
shutter: 'obturador',
gallery: 'galería',
deleteReceipt: 'Eliminar recibo',
deleteConfirmation: '¿Estás seguro de que quieres borrar este recibo?',
addReceipt: 'Añadir recibo',
},
quickAction: {
scanReceipt: 'Escanear recibo',
recordDistance: 'Grabar distancia',
requestMoney: 'Presentar gasto',
splitBill: 'Dividir gasto',
splitScan: 'Dividir recibo',
splitDistance: 'Dividir distancia',
paySomeone: ({name}: PaySomeoneParams = {}) => `Pagar a ${name ?? 'alguien'}`,
assignTask: 'Assignar tarea',
header: 'Acción rápida',
trackManual: 'Crear gasto',
trackScan: 'Crear gasto por recibo',
trackDistance: 'Crear gasto por desplazamiento',
noLongerHaveReportAccess: 'Ya no tienes acceso al destino previo de esta acción rápida. Escoge uno nuevo a continuación.',
updateDestination: 'Actualiza el destino',
tooltip: {
title: '¡Acción rápida! ',
subtitle: 'A un click.',
},
},
iou: {
amount: 'Importe',
taxAmount: 'Importe del impuesto',
taxRate: 'Tasa de impuesto',
approve: 'Aprobar',
approved: 'Aprobado',
cash: 'Efectivo',
card: 'Tarjeta',
original: 'Original',
split: 'Dividir',
splitExpense: 'Dividir gasto',
expense: 'Gasto',
categorize: 'Categorizar',
share: 'Compartir',
participants: 'Participantes',
submitExpense: 'Presentar gasto',
createExpense: 'Crear gasto',
paySomeone: ({name}: PaySomeoneParams = {}) => `Pagar a ${name ?? 'alguien'}`,
trackExpense: 'Seguimiento de gastos',
pay: 'Pagar',
cancelPayment: 'Cancelar el pago',
cancelPaymentConfirmation: '¿Estás seguro de que quieres cancelar este pago?',
viewDetails: 'Ver detalles',
pending: 'Pendiente',
canceled: 'Canceló',
posted: 'Contabilizado',
deleteReceipt: 'Eliminar recibo',
pendingMatchWithCreditCard: 'Recibo pendiente de adjuntar con la transacción de la tarjeta',
pendingMatchWithCreditCardDescription: 'Recibo pendiente de adjuntar con la transacción de la tarjeta. Márcalo como efectivo para cancelar.',
markAsCash: 'Marcar como efectivo',
routePending: 'Ruta pendiente...',
receiptIssuesFound: () => ({
one: 'Problema encontrado',
other: 'Problemas encontrados',
}),
fieldPending: 'Pendiente...',
receiptScanning: 'Escaneando recibo...',
receiptScanInProgress: 'Escaneado de recibo en proceso',
receiptScanInProgressDescription: 'Escaneado de recibo en proceso. Vuelve a comprobarlo más tarde o introduce los detalles ahora.',
defaultRate: 'Tasa predeterminada',
receiptMissingDetails: 'Recibo con campos vacíos',
missingAmount: 'Falta importe',
missingMerchant: 'Falta comerciante',
receiptStatusTitle: 'Escaneando…',
receiptStatusText: 'Solo tú puedes ver este recibo cuando se está escaneando. Vuelve más tarde o introduce los detalles ahora.',
receiptScanningFailed: 'El escaneo de recibo ha fallado. Introduce los detalles manualmente.',
transactionPendingDescription: 'Transacción pendiente. Puede tardar unos días en contabilizarse.',
companyInfo: 'Información de la empresa',
companyInfoDescription: 'Necesitamos algunos detalles más antes de que pueda enviar su primera factura.',
yourCompanyName: 'Nombre de su empresa',
yourCompanyWebsite: 'Sitio web de su empresa',
yourCompanyWebsiteNote: 'Si no tiene un sitio web, puede proporcionar el perfil de LinkedIn o de las redes sociales de su empresa.',
invalidDomainError: 'Ha introducido un dominio no válido. Para continuar, introduzca un dominio válido.',
publicDomainError: 'Ha introducido un dominio público. Para continuar, introduzca un dominio privado.',
expenseCount: ({scanningReceipts = 0, pendingReceipts = 0}: RequestCountParams) => {
const statusText: string[] = [];
if (scanningReceipts > 0) {
statusText.push(`${scanningReceipts} escaneando`);
}
if (pendingReceipts > 0) {
statusText.push(`${pendingReceipts} pendiente`);
}
return {
one: statusText.length > 0 ? `1 gasto (${statusText.join(', ')})` : `1 gasto`,
other: (count: number) => (statusText.length > 0 ? `${count} gastos (${statusText.join(', ')})` : `${count} gastos`),
};
},
deleteExpense: () => ({
one: 'Eliminar gasto',
other: 'Eliminar gastos',
}),
deleteConfirmation: () => ({
one: '¿Estás seguro de que quieres eliminar esta solicitud?',
other: '¿Estás seguro de que quieres eliminar estas solicitudes?',
}),
settledExpensify: 'Pagado',
settledElsewhere: 'Pagado de otra forma',
individual: 'Individual',
business: 'Empresa',
settleExpensify: ({formattedAmount}: SettleExpensifyCardParams) => (formattedAmount ? `Pagar ${formattedAmount} con Expensify` : `Pagar con Expensify`),
settlePersonal: ({formattedAmount}: SettleExpensifyCardParams) => (formattedAmount ? `Pago ${formattedAmount} como individuo` : `Pago individual`),
settlePayment: ({formattedAmount}: SettleExpensifyCardParams) => `Pagar ${formattedAmount}`,
settleBusiness: ({formattedAmount}: SettleExpensifyCardParams) => (formattedAmount ? `Pagar ${formattedAmount} como negocio` : `Pagar como empresa`),
payElsewhere: ({formattedAmount}: SettleExpensifyCardParams) => (formattedAmount ? `Pagar ${formattedAmount} de otra forma` : `Pagar de otra forma`),
nextStep: 'Pasos siguientes',
finished: 'Finalizado',
sendInvoice: ({amount}: RequestAmountParams) => `Enviar factura de ${amount}`,
submitAmount: ({amount}: RequestAmountParams) => `solicitar ${amount}`,
submittedAmount: ({formattedAmount, comment}: RequestedAmountMessageParams) => `solicitó ${formattedAmount}${comment ? ` para ${comment}` : ''}`,
automaticallySubmittedAmount: ({formattedAmount}: RequestedAmountMessageParams) =>
`se enviaron automáticamente ${formattedAmount} mediante <a href="${CONST.DELAYED_SUBMISSION_HELP_URL}">envío diferido</a>`,
trackedAmount: ({formattedAmount, comment}: RequestedAmountMessageParams) => `realizó un seguimiento de ${formattedAmount}${comment ? ` para ${comment}` : ''}`,
splitAmount: ({amount}: SplitAmountParams) => `dividir ${amount}`,
didSplitAmount: ({formattedAmount, comment}: DidSplitAmountMessageParams) => `dividió ${formattedAmount}${comment ? ` para ${comment}` : ''}`,
yourSplit: ({amount}: UserSplitParams) => `Tu parte ${amount}`,
payerOwesAmount: ({payer, amount, comment}: PayerOwesAmountParams) => `${payer} debe ${amount}${comment ? ` para ${comment}` : ''}`,
payerOwes: ({payer}: PayerOwesParams) => `${payer} debe: `,
payerPaidAmount: ({payer, amount}: PayerPaidAmountParams) => `${payer ? `${payer} ` : ''}pagó ${amount}`,
payerPaid: ({payer}: PayerPaidParams) => `${payer} pagó: `,
payerSpentAmount: ({payer, amount}: PayerPaidAmountParams) => `${payer} gastó ${amount}`,
payerSpent: ({payer}: PayerPaidParams) => `${payer} gastó: `,
managerApproved: ({manager}: ManagerApprovedParams) => `${manager} aprobó:`,
managerApprovedAmount: ({manager, amount}: ManagerApprovedAmountParams) => `${manager} aprobó ${amount}`,
payerSettled: ({amount}: PayerSettledParams) => `pagó ${amount}`,
payerSettledWithMissingBankAccount: ({amount}: PayerSettledParams) => `pagó ${amount}. Agrega una cuenta bancaria para recibir tu pago.`,
approvedAmount: ({amount}: ApprovedAmountParams) => `aprobó ${amount}`,
forwardedAmount: ({amount}: ForwardedAmountParams) => `aprobó ${amount}`,
rejectedThisReport: 'rechazó este informe',
waitingOnBankAccount: ({submitterDisplayName}: WaitingOnBankAccountParams) => `inició el pago, pero no se procesará hasta que ${submitterDisplayName} añada una cuenta bancaria`,
adminCanceledRequest: ({manager, amount}: AdminCanceledRequestParams) => `${manager ? `${manager}: ` : ''}canceló el pago de ${amount}.`,
canceledRequest: ({amount, submitterDisplayName}: CanceledRequestParams) =>
`canceló el pago ${amount}, porque ${submitterDisplayName} no habilitó tu Billetera Expensify en un plazo de 30 días.`,
settledAfterAddedBankAccount: ({submitterDisplayName, amount}: SettledAfterAddedBankAccountParams) =>
`${submitterDisplayName} añadió una cuenta bancaria. El pago de ${amount} se ha realizado.`,
paidElsewhereWithAmount: ({payer, amount}: PaidElsewhereWithAmountParams) => `${payer ? `${payer} ` : ''}pagó ${amount} de otra forma`,
paidWithExpensifyWithAmount: ({payer, amount}: PaidWithExpensifyWithAmountParams) => `${payer ? `${payer} ` : ''}pagó ${amount} con Expensify`,
automaticallyPaidWithExpensify: ({payer, amount}: PaidWithExpensifyWithAmountParams) =>
`${payer ? `${payer} ` : ''}auto-pagó ${amount} con Expensify via <a href="${CONST.CONFIGURE_REIMBURSEMENT_SETTINGS_HELP_URL}">reglas del espacio de trabajo</a>`,
noReimbursableExpenses: 'El importe de este informe no es válido',
pendingConversionMessage: 'El total se actualizará cuando estés online',
changedTheExpense: 'cambió el gasto',
setTheRequest: ({valueName, newValueToDisplay}: SetTheRequestParams) => `${valueName === 'comerciante' ? 'el' : 'la'} ${valueName} a ${newValueToDisplay}`,
setTheDistanceMerchant: ({translatedChangedField, newMerchant, newAmountToDisplay}: SetTheDistanceMerchantParams) =>
`estableció la ${translatedChangedField} a ${newMerchant}, lo que estableció el importe a ${newAmountToDisplay}`,
removedTheRequest: ({valueName, oldValueToDisplay}: RemovedTheRequestParams) => `${valueName === 'comerciante' ? 'el' : 'la'} ${valueName} (previamente ${oldValueToDisplay})`,
updatedTheRequest: ({valueName, newValueToDisplay, oldValueToDisplay}: UpdatedTheRequestParams) =>
`${valueName === 'comerciante' || valueName === 'importe' || valueName === 'gasto' ? 'el' : 'la'} ${valueName} a ${newValueToDisplay} (previamente ${oldValueToDisplay})`,
updatedTheDistanceMerchant: ({translatedChangedField, newMerchant, oldMerchant, newAmountToDisplay, oldAmountToDisplay}: UpdatedTheDistanceMerchantParams) =>
`cambió la ${translatedChangedField} a ${newMerchant} (previamente ${oldMerchant}), lo que cambió el importe a ${newAmountToDisplay} (previamente ${oldAmountToDisplay})`,
threadExpenseReportName: ({formattedAmount, comment}: ThreadRequestReportNameParams) => `${comment ? `${formattedAmount} para ${comment}` : `Gasto de ${formattedAmount}`}`,
threadTrackReportName: ({formattedAmount, comment}: ThreadRequestReportNameParams) => `Seguimiento ${formattedAmount} ${comment ? `para ${comment}` : ''}`,
threadPaySomeoneReportName: ({formattedAmount, comment}: ThreadSentMoneyReportNameParams) => `${formattedAmount} enviado${comment ? ` para ${comment}` : ''}`,
tagSelection: 'Selecciona una etiqueta para organizar mejor tus gastos.',
categorySelection: 'Selecciona una categoría para organizar mejor tus gastos.',
error: {
invalidCategoryLength: 'La longitud de la categoría escogida excede el máximo permitido (255). Por favor, escoge otra categoría o acorta la categoría primero.',
invalidAmount: 'Por favor, ingresa un importe válido antes de continuar.',
invalidTaxAmount: ({amount}: RequestAmountParams) => `El importe máximo del impuesto es ${amount}`,
invalidSplit: 'La suma de las partes debe ser igual al importe total.',
invalidSplitParticipants: 'Introduce un importe superior a cero para al menos dos participantes.',
invalidSplitYourself: 'Por favor, introduce una cantidad diferente de cero para tu parte.',
other: 'Error inesperado. Por favor, inténtalo más tarde.',
genericHoldExpenseFailureMessage: 'Error inesperado al bloquear el gasto. Por favor, inténtalo de nuevo más tarde.',
genericUnholdExpenseFailureMessage: 'Error inesperado al desbloquear el gasto. Por favor, inténtalo de nuevo más tarde.',
genericCreateFailureMessage: 'Error inesperado al enviar este gasto. Por favor, inténtalo más tarde.',
genericCreateInvoiceFailureMessage: 'Error inesperado al enviar la factura. Por favor, inténtalo de nuevo más tarde.',
receiptDeleteFailureError: 'Error inesperado al borrar este recibo. Por favor, vuelve a intentarlo más tarde.',
receiptFailureMessage: 'El recibo no se subió.',
// eslint-disable-next-line rulesdir/use-periods-for-error-messages
saveFileMessage: 'Guarda el archivo ',
loseFileMessage: 'o descarta este error y piérdelo.',
genericDeleteFailureMessage: 'Error inesperado al eliminar este gasto. Por favor, inténtalo más tarde.',
genericEditFailureMessage: 'Error inesperado al editar este gasto. Por favor, inténtalo más tarde.',
genericSmartscanFailureMessage: 'La transacción tiene campos vacíos.',
duplicateWaypointsErrorMessage: 'Por favor, elimina los puntos de ruta duplicados.',
atLeastTwoDifferentWaypoints: 'Por favor, introduce al menos dos direcciones diferentes.',
splitExpenseMultipleParticipantsErrorMessage: 'Solo puedes dividir un gasto entre un único espacio de trabajo o con miembros individuales. Por favor, actualiza tu selección.',
invalidMerchant: 'Por favor, introduce un comerciante correcto.',
},
waitingOnEnabledWallet: ({submitterDisplayName}: WaitingOnBankAccountParams) => `inició el pago, pero no se procesará hasta que ${submitterDisplayName} active su billetera`,
enableWallet: 'Habilitar billetera',
holdExpense: 'Bloquear gasto',
unholdExpense: 'Desbloquear gasto',
heldExpense: 'bloqueó este gasto',
unheldExpense: 'desbloqueó este gasto',
explainHold: 'Explica la razón para bloquear esta solicitud.',
reason: 'Razón',
holdReasonRequired: 'Se requiere una razón para bloquear.',
expenseOnHold: 'Este gasto está bloqueado. Revisa los comentarios para saber como proceder.',
expensesOnHold: 'Todos los gastos quedaron bloqueados. Revisa los comentarios para saber como proceder.',
expenseDuplicate: 'Esta solicitud tiene los mismos detalles que otra. Revisa los duplicados para eliminar el bloqueo.',
someDuplicatesArePaid: 'Algunos de estos duplicados ya han sido aprobados o pagados.',
reviewDuplicates: 'Revisar duplicados',
keepAll: 'Mantener todos',
confirmApprove: 'Confirmar importe a aprobar',
confirmApprovalAmount: 'Aprueba sólo los gastos conformes, o aprueba todo el informe.',
confirmApprovalAllHoldAmount: () => ({
one: 'Este gasto está bloqueado. ¿Quieres aprobarlo de todos modos?',
other: 'Estos gastos están bloqueados. ¿Quieres aprobarlos de todos modos?',
}),
confirmPay: 'Confirmar importe de pago',
confirmPayAmount: 'Paga lo que no está bloqueado, o paga el informe completo.',
confirmPayAllHoldAmount: () => ({
one: 'Este gasto está bloqueado. ¿Quieres pagarlo de todos modos?',
other: 'Estos gastos están bloqueados. ¿Quieres pagarlos de todos modos?',
}),
payOnly: 'Solo pagar',
approveOnly: 'Solo aprobar',
hold: 'Bloquear',
unhold: 'Desbloquear',
holdEducationalTitle: 'Este gasto está',
whatIsHoldTitle: '¿Qué es Bloquear?',
whatIsHoldExplain: 'Bloquear es nuestra forma de agilizar la colaboración financiera. ¡"Rechazar" es tan duro!',
holdIsTemporaryTitle: 'Bloquear suele ser temporal',