fix: Profile - Legal Name fields accept " , "and " ; " without showing error message#84650
Conversation
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
trjExpensify
left a comment
There was a problem hiding this comment.
Commented in the parent issue here. Following the blame, it looks intentional.
| if (!firstName) { | ||
| errors[INPUT_IDS.LEGAL_FIRST_NAME] = translate('common.error.fieldRequired'); | ||
| } else if (!isValidLegalName(firstName)) { | ||
| } else if (!isValidDisplayName(firstName) || !isValidLegalName(firstName)) { |
There was a problem hiding this comment.
!isValidLegalName check should be removed
| if (!lastName) { | ||
| errors[INPUT_IDS.LEGAL_LAST_NAME] = translate('common.error.fieldRequired'); | ||
| } else if (!isValidLegalName(lastName)) { | ||
| } else if (!isValidDisplayName(lastName) || !isValidLegalName(lastName)) { |
|
No files changed? |
|
Hi @situchan Sorry I confused. |
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppAndroid: mWeb ChromeiOS: HybridAppiOS: mWeb SafariMacOS: Chrome / SafariScreen.Recording.2026-03-27.at.11.12.48.PM.mov |
|
@Expensify/marketing can you help us out with an updated error message for ^? Instead of "Name can only include Latin characters" we're now allowing everything except |
|
@dangrous what if we only trigger this error when either |
|
I think that should be fine, right @annaweber830 ? |
|
@annaweber830 let's add this new copy. (ask Spanish in slack channel) |
|
@annaweber830 how are we looking on this? Do you think we can close out by the end of the week? |
|
|
Hey, I noticed you changed If you want to automatically generate translations for other locales, an Expensify employee will have to:
Alternatively, if you are an external contributor, you can run the translation script locally with your own OpenAI API key. To learn more, try running: npx ts-node ./scripts/generateTranslations.ts --helpTypically, you'd want to translate only what you changed by running |
| dateShouldBeBefore: (dateString: string) => `Date should be before ${dateString}`, | ||
| dateShouldBeAfter: (dateString: string) => `Date should be after ${dateString}`, | ||
| hasInvalidCharacter: 'Name can only include Latin characters', | ||
| hasInvalidCharacter: 'Name cannot include , or ;', |
There was a problem hiding this comment.
@annaweber830 add new translation instead of replacing current one.
This is also used here:
App/src/components/SubStepForms/FullNameStep.tsx
Lines 87 to 89 in 426dc48
| dateShouldBeAfter: (dateString) => `La fecha debe ser posterior a ${dateString}`, | ||
| incorrectZipFormat: (zipFormat) => `Formato de código postal incorrecto.${zipFormat ? ` Formato aceptable: ${zipFormat}` : ''}`, | ||
| hasInvalidCharacter: 'El nombre sólo puede incluir caracteres latinos', | ||
| cannotIncludeCommaOrSemicolon: 'El nombre no puede contener una coma o un punto y coma', |
There was a problem hiding this comment.
Did you get Spanish confirmation on slack?
There was a problem hiding this comment.
|
@annaweber830 please pull main |
|
@dangrous can you please generate translations for other languages? |
🦜 Polyglot Parrot! 🦜Squawk! Looks like you added some shiny new English strings. Allow me to parrot them back to you in other tongues: View the translation diffdiff --git a/src/languages/de.ts b/src/languages/de.ts
index 36bbbf91..560790cb 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -1701,8 +1701,6 @@ const translations: TranslationDeepObject<typeof en> = {
backdropLabel: 'Modal-Hintergrund',
},
nextStep: {
- // All nextStep.message functions share a common positional signature (actor, actorType, eta, etaType) for type compatibility, so unused params are expected
- /* eslint-disable @typescript-eslint/no-unused-vars */
message: {
[CONST.NEXT_STEP.MESSAGE_KEY.WAITING_TO_ADD_TRANSACTIONS]: (
actor: string,
@@ -1710,8 +1708,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `Warte darauf, dass <strong>Sie</strong> Spesen hinzufügen.`;
@@ -1727,8 +1723,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `Wartet darauf, dass <strong>Sie</strong> Spesen einreichen.`;
@@ -1750,8 +1744,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `Warten darauf, dass <strong>Sie</strong> ein Bankkonto hinzufügen.`;
@@ -1771,8 +1763,6 @@ const translations: TranslationDeepObject<typeof en> = {
if (eta) {
formattedETA = etaType === CONST.NEXT_STEP.ETA_TYPE.DATE_TIME ? `am ${eta} eines jeden Monats` : ` ${eta}`;
}
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `Warten darauf, dass <strong>Ihre</strong> Ausgaben automatisch eingereicht werden${formattedETA}.`;
@@ -1788,8 +1778,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `Warten auf <strong>Sie</strong>, um die Probleme zu beheben.`;
@@ -1805,8 +1793,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `Es wird darauf gewartet, dass <strong>Sie</strong> Spesen genehmigen.`;
@@ -1822,8 +1808,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `Warte darauf, dass <strong>Sie</strong> diesen Bericht exportieren.`;
@@ -1839,8 +1823,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `Wartet darauf, dass <strong>Sie</strong> Spesen bezahlen.`;
@@ -1856,8 +1838,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `Warten darauf, dass <strong>Sie</strong> die Einrichtung eines Geschäftskontos abschließen.`;
@@ -7379,8 +7359,6 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc
updatedDefaultTitle: (newDefaultTitle: string, oldDefaultTitle: string) => `benutzerdefinierte Berichtstitelformel in „${newDefaultTitle}“ geändert (zuvor „${oldDefaultTitle}“)`,
updatedOwnership: (oldOwnerEmail: string, oldOwnerName: string, policyName: string) => `hat die Inhaberschaft von ${policyName} von ${oldOwnerName} (${oldOwnerEmail}) übernommen`,
updatedAutoHarvesting: (enabled: boolean) => `${enabled ? 'aktiviert' : 'deaktiviert'} geplante Einreichung`,
- // This function requires 11 params to match the budget notification data model; reducing further would hurt readability
- // eslint-disable-next-line @typescript-eslint/max-params
updatedIndividualBudgetNotification: (
budgetAmount: string,
budgetFrequency: string,
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index 96e44336..215f3033 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -1706,8 +1706,6 @@ const translations: TranslationDeepObject<typeof en> = {
backdropLabel: 'Arrière-plan de la fenêtre modale',
},
nextStep: {
- // All nextStep.message functions share a common positional signature (actor, actorType, eta, etaType) for type compatibility, so unused params are expected
- /* eslint-disable @typescript-eslint/no-unused-vars */
message: {
[CONST.NEXT_STEP.MESSAGE_KEY.WAITING_TO_ADD_TRANSACTIONS]: (
actor: string,
@@ -1715,8 +1713,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `En attente que <strong>vous</strong> ajoutiez des dépenses.`;
@@ -1732,8 +1728,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `En attente que <strong>vous</strong> soumettiez des dépenses.`;
@@ -1755,8 +1749,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `En attente que <strong>vous</strong> ajoutiez un compte bancaire.`;
@@ -1776,8 +1768,6 @@ const translations: TranslationDeepObject<typeof en> = {
if (eta) {
formattedETA = etaType === CONST.NEXT_STEP.ETA_TYPE.DATE_TIME ? `le ${eta} de chaque mois` : ` ${eta}`;
}
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `En attente que <strong>vos</strong> dépenses soient automatiquement soumises${formattedETA}.`;
@@ -1793,8 +1783,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `En attente que <strong>vous</strong> corrigiez les problèmes.`;
@@ -1810,8 +1798,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `En attente de <strong>votre</strong> approbation des dépenses.`;
@@ -1827,8 +1813,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `En attente que <strong>vous</strong> exportiez cette note de frais.`;
@@ -1844,8 +1828,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `En attente que <strong>vous</strong> payiez les dépenses.`;
@@ -1861,8 +1843,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `En attente que <strong>vous</strong> terminiez la configuration d’un compte bancaire professionnel.`;
@@ -7403,8 +7383,6 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e
`a modifié la formule du nom de note de frais personnalisée en « ${newDefaultTitle} » (précédemment « ${oldDefaultTitle} »)`,
updatedOwnership: (oldOwnerEmail: string, oldOwnerName: string, policyName: string) => `a pris la responsabilité de ${policyName} à la place de ${oldOwnerName} (${oldOwnerEmail})`,
updatedAutoHarvesting: (enabled: boolean) => `Soumission planifiée pour ${enabled ? 'activé' : 'désactivé'}`,
- // This function requires 11 params to match the budget notification data model; reducing further would hurt readability
- // eslint-disable-next-line @typescript-eslint/max-params
updatedIndividualBudgetNotification: (
budgetAmount: string,
budgetFrequency: string,
diff --git a/src/languages/it.ts b/src/languages/it.ts
index 9e861d86..63c5364e 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -1699,8 +1699,6 @@ const translations: TranslationDeepObject<typeof en> = {
backdropLabel: 'Sfondo modale',
},
nextStep: {
- // All nextStep.message functions share a common positional signature (actor, actorType, eta, etaType) for type compatibility, so unused params are expected
- /* eslint-disable @typescript-eslint/no-unused-vars */
message: {
[CONST.NEXT_STEP.MESSAGE_KEY.WAITING_TO_ADD_TRANSACTIONS]: (
actor: string,
@@ -1708,8 +1706,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `In attesa che <strong>tu</strong> aggiunga delle spese.`;
@@ -1725,8 +1721,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `In attesa che <strong>tu</strong> invii le note spese.`;
@@ -1748,8 +1742,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `In attesa che <strong>tu</strong> aggiunga un conto bancario.`;
@@ -1769,8 +1761,6 @@ const translations: TranslationDeepObject<typeof en> = {
if (eta) {
formattedETA = etaType === CONST.NEXT_STEP.ETA_TYPE.DATE_TIME ? `il ${eta} di ogni mese` : ` ${eta}`;
}
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `In attesa che le <strong>tue</strong> spese vengano inviate automaticamente${formattedETA}.`;
@@ -1786,8 +1776,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `In attesa che <strong>tu</strong> sistemi i problemi.`;
@@ -1803,8 +1791,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `In attesa che <strong>tu</strong> approvi le spese.`;
@@ -1820,8 +1806,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `In attesa che <strong>tu</strong> esporti questo report.`;
@@ -1837,8 +1821,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `In attesa che <strong>tu</strong> rimborsi le spese.`;
@@ -1854,8 +1836,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `In attesa che <strong>tu</strong> finisca di configurare un conto bancario aziendale.`;
@@ -7368,8 +7348,6 @@ Aggiungi altre regole di spesa per proteggere il flusso di cassa aziendale.`,
`ha modificato la formula del nome del report personalizzato in "${newDefaultTitle}" (in precedenza "${oldDefaultTitle}")`,
updatedOwnership: (oldOwnerEmail: string, oldOwnerName: string, policyName: string) => `ha assunto la proprietà di ${policyName} da ${oldOwnerName} (${oldOwnerEmail})`,
updatedAutoHarvesting: (enabled: boolean) => `Invio pianificato ${enabled ? 'abilitato' : 'disabilitato'}`,
- // This function requires 11 params to match the budget notification data model; reducing further would hurt readability
- // eslint-disable-next-line @typescript-eslint/max-params
updatedIndividualBudgetNotification: (
budgetAmount: string,
budgetFrequency: string,
diff --git a/src/languages/ja.ts b/src/languages/ja.ts
index 0f78541b..fe370a2f 100644
--- a/src/languages/ja.ts
+++ b/src/languages/ja.ts
@@ -1679,8 +1679,6 @@ const translations: TranslationDeepObject<typeof en> = {
backdropLabel: 'モーダルの背景',
},
nextStep: {
- // All nextStep.message functions share a common positional signature (actor, actorType, eta, etaType) for type compatibility, so unused params are expected
- /* eslint-disable @typescript-eslint/no-unused-vars */
message: {
[CONST.NEXT_STEP.MESSAGE_KEY.WAITING_TO_ADD_TRANSACTIONS]: (
actor: string,
@@ -1688,8 +1686,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `経費を追加するのを<strong>あなた</strong>が行うのを待機しています。`;
@@ -1705,8 +1701,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `経費の申請を<strong>あなた</strong>が行うのを待っています。`;
@@ -1728,8 +1722,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `銀行口座の追加を<strong>お待ちしています</strong>。`;
@@ -1749,8 +1741,6 @@ const translations: TranslationDeepObject<typeof en> = {
if (eta) {
formattedETA = etaType === CONST.NEXT_STEP.ETA_TYPE.DATE_TIME ? `毎月${eta}日に` : ` ${eta}`;
}
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `<strong>あなたの</strong>経費が自動送信されるまでお待ちください${formattedETA}。`;
@@ -1766,8 +1756,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `問題の修正を<strong>あなた</strong>が行うのを待っています。`;
@@ -1783,8 +1771,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `経費の承認を<strong>あなた</strong>が行うのを待っています。`;
@@ -1800,8 +1786,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `このレポートのエクスポートを<strong>あなた</strong>が行うのを待っています。`;
@@ -1817,8 +1801,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `精算の支払いを<strong>あなた</strong>が行うのを待っています。`;
@@ -1834,8 +1816,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `ビジネス銀行口座の設定が完了するのを<strong>お客様</strong>の操作待ちです。`;
@@ -3206,7 +3186,7 @@ ${integrationName === CONST.ONBOARDING_ACCOUNTING_MAPPING.other ? 'あなたの'
dateShouldBeBefore: (dateString: string) => `日付は${dateString}より前である必要があります`,
dateShouldBeAfter: (dateString: string) => `日付は${dateString}より後の日付にしてください`,
hasInvalidCharacter: '名前にはラテン文字のみ使用できます',
- cannotIncludeCommaOrSemicolon: '名前にカンマまたはセミコロンを含めることはできません',
+ cannotIncludeCommaOrSemicolon: '名前にコンマまたはセミコロンを含めることはできません',
incorrectZipFormat: (zipFormat?: string) => `郵便番号の形式が正しくありません${zipFormat ? `使用可能な形式:${zipFormat}` : ''}`,
invalidPhoneNumber: `電話番号が有効であることを確認してください(例:${CONST.EXAMPLE_PHONE_NUMBER})`,
},
@@ -7281,8 +7261,6 @@ ${reportName}
updatedDefaultTitle: (newDefaultTitle: string, oldDefaultTitle: string) => `カスタムレポート名の数式を「${newDefaultTitle}」に変更しました(以前は「${oldDefaultTitle}」)`,
updatedOwnership: (oldOwnerEmail: string, oldOwnerName: string, policyName: string) => `${oldOwnerName}(${oldOwnerEmail})から${policyName}の所有権を引き継ぎました`,
updatedAutoHarvesting: (enabled: boolean) => `${enabled ? '有効' : '無効'} の送信を予約しました`,
- // This function requires 11 params to match the budget notification data model; reducing further would hurt readability
- // eslint-disable-next-line @typescript-eslint/max-params
updatedIndividualBudgetNotification: (
budgetAmount: string,
budgetFrequency: string,
diff --git a/src/languages/nl.ts b/src/languages/nl.ts
index eaa95762..720b54eb 100644
--- a/src/languages/nl.ts
+++ b/src/languages/nl.ts
@@ -1695,8 +1695,6 @@ const translations: TranslationDeepObject<typeof en> = {
backdropLabel: 'Modale achtergrond',
},
nextStep: {
- // All nextStep.message functions share a common positional signature (actor, actorType, eta, etaType) for type compatibility, so unused params are expected
- /* eslint-disable @typescript-eslint/no-unused-vars */
message: {
[CONST.NEXT_STEP.MESSAGE_KEY.WAITING_TO_ADD_TRANSACTIONS]: (
actor: string,
@@ -1704,8 +1702,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `Wacht tot <strong>jij</strong> uitgaven toevoegt.`;
@@ -1721,8 +1717,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `Er wordt gewacht tot <strong>jij</strong> declaraties indient.`;
@@ -1744,8 +1738,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `Er wordt gewacht tot <strong>jij</strong> een bankrekening toevoegt.`;
@@ -1765,8 +1757,6 @@ const translations: TranslationDeepObject<typeof en> = {
if (eta) {
formattedETA = etaType === CONST.NEXT_STEP.ETA_TYPE.DATE_TIME ? `op de ${eta} van elke maand` : ` ${eta}`;
}
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `Wachten tot <strong>jouw</strong> uitgaven automatisch worden ingediend${formattedETA}.`;
@@ -1782,8 +1772,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `We wachten op <strong>jou</strong> om de problemen op te lossen.`;
@@ -1799,8 +1787,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `Wacht tot <strong>jij</strong> de onkosten goedkeurt.`;
@@ -1816,8 +1802,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `We wachten op <strong>jou</strong> om dit rapport te exporteren.`;
@@ -1833,8 +1817,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `Wacht tot <strong>jij</strong> onkosten betaalt.`;
@@ -1850,8 +1832,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `Wachten tot <strong>je</strong> klaar bent met het instellen van een zakelijke bankrekening.`;
@@ -7346,8 +7326,6 @@ Voeg meer bestedingsregels toe om de kasstroom van het bedrijf te beschermen.`,
updatedDefaultTitle: (newDefaultTitle: string, oldDefaultTitle: string) => `heeft aangepaste rapportnaamformule gewijzigd in "${newDefaultTitle}" (voorheen "${oldDefaultTitle}")`,
updatedOwnership: (oldOwnerEmail: string, oldOwnerName: string, policyName: string) => `heeft het eigendom van ${policyName} overgenomen van ${oldOwnerName} (${oldOwnerEmail})`,
updatedAutoHarvesting: (enabled: boolean) => `${enabled ? 'ingeschakeld' : 'uitgeschakeld'} gepland indienen`,
- // This function requires 11 params to match the budget notification data model; reducing further would hurt readability
- // eslint-disable-next-line @typescript-eslint/max-params
updatedIndividualBudgetNotification: (
budgetAmount: string,
budgetFrequency: string,
diff --git a/src/languages/pl.ts b/src/languages/pl.ts
index 70ae7507..847f47a6 100644
--- a/src/languages/pl.ts
+++ b/src/languages/pl.ts
@@ -1695,8 +1695,6 @@ const translations: TranslationDeepObject<typeof en> = {
backdropLabel: 'Tło modalu',
},
nextStep: {
- // All nextStep.message functions share a common positional signature (actor, actorType, eta, etaType) for type compatibility, so unused params are expected
- /* eslint-disable @typescript-eslint/no-unused-vars */
message: {
[CONST.NEXT_STEP.MESSAGE_KEY.WAITING_TO_ADD_TRANSACTIONS]: (
actor: string,
@@ -1704,8 +1702,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `Czekamy, aż to <strong>ty</strong> dodasz wydatki.`;
@@ -1721,8 +1717,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `Czekamy, aż <strong>Ty</strong> zgłosisz wydatki.`;
@@ -1744,8 +1738,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `Czekamy, aż <strong>dodasz</strong> konto bankowe.`;
@@ -1765,8 +1757,6 @@ const translations: TranslationDeepObject<typeof en> = {
if (eta) {
formattedETA = etaType === CONST.NEXT_STEP.ETA_TYPE.DATE_TIME ? `${eta}. dnia każdego miesiąca` : ` ${eta}`;
}
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `Oczekiwanie, aż <strong>twoje</strong> wydatki zostaną automatycznie przesłane${formattedETA}.`;
@@ -1782,8 +1772,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `Czekamy, aż <strong>ty</strong> naprawisz problemy.`;
@@ -1799,8 +1787,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `Czekamy, aż <strong>ty</strong> zatwierdzisz wydatki.`;
@@ -1816,8 +1802,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `Czekamy, aż to <strong>ty</strong> wyeksportujesz ten raport.`;
@@ -1833,8 +1817,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `Czekamy, aż <strong>ty</strong> zapłacisz wydatki.`;
@@ -1850,8 +1832,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `Czekamy, aż <strong>Ty</strong> skończysz zakładać firmowe konto bankowe.`;
@@ -7336,8 +7316,6 @@ Dodaj więcej zasad wydatków, żeby chronić płynność finansową firmy.`,
`zmieniono formułę nazwy niestandardowego raportu na „${newDefaultTitle}” (wcześniej „${oldDefaultTitle}”)`,
updatedOwnership: (oldOwnerEmail: string, oldOwnerName: string, policyName: string) => `przejął(a) własność ${policyName} od ${oldOwnerName} (${oldOwnerEmail})`,
updatedAutoHarvesting: (enabled: boolean) => `Zaplanowane przesłanie ${enabled ? 'włączone' : 'wyłączone'}`,
- // This function requires 11 params to match the budget notification data model; reducing further would hurt readability
- // eslint-disable-next-line @typescript-eslint/max-params
updatedIndividualBudgetNotification: (
budgetAmount: string,
budgetFrequency: string,
diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts
index 814b96ec..e5afada7 100644
--- a/src/languages/pt-BR.ts
+++ b/src/languages/pt-BR.ts
@@ -1692,8 +1692,6 @@ const translations: TranslationDeepObject<typeof en> = {
backdropLabel: 'Pano de fundo do modal',
},
nextStep: {
- // All nextStep.message functions share a common positional signature (actor, actorType, eta, etaType) for type compatibility, so unused params are expected
- /* eslint-disable @typescript-eslint/no-unused-vars */
message: {
[CONST.NEXT_STEP.MESSAGE_KEY.WAITING_TO_ADD_TRANSACTIONS]: (
actor: string,
@@ -1701,8 +1699,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `Aguardando <strong>você</strong> adicionar despesas.`;
@@ -1718,8 +1714,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `Aguardando <strong>você</strong> enviar despesas.`;
@@ -1741,8 +1735,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `Esperando <strong>você</strong> adicionar uma conta bancária.`;
@@ -1762,8 +1754,6 @@ const translations: TranslationDeepObject<typeof en> = {
if (eta) {
formattedETA = etaType === CONST.NEXT_STEP.ETA_TYPE.DATE_TIME ? `no dia ${eta} de cada mês` : ` ${eta}`;
}
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `Aguardando as <strong>suas</strong> despesas serem enviadas automaticamente${formattedETA}.`;
@@ -1779,8 +1769,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `Aguardando <strong>você</strong> corrigir os problemas.`;
@@ -1796,8 +1784,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `Aguardando <strong>você</strong> aprovar as despesas.`;
@@ -1813,8 +1799,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `Aguardando <strong>você</strong> exportar este relatório.`;
@@ -1830,8 +1814,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `Aguardando <strong>você</strong> pagar as despesas.`;
@@ -1847,8 +1829,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `Aguardando <strong>você</strong> concluir a configuração de uma conta bancária empresarial.`;
@@ -7339,8 +7319,6 @@ Adicione mais regras de gasto para proteger o fluxo de caixa da empresa.`,
`alterou a fórmula do nome do relatório personalizado para "${newDefaultTitle}" (antes "${oldDefaultTitle}")`,
updatedOwnership: (oldOwnerEmail: string, oldOwnerName: string, policyName: string) => `assumiu a propriedade de ${policyName} de ${oldOwnerName} (${oldOwnerEmail})`,
updatedAutoHarvesting: (enabled: boolean) => `Envio agendado ${enabled ? 'ativado' : 'desativado'}`,
- // This function requires 11 params to match the budget notification data model; reducing further would hurt readability
- // eslint-disable-next-line @typescript-eslint/max-params
updatedIndividualBudgetNotification: (
budgetAmount: string,
budgetFrequency: string,
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index c3259170..ff0b3334 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -1643,8 +1643,6 @@ const translations: TranslationDeepObject<typeof en> = {
backdropLabel: '模态背景',
},
nextStep: {
- // All nextStep.message functions share a common positional signature (actor, actorType, eta, etaType) for type compatibility, so unused params are expected
- /* eslint-disable @typescript-eslint/no-unused-vars */
message: {
[CONST.NEXT_STEP.MESSAGE_KEY.WAITING_TO_ADD_TRANSACTIONS]: (
actor: string,
@@ -1652,8 +1650,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `正在等待<strong>你</strong>添加报销。`;
@@ -1669,8 +1665,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `正在等待<strong>你</strong>提交报销。`;
@@ -1692,8 +1686,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `正在等待<strong>你</strong>添加银行账户。`;
@@ -1713,8 +1705,6 @@ const translations: TranslationDeepObject<typeof en> = {
if (eta) {
formattedETA = etaType === CONST.NEXT_STEP.ETA_TYPE.DATE_TIME ? `在每个月的 ${eta} 日` : ` ${eta}`;
}
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `正在等待<strong>你的</strong>报销费用自动提交${formattedETA}。`;
@@ -1730,8 +1720,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `正在等待<strong>你</strong>来解决这些问题。`;
@@ -1747,8 +1735,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `正在等待<strong>你</strong>审批报销。`;
@@ -1764,8 +1750,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `正在等待<strong>你</strong>导出此报表。`;
@@ -1781,8 +1765,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `正在等待<strong>你</strong>报销费用。`;
@@ -1798,8 +1780,6 @@ const translations: TranslationDeepObject<typeof en> = {
_eta?: string,
_etaType?: ValueOf<typeof CONST.NEXT_STEP.ETA_TYPE>,
) => {
- // Disabling the default-case lint rule here is actually safer as this forces us to make the switch cases exhaustive
- // eslint-disable-next-line default-case
switch (actorType) {
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
return `正在等待<strong>你</strong>完成设置企业银行账户。`;
@@ -7146,8 +7126,6 @@ ${reportName}
updatedDefaultTitle: (newDefaultTitle: string, oldDefaultTitle: string) => `将自定义报表名称公式更改为“${newDefaultTitle}”(之前为“${oldDefaultTitle}”)`,
updatedOwnership: (oldOwnerEmail: string, oldOwnerName: string, policyName: string) => `从 ${oldOwnerName}(${oldOwnerEmail})接管了 ${policyName} 的所有权`,
updatedAutoHarvesting: (enabled: boolean) => `已计划提交 ${enabled ? '已启用' : '已禁用'}`,
- // This function requires 11 params to match the budget notification data model; reducing further would hurt readability
- // eslint-disable-next-line @typescript-eslint/max-params
updatedIndividualBudgetNotification: (
budgetAmount: string,
budgetFrequency: string,
Note You can apply these changes to your branch by copying the patch to your clipboard, then running |
situchan
left a comment
There was a problem hiding this comment.
Looks like only Japanese is different.
@annaweber830 please apply this suggestion
|
And pull main to fix failing tests |
Co-authored-by: Situ Chandra Shil <108292595+situchan@users.noreply.github.com>
situchan
left a comment
There was a problem hiding this comment.
@annaweber830 bump for merging main
|
Ah I see merged main 6 hrs ago and all checks pass. |
After discussing on Slack, we determined the correct expected behavior which this now matches
|
🚧 @dangrous has triggered a test Expensify/App build. You can view the workflow run here. |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚀 Deployed to staging by https://github.com/dangrous in version: 9.3.59-0 🚀
Bundle Size Analysis (Sentry): |
|
I reviewed all help site articles under Since this PR adds input validation (rejecting commas and semicolons) rather than changing any user-facing workflow, navigation, or feature behavior, no changes are required to the help site files. |
|
🚀 Deployed to production by https://github.com/AndrewGable in version: 9.3.59-4 🚀
|
Explanation of Change
Fixed Issues
$ #82847
PROPOSAL: #82847 (comment)
Tests
Offline tests
Same as test
QA Steps
// TODO: These must be filled out, or the issue title must include "[No QA]."
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectiontoggleReportand notonIconClick)src/languages/*files and using the translation methodSTYLE.md) were followedAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))npm run compress-svg)Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.ScrollViewcomponent to make it scrollable when more elements are added to the page.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Android: Native
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari
Screen.Recording.2026-03-09.at.3.03.42.PM.mov