Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions src/CONST/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1584,6 +1584,7 @@ const CONST = {
ADD_CUSTOM_UNIT_RATE: 'POLICYCHANGELOG_ADD_CUSTOM_UNIT_RATE',
ADD_EMPLOYEE: 'POLICYCHANGELOG_ADD_EMPLOYEE',
ADD_CARD_FEED: 'POLICYCHANGELOG_ADD_CARD_FEED',
ADD_EXPENSIFY_CARD_RULE: 'POLICYCHANGELOG_ADD_EXPENSIFY_CARD_RULE',
ADD_INTEGRATION: 'POLICYCHANGELOG_ADD_INTEGRATION',
ADD_REPORT_FIELD: 'POLICYCHANGELOG_ADD_REPORT_FIELD',
ADD_TAG: 'POLICYCHANGELOG_ADD_TAG',
Expand All @@ -1609,6 +1610,7 @@ const CONST = {
INDIVIDUAL_BUDGET_NOTIFICATION: 'POLICYCHANGELOG_INDIVIDUAL_BUDGET_NOTIFICATION',
INVITE_TO_ROOM: 'POLICYCHANGELOG_INVITETOROOM',
REMOVE_FROM_ROOM: 'POLICYCHANGELOG_REMOVEFROMROOM',
REMOVE_EXPENSIFY_CARD_RULE: 'POLICYCHANGELOG_REMOVE_EXPENSIFY_CARD_RULE',
LEAVE_ROOM: 'POLICYCHANGELOG_LEAVEROOM',
REPLACE_CATEGORIES: 'POLICYCHANGELOG_REPLACE_CATEGORIES',
SET_AUTO_REIMBURSEMENT: 'POLICYCHANGELOG_SET_AUTOREIMBURSEMENT',
Expand All @@ -1635,6 +1637,7 @@ const CONST = {
UPDATE_DEFAULT_TITLE_ENFORCED: 'POLICYCHANGELOG_UPDATE_DEFAULT_TITLE_ENFORCED',
UPDATE_DISABLED_FIELDS: 'POLICYCHANGELOG_UPDATE_DISABLED_FIELDS',
UPDATE_EMPLOYEE: 'POLICYCHANGELOG_UPDATE_EMPLOYEE',
UPDATE_EXPENSIFY_CARD_RULE: 'POLICYCHANGELOG_UPDATE_EXPENSIFY_CARD_RULE',
UPDATE_FIELD: 'POLICYCHANGELOG_UPDATE_FIELD',
UPDATE_ADDRESS: 'POLICYCHANGELOG_UPDATE_ADDRESS',
UPDATE_FEATURE_ENABLED: 'POLICYCHANGELOG_UPDATE_FEATURE_ENABLED',
Expand Down
51 changes: 51 additions & 0 deletions src/languages/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7575,6 +7575,57 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc
addedReportField: (fieldType: string, fieldName?: string, defaultValue?: string) =>
`${fieldType}-Berichtsfeld „${fieldName}“${defaultValue ? ` mit Standardwert „${defaultValue}“` : ''} hinzugefügt`,
updatedRequireCompanyCards: ({enabled}: {enabled: boolean}) => `${enabled ? 'aktiviert' : 'deaktiviert'} die Anforderung für Firmenkartenkäufe`,
expensifyCardRule: {
actionVerb: {block: 'blockiert', allow: 'erlaubt'},
amountOperator: {over: 'über', under: 'unter'},
amountFilter: ({operator, amount}: {operator: string; amount: string}) => `Beträge ${operator} ${amount}`,
theCard: 'die Karte',
multipleCards: ({count}: {count: number}) => `${count} Karten`,
joinFilters: ({items}: {items: string[]}) => {
if (items.length === 0) {
return '';
}
if (items.length === 1) {
return items.at(0) ?? '';
}
if (items.length === 2) {
return `${items.at(0)} und ${items.at(1)}`;
}
return `${items.slice(0, -1).join(', ')} und ${items.at(-1)}`;
},
addRule: ({verb, filters, cards}: {verb: string; filters: string; cards: string}) => {
let text = verb;
if (filters !== '') {
text += `${text === '' ? '' : ' '}${filters}`;
}
if (cards !== '') {
text += `${text === '' ? '' : ' '} auf ${cards}`;
}
return text;
},
removeRule: ({cards}: {cards: string}) => (cards !== '' ? `Ausgaberegel von ${cards} entfernt` : 'Ausgaberegel entfernt'),
restrictionVerb: {block: 'Block', allow: 'nur zulassen'},
update: {
modeChange: ({fromAction, toAction, cards}: {fromAction: string; toAction: string; cards: string}) =>
cards !== '' ? `Ausgabenregel von ${fromAction} zu ${toAction} auf ${cards} geändert` : `Ausgabenregel von ${fromAction} in ${toAction} geändert`,
appliedToAdditionalCards: ({count}: {count: number}) => `Ausgaberegel auf ${count} zusätzliche Karten angewendet`,
phraseVerb: {added: 'hinzugefügt', removed: 'entfernt', changed: 'geändert', set: 'festlegen', applied: 'angewendet'},
bodyMerchant: ({adjective, value}: {adjective: string; value: string}) => (adjective !== '' ? `${adjective} Händler „${value}“` : `Händler*in „${value}“`),
bodyMerchantChange: ({adjective, oldValue, newValue}: {adjective: string; oldValue: string; newValue: string}) =>
adjective !== '' ? `${adjective} Händler von „${oldValue}“ zu „${newValue}“` : `Händler*in von „${oldValue}“ zu „${newValue}“`,
bodySpendCategory: ({adjective, value}: {adjective: string; value: string}) =>
adjective !== '' ? `${adjective} Ausgabenkategorie „${value}“` : `Ausgabenkategorie „${value}“`,
bodySpendCategoryChange: ({adjective, oldValue, newValue}: {adjective: string; oldValue: string; newValue: string}) =>
adjective !== '' ? `${adjective} Ausgabenkategorie von „${oldValue}“ zu „${newValue}“` : `Ausgabenkategorie von „${oldValue}“ auf „${newValue}“`,
bodyMaxAmount: 'Maximalbetrag',
bodyMaxAmountSet: ({value}: {value: string}) => `Maximalbetrag bis ${value}`,
bodyMaxAmountChange: ({oldValue, newValue}: {oldValue: string; newValue: string}) => `Maximalbetrag von ${oldValue} auf ${newValue}`,
bodyAppliedToAdditionalCards: ({count}: {count: number}) => `Ausgabenregel auf ${count} weitere Karten anwenden`,
bodyRemovedFromCards: ({cards}: {cards: string}) => `Ausgabelimit von ${cards}`,
composeOnCards: ({content, cards}: {content: string; cards: string}) => (cards !== '' ? `${content} auf ${cards}` : content),
composeFromCards: ({content, cards}: {content: string; cards: string}) => (cards !== '' ? `${content} von ${cards}` : content),
},
},
},
roomMembersPage: {
memberNotFound: 'Mitglied nicht gefunden.',
Expand Down
65 changes: 65 additions & 0 deletions src/languages/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7273,6 +7273,71 @@ const translations = {
updatedCardFeedLiability: (feedName: string, enabled: boolean) => `${enabled ? 'enabled' : 'disabled'} cardholders to delete card transactions for card feed "${feedName}"`,
updatedCardFeedStatementPeriod: (feedName: string, newValue?: string, previousValue?: string) =>
`changed card feed "${feedName}" statement period end day${newValue ? ` to "${newValue}"` : ''}${previousValue ? ` (previously "${previousValue}")` : ''}`,
expensifyCardRule: {
actionVerb: {
block: 'blocked',
allow: 'allowed',
},
amountOperator: {
over: 'over',
under: 'under',
},
amountFilter: ({operator, amount}: {operator: string; amount: string}) => `amounts ${operator} ${amount}`,
theCard: 'the card',
multipleCards: ({count}: {count: number}) => `${count} cards`,
joinFilters: ({items}: {items: string[]}) => {
if (items.length === 0) {
return '';
}
if (items.length === 1) {
return items.at(0) ?? '';
}
if (items.length === 2) {
return `${items.at(0)} and ${items.at(1)}`;
}
return `${items.slice(0, -1).join(', ')}, and ${items.at(-1)}`;
},
addRule: ({verb, filters, cards}: {verb: string; filters: string; cards: string}) => {
let text = verb;
if (filters !== '') {
text += `${text === '' ? '' : ' '}${filters}`;
}
if (cards !== '') {
text += `${text === '' ? '' : ' '}on ${cards}`;
}
return text;
},
removeRule: ({cards}: {cards: string}) => (cards !== '' ? `removed spend rule from ${cards}` : 'removed spend rule'),
restrictionVerb: {
block: 'block',
allow: 'only allow',
},
update: {
modeChange: ({fromAction, toAction, cards}: {fromAction: string; toAction: string; cards: string}) =>
cards !== '' ? `changed spend rule from ${fromAction} to ${toAction} on ${cards}` : `changed spend rule from ${fromAction} to ${toAction}`,
appliedToAdditionalCards: ({count}: {count: number}) => `applied spend rule to ${count} additional cards`,
phraseVerb: {
added: 'added',
removed: 'removed',
changed: 'changed',
set: 'set',
applied: 'applied',
},
bodyMerchant: ({adjective, value}: {adjective: string; value: string}) => (adjective !== '' ? `${adjective} merchant '${value}'` : `merchant '${value}'`),
bodyMerchantChange: ({adjective, oldValue, newValue}: {adjective: string; oldValue: string; newValue: string}) =>
adjective !== '' ? `${adjective} merchant from '${oldValue}' to '${newValue}'` : `merchant from '${oldValue}' to '${newValue}'`,
bodySpendCategory: ({adjective, value}: {adjective: string; value: string}) => (adjective !== '' ? `${adjective} spend category '${value}'` : `spend category '${value}'`),
bodySpendCategoryChange: ({adjective, oldValue, newValue}: {adjective: string; oldValue: string; newValue: string}) =>
adjective !== '' ? `${adjective} spend category from '${oldValue}' to '${newValue}'` : `spend category from '${oldValue}' to '${newValue}'`,
bodyMaxAmount: 'max amount',
bodyMaxAmountSet: ({value}: {value: string}) => `max amount to ${value}`,
bodyMaxAmountChange: ({oldValue, newValue}: {oldValue: string; newValue: string}) => `max amount from ${oldValue} to ${newValue}`,
bodyAppliedToAdditionalCards: ({count}: {count: number}) => `spend rule to ${count} additional cards`,
bodyRemovedFromCards: ({cards}: {cards: string}) => `spend rule from ${cards}`,
composeOnCards: ({content, cards}: {content: string; cards: string}) => (cards !== '' ? `${content} on ${cards}` : content),
composeFromCards: ({content, cards}: {content: string; cards: string}) => (cards !== '' ? `${content} from ${cards}` : content),
},
},
preventSelfApproval: (oldValue: string, newValue: string) =>
`updated "Prevent self-approval" to "${newValue === 'true' ? 'Enabled' : 'Disabled'}" (previously "${oldValue === 'true' ? 'Enabled' : 'Disabled'}")`,
updateMonthlyOffset: (oldValue: string, newValue: string) => {
Expand Down
65 changes: 65 additions & 0 deletions src/languages/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7126,6 +7126,71 @@ ${amount} para ${merchant} - ${date}`,
`${enabled ? 'habilitó' : 'deshabilitó'} que los titulares de tarjetas eliminen transacciones de la fuente de tarjetas "${feedName}"`,
updatedCardFeedStatementPeriod: (feedName: string, newValue?: string, previousValue?: string) =>
`cambió el día de cierre del período de estado de cuenta de la fuente de tarjetas "${feedName}"${newValue ? ` a "${newValue}"` : ''}${previousValue ? ` (previamente "${previousValue}")` : ''}`,
expensifyCardRule: {
actionVerb: {
block: 'bloqueó',
allow: 'permitió',
},
amountOperator: {
over: 'mayores a',
under: 'menores a',
},
amountFilter: ({operator, amount}) => `montos ${operator} ${amount}`,
theCard: 'la tarjeta',
multipleCards: ({count}) => `${count} tarjetas`,
joinFilters: ({items}) => {
if (items.length === 0) {
return '';
}
if (items.length === 1) {
return items.at(0) ?? '';
}
if (items.length === 2) {
return `${items.at(0)} y ${items.at(1)}`;
}
return `${items.slice(0, -1).join(', ')} y ${items.at(-1)}`;
},
addRule: ({verb, filters, cards}) => {
let text = verb;
if (filters !== '') {
text += `${text === '' ? '' : ' '}${filters}`;
}
if (cards !== '') {
text += `${text === '' ? '' : ' '}en ${cards}`;
}
return text;
},
removeRule: ({cards}) => (cards !== '' ? `eliminó la regla de gasto de ${cards}` : 'eliminó la regla de gasto'),
restrictionVerb: {
block: 'bloquear',
allow: 'solo permitir',
},
update: {
modeChange: ({fromAction, toAction, cards}) =>
cards !== '' ? `cambió la regla de gasto de ${fromAction} a ${toAction} en ${cards}` : `cambió la regla de gasto de ${fromAction} a ${toAction}`,
appliedToAdditionalCards: ({count}) => `aplicó la regla de gasto a ${count} tarjetas adicionales`,
phraseVerb: {
added: 'agregó',
removed: 'eliminó',
changed: 'cambió',
set: 'estableció',
applied: 'aplicó',
},
bodyMerchant: ({adjective, value}) => (adjective !== '' ? `comerciante ${adjective} '${value}'` : `comerciante '${value}'`),
bodyMerchantChange: ({adjective, oldValue, newValue}) =>
adjective !== '' ? `comerciante ${adjective} de '${oldValue}' a '${newValue}'` : `comerciante de '${oldValue}' a '${newValue}'`,
bodySpendCategory: ({adjective, value}) => (adjective !== '' ? `categoría de gasto ${adjective} '${value}'` : `categoría de gasto '${value}'`),
bodySpendCategoryChange: ({adjective, oldValue, newValue}) =>
adjective !== '' ? `categoría de gasto ${adjective} de '${oldValue}' a '${newValue}'` : `categoría de gasto de '${oldValue}' a '${newValue}'`,
bodyMaxAmount: 'monto máximo',
bodyMaxAmountSet: ({value}) => `monto máximo en ${value}`,
bodyMaxAmountChange: ({oldValue, newValue}) => `monto máximo de ${oldValue} a ${newValue}`,
bodyAppliedToAdditionalCards: ({count}) => `la regla de gasto a ${count} tarjetas adicionales`,
bodyRemovedFromCards: ({cards}) => `la regla de gasto de ${cards}`,
composeOnCards: ({content, cards}) => (cards !== '' ? `${content} en ${cards}` : content),
composeFromCards: ({content, cards}) => (cards !== '' ? `${content} de ${cards}` : content),
},
},
preventSelfApproval: (oldValue, newValue) =>
`actualizó "Evitar la autoaprobación" a "${newValue === 'true' ? 'Habilitada' : 'Deshabilitada'}" (previamente "${oldValue === 'true' ? 'Habilitada' : 'Deshabilitada'}")`,
setReceiptRequiredAmount: (newValue) => `estableció el importe requerido del recibo en "${newValue}"`,
Expand Down
51 changes: 51 additions & 0 deletions src/languages/fr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7597,6 +7597,57 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e
addedReportField: (fieldType: string, fieldName?: string, defaultValue?: string) =>
`a ajouté le champ de note de frais ${fieldType} « ${fieldName} »${defaultValue ? ` avec la valeur par défaut « ${defaultValue} »` : ''}`,
updatedRequireCompanyCards: ({enabled}: {enabled: boolean}) => `${enabled ? 'activé' : 'désactivé'} l’exigence d’achats par carte d’entreprise`,
expensifyCardRule: {
actionVerb: {block: 'bloqué', allow: 'autorisé'},
amountOperator: {over: 'terminé', under: 'sous'},
amountFilter: ({operator, amount}: {operator: string; amount: string}) => `montants ${operator} ${amount}`,
theCard: 'la carte',
multipleCards: ({count}: {count: number}) => `${count} cartes`,
joinFilters: ({items}: {items: string[]}) => {
if (items.length === 0) {
return '';
}
if (items.length === 1) {
return items.at(0) ?? '';
}
if (items.length === 2) {
return `${items.at(0)} et ${items.at(1)}`;
}
return `${items.slice(0, -1).join(', ')}, et ${items.at(-1)}`;
},
addRule: ({verb, filters, cards}: {verb: string; filters: string; cards: string}) => {
let text = verb;
if (filters !== '') {
text += `${text === '' ? '' : ' '}${filters}`;
}
if (cards !== '') {
text += `${text === '' ? '' : ' '} sur ${cards}`;
}
return text;
},
removeRule: ({cards}: {cards: string}) => (cards !== '' ? `règle de dépense supprimée de ${cards}` : 'règle de dépense supprimée'),
restrictionVerb: {block: 'bloquer', allow: 'autoriser uniquement'},
update: {
modeChange: ({fromAction, toAction, cards}: {fromAction: string; toAction: string; cards: string}) =>
cards !== '' ? `a modifié la règle de dépense de ${fromAction} à ${toAction} sur ${cards}` : `a modifié la règle de dépense de ${fromAction} à ${toAction}`,
appliedToAdditionalCards: ({count}: {count: number}) => `règle de dépense appliquée à ${count} cartes supplémentaires`,
phraseVerb: {added: 'ajouté', removed: 'supprimé', changed: 'modifié', set: 'définir', applied: 'appliqué'},
bodyMerchant: ({adjective, value}: {adjective: string; value: string}) => (adjective !== '' ? `Commerçant·e ${adjective} « ${value} »` : `commerçant « ${value} »`),
bodyMerchantChange: ({adjective, oldValue, newValue}: {adjective: string; oldValue: string; newValue: string}) =>
adjective !== '' ? `${adjective} commerçant de « ${oldValue} » à « ${newValue} »` : `commerçant de « ${oldValue} » à « ${newValue} »`,
bodySpendCategory: ({adjective, value}: {adjective: string; value: string}) =>
adjective !== '' ? `Catégorie de dépense ${adjective} « ${value} »` : `catégorie de dépense « ${value} »`,
bodySpendCategoryChange: ({adjective, oldValue, newValue}: {adjective: string; oldValue: string; newValue: string}) =>
adjective !== '' ? `Catégorie de dépense ${adjective} de « ${oldValue} » à « ${newValue} »` : `catégorie de dépense de « ${oldValue} » à « ${newValue} »`,
bodyMaxAmount: 'montant maximal',
bodyMaxAmountSet: ({value}: {value: string}) => `montant maximal à ${value}`,
bodyMaxAmountChange: ({oldValue, newValue}: {oldValue: string; newValue: string}) => `montant maximum de ${oldValue} à ${newValue}`,
bodyAppliedToAdditionalCards: ({count}: {count: number}) => `règle de dépense pour ${count} cartes supplémentaires`,
bodyRemovedFromCards: ({cards}: {cards: string}) => `règle de dépense à partir de ${cards}`,
composeOnCards: ({content, cards}: {content: string; cards: string}) => (cards !== '' ? `${content} sur ${cards}` : content),
composeFromCards: ({content, cards}: {content: string; cards: string}) => (cards !== '' ? `${content} depuis ${cards}` : content),
},
},
},
roomMembersPage: {
memberNotFound: 'Membre introuvable.',
Expand Down
Loading
Loading