[NO QA] Add hotelBlock reservation type and nudge copy - #99686
Conversation
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
🦜 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 cd3f25ea..dbb66493 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -4587,14 +4587,15 @@ ${amount} für ${merchant} – ${date}`,
railCard:
'Wussten Sie, dass Sie Zugfahrten direkt in Expensify buchen und verwalten können? Und dass Belege dabei automatisch für Sie hochgeladen werden? Buchen Sie das nächste Mal einfach über <a href="https://travel.expensify.com">Expensify Travel</a> 🚂',
hotelBlockManual:
- 'Wussten Sie, dass Sie Gruppenreisen wie diese direkt in Expensify buchen und verwalten können? Sparen Sie sich beim nächsten Mal den Aufwand und probieren Sie unser Tool <a href="https://help.expensify.com/travel/hubs/event-management/">Reise-Events</a> aus.',
+ 'Wussten Sie, dass Sie Gruppenreisen wie diese direkt in Expensify buchen und verwalten können? Sparen Sie sich beim nächsten Mal den Aufwand und probieren Sie unser Tool für <a href="https://help.expensify.com/travel/hubs/event-management/">Reiseveranstaltungen</a> aus.',
hotelBlockCard:
- 'Wussten Sie, dass Sie Gruppenreisen wie diese direkt in Expensify buchen und verwalten können? Sparen Sie sich beim nächsten Mal den Aufwand und probieren Sie unser Tool <a href="https://help.expensify.com/travel/hubs/event-management/">Reise-Events</a> aus.',
+ 'Wussten Sie, dass Sie Gruppenreisen wie diese direkt in Expensify buchen und verwalten können? Sparen Sie sich beim nächsten Mal den Aufwand und probieren Sie unser Tool für <a href="https://help.expensify.com/travel/hubs/event-management/">Reiseveranstaltungen</a> aus.',
},
defaultWorkspaceTravelDisabled: {
title: 'Reisen ist nicht aktiviert',
message: 'Um zu buchen, aktivieren Sie bitte Reisen in Ihrem Standard-Arbeitsbereich oder wechseln Sie Ihren Standard-Arbeitsbereich zu einem, in dem Reisen aktiviert ist.',
},
+ hotelBlock: 'Hotelkontingent',
},
workspace: {
common: {
diff --git a/src/languages/el.ts b/src/languages/el.ts
index 582d23a9..db6f1899 100644
--- a/src/languages/el.ts
+++ b/src/languages/el.ts
@@ -4650,15 +4650,16 @@ ${amount} για ${merchant} - ${date}`,
railCard:
'Γνωρίζατε ότι μπορείτε να κλείνετε και να διαχειρίζεστε ταξίδια με τρένο απευθείας στο Expensify; Και ότι ανεβάζει αυτόματα τις αποδείξεις για εσάς; Την επόμενη φορά απλώς κάντε κράτηση μέσω του <a href="https://travel.expensify.com">Expensify Travel</a> 🚂',
hotelBlockManual:
- 'Γνωρίζατε ότι μπορείτε να κλείνετε και να διαχειρίζεστε ομαδικά ταξίδια όπως αυτό απευθείας στο Expensify; Γλιτώστε ταλαιπωρία την επόμενη φορά και δοκιμάστε το εργαλείο μας <a href="https://help.expensify.com/travel/hubs/event-management/">Travel Events</a>.',
+ 'Γνωρίζατε ότι μπορείτε να κλείνετε και να διαχειρίζεστε ομαδικά ταξίδια σαν αυτό απευθείας στο Expensify; Γλιτώστε την ταλαιπωρία την επόμενη φορά και δοκιμάστε το εργαλείο μας <a href="https://help.expensify.com/travel/hubs/event-management/">ταξιδιωτικών εκδηλώσεων</a>.',
hotelBlockCard:
- 'Γνωρίζατε ότι μπορείτε να κλείνετε και να διαχειρίζεστε ομαδικά ταξίδια όπως αυτό απευθείας στο Expensify; Γλιτώστε ταλαιπωρία την επόμενη φορά και δοκιμάστε το εργαλείο μας <a href="https://help.expensify.com/travel/hubs/event-management/">Travel Events</a>.',
+ 'Γνωρίζατε ότι μπορείτε να κλείνετε και να διαχειρίζεστε ομαδικά ταξίδια σαν αυτό απευθείας στο Expensify; Γλιτώστε την ταλαιπωρία την επόμενη φορά και δοκιμάστε το εργαλείο μας <a href="https://help.expensify.com/travel/hubs/event-management/">ταξιδιωτικών εκδηλώσεων</a>.',
},
defaultWorkspaceTravelDisabled: {
title: 'Η ταξιδιωτική λειτουργία δεν είναι ενεργοποιημένη',
message:
'Για να κάνετε κράτηση, ενεργοποιήστε τα ταξίδια στον προεπιλεγμένο χώρο εργασίας σας ή αλλάξτε τον προεπιλεγμένο χώρο εργασίας σε κάποιον όπου τα ταξίδια είναι ενεργοποιημένα.',
},
+ hotelBlock: 'Δεσμευμένο μπλοκ δωματίων ξενοδοχείου',
},
proactiveAppReview: {
title: 'Σας αρέσει το νέο Expensify;',
diff --git a/src/languages/es.ts b/src/languages/es.ts
index a0de79e5..2f3aa030 100644
--- a/src/languages/es.ts
+++ b/src/languages/es.ts
@@ -4504,6 +4504,7 @@ ${amount} para ${merchant} - ${date}`,
title: 'Los viajes no están habilitados',
message: 'Para reservar, habilita los viajes en tu espacio de trabajo predeterminado o cambia tu espacio de trabajo predeterminado a uno que tenga los viajes habilitados.',
},
+ hotelBlock: 'Bloque de habitaciones de hotel',
},
proactiveAppReview: {
title: '¿Te gusta New Expensify?',
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index b36edaed..8df42d00 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -4595,14 +4595,15 @@ ${amount} pour ${merchant} - ${date}`,
railCard:
'Saviez-vous que vous pouvez réserver et gérer vos trajets en train directement dans Expensify ? Et que les reçus sont automatiquement téléchargés pour vous ? La prochaine fois, réservez simplement via <a href="https://travel.expensify.com">Expensify Travel</a> 🚂',
hotelBlockManual:
- 'Saviez-vous que vous pouvez réserver et gérer des voyages de groupe comme celui-ci directement dans Expensify ? Évitez-vous des ennuis la prochaine fois et essayez notre outil <a href="https://help.expensify.com/travel/hubs/event-management/">Événements de voyage</a>.',
+ 'Saviez-vous que vous pouvez réserver et gérer des voyages de groupe comme celui-ci directement dans Expensify ? Épargnez-vous des tracas la prochaine fois et essayez notre outil <a href="https://help.expensify.com/travel/hubs/event-management/">Événements de voyage</a>.',
hotelBlockCard:
- 'Saviez-vous que vous pouvez réserver et gérer des voyages de groupe comme celui-ci directement dans Expensify ? Évitez-vous des ennuis la prochaine fois et essayez notre outil <a href="https://help.expensify.com/travel/hubs/event-management/">Événements de voyage</a>.',
+ 'Saviez-vous que vous pouvez réserver et gérer des voyages de groupe comme celui-ci directement dans Expensify ? Épargnez-vous des tracas la prochaine fois et essayez notre outil <a href="https://help.expensify.com/travel/hubs/event-management/">Événements de voyage</a>.',
},
defaultWorkspaceTravelDisabled: {
title: 'Voyage n’est pas activé',
message: 'Pour réserver, veuillez activer les voyages sur votre espace de travail par défaut ou définir par défaut un espace de travail sur lequel les voyages sont activés.',
},
+ hotelBlock: 'Bloc hôtelier',
},
workspace: {
common: {
diff --git a/src/languages/it.ts b/src/languages/it.ts
index 57804aea..a555bc4b 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -4561,14 +4561,15 @@ ${amount} per ${merchant} - ${date}`,
railCard:
'Sapevi che puoi prenotare e gestire i viaggi in treno direttamente in Expensify? E che le ricevute vengono caricate automaticamente per te? La prossima volta prenota semplicemente tramite <a href="https://travel.expensify.com">Expensify Travel</a> 🚂',
hotelBlockManual:
- 'Sapevi che puoi prenotare e gestire viaggi di gruppo come questo direttamente in Expensify? Evita lo stress la prossima volta e prova il nostro strumento <a href="https://help.expensify.com/travel/hubs/event-management/">Eventi di viaggio</a>.',
+ 'Lo sapevi che puoi prenotare e gestire viaggi di gruppo come questo direttamente in Expensify? Evita lo stress la prossima volta e prova il nostro strumento <a href="https://help.expensify.com/travel/hubs/event-management/">Eventi di viaggio</a>.',
hotelBlockCard:
- 'Sapevi che puoi prenotare e gestire viaggi di gruppo come questo direttamente in Expensify? Evita lo stress la prossima volta e prova il nostro strumento <a href="https://help.expensify.com/travel/hubs/event-management/">Eventi di viaggio</a>.',
+ 'Lo sapevi che puoi prenotare e gestire viaggi di gruppo come questo direttamente in Expensify? Evita lo stress la prossima volta e prova il nostro strumento <a href="https://help.expensify.com/travel/hubs/event-management/">Eventi di viaggio</a>.',
},
defaultWorkspaceTravelDisabled: {
title: 'Viaggi non abilitato',
message: 'Per prenotare, abilita i viaggi sul tuo spazio di lavoro predefinito oppure imposta come predefinito uno spazio di lavoro con viaggi abilitati.',
},
+ hotelBlock: 'Blocco di hotel',
},
workspace: {
common: {
diff --git a/src/languages/ja.ts b/src/languages/ja.ts
index 11a0038d..7cb6f220 100644
--- a/src/languages/ja.ts
+++ b/src/languages/ja.ts
@@ -4517,14 +4517,15 @@ ${integrationName === CONST.ONBOARDING_ACCOUNTING_MAPPING.other ? 'あなたの'
railCard:
'Expensify で電車の予約や管理ができることをご存じでしたか?しかも領収書も自動でアップロードされます。次回からは、ぜひ <a href="https://travel.expensify.com">Expensify Travel</a> から予約してください 🚂',
hotelBlockManual:
- 'Expensify では、このようなグループ旅行の予約と管理を直接行えることをご存じでしたか?次回は面倒を省くために、ぜひ <a href="https://help.expensify.com/travel/hubs/event-management/">Travel Events</a> ツールをお試しください。',
+ 'Expensify なら、このようなグループ旅行の予約や管理を直接行えることをご存じでしたか?次回は面倒を省いて、ぜひ <a href="https://help.expensify.com/travel/hubs/event-management/">Travel Events</a> ツールをお試しください。',
hotelBlockCard:
- 'Expensify では、このようなグループ旅行の予約と管理を直接行えることをご存じでしたか?次回は面倒を省くために、ぜひ <a href="https://help.expensify.com/travel/hubs/event-management/">Travel Events</a> ツールをお試しください。',
+ 'Expensify なら、このようなグループ旅行の予約や管理を直接行えることをご存じでしたか?次回は面倒を省いて、ぜひ <a href="https://help.expensify.com/travel/hubs/event-management/">Travel Events</a> ツールをお試しください。',
},
defaultWorkspaceTravelDisabled: {
title: '出張機能は有効になっていません',
message: '予約するには、デフォルトのワークスペースで出張機能を有効にするか、出張機能が有効になっているワークスペースをデフォルトとして設定してください。',
},
+ hotelBlock: 'ホテルブロック',
},
workspace: {
common: {
diff --git a/src/languages/nl.ts b/src/languages/nl.ts
index 36949a24..6dc6d0de 100644
--- a/src/languages/nl.ts
+++ b/src/languages/nl.ts
@@ -4559,14 +4559,15 @@ ${amount} voor ${merchant} - ${date}`,
railCard:
'Wist je dat je treinreizen rechtstreeks in Expensify kunt boeken en beheren? En dat bonnen automatisch voor je worden geüpload? Boek de volgende keer gewoon via <a href="https://travel.expensify.com">Expensify Travel</a> 🚂',
hotelBlockManual:
- 'Wist je dat je groepsreizen zoals deze direct in Expensify kunt boeken en beheren? Bespaar jezelf de moeite de volgende keer en probeer onze tool <a href="https://help.expensify.com/travel/hubs/event-management/">Reisevenementen</a> eens uit.',
+ 'Wist je dat je groepsreizen zoals deze direct in Expensify kunt boeken en beheren? Bespaar jezelf de moeite de volgende keer en probeer onze tool <a href="https://help.expensify.com/travel/hubs/event-management/">Reisevenementen</a> uit.',
hotelBlockCard:
- 'Wist je dat je groepsreizen zoals deze direct in Expensify kunt boeken en beheren? Bespaar jezelf de moeite de volgende keer en probeer onze tool <a href="https://help.expensify.com/travel/hubs/event-management/">Reisevenementen</a> eens uit.',
+ 'Wist je dat je groepsreizen zoals deze direct in Expensify kunt boeken en beheren? Bespaar jezelf de moeite de volgende keer en probeer onze tool <a href="https://help.expensify.com/travel/hubs/event-management/">Reisevenementen</a> uit.',
},
defaultWorkspaceTravelDisabled: {
title: 'Reizen is niet ingeschakeld',
message: 'Om te boeken, schakel reizen in op je standaardwerkruimte of stel een standaardwerkruimte in die reizen ondersteunt.',
},
+ hotelBlock: 'Hotelblok',
},
workspace: {
common: {
diff --git a/src/languages/pl.ts b/src/languages/pl.ts
index 2cee5c6f..2c559fa4 100644
--- a/src/languages/pl.ts
+++ b/src/languages/pl.ts
@@ -4594,6 +4594,7 @@ ${amount} dla ${merchant} - ${date}`,
title: 'Podróże są wyłączone',
message: 'Aby dokonać rezerwacji, włącz podróże w swojej domyślnej przestrzeni roboczej lub ustaw jako domyślną inną przestrzeń roboczą, w której podróże są włączone.',
},
+ hotelBlock: 'Blok hotelowy',
},
workspace: {
common: {
diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts
index f1e36b90..3bec2738 100644
--- a/src/languages/pt-BR.ts
+++ b/src/languages/pt-BR.ts
@@ -4553,14 +4553,15 @@ ${amount} para ${merchant} - ${date}`,
railCard:
'Você sabia que dá para reservar e gerenciar viagens de trem direto no Expensify? E que os recibos são enviados automaticamente para você? Da próxima vez, é só reservar pelo <a href="https://travel.expensify.com">Expensify Travel</a> 🚂',
hotelBlockManual:
- 'Você sabia que pode reservar e gerenciar viagens em grupo como esta direto no Expensify? Poupe-se do transtorno da próxima vez e experimente nossa ferramenta de <a href="https://help.expensify.com/travel/hubs/event-management/">Eventos de Viagem</a>.',
+ 'Você sabia que pode reservar e gerenciar viagens em grupo como esta direto no Expensify? Poupe trabalho da próxima vez e experimente nossa ferramenta de <a href="https://help.expensify.com/travel/hubs/event-management/">Eventos de Viagem</a>.',
hotelBlockCard:
- 'Você sabia que pode reservar e gerenciar viagens em grupo como esta direto no Expensify? Poupe-se do transtorno da próxima vez e experimente nossa ferramenta de <a href="https://help.expensify.com/travel/hubs/event-management/">Eventos de Viagem</a>.',
+ 'Você sabia que pode reservar e gerenciar viagens em grupo como esta direto no Expensify? Poupe trabalho da próxima vez e experimente nossa ferramenta de <a href="https://help.expensify.com/travel/hubs/event-management/">Eventos de Viagem</a>.',
},
defaultWorkspaceTravelDisabled: {
title: 'Viagem não está ativada',
message: 'Para fazer uma reserva, ative viagens no seu espaço de trabalho padrão ou altere seu espaço de trabalho padrão para um que tenha viagens ativadas.',
},
+ hotelBlock: 'Bloco de quartos de hotel',
},
workspace: {
common: {
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index a1f1276a..bf24b35c 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -4408,11 +4408,12 @@ ${amount},商户:${merchant} - 日期:${date}`,
railManual: '你知道吗?你可以直接在 Expensify 中预订和管理火车行程!下次无需再手动创建报销,只需通过 <a href="https://travel.expensify.com">Expensify Travel</a> 预订即可 🚂',
railCard: '你知道吗?你可以直接在 Expensify 中预订和管理火车行程,而且还会自动为你上传收据。下次只需通过 <a href="https://travel.expensify.com">Expensify Travel</a> 预订即可 🚂',
hotelBlockManual:
- '你知道吗?你可以直接在 Expensify 中预订和管理像这样的团队行程。下次就不用再费心了,试试我们的 <a href="https://help.expensify.com/travel/hubs/event-management/">Travel Events</a> 工具吧。',
+ '你知道吗?你可以直接在 Expensify 中预订和管理这样的团队行程。下次就不用再费心操心这些琐事了,试试我们的 <a href="https://help.expensify.com/travel/hubs/event-management/">旅行活动</a> 工具吧。',
hotelBlockCard:
- '你知道吗?你可以直接在 Expensify 中预订和管理像这样的团队行程。下次就不用再费心了,试试我们的 <a href="https://help.expensify.com/travel/hubs/event-management/">Travel Events</a> 工具吧。',
+ '你知道吗?你可以直接在 Expensify 中预订和管理这样的团队行程。下次就不用再费心操心这些琐事了,试试我们的 <a href="https://help.expensify.com/travel/hubs/event-management/">旅行活动</a> 工具吧。',
},
defaultWorkspaceTravelDisabled: {title: '差旅功能未启用', message: '如需预订,请在您的默认工作区中启用差旅功能,或将默认工作区切换为已启用差旅功能的工作区。'},
+ hotelBlock: '酒店房间预留区',
},
workspace: {
common: {
Note You can apply these changes to your branch by copying the patch to your clipboard, then running |
Codecov Report❌ Looks like you've decreased code coverage for some files. Please write tests to increase, or at least maintain, the existing level of code coverage. See our documentation here for how to interpret this table.
|
|
🚧 rlinoz has triggered a test Expensify/App build. You can view the workflow run here. |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
|
🚀 Deployed to staging by https://github.com/rlinoz in version: 9.4.64-0 🚀
|
|
No help site changes are required for this PR, so I did not open a draft docs PR. Reasoning below, plus two things worth flagging before the backend classifier ships. Why no docs change is needed
Two things to flag (not blockers)1. "Travel Events" is not a name Expensify uses anywhere. It appears only in the strings this PR adds — the string does not exist elsewhere in 2. The lead article at that hub is Classic-only and admin-oriented. Bonus, pre-existing: UI verification limitI could not confirm the Spotnana travel dashboard's own labels. The travel area is gated behind a workspace with Travel enabled, and the test account has no workspaces — there was no Book travel entry in the create menu to follow. So my naming comparison above is based on the App source strings and the help site, not the embedded travel dashboard. If the dashboard itself says "Events" or "Travel Events", that changes the recommendation in flag 1. Since no docs changes are required, there is no linked help site PR to review. If you'd rather I open one anyway — for example to document the travel nudge for all five types, or to fix the duplicate article — reply and I'll create it. |
|
🚀 Deployed to production by https://github.com/francoisl in version: 9.4.64-3 🚀
Bundle Size Analysis (Sentry): |
Explanation of Change
Adds a
hotelBlockreservation type and matching nudge copy so the in-app travel nudge can eventually recognize hotel-block (group/event) bookings and point travelers at Expensify Travel's Event Management feature instead of general booking guidance. This PR is App-side only and has no visible effect yet — nothing produces ahotelBlocktravel type until the paired Web-Expensify classifier change is validated and enabled in a follow-up PR.Note: the new copy strings are a draft and still need a marketing/copy review pass before this ships live, same as the original nudge copy did.
Fixed Issues
For https://github.com/Expensify/Expensify/issues/671880
Tests
Offline tests
N/A — this PR only adds a constant, a copy-lookup branch, and translation strings; no network-dependent behavior.
QA Steps
No QA needed yet — see PR title. This change is unreachable until the paired backend classifier change ships and is enabled.