diff --git a/src/components/AddressForm.tsx b/src/components/AddressForm.tsx
index 181190035104..62b3fe7b724e 100644
--- a/src/components/AddressForm.tsx
+++ b/src/components/AddressForm.tsx
@@ -134,7 +134,7 @@ function AddressForm({
if (countrySpecificZipRegex) {
if (!countrySpecificZipRegex.test(values.zipPostCode?.trim().toUpperCase())) {
if (isRequiredFulfilled(values.zipPostCode?.trim())) {
- errors.zipPostCode = translate('privatePersonalDetails.error.incorrectZipFormat', {zipFormat: countryZipFormat});
+ errors.zipPostCode = translate('privatePersonalDetails.error.incorrectZipFormat', countryZipFormat);
} else {
errors.zipPostCode = translate('common.error.fieldRequired');
}
diff --git a/src/components/ExceededCommentLength.tsx b/src/components/ExceededCommentLength.tsx
index 9efd896d005c..8996a69c0ba8 100644
--- a/src/components/ExceededCommentLength.tsx
+++ b/src/components/ExceededCommentLength.tsx
@@ -20,7 +20,7 @@ function ExceededCommentLength({maxCommentLength = CONST.MAX_COMMENT_LENGTH, isT
style={[styles.textMicro, styles.textDanger, styles.chatItemComposeSecondaryRow, styles.mlAuto, styles.pl2]}
numberOfLines={1}
>
- {translate(translationKey, {formattedMaxLength: numberFormat(maxCommentLength)})}
+ {translate(translationKey, numberFormat(maxCommentLength))}
);
}
diff --git a/src/components/FocusModeNotification.tsx b/src/components/FocusModeNotification.tsx
index 2d127e86175b..585ce4558a52 100644
--- a/src/components/FocusModeNotification.tsx
+++ b/src/components/FocusModeNotification.tsx
@@ -31,7 +31,7 @@ function FocusModeNotification({onClose}: FocusModeNotificationProps) {
onCancel={onClose}
prompt={
-
+
}
isVisible
diff --git a/src/components/ImportColumn.tsx b/src/components/ImportColumn.tsx
index 3f6451882dd9..0d97ce652cd0 100644
--- a/src/components/ImportColumn.tsx
+++ b/src/components/ImportColumn.tsx
@@ -178,7 +178,7 @@ function ImportColumn({column, columnName, columnRoles, columnIndex, shouldShowD
// eslint-disable-next-line react-hooks/exhaustive-deps -- we don't want this effect to run again
}, []);
- const columnHeader = containsHeader ? column.at(0) : translate('spreadsheet.column', {name: columnName});
+ const columnHeader = containsHeader ? column.at(0) : translate('spreadsheet.column', columnName);
return (
diff --git a/src/components/UploadFile.tsx b/src/components/UploadFile.tsx
index 09737c4fbcf0..385648ab87dc 100644
--- a/src/components/UploadFile.tsx
+++ b/src/components/UploadFile.tsx
@@ -83,7 +83,7 @@ function UploadFile({
}
if (fileLimit && resultedFiles.length > 0 && resultedFiles.length > fileLimit) {
- setError(translate('attachmentPicker.tooManyFiles', {fileLimit}));
+ setError(translate('attachmentPicker.tooManyFiles', fileLimit));
return;
}
diff --git a/src/languages/de.ts b/src/languages/de.ts
index 020ccf7147e6..4fce8c3bc9a3 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -28,24 +28,6 @@ import type {
EditActionParams,
ExportAgainModalDescriptionParams,
ExportIntegrationSelectedParams,
- FileLimitParams,
- FileTypeParams,
- FiltersAmountBetweenParams,
- FlightLayoverParams,
- FlightParams,
- FocusModeUpdateParams,
- FormattedMaxLengthParams,
- GoBackMessageParams,
- HarvestCreatedExpenseReportParams,
- ImportedTagsMessageParams,
- ImportedTypesParams,
- ImportFieldParams,
- ImportMembersSuccessfulDescriptionParams,
- ImportPerDiemRatesSuccessfulDescriptionParams,
- ImportTagsSuccessfulDescriptionParams,
- IncorrectZipFormatParams,
- IndividualExpenseRulesSubtitleParams,
- InstantSummaryParams,
IntacctMappingTitleParams,
IntegrationExportParams,
IntegrationSyncFailedParams,
@@ -133,9 +115,6 @@ import type {
SplitDateRangeParams,
SplitExpenseEditTitleParams,
SplitExpenseSubtitleParams,
- SpreadCategoriesParams,
- SpreadFieldNameParams,
- SpreadSheetColumnParams,
StatementTitleParams,
StepCounterParams,
StripePaidParams,
@@ -708,12 +687,12 @@ const translations: TranslationDeepObject = {
protectedPDFNotSupported: 'Passwortgeschützte PDF-Datei wird nicht unterstützt',
attachmentImageResized: 'Dieses Bild wurde für die Vorschau verkleinert. Für die volle Auflösung herunterladen.',
attachmentImageTooLarge: 'Dieses Bild ist zu groß, um vor dem Hochladen eine Vorschau anzuzeigen.',
- tooManyFiles: ({fileLimit}: FileLimitParams) => `Sie können jeweils nur bis zu ${fileLimit} Dateien hochladen.`,
+ tooManyFiles: (fileLimit: number) => `Sie können jeweils nur bis zu ${fileLimit} Dateien hochladen.`,
sizeExceededWithValue: ({maxUploadSizeInMB}: SizeExceededParams) => `Datei überschreitet ${maxUploadSizeInMB} MB. Bitte versuche es erneut.`,
someFilesCantBeUploaded: 'Einige Dateien können nicht hochgeladen werden',
sizeLimitExceeded: ({maxUploadSizeInMB}: SizeExceededParams) => `Dateien müssen kleiner als ${maxUploadSizeInMB} MB sein. Größere Dateien werden nicht hochgeladen.`,
maxFileLimitExceeded: 'Sie können bis zu 30 Belege auf einmal hochladen. Alle weiteren werden nicht hochgeladen.',
- unsupportedFileType: ({fileType}: FileTypeParams) => `${fileType}-Dateien werden nicht unterstützt. Es werden nur unterstützte Dateitypen hochgeladen.`,
+ unsupportedFileType: (fileType: string) => `${fileType}-Dateien werden nicht unterstützt. Es werden nur unterstützte Dateitypen hochgeladen.`,
learnMoreAboutSupportedFiles: 'Erfahren Sie mehr über unterstützte Formate.',
passwordProtected: 'Passwortgeschützte PDFs werden nicht unterstützt. Es werden nur unterstützte Dateien hochgeladen.',
},
@@ -738,8 +717,8 @@ const translations: TranslationDeepObject = {
composer: {
noExtensionFoundForMimeType: 'Keine Erweiterung für diesen MIME-Typ gefunden',
problemGettingImageYouPasted: 'Es gab ein Problem beim Abrufen des von dir eingefügten Bildes',
- commentExceededMaxLength: ({formattedMaxLength}: FormattedMaxLengthParams) => `Die maximale Kommentarlänge beträgt ${formattedMaxLength} Zeichen.`,
- taskTitleExceededMaxLength: ({formattedMaxLength}: FormattedMaxLengthParams) => `Die maximale Aufgabenüberschrift darf ${formattedMaxLength} Zeichen lang sein.`,
+ commentExceededMaxLength: (formattedMaxLength: string) => `Die maximale Kommentarlänge beträgt ${formattedMaxLength} Zeichen.`,
+ taskTitleExceededMaxLength: (formattedMaxLength: string) => `Die maximale Aufgabenüberschrift darf ${formattedMaxLength} Zeichen lang sein.`,
},
baseUpdateAppModal: {
updateApp: 'App aktualisieren',
@@ -920,7 +899,7 @@ const translations: TranslationDeepObject = {
adminOnlyCanPost: 'Nur Administratoren können Nachrichten in diesem Raum senden.',
reportAction: {
asCopilot: 'als Copilot für',
- harvestCreatedExpenseReport: ({reportUrl, reportName}: HarvestCreatedExpenseReportParams) =>
+ harvestCreatedExpenseReport: (reportUrl: string, reportName: string) =>
`hat diesen Bericht erstellt, um alle Ausgaben aus ${reportName} aufzunehmen, die mit der von dir gewählten Frequenz nicht eingereicht werden konnten`,
createdReportForUnapprovedTransactions: ({reportUrl, reportName}: CreatedReportForUnapprovedTransactionsParams) =>
`hat diesen Bericht für alle zurückgehaltenen Ausgaben aus ${reportName} erstellt`,
@@ -990,15 +969,13 @@ const translations: TranslationDeepObject = {
chooseSpreadsheet: 'Wählen Sie eine Tabellenkalkulationsdatei zum Importieren aus. Unterstützte Formate: .csv, .txt, .xls und .xlsx.',
chooseSpreadsheetMultiLevelTag: `Wähle eine Tabellenkalkulationsdatei zum Importieren aus. Erfahre mehr über unterstützte Dateiformate.`,
fileContainsHeader: 'Datei enthält Spaltenüberschriften',
- column: ({name}: SpreadSheetColumnParams) => `Spalte ${name}`,
- fieldNotMapped: ({fieldName}: SpreadFieldNameParams) => `Ups! Ein erforderliches Feld („${fieldName}“) wurde nicht zugeordnet. Bitte überprüfen und erneut versuchen.`,
- singleFieldMultipleColumns: ({fieldName}: SpreadFieldNameParams) =>
- `Ups! Du hast ein einzelnes Feld („${fieldName}“) mehreren Spalten zugeordnet. Bitte überprüfe dies und versuche es erneut.`,
- emptyMappedField: ({fieldName}: SpreadFieldNameParams) =>
- `Ups! Das Feld („${fieldName}“) enthält einen oder mehrere leere Werte. Bitte überprüfen Sie es und versuchen Sie es erneut.`,
+ column: (name: string) => `Spalte ${name}`,
+ fieldNotMapped: (fieldName: string) => `Ups! Ein erforderliches Feld („${fieldName}“) wurde nicht zugeordnet. Bitte überprüfen und erneut versuchen.`,
+ singleFieldMultipleColumns: (fieldName: string) => `Ups! Du hast ein einzelnes Feld („${fieldName}“) mehreren Spalten zugeordnet. Bitte überprüfe dies und versuche es erneut.`,
+ emptyMappedField: (fieldName: string) => `Ups! Das Feld („${fieldName}“) enthält einen oder mehrere leere Werte. Bitte überprüfen Sie es und versuchen Sie es erneut.`,
importSuccessfulTitle: 'Import erfolgreich',
- importCategoriesSuccessfulDescription: ({categories}: SpreadCategoriesParams) => (categories > 1 ? `${categories} Kategorien wurden hinzugefügt.` : '1 Kategorie wurde hinzugefügt.'),
- importMembersSuccessfulDescription: ({added, updated}: ImportMembersSuccessfulDescriptionParams) => {
+ importCategoriesSuccessfulDescription: ({categories}: {categories: number}) => (categories > 1 ? `${categories} Kategorien wurden hinzugefügt.` : '1 Kategorie wurde hinzugefügt.'),
+ importMembersSuccessfulDescription: ({added, updated}: {added: number; updated: number}) => {
if (!added && !updated) {
return 'Es wurden keine Mitglieder hinzugefügt oder aktualisiert.';
}
@@ -1010,10 +987,9 @@ const translations: TranslationDeepObject = {
}
return added > 1 ? `${added} Mitglieder wurden hinzugefügt.` : '1 Mitglied wurde hinzugefügt.';
},
- importTagsSuccessfulDescription: ({tags}: ImportTagsSuccessfulDescriptionParams) => (tags > 1 ? `${tags} Tags wurden hinzugefügt.` : '1 Tag wurde hinzugefügt.'),
+ importTagsSuccessfulDescription: ({tags}: {tags: number}) => (tags > 1 ? `${tags} Tags wurden hinzugefügt.` : '1 Tag wurde hinzugefügt.'),
importMultiLevelTagsSuccessfulDescription: 'Hierarchische Tags wurden hinzugefügt.',
- importPerDiemRatesSuccessfulDescription: ({rates}: ImportPerDiemRatesSuccessfulDescriptionParams) =>
- rates > 1 ? `${rates} Übernachtungspauschalen wurden hinzugefügt.` : '1 Pauschale wurde hinzugefügt.',
+ importPerDiemRatesSuccessfulDescription: ({rates}: {rates: number}) => (rates > 1 ? `${rates} Übernachtungspauschalen wurden hinzugefügt.` : '1 Pauschale wurde hinzugefügt.'),
importFailedTitle: 'Import fehlgeschlagen',
importFailedDescription: 'Bitte stelle sicher, dass alle Felder korrekt ausgefüllt sind, und versuche es erneut. Wenn das Problem weiterhin besteht, wende dich bitte an Concierge.',
importDescription: 'Wählen Sie aus, welche Felder aus Ihrer Tabelle zugeordnet werden sollen, indem Sie auf das Dropdown-Menü neben jeder der importierten Spalten unten klicken.',
@@ -2349,7 +2325,7 @@ ${amount} für ${merchant} – ${date}`,
transferAmountPage: {
transfer: ({amount}: TransferParams) => `Überweisen${amount ? ` ${amount}` : ''}`,
instant: 'Sofort (Debitkarte)',
- instantSummary: ({rate, minAmount}: InstantSummaryParams) => `${rate}% Gebühr (mindestens ${minAmount})`,
+ instantSummary: (rate: string, minAmount: string) => `${rate}% Gebühr (mindestens ${minAmount})`,
ach: '1–3 Werktage (Bankkonto)',
achSummary: 'Keine Gebühr',
whichAccount: 'Welches Konto?',
@@ -2884,7 +2860,7 @@ ${
dateShouldBeBefore: (dateString: string) => `Das Datum sollte vor dem ${dateString} liegen`,
dateShouldBeAfter: (dateString: string) => `Datum muss nach ${dateString} liegen`,
hasInvalidCharacter: 'Name darf nur lateinische Zeichen enthalten',
- incorrectZipFormat: ({zipFormat}: IncorrectZipFormatParams = {}) => `Ungültiges Postleitzahlformat${zipFormat ? `Akzeptables Format: ${zipFormat}` : ''}`,
+ incorrectZipFormat: (zipFormat?: string) => `Ungültiges Postleitzahlformat${zipFormat ? `Akzeptables Format: ${zipFormat}` : ''}`,
invalidPhoneNumber: `Bitte stelle sicher, dass die Telefonnummer gültig ist (z. B. ${CONST.EXAMPLE_PHONE_NUMBER})`,
},
},
@@ -2968,7 +2944,7 @@ ${
},
focusModeUpdateModal: {
title: 'Willkommen im #Focus-Modus!',
- prompt: ({priorityModePageUrl}: FocusModeUpdateParams) =>
+ prompt: (priorityModePageUrl: string) =>
`Behalte den Überblick, indem du nur ungelesene Chats oder Chats siehst, die deine Aufmerksamkeit erfordern. Keine Sorge, du kannst dies jederzeit in den Einstellungen ändern.`,
},
notFound: {
@@ -3641,7 +3617,7 @@ ${
flight: 'Flug',
flightDetails: {
passenger: 'Passagier',
- layover: ({layover}: FlightLayoverParams) => `Sie haben einen ${layover} Zwischenstopp vor diesem Flug`,
+ layover: (layover: string) => `Sie haben einen ${layover} Zwischenstopp vor diesem Flug`,
takeOff: 'Abflug',
landing: 'Startseite',
seat: 'Sitz',
@@ -3732,17 +3708,18 @@ ${
`Aktivierung von Reisen für die Domain ${domain} fehlgeschlagen. Bitte überprüfen Sie diese Domain und aktivieren Sie Reisen dafür.`,
},
updates: {
- bookingTicketed: ({airlineCode, origin, destination, startDate, confirmationID = ''}: FlightParams) =>
+ bookingTicketed: (airlineCode: string, origin: string, destination: string, startDate: string, confirmationID = '') =>
`Ihr Flug ${airlineCode} (${origin} → ${destination}) am ${startDate} wurde gebucht. Bestätigungscode: ${confirmationID}`,
- ticketVoided: ({airlineCode, origin, destination, startDate}: FlightParams) =>
+ ticketVoided: (airlineCode: string, origin: string, destination: string, startDate: string) =>
`Ihr Ticket für den Flug ${airlineCode} (${origin} → ${destination}) am ${startDate} wurde storniert.`,
- ticketRefunded: ({airlineCode, origin, destination, startDate}: FlightParams) =>
+ ticketRefunded: (airlineCode: string, origin: string, destination: string, startDate: string) =>
`Ihr Ticket für Flug ${airlineCode} (${origin} → ${destination}) am ${startDate} wurde erstattet oder umgebucht.`,
- flightCancelled: ({airlineCode, origin, destination, startDate}: FlightParams) =>
+ flightCancelled: (airlineCode: string, origin: string, destination: string, startDate: string) =>
`Ihr Flug ${airlineCode} (${origin} → ${destination}) am ${startDate}} wurde von der Fluggesellschaft storniert.`,
flightScheduleChangePending: (airlineCode: string) => `Die Fluggesellschaft hat eine Flugplanänderung für Flug ${airlineCode} vorgeschlagen; wir warten auf die Bestätigung.`,
flightScheduleChangeClosed: (airlineCode: string, startDate?: string) => `Flugplanänderung bestätigt: Flug ${airlineCode} startet jetzt um ${startDate}.`,
- flightUpdated: ({airlineCode, origin, destination, startDate}: FlightParams) => `Ihr Flug ${airlineCode} (${origin} → ${destination}) am ${startDate} wurde aktualisiert.`,
+ flightUpdated: (airlineCode: string, origin: string, destination: string, startDate: string) =>
+ `Ihr Flug ${airlineCode} (${origin} → ${destination}) am ${startDate} wurde aktualisiert.`,
flightCabinChanged: (airlineCode: string, cabinClass?: string) => `Ihre Kabinenklasse wurde für den Flug ${airlineCode} auf ${cabinClass} aktualisiert.`,
flightSeatConfirmed: (airlineCode: string) => `Ihre Sitzplatzzuweisung auf Flug ${airlineCode} wurde bestätigt.`,
flightSeatChanged: (airlineCode: string) => `Ihre Sitzplatzzuweisung auf Flug ${airlineCode} wurde geändert.`,
@@ -4559,7 +4536,7 @@ ${
importTaxDescription: 'Steuergruppen aus NetSuite importieren.',
importCustomFields: {
chooseOptionBelow: 'Wähle eine der folgenden Optionen:',
- label: ({importedTypes}: ImportedTypesParams) => `Importiert als ${importedTypes.join('und')}`,
+ label: (importedTypes: string[]) => `Importiert als ${importedTypes.join('und')}`,
requiredFieldError: ({fieldName}: RequiredFieldParams) => `Bitte geben Sie das ${fieldName} ein`,
customSegments: {
title: 'Benutzerdefinierte Segmente/Einträge',
@@ -4674,18 +4651,18 @@ _Für ausführlichere Anweisungen [besuchen Sie unsere Hilfeseite](${CONST.NETSU
[CONST.INTEGRATION_ENTITY_MAP_TYPES.NETSUITE_DEFAULT]: {
label: 'Standard-NetSuite-Mitarbeiter',
description: 'Nicht in Expensify importiert, beim Export angewendet',
- footerContent: ({importField}: ImportFieldParams) =>
+ footerContent: (importField: string) =>
`Wenn du ${importField} in NetSuite verwendest, wenden wir den Standardwert an, der im Mitarbeitendendatensatz festgelegt ist, sobald nach „Expense Report“ oder „Journal Entry“ exportiert wird.`,
},
[CONST.INTEGRATION_ENTITY_MAP_TYPES.TAG]: {
label: 'Stichwörter',
description: 'Auf Positionsebene',
- footerContent: ({importField}: ImportFieldParams) => `${startCase(importField)} wird für jede einzelne Ausgabe im Bericht eines Mitarbeiters auswählbar sein.`,
+ footerContent: (importField: string) => `${startCase(importField)} wird für jede einzelne Ausgabe im Bericht eines Mitarbeiters auswählbar sein.`,
},
[CONST.INTEGRATION_ENTITY_MAP_TYPES.REPORT_FIELD]: {
label: 'Berichtsfelder',
description: 'Berichtsebene',
- footerContent: ({importField}: ImportFieldParams) => `${startCase(importField)}-Auswahl gilt für alle Ausgaben auf dem Bericht eines Mitarbeiters.`,
+ footerContent: (importField: string) => `${startCase(importField)}-Auswahl gilt für alle Ausgaben auf dem Bericht eines Mitarbeiters.`,
},
},
},
@@ -4763,7 +4740,7 @@ _Für ausführlichere Anweisungen [besuchen Sie unsere Hilfeseite](${CONST.NETSU
commercialFeedPlaidDetails: `Erfordert die Einrichtung mit Ihrer Bank, aber wir führen Sie durch den Prozess. Dies ist in der Regel auf größere Unternehmen beschränkt.`,
directFeedDetails: 'Der einfachste Ansatz. Verbinde dich direkt mit deinen Master-Zugangsdaten. Diese Methode ist am gebräuchlichsten.',
enableFeed: {
- title: ({provider}: GoBackMessageParams) => `Aktiviere deinen ${provider}-Feed`,
+ title: (provider: string) => `Aktiviere deinen ${provider}-Feed`,
heading:
'Wir verfügen über eine direkte Integration mit Ihrem Kartenaussteller und können Ihre Transaktionsdaten schnell und genau in Expensify importieren.\n\nUm zu beginnen, gehen Sie einfach wie folgt vor:',
visa: 'Wir verfügen über globale Integrationen mit Visa, wobei die Berechtigung je nach Bank und Kartenprogramm variiert.\n\nUm loszulegen, gehen Sie einfach wie folgt vor:',
@@ -5327,7 +5304,7 @@ _Für ausführlichere Anweisungen [besuchen Sie unsere Hilfeseite](${CONST.NETSU
prompt3: 'Ein Backup herunterladen',
prompt4: 'zuerst.',
},
- importedTagsMessage: ({columnCounts}: ImportedTagsMessageParams) =>
+ importedTagsMessage: (columnCounts: number) =>
`Wir haben *${columnCounts} Spalten* in Ihrer Tabelle gefunden. Wählen Sie *Name* neben der Spalte aus, die die Tag-Namen enthält. Sie können außerdem *Aktiviert* neben der Spalte auswählen, die den Tag-Status festlegt.`,
cannotDeleteOrDisableAllTags: {
title: 'Es können nicht alle Tags gelöscht oder deaktiviert werden',
@@ -6142,7 +6119,7 @@ Fordere Spesendetails wie Belege und Beschreibungen an, lege Limits und Standard
rules: {
individualExpenseRules: {
title: 'Ausgaben',
- subtitle: ({categoriesPageLink, tagsPageLink}: IndividualExpenseRulesSubtitleParams) =>
+ subtitle: (categoriesPageLink: string, tagsPageLink: string) =>
`Legen Sie Ausgabenkontrollen und Standardwerte für einzelne Ausgaben fest. Sie können auch Regeln für Kategorien und Tags erstellen.`,
receiptRequiredAmount: 'Erforderlicher Belegbetrag',
receiptRequiredAmountDescription: 'Belege verlangen, wenn die Ausgaben diesen Betrag überschreiten, sofern dies nicht durch eine Kategorienregel außer Kraft gesetzt wird.',
@@ -6769,7 +6746,7 @@ Fordere Spesendetails wie Belege und Beschreibungen an, lege Limits und Standard
amount: {
lessThan: ({amount}: OptionalParam = {}) => `Weniger als ${amount ?? ''}`,
greaterThan: ({amount}: OptionalParam = {}) => `Größer als ${amount ?? ''}`,
- between: ({greaterThan, lessThan}: FiltersAmountBetweenParams) => `Zwischen ${greaterThan} und ${lessThan}`,
+ between: (greaterThan: string, lessThan: string) => `Zwischen ${greaterThan} und ${lessThan}`,
equalTo: ({amount}: OptionalParam = {}) => `Gleich ${amount ?? ''}`,
},
card: {
diff --git a/src/languages/en.ts b/src/languages/en.ts
index 9cc61cc8166f..d44fe17542e7 100755
--- a/src/languages/en.ts
+++ b/src/languages/en.ts
@@ -16,24 +16,6 @@ import type {
EditActionParams,
ExportAgainModalDescriptionParams,
ExportIntegrationSelectedParams,
- FileLimitParams,
- FileTypeParams,
- FiltersAmountBetweenParams,
- FlightLayoverParams,
- FlightParams,
- FocusModeUpdateParams,
- FormattedMaxLengthParams,
- GoBackMessageParams,
- HarvestCreatedExpenseReportParams,
- ImportedTagsMessageParams,
- ImportedTypesParams,
- ImportFieldParams,
- ImportMembersSuccessfulDescriptionParams,
- ImportPerDiemRatesSuccessfulDescriptionParams,
- ImportTagsSuccessfulDescriptionParams,
- IncorrectZipFormatParams,
- IndividualExpenseRulesSubtitleParams,
- InstantSummaryParams,
IntacctMappingTitleParams,
IntegrationExportParams,
IntegrationSyncFailedParams,
@@ -121,9 +103,6 @@ import type {
SplitDateRangeParams,
SplitExpenseEditTitleParams,
SplitExpenseSubtitleParams,
- SpreadCategoriesParams,
- SpreadFieldNameParams,
- SpreadSheetColumnParams,
StatementTitleParams,
StepCounterParams,
StripePaidParams,
@@ -694,12 +673,12 @@ const translations = {
protectedPDFNotSupported: 'Password-protected PDF is not supported',
attachmentImageResized: 'This image has been resized for previewing. Download for full resolution.',
attachmentImageTooLarge: 'This image is too large to preview before uploading.',
- tooManyFiles: ({fileLimit}: FileLimitParams) => `You can only upload up to ${fileLimit} files at a time.`,
+ tooManyFiles: (fileLimit: number) => `You can only upload up to ${fileLimit} files at a time.`,
sizeExceededWithValue: ({maxUploadSizeInMB}: SizeExceededParams) => `Files exceeds ${maxUploadSizeInMB} MB. Please try again.`,
someFilesCantBeUploaded: "Some files can't be uploaded",
sizeLimitExceeded: ({maxUploadSizeInMB}: SizeExceededParams) => `Files must be under ${maxUploadSizeInMB} MB. Any larger files won't be uploaded.`,
maxFileLimitExceeded: "You can upload up to 30 receipts at a time. Any extras won't be uploaded.",
- unsupportedFileType: ({fileType}: FileTypeParams) => `${fileType} files aren't supported. Only supported file types will be uploaded.`,
+ unsupportedFileType: (fileType: string) => `${fileType} files aren't supported. Only supported file types will be uploaded.`,
learnMoreAboutSupportedFiles: 'Learn more about supported formats.',
passwordProtected: "Password-protected PDFs aren't supported. Only supported files will be uploaded.",
},
@@ -724,8 +703,8 @@ const translations = {
composer: {
noExtensionFoundForMimeType: 'No extension found for mime type',
problemGettingImageYouPasted: 'There was a problem getting the image you pasted',
- commentExceededMaxLength: ({formattedMaxLength}: FormattedMaxLengthParams) => `The maximum comment length is ${formattedMaxLength} characters.`,
- taskTitleExceededMaxLength: ({formattedMaxLength}: FormattedMaxLengthParams) => `The maximum task title length is ${formattedMaxLength} characters.`,
+ commentExceededMaxLength: (formattedMaxLength: string) => `The maximum comment length is ${formattedMaxLength} characters.`,
+ taskTitleExceededMaxLength: (formattedMaxLength: string) => `The maximum task title length is ${formattedMaxLength} characters.`,
},
baseUpdateAppModal: {
updateApp: 'Update app',
@@ -904,7 +883,7 @@ const translations = {
adminOnlyCanPost: 'Only admins can send messages in this room.',
reportAction: {
asCopilot: 'as copilot for',
- harvestCreatedExpenseReport: ({reportUrl, reportName}: HarvestCreatedExpenseReportParams) =>
+ harvestCreatedExpenseReport: (reportUrl: string, reportName: string) =>
`created this report to hold all expenses from ${reportName} that couldn't be submitted on your chosen frequency`,
createdReportForUnapprovedTransactions: ({reportUrl, reportName}: CreatedReportForUnapprovedTransactionsParams) =>
`created this report for any held expenses from ${reportName}`,
@@ -981,13 +960,13 @@ const translations = {
chooseSpreadsheet: 'Select a spreadsheet file to import. Supported formats: .csv, .txt, .xls, and .xlsx.',
chooseSpreadsheetMultiLevelTag: `Select a spreadsheet file to import. Learn more about supported file formats.`,
fileContainsHeader: 'File contains column headers',
- column: ({name}: SpreadSheetColumnParams) => `Column ${name}`,
- fieldNotMapped: ({fieldName}: SpreadFieldNameParams) => `Oops! A required field ("${fieldName}") hasn't been mapped. Please review and try again.`,
- singleFieldMultipleColumns: ({fieldName}: SpreadFieldNameParams) => `Oops! You've mapped a single field ("${fieldName}") to multiple columns. Please review and try again.`,
- emptyMappedField: ({fieldName}: SpreadFieldNameParams) => `Oops! The field ("${fieldName}") contains one or more empty values. Please review and try again.`,
+ column: (name: string) => `Column ${name}`,
+ fieldNotMapped: (fieldName: string) => `Oops! A required field ("${fieldName}") hasn't been mapped. Please review and try again.`,
+ singleFieldMultipleColumns: (fieldName: string) => `Oops! You've mapped a single field ("${fieldName}") to multiple columns. Please review and try again.`,
+ emptyMappedField: (fieldName: string) => `Oops! The field ("${fieldName}") contains one or more empty values. Please review and try again.`,
importSuccessfulTitle: 'Import successful',
- importCategoriesSuccessfulDescription: ({categories}: SpreadCategoriesParams) => (categories > 1 ? `${categories} categories have been added.` : '1 category has been added.'),
- importMembersSuccessfulDescription: ({added, updated}: ImportMembersSuccessfulDescriptionParams) => {
+ importCategoriesSuccessfulDescription: ({categories}: {categories: number}) => (categories > 1 ? `${categories} categories have been added.` : '1 category has been added.'),
+ importMembersSuccessfulDescription: ({added, updated}: {added: number; updated: number}) => {
if (!added && !updated) {
return 'No members have been added or updated.';
}
@@ -1002,10 +981,9 @@ const translations = {
return added > 1 ? `${added} members have been added.` : '1 member has been added.';
},
- importTagsSuccessfulDescription: ({tags}: ImportTagsSuccessfulDescriptionParams) => (tags > 1 ? `${tags} tags have been added.` : '1 tag has been added.'),
+ importTagsSuccessfulDescription: ({tags}: {tags: number}) => (tags > 1 ? `${tags} tags have been added.` : '1 tag has been added.'),
importMultiLevelTagsSuccessfulDescription: 'Multi-level tags have been added.',
- importPerDiemRatesSuccessfulDescription: ({rates}: ImportPerDiemRatesSuccessfulDescriptionParams) =>
- rates > 1 ? `${rates} per diem rates have been added.` : '1 per diem rate has been added.',
+ importPerDiemRatesSuccessfulDescription: ({rates}: {rates: number}) => (rates > 1 ? `${rates} per diem rates have been added.` : '1 per diem rate has been added.'),
importFailedTitle: 'Import failed',
importFailedDescription: 'Please ensure all fields are filled out correctly and try again. If the problem persists, please reach out to Concierge.',
importDescription: 'Choose which fields to map from your spreadsheet by clicking the dropdown next to each imported column below.',
@@ -2319,7 +2297,7 @@ const translations = {
transferAmountPage: {
transfer: ({amount}: TransferParams) => `Transfer${amount ? ` ${amount}` : ''}`,
instant: 'Instant (Debit card)',
- instantSummary: ({rate, minAmount}: InstantSummaryParams) => `${rate}% fee (${minAmount} minimum)`,
+ instantSummary: (rate: string, minAmount: string) => `${rate}% fee (${minAmount} minimum)`,
ach: '1-3 Business days (Bank account)',
achSummary: 'No fee',
whichAccount: 'Which account?',
@@ -2868,7 +2846,7 @@ const translations = {
dateShouldBeBefore: (dateString: string) => `Date should be before ${dateString}`,
dateShouldBeAfter: (dateString: string) => `Date should be after ${dateString}`,
hasInvalidCharacter: 'Name can only include Latin characters',
- incorrectZipFormat: ({zipFormat}: IncorrectZipFormatParams = {}) => `Incorrect zip code format${zipFormat ? ` Acceptable format: ${zipFormat}` : ''}`,
+ incorrectZipFormat: (zipFormat?: string) => `Incorrect zip code format${zipFormat ? ` Acceptable format: ${zipFormat}` : ''}`,
invalidPhoneNumber: `Please ensure the phone number is valid (e.g. ${CONST.EXAMPLE_PHONE_NUMBER})`,
},
},
@@ -2948,7 +2926,7 @@ const translations = {
},
focusModeUpdateModal: {
title: 'Welcome to #focus mode!',
- prompt: ({priorityModePageUrl}: FocusModeUpdateParams) =>
+ prompt: (priorityModePageUrl: string) =>
`Stay on top of things by only seeing unread chats or chats that need your attention. Don’t worry, you can change this at any point in settings.`,
},
notFound: {
@@ -3618,7 +3596,7 @@ const translations = {
flight: 'Flight',
flightDetails: {
passenger: 'Passenger',
- layover: ({layover}: FlightLayoverParams) => `You have a ${layover} layover before this flight`,
+ layover: (layover: string) => `You have a ${layover} layover before this flight`,
takeOff: 'Take-off',
landing: 'Landing',
seat: 'Seat',
@@ -3707,17 +3685,18 @@ const translations = {
conciergeMessage: ({domain}: {domain: string}) => `Travel enablement failed for domain: ${domain}. Please review and enable travel for this domain.`,
},
updates: {
- bookingTicketed: ({airlineCode, origin, destination, startDate, confirmationID = ''}: FlightParams) =>
+ bookingTicketed: (airlineCode: string, origin: string, destination: string, startDate: string, confirmationID = '') =>
`Your flight ${airlineCode} (${origin} → ${destination}) on ${startDate} has been booked. Confirmation code: ${confirmationID}`,
- ticketVoided: ({airlineCode, origin, destination, startDate}: FlightParams) =>
+ ticketVoided: (airlineCode: string, origin: string, destination: string, startDate: string) =>
`Your ticket for flight ${airlineCode} (${origin} → ${destination}) on ${startDate} has been voided.`,
- ticketRefunded: ({airlineCode, origin, destination, startDate}: FlightParams) =>
+ ticketRefunded: (airlineCode: string, origin: string, destination: string, startDate: string) =>
`Your ticket for flight ${airlineCode} (${origin} → ${destination}) on ${startDate} has been refunded or exchanged.`,
- flightCancelled: ({airlineCode, origin, destination, startDate}: FlightParams) =>
+ flightCancelled: (airlineCode: string, origin: string, destination: string, startDate: string) =>
`Your flight ${airlineCode} (${origin} → ${destination}) on ${startDate}} has been canceled by the airline.`,
flightScheduleChangePending: (airlineCode: string) => `The airline has proposed a schedule change for flight ${airlineCode}; we are awaiting confirmation.`,
flightScheduleChangeClosed: (airlineCode: string, startDate?: string) => `Schedule change confirmed: flight ${airlineCode} now departs at ${startDate}.`,
- flightUpdated: ({airlineCode, origin, destination, startDate}: FlightParams) => `Your flight ${airlineCode} (${origin} → ${destination}) on ${startDate} has been updated.`,
+ flightUpdated: (airlineCode: string, origin: string, destination: string, startDate: string) =>
+ `Your flight ${airlineCode} (${origin} → ${destination}) on ${startDate} has been updated.`,
flightCabinChanged: (airlineCode: string, cabinClass?: string) => `Your cabin class has been updated to ${cabinClass} on flight ${airlineCode}.`,
flightSeatConfirmed: (airlineCode: string) => `Your seat assignment on flight ${airlineCode} has been confirmed.`,
flightSeatChanged: (airlineCode: string) => `Your seat assignment on flight ${airlineCode} has been changed.`,
@@ -4524,7 +4503,7 @@ const translations = {
importTaxDescription: 'Import tax groups from NetSuite.',
importCustomFields: {
chooseOptionBelow: 'Choose an option below:',
- label: ({importedTypes}: ImportedTypesParams) => `Imported as ${importedTypes.join(' and ')}`,
+ label: (importedTypes: string[]) => `Imported as ${importedTypes.join(' and ')}`,
requiredFieldError: ({fieldName}: RequiredFieldParams) => `Please enter the ${fieldName}`,
customSegments: {
title: 'Custom segments/records',
@@ -4600,18 +4579,18 @@ const translations = {
[CONST.INTEGRATION_ENTITY_MAP_TYPES.NETSUITE_DEFAULT]: {
label: 'NetSuite employee default',
description: 'Not imported into Expensify, applied on export',
- footerContent: ({importField}: ImportFieldParams) =>
+ footerContent: (importField: string) =>
`If you use ${importField} in NetSuite, we'll apply the default set on the employee record upon export to Expense Report or Journal Entry.`,
},
[CONST.INTEGRATION_ENTITY_MAP_TYPES.TAG]: {
label: 'Tags',
description: 'Line-item level',
- footerContent: ({importField}: ImportFieldParams) => `${startCase(importField)} will be selectable for each individual expense on an employee's report.`,
+ footerContent: (importField: string) => `${startCase(importField)} will be selectable for each individual expense on an employee's report.`,
},
[CONST.INTEGRATION_ENTITY_MAP_TYPES.REPORT_FIELD]: {
label: 'Report fields',
description: 'Report level',
- footerContent: ({importField}: ImportFieldParams) => `${startCase(importField)} selection will apply to all expense on an employee's report.`,
+ footerContent: (importField: string) => `${startCase(importField)} selection will apply to all expense on an employee's report.`,
},
},
},
@@ -4688,7 +4667,7 @@ const translations = {
commercialFeedPlaidDetails: `Requires setup with your bank, but we'll guide you. This is typically limited to larger companies.`,
directFeedDetails: 'The simplest approach. Connect right away using your master credentials. This method is most common.',
enableFeed: {
- title: ({provider}: GoBackMessageParams) => `Enable your ${provider} feed`,
+ title: (provider: string) => `Enable your ${provider} feed`,
heading: 'We have a direct integration with your card issuer and can import your transaction data into Expensify quickly and accurately.\n\nTo get started, simply:',
visa: 'We have global integrations with Visa, though eligibility varies by bank and card program.\n\nTo get started, simply:',
mastercard: 'We have global integrations with Mastercard, though eligibility varies by bank and card program.\n\nTo get started, simply:',
@@ -5227,7 +5206,7 @@ const translations = {
prompt3: ' download a backup',
prompt4: ' first.',
},
- importedTagsMessage: ({columnCounts}: ImportedTagsMessageParams) =>
+ importedTagsMessage: (columnCounts: number) =>
`We found *${columnCounts} columns* in your spreadsheet. Select *Name* next to the column that contains tags names. You can also select *Enabled* next to the column that sets tags status.`,
cannotDeleteOrDisableAllTags: {
title: 'Cannot delete or disable all tags',
@@ -6020,7 +5999,7 @@ const translations = {
rules: {
individualExpenseRules: {
title: 'Expenses',
- subtitle: ({categoriesPageLink, tagsPageLink}: IndividualExpenseRulesSubtitleParams) =>
+ subtitle: (categoriesPageLink: string, tagsPageLink: string) =>
`Set spend controls and defaults for individual expenses. You can also create rules for categories and tags.`,
receiptRequiredAmount: 'Receipt required amount',
receiptRequiredAmountDescription: 'Require receipts when spend exceeds this amount, unless overridden by a category rule.',
@@ -6649,7 +6628,7 @@ const translations = {
amount: {
lessThan: ({amount}: OptionalParam = {}) => `Less than ${amount ?? ''}`,
greaterThan: ({amount}: OptionalParam = {}) => `Greater than ${amount ?? ''}`,
- between: ({greaterThan, lessThan}: FiltersAmountBetweenParams) => `Between ${greaterThan} and ${lessThan}`,
+ between: (greaterThan: string, lessThan: string) => `Between ${greaterThan} and ${lessThan}`,
equalTo: ({amount}: OptionalParam = {}) => `Equal to ${amount ?? ''}`,
},
card: {
diff --git a/src/languages/es.ts b/src/languages/es.ts
index 222e2131599a..98e5ed46e666 100644
--- a/src/languages/es.ts
+++ b/src/languages/es.ts
@@ -2,14 +2,7 @@ import {CONST as COMMON_CONST} from 'expensify-common';
import dedent from '@libs/StringUtils/dedent';
import CONST from '@src/CONST';
import type en from './en';
-import type {
- CreatedReportForUnapprovedTransactionsParams,
- HarvestCreatedExpenseReportParams,
- PaidElsewhereParams,
- RoutedDueToDEWParams,
- SplitDateRangeParams,
- ViolationsRterParams,
-} from './params';
+import type {CreatedReportForUnapprovedTransactionsParams, PaidElsewhereParams, RoutedDueToDEWParams, SplitDateRangeParams, ViolationsRterParams} from './params';
import type {TranslationDeepObject} from './types';
/* eslint-disable max-len */
@@ -445,12 +438,12 @@ const translations: TranslationDeepObject = {
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.',
- tooManyFiles: ({fileLimit}) => `Solamente puedes suber ${fileLimit} archivos a la vez.`,
+ tooManyFiles: (fileLimit) => `Solamente puedes suber ${fileLimit} archivos a la vez.`,
sizeExceededWithValue: ({maxUploadSizeInMB}) => `El archivo supera los ${maxUploadSizeInMB} MB. Por favor, vuelve a intentarlo.`,
someFilesCantBeUploaded: 'Algunos archivos no se pueden subir',
sizeLimitExceeded: ({maxUploadSizeInMB}) => `Los archivos deben ser menores a ${maxUploadSizeInMB} MB. Los archivos más grandes no se subirán.`,
maxFileLimitExceeded: 'Puedes subir hasta 30 recibos a la vez. Los extras no se subirán.',
- unsupportedFileType: ({fileType}) => `${fileType} archivos no son compatibles. Solo se subirán los archivos compatibles.`,
+ unsupportedFileType: (fileType) => `${fileType} archivos no son compatibles. Solo se subirán los archivos compatibles.`,
learnMoreAboutSupportedFiles: 'Obtén más información sobre los formatos compatibles.',
passwordProtected: 'Los PDFs con contraseña no son compatibles. Solo se subirán los archivos compatibles',
},
@@ -471,8 +464,8 @@ const translations: TranslationDeepObject = {
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}) => `El comentario debe tener máximo ${formattedMaxLength} caracteres.`,
- taskTitleExceededMaxLength: ({formattedMaxLength}) => `La longitud máxima del título de una tarea es de ${formattedMaxLength} caracteres.`,
+ commentExceededMaxLength: (formattedMaxLength) => `El comentario debe tener máximo ${formattedMaxLength} caracteres.`,
+ taskTitleExceededMaxLength: (formattedMaxLength) => `La longitud máxima del título de una tarea es de ${formattedMaxLength} caracteres.`,
},
baseUpdateAppModal: {
updateApp: 'Actualizar app',
@@ -638,7 +631,7 @@ const translations: TranslationDeepObject = {
adminOnlyCanPost: 'Solo los administradores pueden enviar mensajes en esta sala.',
reportAction: {
asCopilot: 'como copiloto de',
- harvestCreatedExpenseReport: ({reportUrl, reportName}: HarvestCreatedExpenseReportParams) =>
+ harvestCreatedExpenseReport: (reportUrl, reportName) =>
`creó este informe para contener todos los gastos de ${reportName} que no se pudieron enviar con la frecuencia que elegiste`,
createdReportForUnapprovedTransactions: ({reportUrl, reportName}: CreatedReportForUnapprovedTransactionsParams) =>
`creó este informe para cualquier gasto retenido de ${reportName}`,
@@ -712,10 +705,10 @@ const translations: TranslationDeepObject = {
chooseSpreadsheet: 'Elige un archivo de hoja de cálculo para importar. Los formatos soportados son .csv, .txt, .xls y .xlsx.',
chooseSpreadsheetMultiLevelTag: `Elige un archivo de hoja de cálculo para importar. Aprende más sobre los formatos de archivo soportados.`,
fileContainsHeader: 'El archivo contiene encabezados',
- column: ({name}) => `Columna ${name}`,
- fieldNotMapped: ({fieldName}) => `¡Vaya! Un campo obligatorio ("${fieldName}") no ha sido mapeado. Por favor, revisa e inténtalo de nuevo.`,
- singleFieldMultipleColumns: ({fieldName}) => `¡Vaya! Has mapeado un solo campo ("${fieldName}") a varias columnas. Por favor, revisa e inténtalo de nuevo.`,
- emptyMappedField: ({fieldName}) => `¡Vaya! El campo ("${fieldName}") contiene uno o más valores vacíos. Por favor, revísalo e inténtalo de nuevo.`,
+ column: (name) => `Columna ${name}`,
+ fieldNotMapped: (fieldName) => `¡Vaya! Un campo obligatorio ("${fieldName}") no ha sido mapeado. Por favor, revisa e inténtalo de nuevo.`,
+ singleFieldMultipleColumns: (fieldName) => `¡Vaya! Has mapeado un solo campo ("${fieldName}") a varias columnas. Por favor, revisa e inténtalo de nuevo.`,
+ emptyMappedField: (fieldName) => `¡Vaya! El campo ("${fieldName}") contiene uno o más valores vacíos. Por favor, revísalo 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.',
importCategoriesSuccessfulDescription: ({categories}) => (categories > 1 ? `Se han agregado ${categories} categorías.` : 'Se ha agregado 1 categoría.'),
@@ -2035,7 +2028,7 @@ ${amount} para ${merchant} - ${date}`,
transferAmountPage: {
transfer: ({amount}) => `Transferir${amount ? ` ${amount}` : ''}`,
instant: 'Instante',
- instantSummary: ({rate, minAmount}) => `Tarifa del ${rate}% (${minAmount} mínimo)`,
+ instantSummary: (rate, minAmount) => `Tarifa del ${rate}% (${minAmount} mínimo)`,
ach: '1-3 días laborales',
achSummary: 'Sin cargo',
whichAccount: '¿Qué cuenta?',
@@ -2579,7 +2572,7 @@ ${amount} para ${merchant} - ${date}`,
error: {
dateShouldBeBefore: (dateString) => `La fecha debe ser anterior a ${dateString}`,
dateShouldBeAfter: (dateString) => `La fecha debe ser posterior a ${dateString}`,
- incorrectZipFormat: ({zipFormat} = {}) => `Formato de código postal incorrecto.${zipFormat ? ` Formato aceptable: ${zipFormat}` : ''}`,
+ incorrectZipFormat: (zipFormat) => `Formato de código postal incorrecto.${zipFormat ? ` Formato aceptable: ${zipFormat}` : ''}`,
hasInvalidCharacter: 'El nombre sólo puede incluir caracteres latinos',
invalidPhoneNumber: `Asegúrese de que el número de teléfono sean válidos (p. ej. ${CONST.EXAMPLE_PHONE_NUMBER})`,
},
@@ -2653,7 +2646,7 @@ ${amount} para ${merchant} - ${date}`,
},
focusModeUpdateModal: {
title: '¡Bienvenido al modo #concentración!',
- prompt: ({priorityModePageUrl}) =>
+ prompt: (priorityModePageUrl) =>
`Mantente al tanto de todo viendo sólo los chats no leídos o los que necesitan tu atención. No te preocupes, puedes cambiar el ajuste en cualquier momento desde la configuración.`,
},
notFound: {
@@ -3340,7 +3333,7 @@ ${amount} para ${merchant} - ${date}`,
flight: 'Vuelo',
flightDetails: {
passenger: 'Pasajero',
- layover: ({layover}) => `Tienes una escala de ${layover} antes de este vuelo`,
+ layover: (layover) => `Tienes una escala de ${layover} antes de este vuelo`,
takeOff: 'Despegue',
landing: 'Aterrizaje',
seat: 'Asiento',
@@ -3429,15 +3422,15 @@ ${amount} para ${merchant} - ${date}`,
conciergeMessage: ({domain}) => `Hubo un error habilitando viajes para el dominio: ${domain}. Por favor, revisa y habilita los viajes para este dominio.`,
},
updates: {
- bookingTicketed: ({airlineCode, origin, destination, startDate, confirmationID = ''}) =>
+ bookingTicketed: (airlineCode, origin, destination, startDate, confirmationID = '') =>
`Tu vuelo ${airlineCode} (${origin} → ${destination}) para el ${startDate} ha sido reservado. Código de confirmación: ${confirmationID}`,
- ticketVoided: ({airlineCode, origin, destination, startDate}) => `Tu billete para el vuelo ${airlineCode} (${origin} → ${destination}) del ${startDate} ha sido anulado.`,
- ticketRefunded: ({airlineCode, origin, destination, startDate}) =>
+ ticketVoided: (airlineCode, origin, destination, startDate) => `Tu billete para el vuelo ${airlineCode} (${origin} → ${destination}) del ${startDate} ha sido anulado.`,
+ ticketRefunded: (airlineCode, origin, destination, startDate) =>
`Tu billete para el vuelo ${airlineCode} (${origin} → ${destination}) del ${startDate} ha sido reembolsado o cambiado.`,
- flightCancelled: ({airlineCode, origin, destination, startDate}) => `Tu vuelo ${airlineCode} (${origin} → ${destination}) del ${startDate} ha sido cancelado por la aerolínea.`,
+ flightCancelled: (airlineCode, origin, destination, startDate) => `Tu vuelo ${airlineCode} (${origin} → ${destination}) del ${startDate} ha sido cancelado por la aerolínea.`,
flightScheduleChangePending: (airlineCode) => `La aerolínea ha propuesto un cambio de horario para el vuelo ${airlineCode}; estamos esperando la confirmación.`,
flightScheduleChangeClosed: (airlineCode, startDate) => `Cambio de horario confirmado: el vuelo ${airlineCode} ahora sale a las ${startDate}.`,
- flightUpdated: ({airlineCode, origin, destination, startDate}) => `Tu vuelo ${airlineCode} (${origin} → ${destination}) del ${startDate} ha sido actualizado.`,
+ flightUpdated: (airlineCode, origin, destination, startDate) => `Tu vuelo ${airlineCode} (${origin} → ${destination}) del ${startDate} ha sido actualizado.`,
flightCabinChanged: (airlineCode, cabinClass) => `Tu clase de cabina ha sido actualizada a ${cabinClass} en el vuelo ${airlineCode}.`,
flightSeatConfirmed: (airlineCode) => `Tu asignación de asiento en el vuelo ${airlineCode} ha sido confirmada.`,
flightSeatChanged: (airlineCode) => `Tu asignación de asiento en el vuelo ${airlineCode} ha sido modificada.`,
@@ -4257,7 +4250,7 @@ ${amount} para ${merchant} - ${date}`,
importTaxDescription: 'Importar grupos de impuestos desde NetSuite.',
importCustomFields: {
chooseOptionBelow: 'Elija una de las opciones siguientes:',
- label: ({importedTypes}) => `Importados como ${importedTypes.join(' y ')}`,
+ label: (importedTypes) => `Importados como ${importedTypes.join(' y ')}`,
requiredFieldError: ({fieldName}) => `Por favor, introduzca el ${fieldName}`,
customSegments: {
title: 'Segmentos/registros personalizados',
@@ -4333,18 +4326,18 @@ ${amount} para ${merchant} - ${date}`,
[CONST.INTEGRATION_ENTITY_MAP_TYPES.NETSUITE_DEFAULT]: {
label: 'Predeterminado del empleado NetSuite',
description: 'No importado a Expensify, aplicado en exportación',
- footerContent: ({importField}) =>
+ footerContent: (importField) =>
`Si usa ${importField} en NetSuite, aplicaremos el conjunto predeterminado en el registro del empleado al exportarlo a Informe de gastos o Entrada de diario.`,
},
[CONST.INTEGRATION_ENTITY_MAP_TYPES.TAG]: {
label: 'Etiquetas',
description: 'Nivel de línea de pedido',
- footerContent: ({importField}) => `Se podrán seleccionar ${importField} para cada gasto individual en el informe de un empleado.`,
+ footerContent: (importField) => `Se podrán seleccionar ${importField} para cada gasto individual en el informe de un empleado.`,
},
[CONST.INTEGRATION_ENTITY_MAP_TYPES.REPORT_FIELD]: {
label: 'Campos de informe',
description: 'Nivel de informe',
- footerContent: ({importField}) => `La selección de ${importField} se aplicará a todos los gastos en el informe de un empleado.`,
+ footerContent: (importField) => `La selección de ${importField} se aplicará a todos los gastos en el informe de un empleado.`,
},
},
},
@@ -4421,7 +4414,7 @@ ${amount} para ${merchant} - ${date}`,
commercialFeedPlaidDetails: 'Requiere configurarlo con tu banco, pero te guiaremos. Esto suele estar limitado a empresas más grandes.',
directFeedDetails: 'El enfoque más simple. Conéctate de inmediato usando tus credenciales maestras. Este método es el más común.',
enableFeed: {
- title: ({provider}) => `Habilita tu feed ${provider}`,
+ title: (provider) => `Habilita tu feed ${provider}`,
heading:
'Tenemos una integración directa con el emisor de su tarjeta y podemos importar los datos de sus transacciones a Expensify de forma rápida y precisa.\n\nPara empezar, simplemente:',
visa: 'Contamos con integraciones globales con Visa, aunque la elegibilidad varía según el banco y el programa de la tarjeta.\n\nTPara empezar, simplemente:',
@@ -4964,7 +4957,7 @@ ${amount} para ${merchant} - ${date}`,
prompt3: ' descargar una copia de seguridad',
prompt4: ' primero.',
},
- importedTagsMessage: ({columnCounts}) =>
+ importedTagsMessage: (columnCounts) =>
`Hemos encontrado *${columnCounts} columnas* en su hoja de cálculo. Seleccione *Nombre* junto a la columna que contiene los nombres de las etiquetas. También puede seleccionar *Habilitado* junto a la columna que establece el estado de la etiqueta.`,
cannotDeleteOrDisableAllTags: {
title: 'No se pueden eliminar ni deshabilitar todas las etiquetas',
@@ -5782,7 +5775,7 @@ ${amount} para ${merchant} - ${date}`,
rules: {
individualExpenseRules: {
title: 'Gastos',
- subtitle: ({categoriesPageLink, tagsPageLink}) =>
+ subtitle: (categoriesPageLink, tagsPageLink) =>
`Establece controles y valores predeterminados para gastos individuales. También puedes crear reglas para categorías y etiquetas.`,
receiptRequiredAmount: 'Cantidad requerida para los recibos',
receiptRequiredAmountDescription: 'Exige recibos cuando los gastos superen este importe, a menos que lo anule una regla de categoría.',
@@ -6388,7 +6381,7 @@ ${amount} para ${merchant} - ${date}`,
amount: {
lessThan: ({amount} = {}) => `Menos de ${amount ?? ''}`,
greaterThan: ({amount} = {}) => `Más que ${amount ?? ''}`,
- between: ({greaterThan, lessThan}) => `Entre ${greaterThan} y ${lessThan}`,
+ between: (greaterThan, lessThan) => `Entre ${greaterThan} y ${lessThan}`,
equalTo: ({amount} = {}) => `Igual a ${amount ?? ''}`,
},
current: 'Actual',
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index 7bc96c367822..569920339d4c 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -28,24 +28,6 @@ import type {
EditActionParams,
ExportAgainModalDescriptionParams,
ExportIntegrationSelectedParams,
- FileLimitParams,
- FileTypeParams,
- FiltersAmountBetweenParams,
- FlightLayoverParams,
- FlightParams,
- FocusModeUpdateParams,
- FormattedMaxLengthParams,
- GoBackMessageParams,
- HarvestCreatedExpenseReportParams,
- ImportedTagsMessageParams,
- ImportedTypesParams,
- ImportFieldParams,
- ImportMembersSuccessfulDescriptionParams,
- ImportPerDiemRatesSuccessfulDescriptionParams,
- ImportTagsSuccessfulDescriptionParams,
- IncorrectZipFormatParams,
- IndividualExpenseRulesSubtitleParams,
- InstantSummaryParams,
IntacctMappingTitleParams,
IntegrationExportParams,
IntegrationSyncFailedParams,
@@ -133,9 +115,6 @@ import type {
SplitDateRangeParams,
SplitExpenseEditTitleParams,
SplitExpenseSubtitleParams,
- SpreadCategoriesParams,
- SpreadFieldNameParams,
- SpreadSheetColumnParams,
StatementTitleParams,
StepCounterParams,
StripePaidParams,
@@ -710,12 +689,12 @@ const translations: TranslationDeepObject = {
protectedPDFNotSupported: 'Les PDF protégés par mot de passe ne sont pas pris en charge',
attachmentImageResized: 'Cette image a été redimensionnée pour l’aperçu. Téléchargez-la pour la pleine résolution.',
attachmentImageTooLarge: 'Cette image est trop volumineuse pour être prévisualisée avant le téléversement.',
- tooManyFiles: ({fileLimit}: FileLimitParams) => `Vous pouvez télécharger au maximum ${fileLimit} fichiers à la fois.`,
+ tooManyFiles: (fileLimit: number) => `Vous pouvez télécharger au maximum ${fileLimit} fichiers à la fois.`,
sizeExceededWithValue: ({maxUploadSizeInMB}: SizeExceededParams) => `Les fichiers dépassent ${maxUploadSizeInMB} Mo. Veuillez réessayer.`,
someFilesCantBeUploaded: 'Certains fichiers ne peuvent pas être téléversés',
sizeLimitExceeded: ({maxUploadSizeInMB}: SizeExceededParams) => `Les fichiers doivent être inférieurs à ${maxUploadSizeInMB} Mo. Tout fichier plus volumineux ne sera pas téléversé.`,
maxFileLimitExceeded: 'Vous pouvez téléverser jusqu’à 30 reçus à la fois. Les reçus supplémentaires ne seront pas téléversés.',
- unsupportedFileType: ({fileType}: FileTypeParams) => `Les fichiers ${fileType} ne sont pas pris en charge. Seuls les types de fichiers pris en charge seront téléversés.`,
+ unsupportedFileType: (fileType: string) => `Les fichiers ${fileType} ne sont pas pris en charge. Seuls les types de fichiers pris en charge seront téléversés.`,
learnMoreAboutSupportedFiles: 'En savoir plus sur les formats pris en charge.',
passwordProtected: 'Les PDF protégés par mot de passe ne sont pas pris en charge. Seuls les fichiers pris en charge seront téléversés.',
},
@@ -740,8 +719,8 @@ const translations: TranslationDeepObject = {
composer: {
noExtensionFoundForMimeType: 'Aucune extension trouvée pour le type MIME',
problemGettingImageYouPasted: 'Un problème est survenu lors de la récupération de l’image que vous avez collée',
- commentExceededMaxLength: ({formattedMaxLength}: FormattedMaxLengthParams) => `La longueur maximale du commentaire est de ${formattedMaxLength} caractères.`,
- taskTitleExceededMaxLength: ({formattedMaxLength}: FormattedMaxLengthParams) => `La longueur maximale du titre de la tâche est de ${formattedMaxLength} caractères.`,
+ commentExceededMaxLength: (formattedMaxLength: string) => `La longueur maximale du commentaire est de ${formattedMaxLength} caractères.`,
+ taskTitleExceededMaxLength: (formattedMaxLength: string) => `La longueur maximale du titre de la tâche est de ${formattedMaxLength} caractères.`,
},
baseUpdateAppModal: {
updateApp: 'Mettre à jour l’app',
@@ -923,7 +902,7 @@ const translations: TranslationDeepObject = {
adminOnlyCanPost: 'Seuls les administrateurs peuvent envoyer des messages dans cette salle.',
reportAction: {
asCopilot: 'en tant que copilote pour',
- harvestCreatedExpenseReport: ({reportUrl, reportName}: HarvestCreatedExpenseReportParams) =>
+ harvestCreatedExpenseReport: (reportUrl: string, reportName: string) =>
`a créé ce rapport pour regrouper toutes les dépenses de ${reportName} qui n'ont pas pu être soumises selon la fréquence que vous avez choisie`,
createdReportForUnapprovedTransactions: ({reportUrl, reportName}: CreatedReportForUnapprovedTransactionsParams) =>
`a créé ce rapport pour toutes les dépenses en attente depuis ${reportName}`,
@@ -991,13 +970,13 @@ const translations: TranslationDeepObject = {
chooseSpreadsheet: 'Sélectionnez un fichier de feuille de calcul à importer. Formats pris en charge : .csv, .txt, .xls et .xlsx.',
chooseSpreadsheetMultiLevelTag: `Sélectionnez un fichier de feuille de calcul à importer. En savoir plus sur les formats de fichier pris en charge.`,
fileContainsHeader: 'Le fichier contient des en-têtes de colonnes',
- column: ({name}: SpreadSheetColumnParams) => `Colonne ${name}`,
- fieldNotMapped: ({fieldName}: SpreadFieldNameParams) => `Oups ! Un champ requis (« ${fieldName} ») n’a pas été associé. Veuillez vérifier et réessayer.`,
- singleFieldMultipleColumns: ({fieldName}: SpreadFieldNameParams) => `Oups ! Vous avez associé un seul champ (« ${fieldName} ») à plusieurs colonnes. Veuillez vérifier et réessayer.`,
- emptyMappedField: ({fieldName}: SpreadFieldNameParams) => `Oups ! Le champ (« ${fieldName} ») contient une ou plusieurs valeurs vides. Veuillez vérifier et réessayer.`,
+ column: (name: string) => `Colonne ${name}`,
+ fieldNotMapped: (fieldName: string) => `Oups ! Un champ requis (« ${fieldName} ») n’a pas été associé. Veuillez vérifier et réessayer.`,
+ singleFieldMultipleColumns: (fieldName: string) => `Oups ! Vous avez associé un seul champ (« ${fieldName} ») à plusieurs colonnes. Veuillez vérifier et réessayer.`,
+ emptyMappedField: (fieldName: string) => `Oups ! Le champ (« ${fieldName} ») contient une ou plusieurs valeurs vides. Veuillez vérifier et réessayer.`,
importSuccessfulTitle: 'Importation réussie',
- importCategoriesSuccessfulDescription: ({categories}: SpreadCategoriesParams) => (categories > 1 ? `${categories} catégories ont été ajoutées.` : '1 catégorie a été ajoutée.'),
- importMembersSuccessfulDescription: ({added, updated}: ImportMembersSuccessfulDescriptionParams) => {
+ importCategoriesSuccessfulDescription: ({categories}: {categories: number}) => (categories > 1 ? `${categories} catégories ont été ajoutées.` : '1 catégorie a été ajoutée.'),
+ importMembersSuccessfulDescription: ({added, updated}: {added: number; updated: number}) => {
if (!added && !updated) {
return 'Aucun membre n’a été ajouté ou mis à jour.';
}
@@ -1009,10 +988,9 @@ const translations: TranslationDeepObject = {
}
return added > 1 ? `${added} membres ont été ajoutés.` : '1 membre a été ajouté.';
},
- importTagsSuccessfulDescription: ({tags}: ImportTagsSuccessfulDescriptionParams) => (tags > 1 ? `${tags} libellés ont été ajoutés.` : '1 tag a été ajouté.'),
+ importTagsSuccessfulDescription: ({tags}: {tags: number}) => (tags > 1 ? `${tags} libellés ont été ajoutés.` : '1 tag a été ajouté.'),
importMultiLevelTagsSuccessfulDescription: 'Des balises à plusieurs niveaux ont été ajoutées.',
- importPerDiemRatesSuccessfulDescription: ({rates}: ImportPerDiemRatesSuccessfulDescriptionParams) =>
- rates > 1 ? `Les taux de per diem ${rates} ont été ajoutés.` : '1 taux de per diem a été ajouté.',
+ importPerDiemRatesSuccessfulDescription: ({rates}: {rates: number}) => (rates > 1 ? `Les taux de per diem ${rates} ont été ajoutés.` : '1 taux de per diem a été ajouté.'),
importFailedTitle: 'Échec de l’importation',
importFailedDescription: 'Veuillez vous assurer que tous les champs sont correctement remplis, puis réessayez. Si le problème persiste, veuillez contacter Concierge.',
importDescription: 'Choisissez quels champs mapper à partir de votre feuille de calcul en cliquant sur le menu déroulant à côté de chaque colonne importée ci-dessous.',
@@ -2352,7 +2330,7 @@ ${amount} pour ${merchant} - ${date}`,
transferAmountPage: {
transfer: ({amount}: TransferParams) => `Transférer${amount ? ` ${amount}` : ''}`,
instant: 'Instantané (carte de débit)',
- instantSummary: ({rate, minAmount}: InstantSummaryParams) => `Frais de ${rate} % (${minAmount} minimum)`,
+ instantSummary: (rate: string, minAmount: string) => `Frais de ${rate} % (${minAmount} minimum)`,
ach: '1 à 3 jours ouvrables (Compte bancaire)',
achSummary: 'Aucun frais',
whichAccount: 'Quel compte ?',
@@ -2889,7 +2867,7 @@ ${
dateShouldBeBefore: (dateString: string) => `La date doit être antérieure au ${dateString}`,
dateShouldBeAfter: (dateString: string) => `La date doit être postérieure au ${dateString}`,
hasInvalidCharacter: 'Le nom ne peut inclure que des caractères latins',
- incorrectZipFormat: ({zipFormat}: IncorrectZipFormatParams = {}) => `Format de code postal incorrect${zipFormat ? `Format acceptable : ${zipFormat}` : ''}`,
+ incorrectZipFormat: (zipFormat?: string) => `Format de code postal incorrect${zipFormat ? `Format acceptable : ${zipFormat}` : ''}`,
invalidPhoneNumber: `Veuillez vous assurer que le numéro de téléphone est valide (p. ex. ${CONST.EXAMPLE_PHONE_NUMBER})`,
},
},
@@ -2973,7 +2951,7 @@ ${
},
focusModeUpdateModal: {
title: 'Bienvenue dans le mode #focus !',
- prompt: ({priorityModePageUrl}: FocusModeUpdateParams) =>
+ prompt: (priorityModePageUrl: string) =>
`Restez maître de la situation en n’affichant que les discussions non lues ou celles qui nécessitent votre attention. Ne vous inquiétez pas, vous pouvez modifier ce paramètre à tout moment dans les paramètres.`,
},
notFound: {
@@ -3648,7 +3626,7 @@ ${
flight: 'Vol',
flightDetails: {
passenger: 'Passager',
- layover: ({layover}: FlightLayoverParams) => `Vous avez une escale de ${layover} avant ce vol`,
+ layover: (layover: string) => `Vous avez une escale de ${layover} avant ce vol`,
takeOff: 'Décollage',
landing: 'Page d’accueil',
seat: 'Siège',
@@ -3738,17 +3716,18 @@ ${
conciergeMessage: ({domain}: {domain: string}) => `L’activation des voyages a échoué pour le domaine : ${domain}. Veuillez vérifier et activer les voyages pour ce domaine.`,
},
updates: {
- bookingTicketed: ({airlineCode, origin, destination, startDate, confirmationID = ''}: FlightParams) =>
+ bookingTicketed: (airlineCode: string, origin: string, destination: string, startDate: string, confirmationID = '') =>
`Votre vol ${airlineCode} (${origin} → ${destination}) du ${startDate} a été réservé. Code de confirmation : ${confirmationID}`,
- ticketVoided: ({airlineCode, origin, destination, startDate}: FlightParams) =>
+ ticketVoided: (airlineCode: string, origin: string, destination: string, startDate: string) =>
`Votre billet pour le vol ${airlineCode} (${origin} → ${destination}) le ${startDate} a été annulé.`,
- ticketRefunded: ({airlineCode, origin, destination, startDate}: FlightParams) =>
+ ticketRefunded: (airlineCode: string, origin: string, destination: string, startDate: string) =>
`Votre billet pour le vol ${airlineCode} (${origin} → ${destination}) du ${startDate} a été remboursé ou échangé.`,
- flightCancelled: ({airlineCode, origin, destination, startDate}: FlightParams) =>
+ flightCancelled: (airlineCode: string, origin: string, destination: string, startDate: string) =>
`Votre vol ${airlineCode} (${origin} → ${destination}) du ${startDate}} a été annulé par la compagnie aérienne.`,
flightScheduleChangePending: (airlineCode: string) => `La compagnie aérienne a proposé un changement d’horaire pour le vol ${airlineCode} ; nous attendons la confirmation.`,
flightScheduleChangeClosed: (airlineCode: string, startDate?: string) => `Changement d’horaire confirmé : le vol ${airlineCode} part désormais à ${startDate}.`,
- flightUpdated: ({airlineCode, origin, destination, startDate}: FlightParams) => `Votre vol ${airlineCode} (${origin} → ${destination}) le ${startDate} a été mis à jour.`,
+ flightUpdated: (airlineCode: string, origin: string, destination: string, startDate: string) =>
+ `Votre vol ${airlineCode} (${origin} → ${destination}) le ${startDate} a été mis à jour.`,
flightCabinChanged: (airlineCode: string, cabinClass?: string) => `Votre classe de cabine a été mise à jour en ${cabinClass} sur le vol ${airlineCode}.`,
flightSeatConfirmed: (airlineCode: string) => `Votre siège attribué sur le vol ${airlineCode} a été confirmé.`,
flightSeatChanged: (airlineCode: string) => `Votre siège attribué sur le vol ${airlineCode} a été modifié.`,
@@ -4564,7 +4543,7 @@ ${
importTaxDescription: 'Importer des groupes de taxes depuis NetSuite.',
importCustomFields: {
chooseOptionBelow: 'Choisissez une option ci-dessous :',
- label: ({importedTypes}: ImportedTypesParams) => `Importé en tant que ${importedTypes.join('et')}`,
+ label: (importedTypes: string[]) => `Importé en tant que ${importedTypes.join('et')}`,
requiredFieldError: ({fieldName}: RequiredFieldParams) => `Veuillez saisir le ${fieldName}`,
customSegments: {
title: 'Segments/enregistrements personnalisés',
@@ -4679,18 +4658,18 @@ _Pour des instructions plus détaillées, [visitez notre site d’aide](${CONST.
[CONST.INTEGRATION_ENTITY_MAP_TYPES.NETSUITE_DEFAULT]: {
label: 'Paramètre par défaut de l’employé NetSuite',
description: 'Non importé dans Expensify, appliqué à l’exportation',
- footerContent: ({importField}: ImportFieldParams) =>
+ footerContent: (importField: string) =>
`Si vous utilisez ${importField} dans NetSuite, nous appliquerons la valeur par défaut définie sur la fiche employé lors de l’exportation vers le rapport de dépenses ou l’écriture de journal.`,
},
[CONST.INTEGRATION_ENTITY_MAP_TYPES.TAG]: {
label: 'Étiquettes',
description: 'Niveau poste de ligne',
- footerContent: ({importField}: ImportFieldParams) => `${startCase(importField)} sera sélectionnable pour chaque dépense individuelle dans le rapport d'un employé.`,
+ footerContent: (importField: string) => `${startCase(importField)} sera sélectionnable pour chaque dépense individuelle dans le rapport d'un employé.`,
},
[CONST.INTEGRATION_ENTITY_MAP_TYPES.REPORT_FIELD]: {
label: 'Champs du rapport',
description: 'Niveau de rapport',
- footerContent: ({importField}: ImportFieldParams) => `La sélection ${startCase(importField)} s’appliquera à toutes les dépenses sur le rapport d’un employé.`,
+ footerContent: (importField: string) => `La sélection ${startCase(importField)} s’appliquera à toutes les dépenses sur le rapport d’un employé.`,
},
},
},
@@ -4768,7 +4747,7 @@ _Pour des instructions plus détaillées, [visitez notre site d’aide](${CONST.
commercialFeedPlaidDetails: `Nécessite une configuration avec votre banque, mais nous vous guiderons. Cela est généralement réservé aux grandes entreprises.`,
directFeedDetails: 'L’approche la plus simple. Connectez-vous immédiatement à l’aide de vos identifiants principaux. Cette méthode est la plus courante.',
enableFeed: {
- title: ({provider}: GoBackMessageParams) => `Activer votre flux ${provider}`,
+ title: (provider: string) => `Activer votre flux ${provider}`,
heading:
'Nous avons une intégration directe avec l’émetteur de votre carte et pouvons importer rapidement et avec précision vos données de transactions dans Expensify.\n\nPour commencer, il vous suffit de :',
visa: 'Nous disposons d’intégrations globales avec Visa, bien que l’éligibilité varie selon la banque et le programme de carte.\n\nPour commencer, il vous suffit de :',
@@ -5334,7 +5313,7 @@ _Pour des instructions plus détaillées, [visitez notre site d’aide](${CONST.
prompt3: 'télécharger une sauvegarde',
prompt4: "d'abord.",
},
- importedTagsMessage: ({columnCounts}: ImportedTagsMessageParams) =>
+ importedTagsMessage: (columnCounts: number) =>
`Nous avons trouvé *${columnCounts} colonnes* dans votre feuille de calcul. Sélectionnez *Nom* à côté de la colonne qui contient les noms de tags. Vous pouvez également sélectionner *Activé* à côté de la colonne qui définit l’état des tags.`,
cannotDeleteOrDisableAllTags: {
title: 'Impossible de supprimer ou de désactiver toutes les tags',
@@ -6150,7 +6129,7 @@ Exigez des informations de dépense comme les reçus et les descriptions, défin
rules: {
individualExpenseRules: {
title: 'Dépenses',
- subtitle: ({categoriesPageLink, tagsPageLink}: IndividualExpenseRulesSubtitleParams) =>
+ subtitle: (categoriesPageLink: string, tagsPageLink: string) =>
`Définissez des contrôles de dépenses et des valeurs par défaut pour les dépenses individuelles. Vous pouvez également créer des règles pour les catégories et les tags.`,
receiptRequiredAmount: 'Montant nécessitant un reçu',
receiptRequiredAmountDescription: 'Exiger des reçus lorsque la dépense dépasse ce montant, sauf si une règle de catégorie l’outrepasse.',
@@ -6779,7 +6758,7 @@ Exigez des informations de dépense comme les reçus et les descriptions, défin
amount: {
lessThan: ({amount}: OptionalParam = {}) => `Moins de ${amount ?? ''}`,
greaterThan: ({amount}: OptionalParam = {}) => `Supérieur à ${amount ?? ''}`,
- between: ({greaterThan, lessThan}: FiltersAmountBetweenParams) => `Entre ${greaterThan} et ${lessThan}`,
+ between: (greaterThan: string, lessThan: string) => `Entre ${greaterThan} et ${lessThan}`,
equalTo: ({amount}: OptionalParam = {}) => `Égal à ${amount ?? ''}`,
},
card: {
diff --git a/src/languages/it.ts b/src/languages/it.ts
index f8ae6fef71c9..fae9994fd720 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -28,24 +28,6 @@ import type {
EditActionParams,
ExportAgainModalDescriptionParams,
ExportIntegrationSelectedParams,
- FileLimitParams,
- FileTypeParams,
- FiltersAmountBetweenParams,
- FlightLayoverParams,
- FlightParams,
- FocusModeUpdateParams,
- FormattedMaxLengthParams,
- GoBackMessageParams,
- HarvestCreatedExpenseReportParams,
- ImportedTagsMessageParams,
- ImportedTypesParams,
- ImportFieldParams,
- ImportMembersSuccessfulDescriptionParams,
- ImportPerDiemRatesSuccessfulDescriptionParams,
- ImportTagsSuccessfulDescriptionParams,
- IncorrectZipFormatParams,
- IndividualExpenseRulesSubtitleParams,
- InstantSummaryParams,
IntacctMappingTitleParams,
IntegrationExportParams,
IntegrationSyncFailedParams,
@@ -133,9 +115,6 @@ import type {
SplitDateRangeParams,
SplitExpenseEditTitleParams,
SplitExpenseSubtitleParams,
- SpreadCategoriesParams,
- SpreadFieldNameParams,
- SpreadSheetColumnParams,
StatementTitleParams,
StepCounterParams,
StripePaidParams,
@@ -709,12 +688,12 @@ const translations: TranslationDeepObject = {
protectedPDFNotSupported: 'I PDF protetti da password non sono supportati',
attachmentImageResized: 'Questa immagine è stata ridimensionata per l’anteprima. Scarica per la risoluzione completa.',
attachmentImageTooLarge: 'Questa immagine è troppo grande per essere visualizzata in anteprima prima del caricamento.',
- tooManyFiles: ({fileLimit}: FileLimitParams) => `Puoi caricare al massimo ${fileLimit} file alla volta.`,
+ tooManyFiles: (fileLimit: number) => `Puoi caricare al massimo ${fileLimit} file alla volta.`,
sizeExceededWithValue: ({maxUploadSizeInMB}: SizeExceededParams) => `I file superano ${maxUploadSizeInMB} MB. Riprova.`,
someFilesCantBeUploaded: 'Alcuni file non possono essere caricati',
sizeLimitExceeded: ({maxUploadSizeInMB}: SizeExceededParams) => `I file devono essere inferiori a ${maxUploadSizeInMB} MB. I file più grandi non verranno caricati.`,
maxFileLimitExceeded: 'Puoi caricare fino a 30 ricevute alla volta. Le eventuali ricevute in più non verranno caricate.',
- unsupportedFileType: ({fileType}: FileTypeParams) => `I file ${fileType} non sono supportati. Verranno caricati solo i tipi di file supportati.`,
+ unsupportedFileType: (fileType: string) => `I file ${fileType} non sono supportati. Verranno caricati solo i tipi di file supportati.`,
learnMoreAboutSupportedFiles: 'Scopri di più sui formati supportati.',
passwordProtected: 'I PDF protetti da password non sono supportati. Verranno caricati solo i file supportati.',
},
@@ -739,8 +718,8 @@ const translations: TranslationDeepObject = {
composer: {
noExtensionFoundForMimeType: 'Nessuna estensione trovata per il tipo MIME',
problemGettingImageYouPasted: "Si è verificato un problema durante l'acquisizione dell'immagine che hai incollato",
- commentExceededMaxLength: ({formattedMaxLength}: FormattedMaxLengthParams) => `La lunghezza massima del commento è di ${formattedMaxLength} caratteri.`,
- taskTitleExceededMaxLength: ({formattedMaxLength}: FormattedMaxLengthParams) => `La lunghezza massima del titolo dell’attività è di ${formattedMaxLength} caratteri.`,
+ commentExceededMaxLength: (formattedMaxLength: string) => `La lunghezza massima del commento è di ${formattedMaxLength} caratteri.`,
+ taskTitleExceededMaxLength: (formattedMaxLength: string) => `La lunghezza massima del titolo dell’attività è di ${formattedMaxLength} caratteri.`,
},
baseUpdateAppModal: {
updateApp: 'Aggiorna app',
@@ -920,7 +899,7 @@ const translations: TranslationDeepObject = {
adminOnlyCanPost: 'Solo gli amministratori possono inviare messaggi in questa stanza.',
reportAction: {
asCopilot: 'come copilota per',
- harvestCreatedExpenseReport: ({reportUrl, reportName}: HarvestCreatedExpenseReportParams) =>
+ harvestCreatedExpenseReport: (reportUrl: string, reportName: string) =>
`ha creato questo rapporto per raccogliere tutte le spese di ${reportName} che non sono state inviate con la frequenza scelta`,
createdReportForUnapprovedTransactions: ({reportUrl, reportName}: CreatedReportForUnapprovedTransactionsParams) =>
`ha creato questo report per eventuali spese in sospeso da ${reportName}`,
@@ -988,13 +967,13 @@ const translations: TranslationDeepObject = {
chooseSpreadsheet: 'Seleziona un file di foglio di calcolo da importare. Formati supportati: .csv, .txt, .xls e .xlsx.',
chooseSpreadsheetMultiLevelTag: `Seleziona un file di foglio di calcolo da importare. Ulteriori informazioni sui formati di file supportati.`,
fileContainsHeader: 'Il file contiene intestazioni di colonna',
- column: ({name}: SpreadSheetColumnParams) => `Colonna ${name}`,
- fieldNotMapped: ({fieldName}: SpreadFieldNameParams) => `Ops! Un campo obbligatorio ("${fieldName}") non è stato mappato. Controlla e riprova.`,
- singleFieldMultipleColumns: ({fieldName}: SpreadFieldNameParams) => `Ops! Hai associato un singolo campo ("${fieldName}") a più colonne. Controlla e riprova.`,
- emptyMappedField: ({fieldName}: SpreadFieldNameParams) => `Ops! Il campo («${fieldName}») contiene uno o più valori vuoti. Controlla e riprova.`,
+ column: (name: string) => `Colonna ${name}`,
+ fieldNotMapped: (fieldName: string) => `Ops! Un campo obbligatorio ("${fieldName}") non è stato mappato. Controlla e riprova.`,
+ singleFieldMultipleColumns: (fieldName: string) => `Ops! Hai associato un singolo campo ("${fieldName}") a più colonne. Controlla e riprova.`,
+ emptyMappedField: (fieldName: string) => `Ops! Il campo («${fieldName}») contiene uno o più valori vuoti. Controlla e riprova.`,
importSuccessfulTitle: 'Importazione riuscita',
- importCategoriesSuccessfulDescription: ({categories}: SpreadCategoriesParams) => (categories > 1 ? `Sono state aggiunte ${categories} categorie.` : '1 categoria è stata aggiunta.'),
- importMembersSuccessfulDescription: ({added, updated}: ImportMembersSuccessfulDescriptionParams) => {
+ importCategoriesSuccessfulDescription: ({categories}: {categories: number}) => (categories > 1 ? `Sono state aggiunte ${categories} categorie.` : '1 categoria è stata aggiunta.'),
+ importMembersSuccessfulDescription: ({added, updated}: {added: number; updated: number}) => {
if (!added && !updated) {
return 'Nessun membro è stato aggiunto o aggiornato.';
}
@@ -1006,10 +985,9 @@ const translations: TranslationDeepObject = {
}
return added > 1 ? `${added} membri sono stati aggiunti.` : 'È stato aggiunto 1 membro.';
},
- importTagsSuccessfulDescription: ({tags}: ImportTagsSuccessfulDescriptionParams) => (tags > 1 ? `Sono stati aggiunti ${tags} tag.` : 'È stato aggiunto 1 tag.'),
+ importTagsSuccessfulDescription: ({tags}: {tags: number}) => (tags > 1 ? `Sono stati aggiunti ${tags} tag.` : 'È stato aggiunto 1 tag.'),
importMultiLevelTagsSuccessfulDescription: 'Sono stati aggiunti i tag multilivello.',
- importPerDiemRatesSuccessfulDescription: ({rates}: ImportPerDiemRatesSuccessfulDescriptionParams) =>
- rates > 1 ? `Sono state aggiunte le tariffe di diaria ${rates}.` : 'È stata aggiunta 1 tariffa di diaria.',
+ importPerDiemRatesSuccessfulDescription: ({rates}: {rates: number}) => (rates > 1 ? `Sono state aggiunte le tariffe di diaria ${rates}.` : 'È stata aggiunta 1 tariffa di diaria.'),
importFailedTitle: 'Importazione non riuscita',
importFailedDescription: 'Assicurati che tutti i campi siano compilati correttamente e riprova. Se il problema persiste, contatta Concierge.',
importDescription: 'Scegli quali campi mappare dal tuo foglio di calcolo cliccando il menu a discesa accanto a ciascuna colonna importata qui sotto.',
@@ -2344,7 +2322,7 @@ ${amount} per ${merchant} - ${date}`,
transferAmountPage: {
transfer: ({amount}: TransferParams) => `Trasferimento${amount ? ` ${amount}` : ''}`,
instant: 'Immediato (Carta di debito)',
- instantSummary: ({rate, minAmount}: InstantSummaryParams) => `Commissione del ${rate}% (${minAmount} minimo)`,
+ instantSummary: (rate: string, minAmount: string) => `Commissione del ${rate}% (${minAmount} minimo)`,
ach: '1-3 giorni lavorativi (Conto bancario)',
achSummary: 'Nessuna commissione',
whichAccount: 'Quale conto?',
@@ -2876,7 +2854,7 @@ ${
dateShouldBeBefore: (dateString: string) => `La data deve essere precedente a ${dateString}`,
dateShouldBeAfter: (dateString: string) => `La data deve essere successiva a ${dateString}`,
hasInvalidCharacter: 'Il nome può includere solo caratteri latini',
- incorrectZipFormat: ({zipFormat}: IncorrectZipFormatParams = {}) => `Formato del codice postale non corretto${zipFormat ? `Formato accettabile: ${zipFormat}` : ''}`,
+ incorrectZipFormat: (zipFormat?: string) => `Formato del codice postale non corretto${zipFormat ? `Formato accettabile: ${zipFormat}` : ''}`,
invalidPhoneNumber: `Assicurati che il numero di telefono sia valido (ad es. ${CONST.EXAMPLE_PHONE_NUMBER})`,
},
},
@@ -2959,7 +2937,7 @@ ${
},
focusModeUpdateModal: {
title: 'Benvenuto nella modalità #focus!',
- prompt: ({priorityModePageUrl}: FocusModeUpdateParams) =>
+ prompt: (priorityModePageUrl: string) =>
`Rimani sempre aggiornato visualizzando solo le chat non lette o quelle che richiedono la tua attenzione. Non preoccuparti, puoi modificare questa impostazione in qualsiasi momento dalle impostazioni.`,
},
notFound: {
@@ -3629,7 +3607,7 @@ ${
flight: 'Volo',
flightDetails: {
passenger: 'Passeggero',
- layover: ({layover}: FlightLayoverParams) => `Hai uno scalo di ${layover} prima di questo volo`,
+ layover: (layover: string) => `Hai uno scalo di ${layover} prima di questo volo`,
takeOff: 'Decollo',
landing: 'Pagina iniziale',
seat: 'Postazione',
@@ -3719,17 +3697,18 @@ ${
conciergeMessage: ({domain}: {domain: string}) => `Abilitazione dei viaggi non riuscita per il dominio: ${domain}. Controlla e abilita i viaggi per questo dominio.`,
},
updates: {
- bookingTicketed: ({airlineCode, origin, destination, startDate, confirmationID = ''}: FlightParams) =>
+ bookingTicketed: (airlineCode: string, origin: string, destination: string, startDate: string, confirmationID = '') =>
`Il tuo volo ${airlineCode} (${origin} → ${destination}) del ${startDate} è stato prenotato. Codice di conferma: ${confirmationID}`,
- ticketVoided: ({airlineCode, origin, destination, startDate}: FlightParams) =>
+ ticketVoided: (airlineCode: string, origin: string, destination: string, startDate: string) =>
`Il tuo biglietto per il volo ${airlineCode} (${origin} → ${destination}) del ${startDate} è stato annullato.`,
- ticketRefunded: ({airlineCode, origin, destination, startDate}: FlightParams) =>
+ ticketRefunded: (airlineCode: string, origin: string, destination: string, startDate: string) =>
`Il tuo biglietto per il volo ${airlineCode} (${origin} → ${destination}) del ${startDate} è stato rimborsato o modificato.`,
- flightCancelled: ({airlineCode, origin, destination, startDate}: FlightParams) =>
+ flightCancelled: (airlineCode: string, origin: string, destination: string, startDate: string) =>
`Il tuo volo ${airlineCode} (${origin} → ${destination}) del ${startDate}} è stato cancellato dalla compagnia aerea.`,
flightScheduleChangePending: (airlineCode: string) => `La compagnia aerea ha proposto un cambio di orario per il volo ${airlineCode}; siamo in attesa di conferma.`,
flightScheduleChangeClosed: (airlineCode: string, startDate?: string) => `Cambio di programmazione confermato: il volo ${airlineCode} ora parte alle ${startDate}.`,
- flightUpdated: ({airlineCode, origin, destination, startDate}: FlightParams) => `Il tuo volo ${airlineCode} (${origin} → ${destination}) del ${startDate} è stato aggiornato.`,
+ flightUpdated: (airlineCode: string, origin: string, destination: string, startDate: string) =>
+ `Il tuo volo ${airlineCode} (${origin} → ${destination}) del ${startDate} è stato aggiornato.`,
flightCabinChanged: (airlineCode: string, cabinClass?: string) => `La tua classe di cabina è stata aggiornata a ${cabinClass} sul volo ${airlineCode}.`,
flightSeatConfirmed: (airlineCode: string) => `La tua assegnazione del posto sul volo ${airlineCode} è stata confermata.`,
flightSeatChanged: (airlineCode: string) => `La tua assegnazione del posto sul volo ${airlineCode} è stata modificata.`,
@@ -4546,7 +4525,7 @@ ${
importTaxDescription: 'Importa gruppi di imposte da NetSuite.',
importCustomFields: {
chooseOptionBelow: "Scegli un'opzione qui sotto:",
- label: ({importedTypes}: ImportedTypesParams) => `Importato come ${importedTypes.join('e')}`,
+ label: (importedTypes: string[]) => `Importato come ${importedTypes.join('e')}`,
requiredFieldError: ({fieldName}: RequiredFieldParams) => `Inserisci il/la ${fieldName}`,
customSegments: {
title: 'Segmenti/record personalizzati',
@@ -4661,18 +4640,18 @@ _Per istruzioni più dettagliate, [visita il nostro sito di assistenza](${CONST.
[CONST.INTEGRATION_ENTITY_MAP_TYPES.NETSUITE_DEFAULT]: {
label: 'Impostazione predefinita dipendente NetSuite',
description: "Non importato in Expensify, applicato all'esportazione",
- footerContent: ({importField}: ImportFieldParams) =>
+ footerContent: (importField: string) =>
`Se utilizzi ${importField} in NetSuite, applicheremo il valore predefinito impostato nel record del dipendente all'esportazione verso Expense Report o Journal Entry.`,
},
[CONST.INTEGRATION_ENTITY_MAP_TYPES.TAG]: {
label: 'Tag',
description: 'A livello di singola voce',
- footerContent: ({importField}: ImportFieldParams) => `${startCase(importField)} sarà selezionabile per ogni singola spesa nel report di un dipendente.`,
+ footerContent: (importField: string) => `${startCase(importField)} sarà selezionabile per ogni singola spesa nel report di un dipendente.`,
},
[CONST.INTEGRATION_ENTITY_MAP_TYPES.REPORT_FIELD]: {
label: 'Campi del report',
description: 'Livello del report',
- footerContent: ({importField}: ImportFieldParams) => `La selezione ${startCase(importField)} verrà applicata a tutte le spese nel rendiconto di un dipendente.`,
+ footerContent: (importField: string) => `La selezione ${startCase(importField)} verrà applicata a tutte le spese nel rendiconto di un dipendente.`,
},
},
},
@@ -4749,7 +4728,7 @@ _Per istruzioni più dettagliate, [visita il nostro sito di assistenza](${CONST.
commercialFeedPlaidDetails: `Richiede la configurazione con la tua banca, ma ti guideremo noi. Di solito è limitato alle aziende più grandi.`,
directFeedDetails: 'L’approccio più semplice. Connettiti subito utilizzando le tue credenziali master. Questo metodo è il più comune.',
enableFeed: {
- title: ({provider}: GoBackMessageParams) => `Abilita il tuo feed ${provider}`,
+ title: (provider: string) => `Abilita il tuo feed ${provider}`,
heading:
'Abbiamo un’integrazione diretta con l’emittente della tua carta e possiamo importare i dati delle tue transazioni in Expensify in modo rapido e accurato.\n\nPer iniziare, ti basta:',
visa: 'Abbiamo integrazioni globali con Visa, anche se l’idoneità varia in base alla banca e al programma della carta.\n\nPer iniziare, ti basta:',
@@ -5312,7 +5291,7 @@ _Per istruzioni più dettagliate, [visita il nostro sito di assistenza](${CONST.
prompt3: 'scarica un backup',
prompt4: 'primo.',
},
- importedTagsMessage: ({columnCounts}: ImportedTagsMessageParams) =>
+ importedTagsMessage: (columnCounts: number) =>
`Abbiamo trovato *${columnCounts} colonne* nel tuo foglio di calcolo. Seleziona *Nome* accanto alla colonna che contiene i nomi dei tag. Puoi anche selezionare *Abilitato* accanto alla colonna che imposta lo stato dei tag.`,
cannotDeleteOrDisableAllTags: {
title: 'Impossibile eliminare o disattivare tutti i tag',
@@ -6124,7 +6103,7 @@ Richiedi dettagli di spesa come ricevute e descrizioni, imposta limiti e valori
rules: {
individualExpenseRules: {
title: 'Spese',
- subtitle: ({categoriesPageLink, tagsPageLink}: IndividualExpenseRulesSubtitleParams) =>
+ subtitle: (categoriesPageLink: string, tagsPageLink: string) =>
`Imposta controlli di spesa e valori predefiniti per le singole spese. Puoi anche creare regole per le categorie e per i tag.`,
receiptRequiredAmount: 'Importo richiesto della ricevuta',
receiptRequiredAmountDescription: 'Richiedi ricevute quando la spesa supera questo importo, a meno che non venga sostituito da una regola della categoria.',
@@ -6754,7 +6733,7 @@ Richiedi dettagli di spesa come ricevute e descrizioni, imposta limiti e valori
amount: {
lessThan: ({amount}: OptionalParam = {}) => `Meno di ${amount ?? ''}`,
greaterThan: ({amount}: OptionalParam = {}) => `Maggiore di ${amount ?? ''}`,
- between: ({greaterThan, lessThan}: FiltersAmountBetweenParams) => `Tra ${greaterThan} e ${lessThan}`,
+ between: (greaterThan: string, lessThan: string) => `Tra ${greaterThan} e ${lessThan}`,
equalTo: ({amount}: OptionalParam = {}) => `Uguale a ${amount ?? ''}`,
},
card: {
diff --git a/src/languages/ja.ts b/src/languages/ja.ts
index c9ea2e2d83b6..fdf87d01624b 100644
--- a/src/languages/ja.ts
+++ b/src/languages/ja.ts
@@ -28,24 +28,6 @@ import type {
EditActionParams,
ExportAgainModalDescriptionParams,
ExportIntegrationSelectedParams,
- FileLimitParams,
- FileTypeParams,
- FiltersAmountBetweenParams,
- FlightLayoverParams,
- FlightParams,
- FocusModeUpdateParams,
- FormattedMaxLengthParams,
- GoBackMessageParams,
- HarvestCreatedExpenseReportParams,
- ImportedTagsMessageParams,
- ImportedTypesParams,
- ImportFieldParams,
- ImportMembersSuccessfulDescriptionParams,
- ImportPerDiemRatesSuccessfulDescriptionParams,
- ImportTagsSuccessfulDescriptionParams,
- IncorrectZipFormatParams,
- IndividualExpenseRulesSubtitleParams,
- InstantSummaryParams,
IntacctMappingTitleParams,
IntegrationExportParams,
IntegrationSyncFailedParams,
@@ -133,9 +115,6 @@ import type {
SplitDateRangeParams,
SplitExpenseEditTitleParams,
SplitExpenseSubtitleParams,
- SpreadCategoriesParams,
- SpreadFieldNameParams,
- SpreadSheetColumnParams,
StatementTitleParams,
StepCounterParams,
StripePaidParams,
@@ -708,12 +687,12 @@ const translations: TranslationDeepObject = {
protectedPDFNotSupported: 'パスワードで保護されたPDFはサポートされていません',
attachmentImageResized: 'この画像はプレビュー用にサイズが変更されています。フル解像度で表示するにはダウンロードしてください。',
attachmentImageTooLarge: 'この画像はアップロード前にプレビューするには大きすぎます。',
- tooManyFiles: ({fileLimit}: FileLimitParams) => `一度にアップロードできるファイルは${fileLimit}件までです。`,
+ tooManyFiles: (fileLimit: number) => `一度にアップロードできるファイルは${fileLimit}件までです。`,
sizeExceededWithValue: ({maxUploadSizeInMB}: SizeExceededParams) => `ファイルが ${maxUploadSizeInMB} MB を超えています。もう一度お試しください。`,
someFilesCantBeUploaded: '一部のファイルはアップロードできません',
sizeLimitExceeded: ({maxUploadSizeInMB}: SizeExceededParams) => `ファイルは${maxUploadSizeInMB}MB未満である必要があります。これより大きいファイルはアップロードされません。`,
maxFileLimitExceeded: '一度にアップロードできる領収書は最大30枚です。それを超えた分はアップロードされません。',
- unsupportedFileType: ({fileType}: FileTypeParams) => `${fileType} ファイルはサポートされていません。サポートされているファイル形式のみアップロードされます。`,
+ unsupportedFileType: (fileType: string) => `${fileType} ファイルはサポートされていません。サポートされているファイル形式のみアップロードされます。`,
learnMoreAboutSupportedFiles: 'サポートされている形式の詳細はこちらをご覧ください。',
passwordProtected: 'パスワード保護されたPDFはサポートされていません。サポートされているファイルのみがアップロードされます。',
},
@@ -738,8 +717,8 @@ const translations: TranslationDeepObject = {
composer: {
noExtensionFoundForMimeType: 'この MIME タイプに対応する拡張子が見つかりません',
problemGettingImageYouPasted: '貼り付けた画像の取得中に問題が発生しました',
- commentExceededMaxLength: ({formattedMaxLength}: FormattedMaxLengthParams) => `コメントの最大文字数は${formattedMaxLength}文字です。`,
- taskTitleExceededMaxLength: ({formattedMaxLength}: FormattedMaxLengthParams) => `タスクタイトルの最大長は${formattedMaxLength}文字です。`,
+ commentExceededMaxLength: (formattedMaxLength: string) => `コメントの最大文字数は${formattedMaxLength}文字です。`,
+ taskTitleExceededMaxLength: (formattedMaxLength: string) => `タスクタイトルの最大長は${formattedMaxLength}文字です。`,
},
baseUpdateAppModal: {
updateApp: 'アプリを更新',
@@ -918,7 +897,7 @@ const translations: TranslationDeepObject = {
adminOnlyCanPost: 'このルームでメッセージを送信できるのは管理者のみです。',
reportAction: {
asCopilot: 'のコパイロットとして',
- harvestCreatedExpenseReport: ({reportUrl, reportName}: HarvestCreatedExpenseReportParams) =>
+ harvestCreatedExpenseReport: (reportUrl: string, reportName: string) =>
`選択した頻度では提出できなかった ${reportName} のすべての経費をまとめるためにこのレポートを作成しました`,
createdReportForUnapprovedTransactions: ({reportUrl, reportName}: CreatedReportForUnapprovedTransactionsParams) =>
`${reportName} から保留中の経費のためにこのレポートを作成しました`,
@@ -987,14 +966,13 @@ const translations: TranslationDeepObject = {
chooseSpreadsheet: 'インポートするスプレッドシートファイルを選択してください。対応形式:.csv、.txt、.xls、.xlsx。',
chooseSpreadsheetMultiLevelTag: `インポートするスプレッドシートファイルを選択してください。サポートされているファイル形式の詳細は、こちらをご覧ください。`,
fileContainsHeader: 'ファイルには列ヘッダーが含まれています',
- column: ({name}: SpreadSheetColumnParams) => `列 ${name}`,
- fieldNotMapped: ({fieldName}: SpreadFieldNameParams) => `おっと!必須フィールド(「${fieldName}」)がマッピングされていません。確認して、もう一度お試しください。`,
- singleFieldMultipleColumns: ({fieldName}: SpreadFieldNameParams) =>
- `おっと!1 つのフィールド(「${fieldName}」)が複数の列に割り当てられています。内容を確認して、もう一度お試しください。`,
- emptyMappedField: ({fieldName}: SpreadFieldNameParams) => `おっと!フィールド(「${fieldName}」)に 1 つ以上の空の値が含まれています。確認して、もう一度お試しください。`,
+ column: (name: string) => `列 ${name}`,
+ fieldNotMapped: (fieldName: string) => `おっと!必須フィールド(「${fieldName}」)がマッピングされていません。確認して、もう一度お試しください。`,
+ singleFieldMultipleColumns: (fieldName: string) => `おっと!1 つのフィールド(「${fieldName}」)が複数の列に割り当てられています。内容を確認して、もう一度お試しください。`,
+ emptyMappedField: (fieldName: string) => `おっと!フィールド(「${fieldName}」)に 1 つ以上の空の値が含まれています。確認して、もう一度お試しください。`,
importSuccessfulTitle: 'インポートに成功しました',
- importCategoriesSuccessfulDescription: ({categories}: SpreadCategoriesParams) => (categories > 1 ? `${categories}件のカテゴリーが追加されました。` : 'カテゴリを1件追加しました。'),
- importMembersSuccessfulDescription: ({added, updated}: ImportMembersSuccessfulDescriptionParams) => {
+ importCategoriesSuccessfulDescription: ({categories}: {categories: number}) => (categories > 1 ? `${categories}件のカテゴリーが追加されました。` : 'カテゴリを1件追加しました。'),
+ importMembersSuccessfulDescription: ({added, updated}: {added: number; updated: number}) => {
if (!added && !updated) {
return 'メンバーは追加または更新されていません。';
}
@@ -1006,10 +984,9 @@ const translations: TranslationDeepObject = {
}
return added > 1 ? `${added} 名のメンバーが追加されました。` : '1名のメンバーが追加されました。';
},
- importTagsSuccessfulDescription: ({tags}: ImportTagsSuccessfulDescriptionParams) => (tags > 1 ? `${tags} 個のタグを追加しました。` : 'タグが 1 件追加されました。'),
+ importTagsSuccessfulDescription: ({tags}: {tags: number}) => (tags > 1 ? `${tags} 個のタグを追加しました。` : 'タグが 1 件追加されました。'),
importMultiLevelTagsSuccessfulDescription: 'マルチレベルタグが追加されました。',
- importPerDiemRatesSuccessfulDescription: ({rates}: ImportPerDiemRatesSuccessfulDescriptionParams) =>
- rates > 1 ? `${rates}件の日当レートが追加されました。` : '1件の日当レートが追加されました。',
+ importPerDiemRatesSuccessfulDescription: ({rates}: {rates: number}) => (rates > 1 ? `${rates}件の日当レートが追加されました。` : '1件の日当レートが追加されました。'),
importFailedTitle: 'インポートに失敗しました',
importFailedDescription: 'すべての項目が正しく入力されていることを確認して、もう一度お試しください。問題が解決しない場合は、Concierge までお問い合わせください。',
importDescription: '下のインポートされた各列の横にあるドロップダウンをクリックして、スプレッドシートからマッピングするフィールドを選択してください。',
@@ -2333,7 +2310,7 @@ ${merchant} への ${amount}(${date})`,
transferAmountPage: {
transfer: ({amount}: TransferParams) => `振替${amount ? ` ${amount}` : ''}`,
instant: '即時(デビットカード)',
- instantSummary: ({rate, minAmount}: InstantSummaryParams) => `${rate}% の手数料(最低 ${minAmount})`,
+ instantSummary: (rate: string, minAmount: string) => `${rate}% の手数料(最低 ${minAmount})`,
ach: '1~3 営業日(銀行口座)',
achSummary: '手数料なし',
whichAccount: 'どのアカウントですか?',
@@ -2868,7 +2845,7 @@ ${
dateShouldBeBefore: (dateString: string) => `日付は${dateString}より前でなければなりません`,
dateShouldBeAfter: (dateString: string) => `日付は${dateString}より後である必要があります`,
hasInvalidCharacter: '名前にはラテン文字のみ使用できます',
- incorrectZipFormat: ({zipFormat}: IncorrectZipFormatParams = {}) => `郵便番号の形式が正しくありません${zipFormat ? `許容される形式:${zipFormat}` : ''}`,
+ incorrectZipFormat: (zipFormat?: string) => `郵便番号の形式が正しくありません${zipFormat ? `許容される形式:${zipFormat}` : ''}`,
invalidPhoneNumber: `電話番号が有効であることを確認してください(例:${CONST.EXAMPLE_PHONE_NUMBER})`,
},
},
@@ -2951,7 +2928,7 @@ ${
},
focusModeUpdateModal: {
title: '#focus モードへようこそ!',
- prompt: ({priorityModePageUrl}: FocusModeUpdateParams) =>
+ prompt: (priorityModePageUrl: string) =>
`未読のチャットや、対応が必要なチャットだけを表示して、常に状況を把握しましょう。心配はいりません。これはいつでも設定で変更できます。`,
},
notFound: {
@@ -3618,7 +3595,7 @@ ${
flight: 'フライト',
flightDetails: {
passenger: '乗客',
- layover: ({layover}: FlightLayoverParams) => `このフライトの前に${layover} の乗り継ぎ時間があります`,
+ layover: (layover: string) => `このフライトの前に${layover} の乗り継ぎ時間があります`,
takeOff: '離陸',
landing: 'ランディング',
seat: '席',
@@ -3708,17 +3685,18 @@ ${
conciergeMessage: ({domain}: {domain: string}) => `ドメイン ${domain} の出張機能の有効化に失敗しました。このドメインの出張機能を確認して有効にしてください。`,
},
updates: {
- bookingTicketed: ({airlineCode, origin, destination, startDate, confirmationID = ''}: FlightParams) =>
+ bookingTicketed: (airlineCode: string, origin: string, destination: string, startDate: string, confirmationID = '') =>
`${startDate} のフライト ${airlineCode}(${origin} → ${destination})が予約されました。確認コード:${confirmationID}`,
- ticketVoided: ({airlineCode, origin, destination, startDate}: FlightParams) =>
+ ticketVoided: (airlineCode: string, origin: string, destination: string, startDate: string) =>
`${startDate} のフライト ${airlineCode}(${origin} → ${destination})のチケットは無効になりました。`,
- ticketRefunded: ({airlineCode, origin, destination, startDate}: FlightParams) =>
+ ticketRefunded: (airlineCode: string, origin: string, destination: string, startDate: string) =>
`${startDate} のフライト ${airlineCode}(${origin} → ${destination})の航空券は、払い戻しまたは変更されています。`,
- flightCancelled: ({airlineCode, origin, destination, startDate}: FlightParams) =>
+ flightCancelled: (airlineCode: string, origin: string, destination: string, startDate: string) =>
`${startDate}} のフライト ${airlineCode}(${origin} → ${destination})は、航空会社によりキャンセルされました。`,
flightScheduleChangePending: (airlineCode: string) => `航空会社が便名 ${airlineCode} のスケジュール変更を提案しており、現在確認待ちです。`,
flightScheduleChangeClosed: (airlineCode: string, startDate?: string) => `スケジュール変更が確認されました:フライト ${airlineCode} の出発時刻は ${startDate} になりました。`,
- flightUpdated: ({airlineCode, origin, destination, startDate}: FlightParams) => `${startDate} のフライト ${airlineCode}(${origin} → ${destination})が更新されました。`,
+ flightUpdated: (airlineCode: string, origin: string, destination: string, startDate: string) =>
+ `${startDate} のフライト ${airlineCode}(${origin} → ${destination})が更新されました。`,
flightCabinChanged: (airlineCode: string, cabinClass?: string) => `ご搭乗クラスは、${airlineCode} 便で ${cabinClass} に更新されました。`,
flightSeatConfirmed: (airlineCode: string) => `${airlineCode}便の座席指定が確定しました。`,
flightSeatChanged: (airlineCode: string) => `ご搭乗便 ${airlineCode} の座席指定が変更されました。`,
@@ -4520,7 +4498,7 @@ ${
importTaxDescription: 'NetSuite から税グループをインポートします。',
importCustomFields: {
chooseOptionBelow: '以下からオプションを選択してください:',
- label: ({importedTypes}: ImportedTypesParams) => `${importedTypes.join('と')} としてインポートされました`,
+ label: (importedTypes: string[]) => `${importedTypes.join('と')} としてインポートされました`,
requiredFieldError: ({fieldName}: RequiredFieldParams) => `${fieldName}を入力してください`,
customSegments: {
title: 'カスタムセグメント/レコード',
@@ -4635,18 +4613,18 @@ _より詳しい手順については、[ヘルプサイトをご覧ください
[CONST.INTEGRATION_ENTITY_MAP_TYPES.NETSUITE_DEFAULT]: {
label: 'NetSuite 従業員のデフォルト',
description: 'Expensify にインポートされず、エクスポート時に適用されます',
- footerContent: ({importField}: ImportFieldParams) =>
+ footerContent: (importField: string) =>
`NetSuite で ${importField} を使用する場合、Expense Report または Journal Entry へエクスポートする際に、従業員レコードに設定されているデフォルトを適用します。`,
},
[CONST.INTEGRATION_ENTITY_MAP_TYPES.TAG]: {
label: 'タグ',
description: '明細行レベル',
- footerContent: ({importField}: ImportFieldParams) => `${startCase(importField)} は、従業員のレポート上の各経費ごとに個別に選択できるようになります。`,
+ footerContent: (importField: string) => `${startCase(importField)} は、従業員のレポート上の各経費ごとに個別に選択できるようになります。`,
},
[CONST.INTEGRATION_ENTITY_MAP_TYPES.REPORT_FIELD]: {
label: 'レポート項目',
description: 'レポートレベル',
- footerContent: ({importField}: ImportFieldParams) => `${startCase(importField)} の選択は、従業員のレポート上のすべての経費に適用されます。`,
+ footerContent: (importField: string) => `${startCase(importField)} の選択は、従業員のレポート上のすべての経費に適用されます。`,
},
},
},
@@ -4723,7 +4701,7 @@ _より詳しい手順については、[ヘルプサイトをご覧ください
commercialFeedPlaidDetails: `銀行での設定が必要ですが、設定手順はご案内します。通常は大企業に限られます。`,
directFeedDetails: '最も簡単な方法です。マスター認証情報を使用して、すぐに接続します。この方法が最も一般的です。',
enableFeed: {
- title: ({provider}: GoBackMessageParams) => `${provider} フィードを有効にする`,
+ title: (provider: string) => `${provider} フィードを有効にする`,
heading: 'お使いのカード発行会社と直接連携しており、取引データを迅速かつ正確に Expensify に取り込むことができます。\n\n開始するには、次の手順に従ってください。',
visa: '私たちはVisaとグローバル連携していますが、対象となるかどうかは銀行やカードプログラムによって異なります。\n\nご利用を開始するには、次のステップに従ってください。',
mastercard:
@@ -5279,7 +5257,7 @@ _より詳しい手順については、[ヘルプサイトをご覧ください
prompt3: 'バックアップをダウンロード',
prompt4: '最初。',
},
- importedTagsMessage: ({columnCounts}: ImportedTagsMessageParams) =>
+ importedTagsMessage: (columnCounts: number) =>
`スプレッドシート内に *${columnCounts} 列* 見つかりました。タグ名が含まれている列の横で *Name* を選択してください。タグのステータスを設定する列の横で *Enabled* を選択することもできます。`,
cannotDeleteOrDisableAllTags: {
title: 'すべてのタグを削除または無効にすることはできません',
@@ -6082,7 +6060,7 @@ ${reportName}
rules: {
individualExpenseRules: {
title: '経費',
- subtitle: ({categoriesPageLink, tagsPageLink}: IndividualExpenseRulesSubtitleParams) =>
+ subtitle: (categoriesPageLink: string, tagsPageLink: string) =>
`個々の経費に対して支出コントロールとデフォルトを設定します。カテゴリやタグのルールを作成することもできます。`,
receiptRequiredAmount: '領収書が必要な金額',
receiptRequiredAmountDescription: 'カテゴリルールで上書きされない限り、支出がこの金額を超えた場合に領収書を必須にする。',
@@ -6699,7 +6677,7 @@ ${reportName}
amount: {
lessThan: ({amount}: OptionalParam = {}) => `${amount ?? ''} 未満`,
greaterThan: ({amount}: OptionalParam = {}) => `${amount ?? ''}より大きい`,
- between: ({greaterThan, lessThan}: FiltersAmountBetweenParams) => `${greaterThan} から ${lessThan} まで`,
+ between: (greaterThan: string, lessThan: string) => `${greaterThan} から ${lessThan} まで`,
equalTo: ({amount}: OptionalParam = {}) => `${amount ?? ''} と等しい`,
},
card: {
diff --git a/src/languages/nl.ts b/src/languages/nl.ts
index efb0e5be92bd..e491c5f2fbe0 100644
--- a/src/languages/nl.ts
+++ b/src/languages/nl.ts
@@ -28,24 +28,6 @@ import type {
EditActionParams,
ExportAgainModalDescriptionParams,
ExportIntegrationSelectedParams,
- FileLimitParams,
- FileTypeParams,
- FiltersAmountBetweenParams,
- FlightLayoverParams,
- FlightParams,
- FocusModeUpdateParams,
- FormattedMaxLengthParams,
- GoBackMessageParams,
- HarvestCreatedExpenseReportParams,
- ImportedTagsMessageParams,
- ImportedTypesParams,
- ImportFieldParams,
- ImportMembersSuccessfulDescriptionParams,
- ImportPerDiemRatesSuccessfulDescriptionParams,
- ImportTagsSuccessfulDescriptionParams,
- IncorrectZipFormatParams,
- IndividualExpenseRulesSubtitleParams,
- InstantSummaryParams,
IntacctMappingTitleParams,
IntegrationExportParams,
IntegrationSyncFailedParams,
@@ -133,9 +115,6 @@ import type {
SplitDateRangeParams,
SplitExpenseEditTitleParams,
SplitExpenseSubtitleParams,
- SpreadCategoriesParams,
- SpreadFieldNameParams,
- SpreadSheetColumnParams,
StatementTitleParams,
StepCounterParams,
StripePaidParams,
@@ -709,12 +688,12 @@ const translations: TranslationDeepObject = {
protectedPDFNotSupported: 'Met wachtwoord beveiligde PDF wordt niet ondersteund',
attachmentImageResized: 'Deze afbeelding is verkleind voor voorbeeldweergave. Download om de volledige resolutie te zien.',
attachmentImageTooLarge: 'Deze afbeelding is te groot om een voorbeeld te tonen voordat je deze uploadt.',
- tooManyFiles: ({fileLimit}: FileLimitParams) => `Je kunt maximaal ${fileLimit} bestanden tegelijk uploaden.`,
+ tooManyFiles: (fileLimit: number) => `Je kunt maximaal ${fileLimit} bestanden tegelijk uploaden.`,
sizeExceededWithValue: ({maxUploadSizeInMB}: SizeExceededParams) => `Bestanden zijn groter dan ${maxUploadSizeInMB} MB. Probeer het opnieuw.`,
someFilesCantBeUploaded: 'Sommige bestanden kunnen niet worden geüpload',
sizeLimitExceeded: ({maxUploadSizeInMB}: SizeExceededParams) => `Bestanden moeten kleiner zijn dan ${maxUploadSizeInMB} MB. Grotere bestanden worden niet geüpload.`,
maxFileLimitExceeded: 'Je kunt maximaal 30 bonnetjes tegelijk uploaden. Eventuele extra’s worden niet geüpload.',
- unsupportedFileType: ({fileType}: FileTypeParams) => `${fileType}-bestanden worden niet ondersteund. Alleen ondersteunde bestandstypen worden geüpload.`,
+ unsupportedFileType: (fileType: string) => `${fileType}-bestanden worden niet ondersteund. Alleen ondersteunde bestandstypen worden geüpload.`,
learnMoreAboutSupportedFiles: 'Meer informatie over ondersteunde indelingen.',
passwordProtected: 'Met wachtwoord beveiligde pdf’s worden niet ondersteund. Alleen ondersteunde bestanden worden geüpload.',
},
@@ -739,8 +718,8 @@ const translations: TranslationDeepObject = {
composer: {
noExtensionFoundForMimeType: 'Geen extensie gevonden voor mimetype',
problemGettingImageYouPasted: 'Er is een probleem opgetreden bij het ophalen van de afbeelding die je hebt geplakt',
- commentExceededMaxLength: ({formattedMaxLength}: FormattedMaxLengthParams) => `De maximale lengte van opmerkingen is ${formattedMaxLength} tekens.`,
- taskTitleExceededMaxLength: ({formattedMaxLength}: FormattedMaxLengthParams) => `De maximale lengte van de taaknaam is ${formattedMaxLength} tekens.`,
+ commentExceededMaxLength: (formattedMaxLength: string) => `De maximale lengte van opmerkingen is ${formattedMaxLength} tekens.`,
+ taskTitleExceededMaxLength: (formattedMaxLength: string) => `De maximale lengte van de taaknaam is ${formattedMaxLength} tekens.`,
},
baseUpdateAppModal: {
updateApp: 'App bijwerken',
@@ -920,7 +899,7 @@ const translations: TranslationDeepObject = {
adminOnlyCanPost: 'Alleen beheerders kunnen berichten sturen in deze ruimte.',
reportAction: {
asCopilot: 'als copiloot voor',
- harvestCreatedExpenseReport: ({reportUrl, reportName}: HarvestCreatedExpenseReportParams) =>
+ harvestCreatedExpenseReport: (reportUrl: string, reportName: string) =>
`heeft dit rapport aangemaakt om alle uitgaven van ${reportName} op te nemen die niet konden worden ingediend met de door jou gekozen frequentie`,
createdReportForUnapprovedTransactions: ({reportUrl, reportName}: CreatedReportForUnapprovedTransactionsParams) =>
`heeft dit rapport gemaakt voor uitgestelde uitgaven van ${reportName}`,
@@ -988,13 +967,13 @@ const translations: TranslationDeepObject = {
chooseSpreadsheet: 'Selecteer een spreadsheetbestand om te importeren. Ondersteunde indelingen: .csv, .txt, .xls en .xlsx.',
chooseSpreadsheetMultiLevelTag: `Selecteer een spreadsheetbestand om te importeren. Meer informatie over ondersteunde bestandsindelingen.`,
fileContainsHeader: 'Bestand bevat kolomkoppen',
- column: ({name}: SpreadSheetColumnParams) => `Kolom ${name}`,
- fieldNotMapped: ({fieldName}: SpreadFieldNameParams) => `Oeps! Een verplicht veld ("${fieldName}") is niet toegewezen. Controleer dit en probeer het opnieuw.`,
- singleFieldMultipleColumns: ({fieldName}: SpreadFieldNameParams) => `Oeps! Je hebt één veld ("${fieldName}") aan meerdere kolommen gekoppeld. Controleer dit en probeer het opnieuw.`,
- emptyMappedField: ({fieldName}: SpreadFieldNameParams) => `Oeps! Het veld („${fieldName}”) bevat een of meer lege waarden. Controleer het en probeer het opnieuw.`,
+ column: (name: string) => `Kolom ${name}`,
+ fieldNotMapped: (fieldName: string) => `Oeps! Een verplicht veld ("${fieldName}") is niet toegewezen. Controleer dit en probeer het opnieuw.`,
+ singleFieldMultipleColumns: (fieldName: string) => `Oeps! Je hebt één veld ("${fieldName}") aan meerdere kolommen gekoppeld. Controleer dit en probeer het opnieuw.`,
+ emptyMappedField: (fieldName: string) => `Oeps! Het veld („${fieldName}”) bevat een of meer lege waarden. Controleer het en probeer het opnieuw.`,
importSuccessfulTitle: 'Import succesvol',
- importCategoriesSuccessfulDescription: ({categories}: SpreadCategoriesParams) => (categories > 1 ? `Er zijn ${categories} categorieën toegevoegd.` : '1 categorie is toegevoegd.'),
- importMembersSuccessfulDescription: ({added, updated}: ImportMembersSuccessfulDescriptionParams) => {
+ importCategoriesSuccessfulDescription: ({categories}: {categories: number}) => (categories > 1 ? `Er zijn ${categories} categorieën toegevoegd.` : '1 categorie is toegevoegd.'),
+ importMembersSuccessfulDescription: ({added, updated}: {added: number; updated: number}) => {
if (!added && !updated) {
return 'Er zijn geen leden toegevoegd of bijgewerkt.';
}
@@ -1006,10 +985,9 @@ const translations: TranslationDeepObject = {
}
return added > 1 ? `${added} leden zijn toegevoegd.` : '1 lid is toegevoegd.';
},
- importTagsSuccessfulDescription: ({tags}: ImportTagsSuccessfulDescriptionParams) => (tags > 1 ? `Er zijn ${tags} tags toegevoegd.` : '1 tag is toegevoegd.'),
+ importTagsSuccessfulDescription: ({tags}: {tags: number}) => (tags > 1 ? `Er zijn ${tags} tags toegevoegd.` : '1 tag is toegevoegd.'),
importMultiLevelTagsSuccessfulDescription: 'Tags op meerdere niveaus zijn toegevoegd.',
- importPerDiemRatesSuccessfulDescription: ({rates}: ImportPerDiemRatesSuccessfulDescriptionParams) =>
- rates > 1 ? `${rates} dagvergoedingen zijn toegevoegd.` : '1 dagvergoedingstarief is toegevoegd.',
+ importPerDiemRatesSuccessfulDescription: ({rates}: {rates: number}) => (rates > 1 ? `${rates} dagvergoedingen zijn toegevoegd.` : '1 dagvergoedingstarief is toegevoegd.'),
importFailedTitle: 'Import mislukt',
importFailedDescription: 'Zorg ervoor dat alle velden correct zijn ingevuld en probeer het opnieuw. Als het probleem zich blijft voordoen, neem dan contact op met Concierge.',
importDescription: 'Kies welke velden je wilt koppelen vanuit je spreadsheet door op de vervolgkeuzelijst naast elke geïmporteerde kolom hieronder te klikken.',
@@ -2342,7 +2320,7 @@ ${amount} voor ${merchant} - ${date}`,
transferAmountPage: {
transfer: ({amount}: TransferParams) => `Overboeking${amount ? ` ${amount}` : ''}`,
instant: 'Direct (debitkaart)',
- instantSummary: ({rate, minAmount}: InstantSummaryParams) => `${rate}% vergoeding (${minAmount} minimum)`,
+ instantSummary: (rate: string, minAmount: string) => `${rate}% vergoeding (${minAmount} minimum)`,
ach: '1-3 werkdagen (bankrekening)',
achSummary: 'Geen kosten',
whichAccount: 'Welk account?',
@@ -2874,7 +2852,7 @@ ${
dateShouldBeBefore: (dateString: string) => `Datum moet vóór ${dateString} zijn`,
dateShouldBeAfter: (dateString: string) => `Datum moet na ${dateString} zijn`,
hasInvalidCharacter: 'Naam mag alleen Latijnse tekens bevatten',
- incorrectZipFormat: ({zipFormat}: IncorrectZipFormatParams = {}) => `Ongeldig postcodeformaat${zipFormat ? `Acceptabel formaat: ${zipFormat}` : ''}`,
+ incorrectZipFormat: (zipFormat?: string) => `Ongeldig postcodeformaat${zipFormat ? `Acceptabel formaat: ${zipFormat}` : ''}`,
invalidPhoneNumber: `Zorg ervoor dat het telefoonnummer geldig is (bijv. ${CONST.EXAMPLE_PHONE_NUMBER})`,
},
},
@@ -2957,7 +2935,7 @@ ${
},
focusModeUpdateModal: {
title: 'Welkom bij de #focus-modus!',
- prompt: ({priorityModePageUrl}: FocusModeUpdateParams) =>
+ prompt: (priorityModePageUrl: string) =>
`Blijf het overzicht houden door alleen ongelezen chats of chats die je aandacht nodig hebben te zien. Maak je geen zorgen, je kunt dit op elk moment wijzigen in de instellingen.`,
},
notFound: {
@@ -3628,7 +3606,7 @@ ${
flight: 'Vlucht',
flightDetails: {
passenger: 'Passagier',
- layover: ({layover}: FlightLayoverParams) => `Je hebt een ${layover} tussenstop vóór deze vlucht`,
+ layover: (layover: string) => `Je hebt een ${layover} tussenstop vóór deze vlucht`,
takeOff: 'Vertrek',
landing: 'Landingspagina',
seat: 'Licentie',
@@ -3718,18 +3696,19 @@ ${
conciergeMessage: ({domain}: {domain: string}) => `Reizen inschakelen is mislukt voor domein: ${domain}. Controleer dit domein en schakel reizen in.`,
},
updates: {
- bookingTicketed: ({airlineCode, origin, destination, startDate, confirmationID = ''}: FlightParams) =>
+ bookingTicketed: (airlineCode: string, origin: string, destination: string, startDate: string, confirmationID = '') =>
`Je vlucht ${airlineCode} (${origin} → ${destination}) op ${startDate} is geboekt. Bevestigingscode: ${confirmationID}`,
- ticketVoided: ({airlineCode, origin, destination, startDate}: FlightParams) =>
+ ticketVoided: (airlineCode: string, origin: string, destination: string, startDate: string) =>
`Je ticket voor vlucht ${airlineCode} (${origin} → ${destination}) op ${startDate} is geannuleerd.`,
- ticketRefunded: ({airlineCode, origin, destination, startDate}: FlightParams) =>
+ ticketRefunded: (airlineCode: string, origin: string, destination: string, startDate: string) =>
`Je ticket voor vlucht ${airlineCode} (${origin} → ${destination}) op ${startDate} is terugbetaald of gewijzigd.`,
- flightCancelled: ({airlineCode, origin, destination, startDate}: FlightParams) =>
+ flightCancelled: (airlineCode: string, origin: string, destination: string, startDate: string) =>
`Je vlucht ${airlineCode} (${origin} → ${destination}) op ${startDate}} is door de luchtvaartmaatschappij geannuleerd.`,
flightScheduleChangePending: (airlineCode: string) =>
`De luchtvaartmaatschappij heeft een wijziging in het schema voorgesteld voor vlucht ${airlineCode}; we wachten op bevestiging.`,
flightScheduleChangeClosed: (airlineCode: string, startDate?: string) => `Wijziging van schema bevestigd: vlucht ${airlineCode} vertrekt nu om ${startDate}.`,
- flightUpdated: ({airlineCode, origin, destination, startDate}: FlightParams) => `Je vlucht ${airlineCode} (${origin} → ${destination}) op ${startDate} is bijgewerkt.`,
+ flightUpdated: (airlineCode: string, origin: string, destination: string, startDate: string) =>
+ `Je vlucht ${airlineCode} (${origin} → ${destination}) op ${startDate} is bijgewerkt.`,
flightCabinChanged: (airlineCode: string, cabinClass?: string) => `Uw cabineklasse is bijgewerkt naar ${cabinClass} op vlucht ${airlineCode}.`,
flightSeatConfirmed: (airlineCode: string) => `Je stoeltoewijzing op vlucht ${airlineCode} is bevestigd.`,
flightSeatChanged: (airlineCode: string) => `Je stoeltoewijzing op vlucht ${airlineCode} is gewijzigd.`,
@@ -4542,7 +4521,7 @@ ${
importTaxDescription: 'Belastinggroepen uit NetSuite importeren.',
importCustomFields: {
chooseOptionBelow: 'Kies een optie hieronder:',
- label: ({importedTypes}: ImportedTypesParams) => `Geïmporteerd als ${importedTypes.join('en')}`,
+ label: (importedTypes: string[]) => `Geïmporteerd als ${importedTypes.join('en')}`,
requiredFieldError: ({fieldName}: RequiredFieldParams) => `Voer de ${fieldName} in`,
customSegments: {
title: 'Aangepaste segmenten/records',
@@ -4657,19 +4636,18 @@ _Voor gedetailleerdere instructies, [bezoek onze helpsite](${CONST.NETSUITE_IMPO
[CONST.INTEGRATION_ENTITY_MAP_TYPES.NETSUITE_DEFAULT]: {
label: 'Standaard NetSuite-medewerker',
description: 'Niet in Expensify geïmporteerd, toegepast bij export',
- footerContent: ({importField}: ImportFieldParams) =>
+ footerContent: (importField: string) =>
`Als je ${importField} in NetSuite gebruikt, passen we de standaardwaarde die is ingesteld op de werknemerskaart toe bij het exporteren naar Expense Report of Journal Entry.`,
},
[CONST.INTEGRATION_ENTITY_MAP_TYPES.TAG]: {
label: 'Labels',
description: 'Niveau van regelitems',
- footerContent: ({importField}: ImportFieldParams) =>
- `${startCase(importField)} zal selecteerbaar zijn voor elke afzonderlijke onkost in het rapport van een werknemer.`,
+ footerContent: (importField: string) => `${startCase(importField)} zal selecteerbaar zijn voor elke afzonderlijke onkost in het rapport van een werknemer.`,
},
[CONST.INTEGRATION_ENTITY_MAP_TYPES.REPORT_FIELD]: {
label: 'Rapportvelden',
description: 'Rapportniveau',
- footerContent: ({importField}: ImportFieldParams) => `${startCase(importField)}-selectie is van toepassing op alle onkosten op het rapport van een werknemer.`,
+ footerContent: (importField: string) => `${startCase(importField)}-selectie is van toepassing op alle onkosten op het rapport van een werknemer.`,
},
},
},
@@ -4746,7 +4724,7 @@ _Voor gedetailleerdere instructies, [bezoek onze helpsite](${CONST.NETSUITE_IMPO
commercialFeedPlaidDetails: `Vereist een koppeling met je bank, maar wij begeleiden je daarbij. Dit is meestal beperkt tot grotere bedrijven.`,
directFeedDetails: 'De eenvoudigste aanpak. Maak direct verbinding met behulp van je hoofdreferenties. Deze methode komt het meest voor.',
enableFeed: {
- title: ({provider}: GoBackMessageParams) => `Schakel je ${provider}-feed in`,
+ title: (provider: string) => `Schakel je ${provider}-feed in`,
heading:
'We hebben een directe integratie met uw kaartuitgever en kunnen uw transactiegegevens snel en nauwkeurig in Expensify importeren.\n\nOm te beginnen hoeft u alleen maar:',
visa: 'We hebben wereldwijde integraties met Visa, al verschilt de geschiktheid per bank en kaartprogramma.\n\nOm te beginnen, hoeft u alleen maar:',
@@ -5306,7 +5284,7 @@ _Voor gedetailleerdere instructies, [bezoek onze helpsite](${CONST.NETSUITE_IMPO
prompt3: 'een back-up downloaden',
prompt4: 'eerst.',
},
- importedTagsMessage: ({columnCounts}: ImportedTagsMessageParams) =>
+ importedTagsMessage: (columnCounts: number) =>
`We hebben *${columnCounts} kolommen* in je spreadsheet gevonden. Selecteer *Naam* naast de kolom die de tagnamen bevat. Je kunt ook *Ingeschakeld* selecteren naast de kolom die de tagstatus instelt.`,
cannotDeleteOrDisableAllTags: {
title: 'Kan niet alle labels verwijderen of uitschakelen',
@@ -6115,7 +6093,7 @@ Vraag verplichte uitgavedetails zoals bonnetjes en beschrijvingen, stel limieten
rules: {
individualExpenseRules: {
title: 'Declaraties',
- subtitle: ({categoriesPageLink, tagsPageLink}: IndividualExpenseRulesSubtitleParams) =>
+ subtitle: (categoriesPageLink: string, tagsPageLink: string) =>
`Stel uitgavenlimieten en standaardwaarden in voor afzonderlijke uitgaven. Je kunt ook regels maken voor categorieën en tags.`,
receiptRequiredAmount: 'Vereist bedrag voor bon',
receiptRequiredAmountDescription: 'Bonnen verplicht stellen wanneer de uitgaven dit bedrag overschrijden, tenzij dit wordt overschreven door een categoriewaarde.',
@@ -6743,7 +6721,7 @@ Vraag verplichte uitgavedetails zoals bonnetjes en beschrijvingen, stel limieten
amount: {
lessThan: ({amount}: OptionalParam = {}) => `Minder dan ${amount ?? ''}`,
greaterThan: ({amount}: OptionalParam = {}) => `Groter dan ${amount ?? ''}`,
- between: ({greaterThan, lessThan}: FiltersAmountBetweenParams) => `Tussen ${greaterThan} en ${lessThan}`,
+ between: (greaterThan: string, lessThan: string) => `Tussen ${greaterThan} en ${lessThan}`,
equalTo: ({amount}: OptionalParam = {}) => `Gelijk aan ${amount ?? ''}`,
},
card: {
diff --git a/src/languages/params.ts b/src/languages/params.ts
index a188c3263caa..0a2e613f3fe7 100644
--- a/src/languages/params.ts
+++ b/src/languages/params.ts
@@ -17,10 +17,6 @@ type WelcomeEnterMagicCodeParams = {
login: string;
};
-type GoBackMessageParams = {
- provider: string;
-};
-
type LocalTimeParams = {
user: string;
time: string;
@@ -79,11 +75,6 @@ type ReportArchiveReasonsInvoiceReceiverPolicyDeletedParams = {
policyName: string;
};
-type HarvestCreatedExpenseReportParams = {
- reportUrl: string;
- reportName: string;
-};
-
type CreatedReportForUnapprovedTransactionsParams = {
reportUrl: string;
reportName: string;
@@ -157,8 +148,6 @@ type NotAllowedExtensionParams = {allowedExtensions: string[]};
type TransferParams = {amount: string};
-type InstantSummaryParams = {rate: string; minAmount: string};
-
type NotYouParams = {user: string};
type WeSentYouMagicSignInLinkParams = {login: string; loginType: string};
@@ -199,8 +188,6 @@ type UpdatedTheRequestParams = {valueName: string; newValueToDisplay: string; ol
type UpdatedTheDistanceMerchantParams = {translatedChangedField: string; newMerchant: string; oldMerchant: string; newAmountToDisplay: string; oldAmountToDisplay: string};
-type FormattedMaxLengthParams = {formattedMaxLength: string};
-
type WalletProgramParams = {walletProgram: string};
type ViolationsCashExpenseWithNoReceiptParams = {formattedLimit?: string} | undefined;
@@ -383,8 +370,6 @@ type LeftWorkspaceParams = {nameOrEmail: string};
type RemoveMemberParams = {email: string; role: string};
-type FiltersAmountBetweenParams = {greaterThan: string; lessThan: string};
-
type StatementPageTitleParams = {year: string | number; monthName: string};
type DisconnectPromptParams = {currentIntegration?: ConnectionName} | undefined;
@@ -431,14 +416,10 @@ type SubscriptionSettingsLearnMoreParams = {hasAdminsRoom: boolean};
type UnapproveWithIntegrationWarningParams = {accountingIntegration: string};
-type IncorrectZipFormatParams = {zipFormat?: string} | undefined;
-
type ExportIntegrationSelectedParams = {connectionName: ConnectionName};
type RequiredFieldParams = {fieldName: string};
-type ImportFieldParams = {importField: string};
-
type IntacctMappingTitleParams = {mappingName: SageIntacctMappingName};
type LastSyncAccountingParams = {relativeDate: string};
@@ -453,18 +434,6 @@ type SubmittedToVacationDelegateParams = {submittedToName: string; vacationDeleg
type RoleNamesParams = {role: string};
-type SpreadSheetColumnParams = {
- name: string;
-};
-
-type SpreadFieldNameParams = {
- fieldName: string;
-};
-
-type SpreadCategoriesParams = {
- categories: number;
-};
-
type RemovedFromApprovalWorkflowParams = {
submittersNames: string[];
};
@@ -488,27 +457,6 @@ type InvalidValueParams = {
expectedValues: string;
};
-type ImportTagsSuccessfulDescriptionParams = {
- tags: number;
-};
-
-type ImportedTagsMessageParams = {
- columnCounts: number;
-};
-
-type ImportMembersSuccessfulDescriptionParams = {
- added: number;
- updated: number;
-};
-
-type ImportPerDiemRatesSuccessfulDescriptionParams = {
- rates: number;
-};
-
-type ImportedTypesParams = {
- importedTypes: string[];
-};
-
type WorkspaceYouMayJoin = {
domain: string;
email: string;
@@ -527,14 +475,6 @@ type WorkspaceMemberList = {
policyOwner: string;
};
-type FileLimitParams = {
- fileLimit: number;
-};
-
-type FileTypeParams = {
- fileType: string;
-};
-
type WorkspaceLockedPlanTypeParams = {
count: number;
annualSubscriptionEndDate: string;
@@ -549,10 +489,6 @@ type CustomUnitRateParams = {
rate: number;
};
-type FlightLayoverParams = {
- layover: string;
-};
-
type SubmitsToParams = {
name: string;
};
@@ -593,14 +529,6 @@ type TotalAmountGreaterOrLessThanOriginalParams = {
amount: string;
};
-type FlightParams = {
- startDate: string;
- airlineCode: string;
- origin: string;
- destination: string;
- confirmationID?: string;
-};
-
type RailTicketParams = {
origin: string;
destination: string;
@@ -641,11 +569,6 @@ type WorkspaceUpgradeNoteParams = {
type WorkflowSettingsParam = {workflowSettingLink: string};
-type IndividualExpenseRulesSubtitleParams = {
- categoriesPageLink: string;
- tagsPageLink: string;
-};
-
type WorkspaceShareNoteParams = {
adminsRoomLink: string;
};
@@ -691,10 +614,6 @@ type ToggleImportTitleParams = {
mappingTitle: string;
};
-type FocusModeUpdateParams = {
- priorityModePageUrl: string;
-};
-
type RoutedDueToDEWParams = {
to: string;
};
@@ -706,29 +625,19 @@ export type {
SplitExpenseSubtitleParams,
SplitDateRangeParams,
TotalAmountGreaterOrLessThanOriginalParams,
- ImportMembersSuccessfulDescriptionParams,
- ImportedTagsMessageParams,
- ImportTagsSuccessfulDescriptionParams,
MissingPropertyParams,
InvalidPropertyParams,
InvalidValueParams,
IntegrationExportParams,
RemovedFromApprovalWorkflowParams,
- FileLimitParams,
- FileTypeParams,
- SpreadSheetColumnParams,
- SpreadFieldNameParams,
- SpreadCategoriesParams,
DelegateRoleParams,
VacationDelegateParams,
LastSyncAccountingParams,
SyncStageNameConnectionsParams,
RequiredFieldParams,
IntacctMappingTitleParams,
- ImportFieldParams,
ExportIntegrationSelectedParams,
UnapproveWithIntegrationWarningParams,
- IncorrectZipFormatParams,
YourPlanPriceParams,
SubscriptionSizeParams,
SubscriptionCommitmentParams,
@@ -749,12 +658,9 @@ export type {
DeleteActionParams,
DeleteConfirmationParams,
EditActionParams,
- FormattedMaxLengthParams,
- GoBackMessageParams,
SubmittedToVacationDelegateParams,
LearnMoreRouteParams,
HeldRequestParams,
- InstantSummaryParams,
IssueVirtualCardParams,
LocalTimeParams,
LogSizeParams,
@@ -781,7 +687,6 @@ export type {
ReportArchiveReasonsMergedParams,
ReportPolicyNameParams,
ReportArchiveReasonsInvoiceReceiverPolicyDeletedParams,
- HarvestCreatedExpenseReportParams,
CreatedReportForUnapprovedTransactionsParams,
ReportArchiveReasonsRemovedFromPolicyParams,
RequestAmountParams,
@@ -847,15 +752,12 @@ export type {
UpdatedCustomFieldParams,
LeftWorkspaceParams,
RemoveMemberParams,
- FiltersAmountBetweenParams,
StatementPageTitleParams,
DisconnectPromptParams,
DisconnectTitleParams,
OptionalParam,
- ImportedTypesParams,
WorkspaceYouMayJoin,
WorkspaceMemberList,
- ImportPerDiemRatesSuccessfulDescriptionParams,
WorkspaceLockedPlanTypeParams,
CustomUnitRateParams,
UpdatedPolicyCurrencyParams,
@@ -867,7 +769,6 @@ export type {
UpdatedPolicyFieldWithNewAndOldValueParams,
UpdatedPolicyFieldWithValueParam,
UpdatedPolicyDescriptionParams,
- FlightLayoverParams,
WorkEmailResendCodeParams,
WorkEmailMergingBlockedParams,
NewWorkspaceNameParams,
@@ -901,7 +802,6 @@ export type {
SubscriptionSettingsSummaryParams,
ReviewParams,
WorkspaceMembersCountParams,
- FlightParams,
RailTicketParams,
TravelTypeParams,
PhoneErrorRouteParams,
@@ -915,7 +815,6 @@ export type {
WorkspaceUpgradeNoteParams,
WorkflowSettingsParam,
MovedActionParams,
- IndividualExpenseRulesSubtitleParams,
WorkspaceShareNoteParams,
RulesEnableWorkflowsParams,
UpgradeSuccessMessageParams,
@@ -927,7 +826,6 @@ export type {
MergeAccountIntoParams,
NextStepParams,
ReportFieldParams,
- FocusModeUpdateParams,
RoutedDueToDEWParams,
UpdatedPolicyCustomUnitRateEnabledParams,
};
diff --git a/src/languages/pl.ts b/src/languages/pl.ts
index 4b158b362d7a..8411559f03f7 100644
--- a/src/languages/pl.ts
+++ b/src/languages/pl.ts
@@ -28,24 +28,6 @@ import type {
EditActionParams,
ExportAgainModalDescriptionParams,
ExportIntegrationSelectedParams,
- FileLimitParams,
- FileTypeParams,
- FiltersAmountBetweenParams,
- FlightLayoverParams,
- FlightParams,
- FocusModeUpdateParams,
- FormattedMaxLengthParams,
- GoBackMessageParams,
- HarvestCreatedExpenseReportParams,
- ImportedTagsMessageParams,
- ImportedTypesParams,
- ImportFieldParams,
- ImportMembersSuccessfulDescriptionParams,
- ImportPerDiemRatesSuccessfulDescriptionParams,
- ImportTagsSuccessfulDescriptionParams,
- IncorrectZipFormatParams,
- IndividualExpenseRulesSubtitleParams,
- InstantSummaryParams,
IntacctMappingTitleParams,
IntegrationExportParams,
IntegrationSyncFailedParams,
@@ -133,9 +115,6 @@ import type {
SplitDateRangeParams,
SplitExpenseEditTitleParams,
SplitExpenseSubtitleParams,
- SpreadCategoriesParams,
- SpreadFieldNameParams,
- SpreadSheetColumnParams,
StatementTitleParams,
StepCounterParams,
StripePaidParams,
@@ -709,12 +688,12 @@ const translations: TranslationDeepObject = {
protectedPDFNotSupported: 'Plik PDF zabezpieczony hasłem nie jest obsługiwany',
attachmentImageResized: 'Ten obraz został zmniejszony na potrzeby podglądu. Pobierz go, aby zobaczyć w pełnej rozdzielczości.',
attachmentImageTooLarge: 'Ten obraz jest zbyt duży, aby wyświetlić podgląd przed przesłaniem.',
- tooManyFiles: ({fileLimit}: FileLimitParams) => `Możesz przesłać jednocześnie maksymalnie ${fileLimit} plików.`,
+ tooManyFiles: (fileLimit: number) => `Możesz przesłać jednocześnie maksymalnie ${fileLimit} plików.`,
sizeExceededWithValue: ({maxUploadSizeInMB}: SizeExceededParams) => `Plik przekracza ${maxUploadSizeInMB} MB. Spróbuj ponownie.`,
someFilesCantBeUploaded: 'Niektórych plików nie można przesłać',
sizeLimitExceeded: ({maxUploadSizeInMB}: SizeExceededParams) => `Pliki muszą mieć mniej niż ${maxUploadSizeInMB} MB. Większe pliki nie zostaną przesłane.`,
maxFileLimitExceeded: 'Możesz jednorazowo przesłać maksymalnie 30 paragonów. Dodatkowe nie zostaną przesłane.',
- unsupportedFileType: ({fileType}: FileTypeParams) => `Pliki ${fileType} nie są obsługiwane. Przesłane zostaną tylko obsługiwane typy plików.`,
+ unsupportedFileType: (fileType: string) => `Pliki ${fileType} nie są obsługiwane. Przesłane zostaną tylko obsługiwane typy plików.`,
learnMoreAboutSupportedFiles: 'Dowiedz się więcej o obsługiwanych formatach.',
passwordProtected: 'Pliki PDF zabezpieczone hasłem nie są obsługiwane. Zostaną przesłane tylko obsługiwane pliki.',
},
@@ -739,8 +718,8 @@ const translations: TranslationDeepObject = {
composer: {
noExtensionFoundForMimeType: 'Nie znaleziono rozszerzenia dla typu MIME',
problemGettingImageYouPasted: 'Wystąpił problem z pobraniem wklejonego obrazu',
- commentExceededMaxLength: ({formattedMaxLength}: FormattedMaxLengthParams) => `Maksymalna długość komentarza to ${formattedMaxLength} znaków.`,
- taskTitleExceededMaxLength: ({formattedMaxLength}: FormattedMaxLengthParams) => `Maksymalna długość tytułu zadania to ${formattedMaxLength} znaków.`,
+ commentExceededMaxLength: (formattedMaxLength: string) => `Maksymalna długość komentarza to ${formattedMaxLength} znaków.`,
+ taskTitleExceededMaxLength: (formattedMaxLength: string) => `Maksymalna długość tytułu zadania to ${formattedMaxLength} znaków.`,
},
baseUpdateAppModal: {
updateApp: 'Zaktualizuj aplikację',
@@ -919,7 +898,7 @@ const translations: TranslationDeepObject = {
adminOnlyCanPost: 'Tylko administratorzy mogą wysyłać wiadomości w tym pokoju.',
reportAction: {
asCopilot: 'jako kopilot dla',
- harvestCreatedExpenseReport: ({reportUrl, reportName}: HarvestCreatedExpenseReportParams) =>
+ harvestCreatedExpenseReport: (reportUrl: string, reportName: string) =>
`utworzył ten raport, aby zawrzeć wszystkie wydatki z ${reportName}, które nie mogły zostać przesłane zgodnie z wybraną przez ciebie częstotliwością`,
createdReportForUnapprovedTransactions: ({reportUrl, reportName}: CreatedReportForUnapprovedTransactionsParams) =>
`utworzył ten raport dla wszystkich wstrzymanych wydatków z ${reportName}`,
@@ -988,13 +967,13 @@ const translations: TranslationDeepObject = {
chooseSpreadsheet: 'Wybierz plik arkusza kalkulacyjnego do zaimportowania. Obsługiwane formaty: .csv, .txt, .xls i .xlsx.',
chooseSpreadsheetMultiLevelTag: `Wybierz plik arkusza kalkulacyjnego do zaimportowania. Dowiedz się więcej o obsługiwanych formatach plików.`,
fileContainsHeader: 'Plik zawiera nagłówki kolumn',
- column: ({name}: SpreadSheetColumnParams) => `Kolumna ${name}`,
- fieldNotMapped: ({fieldName}: SpreadFieldNameParams) => `Ups! Wymagane pole („${fieldName}”) nie zostało zmapowane. Sprawdź wszystko i spróbuj ponownie.`,
- singleFieldMultipleColumns: ({fieldName}: SpreadFieldNameParams) => `Ups! Przypisałeś jedno pole („${fieldName}”) do wielu kolumn. Sprawdź ustawienia i spróbuj ponownie.`,
- emptyMappedField: ({fieldName}: SpreadFieldNameParams) => `Ups! Pole („${fieldName}”) zawiera jedną lub więcej pustych wartości. Sprawdź je i spróbuj ponownie.`,
+ column: (name: string) => `Kolumna ${name}`,
+ fieldNotMapped: (fieldName: string) => `Ups! Wymagane pole („${fieldName}”) nie zostało zmapowane. Sprawdź wszystko i spróbuj ponownie.`,
+ singleFieldMultipleColumns: (fieldName: string) => `Ups! Przypisałeś jedno pole („${fieldName}”) do wielu kolumn. Sprawdź ustawienia i spróbuj ponownie.`,
+ emptyMappedField: (fieldName: string) => `Ups! Pole („${fieldName}”) zawiera jedną lub więcej pustych wartości. Sprawdź je i spróbuj ponownie.`,
importSuccessfulTitle: 'Import zakończony pomyślnie',
- importCategoriesSuccessfulDescription: ({categories}: SpreadCategoriesParams) => (categories > 1 ? `Dodano ${categories} kategorii.` : 'Dodano 1 kategorię.'),
- importMembersSuccessfulDescription: ({added, updated}: ImportMembersSuccessfulDescriptionParams) => {
+ importCategoriesSuccessfulDescription: ({categories}: {categories: number}) => (categories > 1 ? `Dodano ${categories} kategorii.` : 'Dodano 1 kategorię.'),
+ importMembersSuccessfulDescription: ({added, updated}: {added: number; updated: number}) => {
if (!added && !updated) {
return 'Nie dodano ani nie zaktualizowano żadnych członków.';
}
@@ -1006,9 +985,9 @@ const translations: TranslationDeepObject = {
}
return added > 1 ? `Dodano ${added} członków.` : 'Dodano 1 członka.';
},
- importTagsSuccessfulDescription: ({tags}: ImportTagsSuccessfulDescriptionParams) => (tags > 1 ? `Dodano ${tags} tagów.` : 'Dodano 1 tag.'),
+ importTagsSuccessfulDescription: ({tags}: {tags: number}) => (tags > 1 ? `Dodano ${tags} tagów.` : 'Dodano 1 tag.'),
importMultiLevelTagsSuccessfulDescription: 'Dodano tagi wielopoziomowe.',
- importPerDiemRatesSuccessfulDescription: ({rates}: ImportPerDiemRatesSuccessfulDescriptionParams) => (rates > 1 ? `Dodano ${rates} stawek ryczałtowych.` : 'Dodano 1 stawkę diety.'),
+ importPerDiemRatesSuccessfulDescription: ({rates}: {rates: number}) => (rates > 1 ? `Dodano ${rates} stawek ryczałtowych.` : 'Dodano 1 stawkę diety.'),
importFailedTitle: 'Import zakończony niepowodzeniem',
importFailedDescription: 'Upewnij się, że wszystkie pola zostały wypełnione poprawnie i spróbuj ponownie. Jeśli problem będzie się powtarzał, skontaktuj się z Concierge.',
importDescription: 'Wybierz pola do zmapowania z arkusza kalkulacyjnego, klikając menu rozwijane obok każdej zaimportowanej kolumny poniżej.',
@@ -2334,7 +2313,7 @@ ${amount} dla ${merchant} - ${date}`,
transferAmountPage: {
transfer: ({amount}: TransferParams) => `Przelej${amount ? ` ${amount}` : ''}`,
instant: 'Natychmiastowa (karta debetowa)',
- instantSummary: ({rate, minAmount}: InstantSummaryParams) => `Opłata ${rate}% (minimum ${minAmount})`,
+ instantSummary: (rate: string, minAmount: string) => `Opłata ${rate}% (minimum ${minAmount})`,
ach: '1–3 dni robocze (konto bankowe)',
achSummary: 'Bez opłaty',
whichAccount: 'Które konto?',
@@ -2868,7 +2847,7 @@ ${
dateShouldBeBefore: (dateString: string) => `Data powinna być wcześniejsza niż ${dateString}`,
dateShouldBeAfter: (dateString: string) => `Data powinna być późniejsza niż ${dateString}`,
hasInvalidCharacter: 'Nazwa może zawierać tylko znaki łacińskie',
- incorrectZipFormat: ({zipFormat}: IncorrectZipFormatParams = {}) => `Nieprawidłowy format kodu pocztowego${zipFormat ? `Akceptowalny format: ${zipFormat}` : ''}`,
+ incorrectZipFormat: (zipFormat?: string) => `Nieprawidłowy format kodu pocztowego${zipFormat ? `Akceptowalny format: ${zipFormat}` : ''}`,
invalidPhoneNumber: `Upewnij się, że numer telefonu jest prawidłowy (np. ${CONST.EXAMPLE_PHONE_NUMBER})`,
},
},
@@ -2950,7 +2929,7 @@ ${
},
focusModeUpdateModal: {
title: 'Witamy w trybie #focus!',
- prompt: ({priorityModePageUrl}: FocusModeUpdateParams) =>
+ prompt: (priorityModePageUrl: string) =>
`Pozostań na bieżąco, wyświetlając tylko nieprzeczytane czaty lub czaty wymagające Twojej uwagi. Nie martw się, możesz to zmienić w dowolnym momencie w ustawieniach.`,
},
notFound: {
@@ -3621,7 +3600,7 @@ ${
flight: 'Lot',
flightDetails: {
passenger: 'Pasażer',
- layover: ({layover}: FlightLayoverParams) => `Masz ${layover} międzylądowanie przed tym lotem`,
+ layover: (layover: string) => `Masz ${layover} międzylądowanie przed tym lotem`,
takeOff: 'Odlot',
landing: 'Strona startowa',
seat: 'Miejsce',
@@ -3711,17 +3690,18 @@ ${
conciergeMessage: ({domain}: {domain: string}) => `Konfigurowanie podróży nie powiodło się dla domeny: ${domain}. Sprawdź i włącz obsługę podróży dla tej domeny.`,
},
updates: {
- bookingTicketed: ({airlineCode, origin, destination, startDate, confirmationID = ''}: FlightParams) =>
+ bookingTicketed: (airlineCode: string, origin: string, destination: string, startDate: string, confirmationID = '') =>
`Twój lot ${airlineCode} (${origin} → ${destination}) w dniu ${startDate} został zarezerwowany. Kod potwierdzenia: ${confirmationID}`,
- ticketVoided: ({airlineCode, origin, destination, startDate}: FlightParams) =>
+ ticketVoided: (airlineCode: string, origin: string, destination: string, startDate: string) =>
`Twój bilet na lot ${airlineCode} (${origin} → ${destination}) w dniu ${startDate} został unieważniony.`,
- ticketRefunded: ({airlineCode, origin, destination, startDate}: FlightParams) =>
+ ticketRefunded: (airlineCode: string, origin: string, destination: string, startDate: string) =>
`Twój bilet na lot ${airlineCode} (${origin} → ${destination}) w dniu ${startDate} został zwrócony lub wymieniony.`,
- flightCancelled: ({airlineCode, origin, destination, startDate}: FlightParams) =>
+ flightCancelled: (airlineCode: string, origin: string, destination: string, startDate: string) =>
`Twój lot ${airlineCode} (${origin} → ${destination}) w dniu ${startDate}} został odwołany przez linię lotniczą.`,
flightScheduleChangePending: (airlineCode: string) => `Linie lotnicze zaproponowały zmianę rozkładu lotu ${airlineCode}; oczekujemy na potwierdzenie.`,
flightScheduleChangeClosed: (airlineCode: string, startDate?: string) => `Zmiana planu potwierdzona: lot ${airlineCode} odlot teraz o ${startDate}.`,
- flightUpdated: ({airlineCode, origin, destination, startDate}: FlightParams) => `Twój lot ${airlineCode} (${origin} → ${destination}) w dniu ${startDate} został zaktualizowany.`,
+ flightUpdated: (airlineCode: string, origin: string, destination: string, startDate: string) =>
+ `Twój lot ${airlineCode} (${origin} → ${destination}) w dniu ${startDate} został zaktualizowany.`,
flightCabinChanged: (airlineCode: string, cabinClass?: string) => `Twoja klasa kabiny została zaktualizowana do ${cabinClass} na locie ${airlineCode}.`,
flightSeatConfirmed: (airlineCode: string) => `Twoje miejsce na locie ${airlineCode} zostało potwierdzone.`,
flightSeatChanged: (airlineCode: string) => `Twoje miejsce na locie ${airlineCode} zostało zmienione.`,
@@ -4531,7 +4511,7 @@ ${
importTaxDescription: 'Importuj grupy podatkowe z NetSuite.',
importCustomFields: {
chooseOptionBelow: 'Wybierz jedną z opcji poniżej:',
- label: ({importedTypes}: ImportedTypesParams) => `Zaimportowano jako ${importedTypes.join('i')}`,
+ label: (importedTypes: string[]) => `Zaimportowano jako ${importedTypes.join('i')}`,
requiredFieldError: ({fieldName}: RequiredFieldParams) => `Wprowadź ${fieldName}`,
customSegments: {
title: 'Niestandardowe segmenty/rejestry',
@@ -4646,18 +4626,18 @@ _Aby uzyskać bardziej szczegółowe instrukcje, [odwiedź naszą stronę pomocy
[CONST.INTEGRATION_ENTITY_MAP_TYPES.NETSUITE_DEFAULT]: {
label: 'Domyślne ustawienia pracownika NetSuite',
description: 'Niezaimportowane do Expensify, zastosowane przy eksporcie',
- footerContent: ({importField}: ImportFieldParams) =>
+ footerContent: (importField: string) =>
`Jeśli używasz ${importField} w NetSuite, zastosujemy domyślną wartość ustawioną w rekordzie pracownika podczas eksportu do Raportu Wydatków lub Zapisu w Dzienniku.`,
},
[CONST.INTEGRATION_ENTITY_MAP_TYPES.TAG]: {
label: 'Tagi',
description: 'Na poziomie pozycji',
- footerContent: ({importField}: ImportFieldParams) => `${startCase(importField)} będzie można wybrać osobno dla każdego wydatku w raporcie pracownika.`,
+ footerContent: (importField: string) => `${startCase(importField)} będzie można wybrać osobno dla każdego wydatku w raporcie pracownika.`,
},
[CONST.INTEGRATION_ENTITY_MAP_TYPES.REPORT_FIELD]: {
label: 'Pola raportu',
description: 'Poziom raportu',
- footerContent: ({importField}: ImportFieldParams) => `Wybór ${startCase(importField)} zostanie zastosowany do wszystkich wydatków w raporcie pracownika.`,
+ footerContent: (importField: string) => `Wybór ${startCase(importField)} zostanie zastosowany do wszystkich wydatków w raporcie pracownika.`,
},
},
},
@@ -4734,7 +4714,7 @@ _Aby uzyskać bardziej szczegółowe instrukcje, [odwiedź naszą stronę pomocy
commercialFeedPlaidDetails: `Wymaga konfiguracji z Twoim bankiem, ale poprowadzimy Cię przez ten proces. Zwykle jest to dostępne tylko dla większych firm.`,
directFeedDetails: 'Najprostsze rozwiązanie. Połącz się od razu, używając swoich głównych danych logowania. Ta metoda jest najczęściej stosowana.',
enableFeed: {
- title: ({provider}: GoBackMessageParams) => `Włącz swój kanał ${provider}`,
+ title: (provider: string) => `Włącz swój kanał ${provider}`,
heading:
'Mamy bezpośrednią integrację z wystawcą Twojej karty i możemy szybko oraz dokładnie zaimportować dane Twoich transakcji do Expensify.\n\nAby rozpocząć, po prostu:',
visa: 'Mamy globalne integracje z Visa, choć kwalifikowalność zależy od banku i programu karty.\n\nAby rozpocząć, po prostu:',
@@ -5293,7 +5273,7 @@ _Aby uzyskać bardziej szczegółowe instrukcje, [odwiedź naszą stronę pomocy
prompt3: 'pobierz kopię zapasową',
prompt4: 'pierwszy.',
},
- importedTagsMessage: ({columnCounts}: ImportedTagsMessageParams) =>
+ importedTagsMessage: (columnCounts: number) =>
`Znaleźliśmy *${columnCounts} kolumn* w Twoim arkuszu kalkulacyjnym. Wybierz *Name* obok kolumny, która zawiera nazwy tagów. Możesz także wybrać *Enabled* obok kolumny, która ustawia status tagów.`,
cannotDeleteOrDisableAllTags: {
title: 'Nie można usunąć ani wyłączyć wszystkich tagów',
@@ -6103,7 +6083,7 @@ Wymagaj szczegółów wydatków, takich jak paragony i opisy, ustawiaj limity i
rules: {
individualExpenseRules: {
title: 'Wydatki',
- subtitle: ({categoriesPageLink, tagsPageLink}: IndividualExpenseRulesSubtitleParams) =>
+ subtitle: (categoriesPageLink: string, tagsPageLink: string) =>
`Ustaw limity wydatków i domyślne ustawienia dla poszczególnych wydatków. Możesz też utworzyć reguły dla kategorii i tagów.`,
receiptRequiredAmount: 'Wymagana kwota paragonu',
receiptRequiredAmountDescription: 'Wymagaj paragonów, gdy wydatki przekraczają tę kwotę, chyba że zostanie to nadpisane przez regułę kategorii.',
@@ -6728,7 +6708,7 @@ Wymagaj szczegółów wydatków, takich jak paragony i opisy, ustawiaj limity i
amount: {
lessThan: ({amount}: OptionalParam = {}) => `Mniej niż ${amount ?? ''}`,
greaterThan: ({amount}: OptionalParam = {}) => `Większe niż ${amount ?? ''}`,
- between: ({greaterThan, lessThan}: FiltersAmountBetweenParams) => `Pomiędzy ${greaterThan} a ${lessThan}`,
+ between: (greaterThan: string, lessThan: string) => `Pomiędzy ${greaterThan} a ${lessThan}`,
equalTo: ({amount}: OptionalParam = {}) => `Równe ${amount ?? ''}`,
},
card: {
diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts
index 94f3cf4ca44c..9eb85489f154 100644
--- a/src/languages/pt-BR.ts
+++ b/src/languages/pt-BR.ts
@@ -28,24 +28,6 @@ import type {
EditActionParams,
ExportAgainModalDescriptionParams,
ExportIntegrationSelectedParams,
- FileLimitParams,
- FileTypeParams,
- FiltersAmountBetweenParams,
- FlightLayoverParams,
- FlightParams,
- FocusModeUpdateParams,
- FormattedMaxLengthParams,
- GoBackMessageParams,
- HarvestCreatedExpenseReportParams,
- ImportedTagsMessageParams,
- ImportedTypesParams,
- ImportFieldParams,
- ImportMembersSuccessfulDescriptionParams,
- ImportPerDiemRatesSuccessfulDescriptionParams,
- ImportTagsSuccessfulDescriptionParams,
- IncorrectZipFormatParams,
- IndividualExpenseRulesSubtitleParams,
- InstantSummaryParams,
IntacctMappingTitleParams,
IntegrationExportParams,
IntegrationSyncFailedParams,
@@ -133,9 +115,6 @@ import type {
SplitDateRangeParams,
SplitExpenseEditTitleParams,
SplitExpenseSubtitleParams,
- SpreadCategoriesParams,
- SpreadFieldNameParams,
- SpreadSheetColumnParams,
StatementTitleParams,
StepCounterParams,
StripePaidParams,
@@ -708,12 +687,12 @@ const translations: TranslationDeepObject = {
protectedPDFNotSupported: 'PDF protegido por senha não é compatível',
attachmentImageResized: 'Esta imagem foi redimensionada para visualização. Baixe para a resolução completa.',
attachmentImageTooLarge: 'Esta imagem é muito grande para ser visualizada antes do envio.',
- tooManyFiles: ({fileLimit}: FileLimitParams) => `Você só pode enviar até ${fileLimit} arquivos por vez.`,
+ tooManyFiles: (fileLimit: number) => `Você só pode enviar até ${fileLimit} arquivos por vez.`,
sizeExceededWithValue: ({maxUploadSizeInMB}: SizeExceededParams) => `Os arquivos excedem ${maxUploadSizeInMB} MB. Tente novamente.`,
someFilesCantBeUploaded: 'Alguns arquivos não podem ser enviados',
sizeLimitExceeded: ({maxUploadSizeInMB}: SizeExceededParams) => `Os arquivos devem ter menos de ${maxUploadSizeInMB} MB. Arquivos maiores não serão carregados.`,
maxFileLimitExceeded: 'Você pode enviar até 30 recibos por vez. Quaisquer extras não serão enviados.',
- unsupportedFileType: ({fileType}: FileTypeParams) => `Arquivos ${fileType} não são compatíveis. Somente tipos de arquivo compatíveis serão enviados.`,
+ unsupportedFileType: (fileType: string) => `Arquivos ${fileType} não são compatíveis. Somente tipos de arquivo compatíveis serão enviados.`,
learnMoreAboutSupportedFiles: 'Saiba mais sobre os formatos compatíveis.',
passwordProtected: 'PDFs protegidos por senha não são compatíveis. Somente arquivos compatíveis serão enviados.',
},
@@ -738,8 +717,8 @@ const translations: TranslationDeepObject = {
composer: {
noExtensionFoundForMimeType: 'Nenhuma extensão encontrada para o tipo MIME',
problemGettingImageYouPasted: 'Houve um problema ao obter a imagem que você colou',
- commentExceededMaxLength: ({formattedMaxLength}: FormattedMaxLengthParams) => `O comprimento máximo do comentário é de ${formattedMaxLength} caracteres.`,
- taskTitleExceededMaxLength: ({formattedMaxLength}: FormattedMaxLengthParams) => `O comprimento máximo do título da tarefa é de ${formattedMaxLength} caracteres.`,
+ commentExceededMaxLength: (formattedMaxLength: string) => `O comprimento máximo do comentário é de ${formattedMaxLength} caracteres.`,
+ taskTitleExceededMaxLength: (formattedMaxLength: string) => `O comprimento máximo do título da tarefa é de ${formattedMaxLength} caracteres.`,
},
baseUpdateAppModal: {
updateApp: 'Atualizar app',
@@ -919,7 +898,7 @@ const translations: TranslationDeepObject = {
adminOnlyCanPost: 'Somente administradores podem enviar mensagens nesta sala.',
reportAction: {
asCopilot: 'como copiloto para',
- harvestCreatedExpenseReport: ({reportUrl, reportName}: HarvestCreatedExpenseReportParams) =>
+ harvestCreatedExpenseReport: (reportUrl: string, reportName: string) =>
`criou este relatório para agrupar todas as despesas de ${reportName} que não puderam ser enviadas na frequência que você escolheu`,
createdReportForUnapprovedTransactions: ({reportUrl, reportName}: CreatedReportForUnapprovedTransactionsParams) =>
`criou este relatório para quaisquer despesas retidas de ${reportName}`,
@@ -987,13 +966,13 @@ const translations: TranslationDeepObject = {
chooseSpreadsheet: 'Selecione um arquivo de planilha para importar. Formatos compatíveis: .csv, .txt, .xls e .xlsx.',
chooseSpreadsheetMultiLevelTag: `Selecione um arquivo de planilha para importar. Saiba mais sobre os formatos de arquivo compatíveis.`,
fileContainsHeader: 'Arquivo contém cabeçalhos de coluna',
- column: ({name}: SpreadSheetColumnParams) => `Coluna ${name}`,
- fieldNotMapped: ({fieldName}: SpreadFieldNameParams) => `Ops! Um campo obrigatório ("${fieldName}") não foi mapeado. Revise e tente novamente.`,
- singleFieldMultipleColumns: ({fieldName}: SpreadFieldNameParams) => `Opa! Você associou um único campo ("${fieldName}") a várias colunas. Revise e tente novamente.`,
- emptyMappedField: ({fieldName}: SpreadFieldNameParams) => `Opa! O campo ("${fieldName}") contém um ou mais valores vazios. Verifique e tente novamente.`,
+ column: (name: string) => `Coluna ${name}`,
+ fieldNotMapped: (fieldName: string) => `Ops! Um campo obrigatório ("${fieldName}") não foi mapeado. Revise e tente novamente.`,
+ singleFieldMultipleColumns: (fieldName: string) => `Opa! Você associou um único campo ("${fieldName}") a várias colunas. Revise e tente novamente.`,
+ emptyMappedField: (fieldName: string) => `Opa! O campo ("${fieldName}") contém um ou mais valores vazios. Verifique e tente novamente.`,
importSuccessfulTitle: 'Importação bem-sucedida',
- importCategoriesSuccessfulDescription: ({categories}: SpreadCategoriesParams) => (categories > 1 ? `${categories} categorias foram adicionadas.` : '1 categoria foi adicionada.'),
- importMembersSuccessfulDescription: ({added, updated}: ImportMembersSuccessfulDescriptionParams) => {
+ importCategoriesSuccessfulDescription: ({categories}: {categories: number}) => (categories > 1 ? `${categories} categorias foram adicionadas.` : '1 categoria foi adicionada.'),
+ importMembersSuccessfulDescription: ({added, updated}: {added: number; updated: number}) => {
if (!added && !updated) {
return 'Nenhum membro foi adicionado ou atualizado.';
}
@@ -1005,10 +984,9 @@ const translations: TranslationDeepObject = {
}
return added > 1 ? `${added} membros foram adicionados.` : '1 membro foi adicionado.';
},
- importTagsSuccessfulDescription: ({tags}: ImportTagsSuccessfulDescriptionParams) => (tags > 1 ? `${tags} tags foram adicionadas.` : '1 tag foi adicionada.'),
+ importTagsSuccessfulDescription: ({tags}: {tags: number}) => (tags > 1 ? `${tags} tags foram adicionadas.` : '1 tag foi adicionada.'),
importMultiLevelTagsSuccessfulDescription: 'Tags em vários níveis foram adicionadas.',
- importPerDiemRatesSuccessfulDescription: ({rates}: ImportPerDiemRatesSuccessfulDescriptionParams) =>
- rates > 1 ? `Foram adicionadas taxas diárias de ${rates}.` : '1 taxa de diária foi adicionada.',
+ importPerDiemRatesSuccessfulDescription: ({rates}: {rates: number}) => (rates > 1 ? `Foram adicionadas taxas diárias de ${rates}.` : '1 taxa de diária foi adicionada.'),
importFailedTitle: 'Falha na importação',
importFailedDescription: 'Verifique se todos os campos foram preenchidos corretamente e tente novamente. Se o problema persistir, entre em contato com a Concierge.',
importDescription: 'Escolha quais campos mapear da sua planilha clicando no menu suspenso ao lado de cada coluna importada abaixo.',
@@ -2335,7 +2313,7 @@ ${amount} para ${merchant} - ${date}`,
transferAmountPage: {
transfer: ({amount}: TransferParams) => `Transferir${amount ? ` ${amount}` : ''}`,
instant: 'Imediato (Cartão de débito)',
- instantSummary: ({rate, minAmount}: InstantSummaryParams) => `Taxa de ${rate}% (${minAmount} mínimo)`,
+ instantSummary: (rate: string, minAmount: string) => `Taxa de ${rate}% (${minAmount} mínimo)`,
ach: '1–3 dias úteis (Conta bancária)',
achSummary: 'Sem taxa',
whichAccount: 'Qual conta?',
@@ -2868,7 +2846,7 @@ ${
dateShouldBeBefore: (dateString: string) => `A data deve ser anterior a ${dateString}`,
dateShouldBeAfter: (dateString: string) => `A data deve ser posterior a ${dateString}`,
hasInvalidCharacter: 'O nome pode incluir apenas caracteres latinos',
- incorrectZipFormat: ({zipFormat}: IncorrectZipFormatParams = {}) => `Formato de CEP incorreto${zipFormat ? `Formato aceitável: ${zipFormat}` : ''}`,
+ incorrectZipFormat: (zipFormat?: string) => `Formato de CEP incorreto${zipFormat ? `Formato aceitável: ${zipFormat}` : ''}`,
invalidPhoneNumber: `Certifique-se de que o número de telefone é válido (por exemplo, ${CONST.EXAMPLE_PHONE_NUMBER})`,
},
},
@@ -2950,7 +2928,7 @@ ${
},
focusModeUpdateModal: {
title: 'Bem-vindo ao modo #focus!',
- prompt: ({priorityModePageUrl}: FocusModeUpdateParams) =>
+ prompt: (priorityModePageUrl: string) =>
`Mantenha-se em dia vendo apenas os chats não lidos ou os chats que precisam da sua atenção. Não se preocupe, você pode alterar isso a qualquer momento em configurações.`,
},
notFound: {
@@ -3621,7 +3599,7 @@ ${
flight: 'Voo',
flightDetails: {
passenger: 'Passageiro',
- layover: ({layover}: FlightLayoverParams) => `Você tem uma conexão de ${layover} antes deste voo`,
+ layover: (layover: string) => `Você tem uma conexão de ${layover} antes deste voo`,
takeOff: 'Decolagem',
landing: 'Página inicial',
seat: 'Assento',
@@ -3711,16 +3689,18 @@ ${
conciergeMessage: ({domain}: {domain: string}) => `Falha na habilitação de viagens para o domínio: ${domain}. Revise e habilite viagens para este domínio.`,
},
updates: {
- bookingTicketed: ({airlineCode, origin, destination, startDate, confirmationID = ''}: FlightParams) =>
+ bookingTicketed: (airlineCode: string, origin: string, destination: string, startDate: string, confirmationID = '') =>
`Seu voo ${airlineCode} (${origin} → ${destination}) em ${startDate} foi reservado. Código de confirmação: ${confirmationID}`,
- ticketVoided: ({airlineCode, origin, destination, startDate}: FlightParams) => `Sua passagem para o voo ${airlineCode} (${origin} → ${destination}) em ${startDate} foi anulada.`,
- ticketRefunded: ({airlineCode, origin, destination, startDate}: FlightParams) =>
+ ticketVoided: (airlineCode: string, origin: string, destination: string, startDate: string) =>
+ `Sua passagem para o voo ${airlineCode} (${origin} → ${destination}) em ${startDate} foi anulada.`,
+ ticketRefunded: (airlineCode: string, origin: string, destination: string, startDate: string) =>
`Sua passagem para o voo ${airlineCode} (${origin} → ${destination}) em ${startDate} foi reembolsada ou alterada.`,
- flightCancelled: ({airlineCode, origin, destination, startDate}: FlightParams) =>
+ flightCancelled: (airlineCode: string, origin: string, destination: string, startDate: string) =>
`Seu voo ${airlineCode} (${origin} → ${destination}) em ${startDate}} foi cancelado pela companhia aérea.`,
flightScheduleChangePending: (airlineCode: string) => `A companhia aérea propôs uma mudança de horário para o voo ${airlineCode}; estamos aguardando confirmação.`,
flightScheduleChangeClosed: (airlineCode: string, startDate?: string) => `Alteração de horário confirmada: o voo ${airlineCode} agora parte em ${startDate}.`,
- flightUpdated: ({airlineCode, origin, destination, startDate}: FlightParams) => `Seu voo ${airlineCode} (${origin} → ${destination}) em ${startDate} foi atualizado.`,
+ flightUpdated: (airlineCode: string, origin: string, destination: string, startDate: string) =>
+ `Seu voo ${airlineCode} (${origin} → ${destination}) em ${startDate} foi atualizado.`,
flightCabinChanged: (airlineCode: string, cabinClass?: string) => `Sua classe de cabine foi atualizada para ${cabinClass} no voo ${airlineCode}.`,
flightSeatConfirmed: (airlineCode: string) => `Sua poltrona no voo ${airlineCode} foi confirmada.`,
flightSeatChanged: (airlineCode: string) => `Sua marcação de assento no voo ${airlineCode} foi alterada.`,
@@ -4530,7 +4510,7 @@ ${
importTaxDescription: 'Importar grupos de impostos do NetSuite.',
importCustomFields: {
chooseOptionBelow: 'Escolha uma opção abaixo:',
- label: ({importedTypes}: ImportedTypesParams) => `Importado como ${importedTypes.join('e')}`,
+ label: (importedTypes: string[]) => `Importado como ${importedTypes.join('e')}`,
requiredFieldError: ({fieldName}: RequiredFieldParams) => `Por favor, insira o ${fieldName}`,
customSegments: {
title: 'Segmentos/registros personalizados',
@@ -4645,19 +4625,18 @@ _Para instruções mais detalhadas, [visite nosso site de ajuda](${CONST.NETSUIT
[CONST.INTEGRATION_ENTITY_MAP_TYPES.NETSUITE_DEFAULT]: {
label: 'Padrão de funcionário NetSuite',
description: 'Não importado para o Expensify, aplicado na exportação',
- footerContent: ({importField}: ImportFieldParams) =>
+ footerContent: (importField: string) =>
`Se você usar ${importField} no NetSuite, aplicaremos o padrão definido no registro do funcionário ao exportar para Expense Report ou Journal Entry.`,
},
[CONST.INTEGRATION_ENTITY_MAP_TYPES.TAG]: {
label: 'Tags',
description: 'Nível de item de linha',
- footerContent: ({importField}: ImportFieldParams) =>
- `${startCase(importField)} estará disponível para seleção em cada despesa individual no relatório de um funcionário.`,
+ footerContent: (importField: string) => `${startCase(importField)} estará disponível para seleção em cada despesa individual no relatório de um funcionário.`,
},
[CONST.INTEGRATION_ENTITY_MAP_TYPES.REPORT_FIELD]: {
label: 'Campos de relatório',
description: 'Nível de relatório',
- footerContent: ({importField}: ImportFieldParams) => `A seleção de ${startCase(importField)} será aplicada a todas as despesas no relatório de um funcionário.`,
+ footerContent: (importField: string) => `A seleção de ${startCase(importField)} será aplicada a todas as despesas no relatório de um funcionário.`,
},
},
},
@@ -4734,7 +4713,7 @@ _Para instruções mais detalhadas, [visite nosso site de ajuda](${CONST.NETSUIT
commercialFeedPlaidDetails: `Requer configuração com o seu banco, mas vamos orientar você. Isso geralmente é limitado a empresas maiores.`,
directFeedDetails: 'A abordagem mais simples. Conecte-se imediatamente usando suas credenciais principais. Esse método é o mais comum.',
enableFeed: {
- title: ({provider}: GoBackMessageParams) => `Ative seu feed ${provider}`,
+ title: (provider: string) => `Ative seu feed ${provider}`,
heading:
'Temos uma integração direta com o emissor do seu cartão e podemos importar seus dados de transação para o Expensify de forma rápida e precisa.\n\nPara começar, simplesmente:',
visa: 'Temos integrações globais com a Visa, embora a elegibilidade varie de acordo com o banco e o programa do cartão.\n\nPara começar, basta:',
@@ -5294,7 +5273,7 @@ _Para instruções mais detalhadas, [visite nosso site de ajuda](${CONST.NETSUIT
prompt3: 'baixar um backup',
prompt4: 'primeiro.',
},
- importedTagsMessage: ({columnCounts}: ImportedTagsMessageParams) =>
+ importedTagsMessage: (columnCounts: number) =>
`Encontramos *${columnCounts} colunas* na sua planilha. Selecione *Nome* ao lado da coluna que contém os nomes das tags. Você também pode selecionar *Ativado* ao lado da coluna que define o status das tags.`,
cannotDeleteOrDisableAllTags: {
title: 'Não é possível excluir ou desativar todas as tags',
@@ -6105,7 +6084,7 @@ Exija detalhes de despesas como recibos e descrições, defina limites e padrõe
rules: {
individualExpenseRules: {
title: 'Despesas',
- subtitle: ({categoriesPageLink, tagsPageLink}: IndividualExpenseRulesSubtitleParams) =>
+ subtitle: (categoriesPageLink: string, tagsPageLink: string) =>
`Defina controles de gastos e padrões para despesas individuais. Você também pode criar regras para categorias e tags.`,
receiptRequiredAmount: 'Valor que exige recibo',
receiptRequiredAmountDescription: 'Exigir recibos quando o gasto exceder este valor, a menos que seja substituído por uma regra de categoria.',
@@ -6732,7 +6711,7 @@ Exija detalhes de despesas como recibos e descrições, defina limites e padrõe
amount: {
lessThan: ({amount}: OptionalParam = {}) => `Menos de ${amount ?? ''}`,
greaterThan: ({amount}: OptionalParam = {}) => `Maior que ${amount ?? ''}`,
- between: ({greaterThan, lessThan}: FiltersAmountBetweenParams) => `Entre ${greaterThan} e ${lessThan}`,
+ between: (greaterThan: string, lessThan: string) => `Entre ${greaterThan} e ${lessThan}`,
equalTo: ({amount}: OptionalParam = {}) => `Igual a ${amount ?? ''}`,
},
card: {
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index 29373376dc3a..443743ba86fc 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -28,24 +28,6 @@ import type {
EditActionParams,
ExportAgainModalDescriptionParams,
ExportIntegrationSelectedParams,
- FileLimitParams,
- FileTypeParams,
- FiltersAmountBetweenParams,
- FlightLayoverParams,
- FlightParams,
- FocusModeUpdateParams,
- FormattedMaxLengthParams,
- GoBackMessageParams,
- HarvestCreatedExpenseReportParams,
- ImportedTagsMessageParams,
- ImportedTypesParams,
- ImportFieldParams,
- ImportMembersSuccessfulDescriptionParams,
- ImportPerDiemRatesSuccessfulDescriptionParams,
- ImportTagsSuccessfulDescriptionParams,
- IncorrectZipFormatParams,
- IndividualExpenseRulesSubtitleParams,
- InstantSummaryParams,
IntacctMappingTitleParams,
IntegrationExportParams,
IntegrationSyncFailedParams,
@@ -133,9 +115,6 @@ import type {
SplitDateRangeParams,
SplitExpenseEditTitleParams,
SplitExpenseSubtitleParams,
- SpreadCategoriesParams,
- SpreadFieldNameParams,
- SpreadSheetColumnParams,
StatementTitleParams,
StepCounterParams,
StripePaidParams,
@@ -704,12 +683,12 @@ const translations: TranslationDeepObject = {
protectedPDFNotSupported: '不支持受密码保护的 PDF',
attachmentImageResized: '此图片已调整大小以供预览。下载以查看完整分辨率。',
attachmentImageTooLarge: '此图片过大,无法在上传前预览。',
- tooManyFiles: ({fileLimit}: FileLimitParams) => `一次最多只能上传 ${fileLimit} 个文件。`,
+ tooManyFiles: (fileLimit: number) => `一次最多只能上传 ${fileLimit} 个文件。`,
sizeExceededWithValue: ({maxUploadSizeInMB}: SizeExceededParams) => `文件超过 ${maxUploadSizeInMB} MB。请重试。`,
someFilesCantBeUploaded: '某些文件无法上传',
sizeLimitExceeded: ({maxUploadSizeInMB}: SizeExceededParams) => `文件大小必须小于 ${maxUploadSizeInMB} MB。更大的文件将不会被上传。`,
maxFileLimitExceeded: '您一次最多可以上传 30 张收据。超出部分将不会被上传。',
- unsupportedFileType: ({fileType}: FileTypeParams) => `不支持 ${fileType} 文件。只有支持的文件类型会被上传。`,
+ unsupportedFileType: (fileType: string) => `不支持 ${fileType} 文件。只有支持的文件类型会被上传。`,
learnMoreAboutSupportedFiles: '了解支持的格式详情。',
passwordProtected: '不支持受密码保护的 PDF 文件。只有受支持的文件会被上传。',
},
@@ -734,8 +713,8 @@ const translations: TranslationDeepObject = {
composer: {
noExtensionFoundForMimeType: '未找到与该 MIME 类型对应的扩展名',
problemGettingImageYouPasted: '获取您粘贴的图片时出现问题',
- commentExceededMaxLength: ({formattedMaxLength}: FormattedMaxLengthParams) => `最大评论长度为 ${formattedMaxLength} 个字符。`,
- taskTitleExceededMaxLength: ({formattedMaxLength}: FormattedMaxLengthParams) => `任务标题的最大长度为 ${formattedMaxLength} 个字符。`,
+ commentExceededMaxLength: (formattedMaxLength: string) => `最大评论长度为 ${formattedMaxLength} 个字符。`,
+ taskTitleExceededMaxLength: (formattedMaxLength: string) => `任务标题的最大长度为 ${formattedMaxLength} 个字符。`,
},
baseUpdateAppModal: {
updateApp: '更新应用程序',
@@ -911,8 +890,7 @@ const translations: TranslationDeepObject = {
adminOnlyCanPost: '只有管理员可以在此房间发送消息。',
reportAction: {
asCopilot: '作为副驾驶用于',
- harvestCreatedExpenseReport: ({reportUrl, reportName}: HarvestCreatedExpenseReportParams) =>
- `创建了此报表以汇总 ${reportName} 中无法按您选择的频率提交的所有费用`,
+ harvestCreatedExpenseReport: (reportUrl: string, reportName: string) => `创建了此报表以汇总 ${reportName} 中无法按您选择的频率提交的所有费用`,
createdReportForUnapprovedTransactions: ({reportUrl, reportName}: CreatedReportForUnapprovedTransactionsParams) =>
`为来自 ${reportName} 的所有暂挂报销创建了此报表`,
},
@@ -976,13 +954,13 @@ const translations: TranslationDeepObject = {
chooseSpreadsheet: '选择要导入的电子表格文件。支持的格式:.csv、.txt、.xls 和 .xlsx。',
chooseSpreadsheetMultiLevelTag: `选择要导入的电子表格文件。了解更多有关支持的文件格式的信息。`,
fileContainsHeader: '文件包含列标题',
- column: ({name}: SpreadSheetColumnParams) => `列 ${name}`,
- fieldNotMapped: ({fieldName}: SpreadFieldNameParams) => `哎呀!必填字段(“${fieldName}”)尚未映射。请检查后重试。`,
- singleFieldMultipleColumns: ({fieldName}: SpreadFieldNameParams) => `哎呀!您已将单个字段(“${fieldName}”)映射到了多个列。请检查后重试。`,
- emptyMappedField: ({fieldName}: SpreadFieldNameParams) => `哎呀!字段(“${fieldName}”)包含一个或多个空值。请检查后重试。`,
+ column: (name: string) => `列 ${name}`,
+ fieldNotMapped: (fieldName: string) => `哎呀!必填字段(“${fieldName}”)尚未映射。请检查后重试。`,
+ singleFieldMultipleColumns: (fieldName: string) => `哎呀!您已将单个字段(“${fieldName}”)映射到了多个列。请检查后重试。`,
+ emptyMappedField: (fieldName: string) => `哎呀!字段(“${fieldName}”)包含一个或多个空值。请检查后重试。`,
importSuccessfulTitle: '导入成功',
- importCategoriesSuccessfulDescription: ({categories}: SpreadCategoriesParams) => (categories > 1 ? `已添加 ${categories} 个类别。` : '已添加 1 个类别。'),
- importMembersSuccessfulDescription: ({added, updated}: ImportMembersSuccessfulDescriptionParams) => {
+ importCategoriesSuccessfulDescription: ({categories}: {categories: number}) => (categories > 1 ? `已添加 ${categories} 个类别。` : '已添加 1 个类别。'),
+ importMembersSuccessfulDescription: ({added, updated}: {added: number; updated: number}) => {
if (!added && !updated) {
return '尚未添加或更新任何成员。';
}
@@ -994,9 +972,9 @@ const translations: TranslationDeepObject = {
}
return added > 1 ? `已添加 ${added} 名成员。` : '已添加 1 名成员。';
},
- importTagsSuccessfulDescription: ({tags}: ImportTagsSuccessfulDescriptionParams) => (tags > 1 ? `已添加 ${tags} 个标签。` : '已添加 1 个标签。'),
+ importTagsSuccessfulDescription: ({tags}: {tags: number}) => (tags > 1 ? `已添加 ${tags} 个标签。` : '已添加 1 个标签。'),
importMultiLevelTagsSuccessfulDescription: '已添加多级标签。',
- importPerDiemRatesSuccessfulDescription: ({rates}: ImportPerDiemRatesSuccessfulDescriptionParams) => (rates > 1 ? `已添加 ${rates} 项每日津贴标准。` : '已添加 1 个日津贴费率。'),
+ importPerDiemRatesSuccessfulDescription: ({rates}: {rates: number}) => (rates > 1 ? `已添加 ${rates} 项每日津贴标准。` : '已添加 1 个日津贴费率。'),
importFailedTitle: '导入失败',
importFailedDescription: '请确保所有字段均已正确填写,然后重试。如果问题仍然存在,请联系 Concierge。',
importDescription: '通过单击下面每个已导入列旁边的下拉菜单,选择要从电子表格映射的字段。',
@@ -2300,7 +2278,7 @@ ${amount},商户:${merchant} - ${date}`,
transferAmountPage: {
transfer: ({amount}: TransferParams) => `转账${amount ? ` ${amount}` : ''}`,
instant: '即时(借记卡)',
- instantSummary: ({rate, minAmount}: InstantSummaryParams) => `${rate}% 费用(最低 ${minAmount})`,
+ instantSummary: (rate: string, minAmount: string) => `${rate}% 费用(最低 ${minAmount})`,
ach: '1–3 个工作日(银行账户)',
achSummary: '无手续费',
whichAccount: '哪个账户?',
@@ -2830,7 +2808,7 @@ ${
dateShouldBeBefore: (dateString: string) => `日期应早于 ${dateString}`,
dateShouldBeAfter: (dateString: string) => `日期应晚于 ${dateString}`,
hasInvalidCharacter: '名称只能包含拉丁字符',
- incorrectZipFormat: ({zipFormat}: IncorrectZipFormatParams = {}) => `邮政编码格式不正确${zipFormat ? `可接受的格式:${zipFormat}` : ''}`,
+ incorrectZipFormat: (zipFormat?: string) => `邮政编码格式不正确${zipFormat ? `可接受的格式:${zipFormat}` : ''}`,
invalidPhoneNumber: `请确保电话号码有效(例如:${CONST.EXAMPLE_PHONE_NUMBER})`,
},
},
@@ -2910,8 +2888,7 @@ ${
},
focusModeUpdateModal: {
title: '欢迎使用 #focus 模式!',
- prompt: ({priorityModePageUrl}: FocusModeUpdateParams) =>
- `通过仅查看未读聊天或需要你关注的聊天,随时掌握一切动态。别担心,你可以随时在设置中更改此选项。`,
+ prompt: (priorityModePageUrl: string) => `通过仅查看未读聊天或需要你关注的聊天,随时掌握一切动态。别担心,你可以随时在设置中更改此选项。`,
},
notFound: {
chatYouLookingForCannotBeFound: '找不到您要查找的聊天记录。',
@@ -3568,7 +3545,7 @@ ${
flight: '航班',
flightDetails: {
passenger: '乘客',
- layover: ({layover}: FlightLayoverParams) => `在此航班前,你有一段${layover}的中转停留时间`,
+ layover: (layover: string) => `在此航班前,你有一段${layover}的中转停留时间`,
takeOff: '起飞',
landing: '登录页',
seat: '座位',
@@ -3656,15 +3633,17 @@ ${
conciergeMessage: ({domain}: {domain: string}) => `为域名:${domain} 启用差旅失败。请检查并为此域名启用差旅。`,
},
updates: {
- bookingTicketed: ({airlineCode, origin, destination, startDate, confirmationID = ''}: FlightParams) =>
+ bookingTicketed: (airlineCode: string, origin: string, destination: string, startDate: string, confirmationID = '') =>
`您于${startDate}的航班 ${airlineCode}(${origin} → ${destination})已预订成功。确认代码:${confirmationID}`,
- ticketVoided: ({airlineCode, origin, destination, startDate}: FlightParams) => `您在${startDate}乘坐的航班${airlineCode}(${origin} → ${destination})的机票已作废。`,
- ticketRefunded: ({airlineCode, origin, destination, startDate}: FlightParams) =>
+ ticketVoided: (airlineCode: string, origin: string, destination: string, startDate: string) =>
+ `您在${startDate}乘坐的航班${airlineCode}(${origin} → ${destination})的机票已作废。`,
+ ticketRefunded: (airlineCode: string, origin: string, destination: string, startDate: string) =>
`您于 ${startDate} 搭乘的航班 ${airlineCode}(${origin} → ${destination})的机票已被退款或改签。`,
- flightCancelled: ({airlineCode, origin, destination, startDate}: FlightParams) => `您在 ${startDate}} 搭乘的航班 ${airlineCode}(${origin} → ${destination})已被航空公司取消。`,
+ flightCancelled: (airlineCode: string, origin: string, destination: string, startDate: string) =>
+ `您在 ${startDate}} 搭乘的航班 ${airlineCode}(${origin} → ${destination})已被航空公司取消。`,
flightScheduleChangePending: (airlineCode: string) => `航空公司已对航班 ${airlineCode} 提出行程变更,我们正在等待确认。`,
flightScheduleChangeClosed: (airlineCode: string, startDate?: string) => `行程变更已确认:航班 ${airlineCode} 现在将于 ${startDate} 起飞。`,
- flightUpdated: ({airlineCode, origin, destination, startDate}: FlightParams) => `您在${startDate}的航班 ${airlineCode}(${origin} → ${destination})已更新。`,
+ flightUpdated: (airlineCode: string, origin: string, destination: string, startDate: string) => `您在${startDate}的航班 ${airlineCode}(${origin} → ${destination})已更新。`,
flightCabinChanged: (airlineCode: string, cabinClass?: string) => `您在航班 ${airlineCode} 上的舱位等级已更新为 ${cabinClass}。`,
flightSeatConfirmed: (airlineCode: string) => `您在航班 ${airlineCode} 上的座位分配已确认。`,
flightSeatChanged: (airlineCode: string) => `您在航班 ${airlineCode} 上的座位分配已被更改。`,
@@ -4447,7 +4426,7 @@ ${
importTaxDescription: '从 NetSuite 导入税务组。',
importCustomFields: {
chooseOptionBelow: '请选择下面的一个选项:',
- label: ({importedTypes}: ImportedTypesParams) => `已作为 ${importedTypes.join('和')} 导入`,
+ label: (importedTypes: string[]) => `已作为 ${importedTypes.join('和')} 导入`,
requiredFieldError: ({fieldName}: RequiredFieldParams) => `请输入${fieldName}`,
customSegments: {
title: '自定义分段/记录',
@@ -4562,18 +4541,17 @@ _如需更详细的说明,请[访问我们的帮助网站](${CONST.NETSUITE_IM
[CONST.INTEGRATION_ENTITY_MAP_TYPES.NETSUITE_DEFAULT]: {
label: 'NetSuite 员工默认值',
description: '未导入到 Expensify,在导出时应用',
- footerContent: ({importField}: ImportFieldParams) =>
- `如果您在 NetSuite 中使用 ${importField},我们将在导出至 Expense Report 或 Journal Entry 时应用员工记录中设置的默认值。`,
+ footerContent: (importField: string) => `如果您在 NetSuite 中使用 ${importField},我们将在导出至 Expense Report 或 Journal Entry 时应用员工记录中设置的默认值。`,
},
[CONST.INTEGRATION_ENTITY_MAP_TYPES.TAG]: {
label: '标签',
description: '逐项级别',
- footerContent: ({importField}: ImportFieldParams) => `${startCase(importField)} 将可在员工报表中的每一笔单独费用上进行选择。`,
+ footerContent: (importField: string) => `${startCase(importField)} 将可在员工报表中的每一笔单独费用上进行选择。`,
},
[CONST.INTEGRATION_ENTITY_MAP_TYPES.REPORT_FIELD]: {
label: '报表字段',
description: '报表级别',
- footerContent: ({importField}: ImportFieldParams) => `${startCase(importField)} 选择将应用于员工报表上的所有报销费用。`,
+ footerContent: (importField: string) => `${startCase(importField)} 选择将应用于员工报表上的所有报销费用。`,
},
},
},
@@ -4650,7 +4628,7 @@ _如需更详细的说明,请[访问我们的帮助网站](${CONST.NETSUITE_IM
commercialFeedPlaidDetails: `需要与你的银行进行设置,但我们会指导你完成。此功能通常仅限较大规模的公司使用。`,
directFeedDetails: '最简单的方法。立即使用您的主凭证进行连接。此方法最为常见。',
enableFeed: {
- title: ({provider}: GoBackMessageParams) => `启用您的 ${provider} 订阅源`,
+ title: (provider: string) => `启用您的 ${provider} 订阅源`,
heading: '我们已与您的发卡机构进行了直接集成,可以快速且准确地将您的交易数据导入 Expensify。\n\n要开始使用,只需:',
visa: '我们与 Visa 有全球集成,但资格取决于发卡银行和卡片项目。\n\n要开始使用,只需:',
mastercard: '我们与 Mastercard 建立了全球集成,但可用性会因银行和卡片计划而异。\n\n要开始使用,只需:',
@@ -5197,7 +5175,7 @@ _如需更详细的说明,请[访问我们的帮助网站](${CONST.NETSUITE_IM
prompt3: '下载备份',
prompt4: '第一。',
},
- importedTagsMessage: ({columnCounts}: ImportedTagsMessageParams) =>
+ importedTagsMessage: (columnCounts: number) =>
`我们在您的电子表格中找到了 *${columnCounts} 列*。请在包含标签名称的列旁边选择 *Name*。您也可以在设置标签状态的列旁边选择 *Enabled*。`,
cannotDeleteOrDisableAllTags: {
title: '无法删除或禁用所有标签',
@@ -5985,7 +5963,7 @@ ${reportName}
rules: {
individualExpenseRules: {
title: '报销',
- subtitle: ({categoriesPageLink, tagsPageLink}: IndividualExpenseRulesSubtitleParams) =>
+ subtitle: (categoriesPageLink: string, tagsPageLink: string) =>
`为单笔报销设置支出控制和默认值。您还可以为类别和标签创建规则。`,
receiptRequiredAmount: '所需收据金额',
receiptRequiredAmountDescription: '当支出超过此金额时要求提供收据,除非被类别规则覆盖。',
@@ -6589,7 +6567,7 @@ ${reportName}
amount: {
lessThan: ({amount}: OptionalParam = {}) => `少于 ${amount ?? ''}`,
greaterThan: ({amount}: OptionalParam = {}) => `大于 ${amount ?? ''}`,
- between: ({greaterThan, lessThan}: FiltersAmountBetweenParams) => `介于 ${greaterThan} 和 ${lessThan} 之间`,
+ between: (greaterThan: string, lessThan: string) => `介于 ${greaterThan} 和 ${lessThan} 之间`,
equalTo: ({amount}: OptionalParam = {}) => `等于 ${amount ?? ''}`,
},
card: {
diff --git a/src/libs/PolicyUtils.ts b/src/libs/PolicyUtils.ts
index 361bb2a906f7..36774d9b8097 100644
--- a/src/libs/PolicyUtils.ts
+++ b/src/libs/PolicyUtils.ts
@@ -1256,7 +1256,7 @@ function getNetSuiteImportCustomFieldLabel(
const importedTypes = Array.from(mappingSet)
.sort((a, b) => localeCompare(b, a))
.map((mapping) => translate(`workspace.netsuite.import.importTypes.${mapping !== '' ? mapping : 'TAG'}.label`).toLowerCase());
- return translate(`workspace.netsuite.import.importCustomFields.label`, {importedTypes});
+ return translate(`workspace.netsuite.import.importCustomFields.label`, importedTypes);
}
function isNetSuiteCustomSegmentRecord(customField: NetSuiteCustomList | NetSuiteCustomSegment): boolean {
diff --git a/src/libs/ReportActionsUtils.ts b/src/libs/ReportActionsUtils.ts
index 4ecbc6848964..84d83b87346c 100644
--- a/src/libs/ReportActionsUtils.ts
+++ b/src/libs/ReportActionsUtils.ts
@@ -1857,37 +1857,23 @@ function getTravelUpdateMessage(
switch (details?.operation) {
case CONST.TRAVEL.UPDATE_OPERATION_TYPE.BOOKING_TICKETED:
- return translate('travel.updates.bookingTicketed', {
- airlineCode: details.route?.airlineCode ?? '',
- origin: details.start.shortName ?? '',
- destination: details.end?.shortName ?? '',
- startDate: formattedStartDate,
- confirmationID: details.confirmations?.at(0)?.value,
- });
+ return translate(
+ 'travel.updates.bookingTicketed',
+ details.route?.airlineCode ?? '',
+ details.start.shortName ?? '',
+ details.end?.shortName ?? '',
+ formattedStartDate,
+ details.confirmations?.at(0)?.value,
+ );
case CONST.TRAVEL.UPDATE_OPERATION_TYPE.TICKET_VOIDED:
- return translate('travel.updates.ticketVoided', {
- airlineCode: details.route?.airlineCode ?? '',
- origin: details.start.shortName ?? '',
- destination: details.end?.shortName ?? '',
- startDate: formattedStartDate,
- });
+ return translate('travel.updates.ticketVoided', details.route?.airlineCode ?? '', details.start.shortName ?? '', details.end?.shortName ?? '', formattedStartDate);
case CONST.TRAVEL.UPDATE_OPERATION_TYPE.TICKET_REFUNDED:
- return translate('travel.updates.ticketRefunded', {
- airlineCode: details.route?.airlineCode ?? '',
- origin: details.start.shortName ?? '',
- destination: details.end?.shortName ?? '',
- startDate: formattedStartDate,
- });
+ return translate('travel.updates.ticketRefunded', details.route?.airlineCode ?? '', details.start.shortName ?? '', details.end?.shortName ?? '', formattedStartDate);
case CONST.TRAVEL.UPDATE_OPERATION_TYPE.FLIGHT_CANCELLED:
- return translate('travel.updates.flightCancelled', {
- airlineCode: details.route?.airlineCode ?? '',
- origin: details.start.shortName ?? '',
- destination: details.end?.shortName ?? '',
- startDate: formattedStartDate,
- });
+ return translate('travel.updates.flightCancelled', details.route?.airlineCode ?? '', details.start.shortName ?? '', details.end?.shortName ?? '', formattedStartDate);
case CONST.TRAVEL.UPDATE_OPERATION_TYPE.FLIGHT_SCHEDULE_CHANGE_PENDING:
return translate('travel.updates.flightScheduleChangePending', details.route?.airlineCode ?? '');
@@ -1896,12 +1882,7 @@ function getTravelUpdateMessage(
return translate('travel.updates.flightScheduleChangeClosed', details.route?.airlineCode ?? '', formattedStartDate);
case CONST.TRAVEL.UPDATE_OPERATION_TYPE.FLIGHT_CHANGED:
- return translate('travel.updates.flightUpdated', {
- airlineCode: details.route?.airlineCode ?? '',
- origin: details.start.shortName ?? '',
- destination: details.end?.shortName ?? '',
- startDate: formattedStartDate,
- });
+ return translate('travel.updates.flightUpdated', details.route?.airlineCode ?? '', details.start.shortName ?? '', details.end?.shortName ?? '', formattedStartDate);
case CONST.TRAVEL.UPDATE_OPERATION_TYPE.FLIGHT_CABIN_CHANGED:
return translate('travel.updates.flightCabinChanged', details.route?.airlineCode ?? '', details.route?.class ?? '');
@@ -1954,12 +1935,8 @@ function getTravelUpdateMessage(
startDate: formattedStartDate,
});
}
- return translate('travel.updates.flightUpdated', {
- airlineCode: details.route?.airlineCode ?? '',
- origin: details.start.shortName ?? '',
- destination: details.end?.shortName ?? '',
- startDate: formattedStartDate,
- });
+ return translate('travel.updates.flightUpdated', details.route?.airlineCode ?? '', details.start.shortName ?? '', details.end?.shortName ?? '', formattedStartDate);
+
case CONST.TRAVEL.UPDATE_OPERATION_TYPE.BOOKING_OTHER_UPDATE:
if (details.type === CONST.RESERVATION_TYPE.CAR || details.type === CONST.RESERVATION_TYPE.HOTEL) {
return translate('travel.updates.defaultUpdate', {
@@ -1973,12 +1950,7 @@ function getTravelUpdateMessage(
startDate: formattedStartDate,
});
}
- return translate('travel.updates.flightUpdated', {
- airlineCode: details.route?.airlineCode ?? '',
- origin: details.start.shortName ?? '',
- destination: details.end?.shortName ?? '',
- startDate: formattedStartDate,
- });
+ return translate('travel.updates.flightUpdated', details.route?.airlineCode ?? '', details.start.shortName ?? '', details.end?.shortName ?? '', formattedStartDate);
case CONST.TRAVEL.UPDATE_OPERATION_TYPE.REFUND:
return translate('travel.updates.railTicketRefund', {
@@ -3314,7 +3286,7 @@ function getChangedApproverActionMessage
-
+
)}
(
- {translate(`workspace.netsuite.import.importTypes.${importValue}.footerContent`, {importField})}
+ {translate(`workspace.netsuite.import.importTypes.${importValue}.footerContent`, importField)}
),
[importField, importValue, styles.mb4, styles.mt3, styles.ph5, translate],
diff --git a/src/pages/workspace/categories/ImportedCategoriesPage.tsx b/src/pages/workspace/categories/ImportedCategoriesPage.tsx
index 4f2c9a512933..68e0fdb5bc2e 100644
--- a/src/pages/workspace/categories/ImportedCategoriesPage.tsx
+++ b/src/pages/workspace/categories/ImportedCategoriesPage.tsx
@@ -66,7 +66,7 @@ function ImportedCategoriesPage({route}: ImportedCategoriesPageProps) {
const missingRequiredColumns = requiredColumns.find((requiredColumn) => !columns.includes(requiredColumn.value));
if (missingRequiredColumns) {
- errors.required = translate('spreadsheet.fieldNotMapped', {fieldName: missingRequiredColumns.text});
+ errors.required = translate('spreadsheet.fieldNotMapped', missingRequiredColumns.text);
} else {
const duplicate = findDuplicate(columns);
const duplicateColumn = columnRoles.find((role) => role.value === duplicate);
@@ -76,9 +76,9 @@ function ImportedCategoriesPage({route}: ImportedCategoriesPageProps) {
const containsEmptyName = categoriesNames?.some((name, index) => (!containsHeader || index > 0) && !name?.toString().trim());
if (duplicateColumn) {
- errors.duplicates = translate('spreadsheet.singleFieldMultipleColumns', {fieldName: duplicateColumn.text});
+ errors.duplicates = translate('spreadsheet.singleFieldMultipleColumns', duplicateColumn.text);
} else if (containsEmptyName) {
- errors.emptyNames = translate('spreadsheet.emptyMappedField', {fieldName: translate('common.name')});
+ errors.emptyNames = translate('spreadsheet.emptyMappedField', translate('common.name'));
} else {
errors = {};
}
diff --git a/src/pages/workspace/companyCards/addNew/CardInstructionsStep.tsx b/src/pages/workspace/companyCards/addNew/CardInstructionsStep.tsx
index b135b9f1acc5..f6c4f2b5cc29 100644
--- a/src/pages/workspace/companyCards/addNew/CardInstructionsStep.tsx
+++ b/src/pages/workspace/companyCards/addNew/CardInstructionsStep.tsx
@@ -94,9 +94,7 @@ function CardInstructionsStep({policyID}: CardInstructionsStepProps) {
contentContainerStyle={styles.flexGrow1}
addBottomSafeAreaPadding
>
-
- {translate('workspace.companyCards.addNewCard.enableFeed.title', {provider: getBankName(feedProvider)})}
-
+ {translate('workspace.companyCards.addNewCard.enableFeed.title', getBankName(feedProvider))}
{translate(translationKey)}
diff --git a/src/pages/workspace/members/ImportedMembersPage.tsx b/src/pages/workspace/members/ImportedMembersPage.tsx
index 53cd1f7cb787..939a641c3750 100644
--- a/src/pages/workspace/members/ImportedMembersPage.tsx
+++ b/src/pages/workspace/members/ImportedMembersPage.tsx
@@ -56,11 +56,11 @@ function ImportedMembersPage({route}: ImportedMembersPageProps) {
let errors: Record = {};
const missingRequiredColumns = requiredColumns.find((requiredColumn) => !columns.includes(requiredColumn.value));
if (missingRequiredColumns) {
- errors.required = translate('spreadsheet.fieldNotMapped', {fieldName: missingRequiredColumns.text});
+ errors.required = translate('spreadsheet.fieldNotMapped', missingRequiredColumns.text);
} else {
const duplicate = findDuplicate(columns);
if (duplicate) {
- errors.duplicates = translate('spreadsheet.singleFieldMultipleColumns', {fieldName: duplicate});
+ errors.duplicates = translate('spreadsheet.singleFieldMultipleColumns', duplicate);
} else {
errors = {};
}
diff --git a/src/pages/workspace/perDiem/ImportedPerDiemPage.tsx b/src/pages/workspace/perDiem/ImportedPerDiemPage.tsx
index 999550dab36a..ec98c6f5c5c0 100644
--- a/src/pages/workspace/perDiem/ImportedPerDiemPage.tsx
+++ b/src/pages/workspace/perDiem/ImportedPerDiemPage.tsx
@@ -82,12 +82,12 @@ function ImportedPerDiemPage({route}: ImportedPerDiemPageProps) {
const missingRequiredColumns = requiredColumns.find((requiredColumn) => !columns.includes(requiredColumn.value));
if (missingRequiredColumns) {
- errors.required = translate('spreadsheet.fieldNotMapped', {fieldName: missingRequiredColumns.text});
+ errors.required = translate('spreadsheet.fieldNotMapped', missingRequiredColumns.text);
} else {
const duplicate = findDuplicate(columns);
const duplicateColumn = columnRoles.find((role) => role.value === duplicate);
if (duplicateColumn) {
- errors.duplicates = translate('spreadsheet.singleFieldMultipleColumns', {fieldName: duplicateColumn.text});
+ errors.duplicates = translate('spreadsheet.singleFieldMultipleColumns', duplicateColumn.text);
} else {
errors = {};
}
diff --git a/src/pages/workspace/rules/IndividualExpenseRulesSection.tsx b/src/pages/workspace/rules/IndividualExpenseRulesSection.tsx
index c79e070306e2..3920754cdf0a 100644
--- a/src/pages/workspace/rules/IndividualExpenseRulesSection.tsx
+++ b/src/pages/workspace/rules/IndividualExpenseRulesSection.tsx
@@ -61,7 +61,7 @@ function IndividualExpenseRulesSectionSubtitle({policy, translate, styles, envir
return (
-
+
);
}
diff --git a/src/pages/workspace/tags/ImportedTagsPage.tsx b/src/pages/workspace/tags/ImportedTagsPage.tsx
index ddcf50a7454c..18f6689cc257 100644
--- a/src/pages/workspace/tags/ImportedTagsPage.tsx
+++ b/src/pages/workspace/tags/ImportedTagsPage.tsx
@@ -67,7 +67,7 @@ function ImportedTagsPage({route}: ImportedTagsPageProps) {
const missingRequiredColumns = requiredColumns.find((requiredColumn) => !columns.includes(requiredColumn.value));
if (missingRequiredColumns) {
- errors.required = translate('spreadsheet.fieldNotMapped', {fieldName: missingRequiredColumns.text});
+ errors.required = translate('spreadsheet.fieldNotMapped', missingRequiredColumns.text);
} else {
const duplicate = findDuplicate(columns);
const tagsNamesColumn = columns.findIndex((column) => column === CONST.CSV_IMPORT_COLUMNS.NAME);
@@ -75,9 +75,9 @@ function ImportedTagsPage({route}: ImportedTagsPageProps) {
const containsEmptyName = tagsNames?.some((name, index) => (!containsHeader || index > 0) && !name?.toString().trim());
if (duplicate) {
- errors.duplicates = translate('spreadsheet.singleFieldMultipleColumns', {fieldName: duplicate});
+ errors.duplicates = translate('spreadsheet.singleFieldMultipleColumns', duplicate);
} else if (containsEmptyName) {
- errors.emptyNames = translate('spreadsheet.emptyMappedField', {fieldName: translate('common.name')});
+ errors.emptyNames = translate('spreadsheet.emptyMappedField', translate('common.name'));
} else {
errors = {};
}
diff --git a/tests/unit/ReportActionsUtilsTest.ts b/tests/unit/ReportActionsUtilsTest.ts
index db2dea655d01..52067afbedeb 100644
--- a/tests/unit/ReportActionsUtilsTest.ts
+++ b/tests/unit/ReportActionsUtilsTest.ts
@@ -1567,10 +1567,7 @@ describe('ReportActionsUtils', () => {
it('should return the correct message with a valid report ID and report name', () => {
const reportID = '12345';
const reportName = 'Test Expense Report';
- const expectedMessage = translateLocal('reportAction.harvestCreatedExpenseReport', {
- reportUrl: `${environmentURL}/${ROUTES.REPORT_WITH_ID.getRoute(reportID)}`,
- reportName,
- });
+ const expectedMessage = translateLocal('reportAction.harvestCreatedExpenseReport', `${environmentURL}/${ROUTES.REPORT_WITH_ID.getRoute(reportID)}`, reportName);
const result = ReportActionsUtils.getHarvestCreatedExpenseReportMessage(reportID, reportName, translateLocal);