[SAML Configuration] Add Domain flow#76231
Conversation
|
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 |
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
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 246c82b3..1422551d 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -1339,7 +1339,7 @@ const translations: TranslationDeepObject<typeof en> = {
updatedTheDistanceMerchant: ({translatedChangedField, newMerchant, oldMerchant, newAmountToDisplay, oldAmountToDisplay}: UpdatedTheDistanceMerchantParams) =>
`änderte das ${translatedChangedField} zu ${newMerchant} (zuvor ${oldMerchant}), wodurch der Betrag auf ${newAmountToDisplay} aktualisiert wurde (zuvor ${oldAmountToDisplay})`,
basedOnAI: 'basierend auf früheren Aktivitäten',
- basedOnMCC: 'basierend auf Arbeitsbereichsregel',
+ basedOnMCC: 'Basierend auf der Arbeitsbereichsregel',
threadExpenseReportName: ({formattedAmount, comment}: ThreadRequestReportNameParams) => `${formattedAmount} ${comment ? `für ${comment}` : 'Ausgabe'}`,
invoiceReportName: ({linkedReportID}: OriginalMessage<typeof CONST.REPORT.ACTIONS.TYPE.REPORT_PREVIEW>) => `Rechnungsbericht Nr. ${linkedReportID}`,
threadPaySomeoneReportName: ({formattedAmount, comment}: ThreadSentMoneyReportNameParams) => `${formattedAmount} gesendet${comment ? `für ${comment}` : ''}`,
@@ -7745,18 +7745,23 @@ ${
`Bitte verifizieren Sie sich als autorisierte/r Unternehmensadministrator/in für <strong>${domainName}</strong>, wenn Sie Kontrolle über Folgendes benötigen:`,
companyCardManagement: 'Firmenkartenverwaltung',
accountCreationAndDeletion: 'Kontoerstellung und -löschung',
- workspaceCreation: 'Erstellung eines Arbeitsbereichs',
- samlSSO: 'SAML SSO',
+ workspaceCreation: 'Erstellung des Arbeitsbereichs',
+ samlSSO: 'SAML-SSO',
+ },
+ addDomain: {
+ title: 'Domain hinzufügen',
+ subtitle: 'Geben Sie den Namen der privaten Domain ein, auf die Sie zugreifen möchten (z. B. expensify.com).',
+ domainName: 'Domainname',
+ newDomain: 'Neue Domain',
},
- addDomain: {title: 'Domain hinzufügen', subtitle: 'Geben Sie den Namen der privaten Domain ein, auf die Sie zugreifen möchten (z. B. expensify.com).', domainName: 'Domainname'},
domainAdded: {
title: 'Domain hinzugefügt',
- description: 'Als Nächstes müssen Sie die Inhaberschaft der Domain verifizieren und Ihre Sicherheitseinstellungen anpassen.',
+ description: 'Als Nächstes müssen Sie die Inhaberschaft der Domain bestätigen und Ihre Sicherheitseinstellungen anpassen.',
configure: 'Konfigurieren',
},
enhancedSecurity: {
title: 'Verbesserte Sicherheit',
- subtitle: 'Erzwingen Sie, dass sich Mitglieder Ihrer Domain über Single Sign-On anmelden, beschränken Sie die Erstellung von Workspaces und mehr.',
+ subtitle: 'Erzwingen Sie für Mitglieder Ihrer Domain die Anmeldung per Single Sign-On, schränken Sie die Erstellung von Workspaces ein und vieles mehr.',
enable: 'Aktivieren',
},
},
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index 153f85a7..29e4abf1 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -1343,7 +1343,7 @@ const translations: TranslationDeepObject<typeof en> = {
updatedTheDistanceMerchant: ({translatedChangedField, newMerchant, oldMerchant, newAmountToDisplay, oldAmountToDisplay}: UpdatedTheDistanceMerchantParams) =>
`a changé le ${translatedChangedField} en ${newMerchant} (précédemment ${oldMerchant}), ce qui a mis à jour le montant à ${newAmountToDisplay} (précédemment ${oldAmountToDisplay})`,
basedOnAI: "basé sur l'activité passée",
- basedOnMCC: "basé sur la règle de l'espace de travail",
+ basedOnMCC: 'Selon la règle de l’espace de travail',
threadExpenseReportName: ({formattedAmount, comment}: ThreadRequestReportNameParams) => `${formattedAmount} ${comment ? `pour ${comment}` : 'dépense'}`,
invoiceReportName: ({linkedReportID}: OriginalMessage<typeof CONST.REPORT.ACTIONS.TYPE.REPORT_PREVIEW>) => `Rapport de Facture n°${linkedReportID}`,
threadPaySomeoneReportName: ({formattedAmount, comment}: ThreadSentMoneyReportNameParams) => `${formattedAmount} envoyé${comment ? `pour ${comment}` : ''}`,
@@ -7746,17 +7746,22 @@ ${
accessRestricted: {
title: 'Accès restreint',
subtitle: ({domainName}: {domainName: string}) =>
- `Veuillez confirmer que vous êtes un administrateur d’entreprise autorisé pour <strong>${domainName}</strong> si vous avez besoin d’avoir le contrôle sur :`,
+ `Veuillez vous authentifier en tant qu’administrateur d’entreprise autorisé pour <strong>${domainName}</strong> si vous avez besoin d’avoir le contrôle sur :`,
companyCardManagement: 'Gestion des cartes d’entreprise',
accountCreationAndDeletion: 'Création et suppression de compte',
- workspaceCreation: 'Création d’espace de travail',
+ workspaceCreation: "Création d'espace de travail",
samlSSO: 'SSO SAML',
},
- addDomain: {title: 'Ajouter un domaine', subtitle: 'Saisissez le nom du domaine privé auquel vous souhaitez accéder (p. ex. expensify.com).', domainName: 'Nom de domaine'},
+ addDomain: {
+ title: 'Ajouter un domaine',
+ subtitle: 'Saisissez le nom du domaine privé auquel vous souhaitez accéder (par exemple expensify.com).',
+ domainName: 'Nom de domaine',
+ newDomain: 'Nouveau domaine',
+ },
domainAdded: {title: 'Domaine ajouté', description: 'Ensuite, vous devrez vérifier la propriété du domaine et ajuster vos paramètres de sécurité.', configure: 'Configurer'},
enhancedSecurity: {
title: 'Sécurité renforcée',
- subtitle: 'Exigez que les membres de votre domaine se connectent via l’authentification unique, restreignez la création d’espaces de travail, et plus encore.',
+ subtitle: "Exiger que les membres de votre domaine se connectent via l'authentification unique, restreindre la création d'espaces de travail, et plus encore.",
enable: 'Activer',
},
},
diff --git a/src/languages/it.ts b/src/languages/it.ts
index 5bf29d9b..82a25599 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -1337,7 +1337,7 @@ const translations: TranslationDeepObject<typeof en> = {
updatedTheDistanceMerchant: ({translatedChangedField, newMerchant, oldMerchant, newAmountToDisplay, oldAmountToDisplay}: UpdatedTheDistanceMerchantParams) =>
`ha cambiato il ${translatedChangedField} in ${newMerchant} (precedentemente ${oldMerchant}), il che ha aggiornato l'importo a ${newAmountToDisplay} (precedentemente ${oldAmountToDisplay})`,
basedOnAI: 'basato su attività passate',
- basedOnMCC: 'basato su regola dello spazio di lavoro',
+ basedOnMCC: 'in base alla regola dello spazio di lavoro',
threadExpenseReportName: ({formattedAmount, comment}: ThreadRequestReportNameParams) => `${formattedAmount} ${comment ? `per ${comment}` : 'spesa'}`,
invoiceReportName: ({linkedReportID}: OriginalMessage<typeof CONST.REPORT.ACTIONS.TYPE.REPORT_PREVIEW>) => `Rapporto Fattura n. ${linkedReportID}`,
threadPaySomeoneReportName: ({formattedAmount, comment}: ThreadSentMoneyReportNameParams) => `${formattedAmount} inviato${comment ? `per ${comment}` : ''}`,
@@ -7724,17 +7724,26 @@ ${
},
accessRestricted: {
title: 'Accesso limitato',
- subtitle: ({domainName}: {domainName: string}) => `Conferma di essere un amministratore aziendale autorizzato per <strong>${domainName}</strong> se ti serve il controllo su:`,
+ subtitle: ({domainName}: {domainName: string}) => `Verificati come amministratore aziendale autorizzato per <strong>${domainName}</strong> se hai bisogno di gestire:`,
companyCardManagement: 'Gestione delle carte aziendali',
- accountCreationAndDeletion: "Creazione ed eliminazione dell'account",
+ accountCreationAndDeletion: "Creazione e cancellazione dell'account",
workspaceCreation: 'Creazione dello spazio di lavoro',
samlSSO: 'SAML SSO',
},
- addDomain: {title: 'Aggiungi dominio', subtitle: 'Inserisci il nome del dominio privato a cui desideri accedere (ad esempio expensify.com).', domainName: 'Nome di dominio'},
- domainAdded: {title: 'Dominio aggiunto', description: 'Successivamente, dovrai verificare la proprietà del dominio e regolare le impostazioni di sicurezza.', configure: 'Configura'},
+ addDomain: {
+ title: 'Aggiungi dominio',
+ subtitle: 'Inserisci il nome del dominio privato a cui desideri accedere (ad esempio expensify.com).',
+ domainName: 'Nome di dominio',
+ newDomain: 'Nuovo dominio',
+ },
+ domainAdded: {
+ title: 'Dominio aggiunto',
+ description: 'Successivamente, dovrai verificare la proprietà del dominio e regolare le tue impostazioni di sicurezza.',
+ configure: 'Configura',
+ },
enhancedSecurity: {
title: 'Sicurezza avanzata',
- subtitle: 'Obbliga i membri del tuo dominio ad accedere tramite single sign-on, limita la creazione di spazi di lavoro e altro ancora.',
+ subtitle: 'Richiedi ai membri del tuo dominio di accedere tramite Single Sign-On, limita la creazione di spazi di lavoro e altro ancora.',
enable: 'Abilita',
},
},
diff --git a/src/languages/ja.ts b/src/languages/ja.ts
index 244ec14b..68cd07e6 100644
--- a/src/languages/ja.ts
+++ b/src/languages/ja.ts
@@ -1339,7 +1339,7 @@ const translations: TranslationDeepObject<typeof en> = {
updatedTheDistanceMerchant: ({translatedChangedField, newMerchant, oldMerchant, newAmountToDisplay, oldAmountToDisplay}: UpdatedTheDistanceMerchantParams) =>
`${translatedChangedField}を${newMerchant}に変更しました(以前は${oldMerchant})、これにより金額が${newAmountToDisplay}に更新されました(以前は${oldAmountToDisplay})。`,
basedOnAI: '過去のアクティビティに基づく',
- basedOnMCC: 'ワークスペースルールに基づく',
+ basedOnMCC: 'ワークスペースのルールに基づく',
threadExpenseReportName: ({formattedAmount, comment}: ThreadRequestReportNameParams) => `${formattedAmount} ${comment ? `${comment}用` : '経費'}`,
invoiceReportName: ({linkedReportID}: OriginalMessage<typeof CONST.REPORT.ACTIONS.TYPE.REPORT_PREVIEW>) => `請求書レポート #${linkedReportID}`,
threadPaySomeoneReportName: ({formattedAmount, comment}: ThreadSentMoneyReportNameParams) => `${formattedAmount} 送信済み${comment ? `${comment} のために` : ''}`,
@@ -7653,17 +7653,22 @@ ${
},
accessRestricted: {
title: 'アクセスが制限されています',
- subtitle: ({domainName}: {domainName: string}) => `以下の管理が必要な場合は、<strong>${domainName}</strong> の権限を持つ会社管理者であることを確認してください:`,
- companyCardManagement: '会社カードの管理',
+ subtitle: ({domainName}: {domainName: string}) => `以下を管理する必要がある場合は、<strong>${domainName}</strong> の認可された会社管理者であることを確認してください:`,
+ companyCardManagement: '法人カードの管理',
accountCreationAndDeletion: 'アカウントの作成と削除',
workspaceCreation: 'ワークスペースの作成',
- samlSSO: 'SAML SSO',
+ samlSSO: 'SAML シングルサインオン',
+ },
+ addDomain: {
+ title: 'ドメインを追加',
+ subtitle: 'アクセスしたいプライベートドメイン名を入力してください(例:expensify.com)。',
+ domainName: 'ドメイン名',
+ newDomain: '新しいドメイン',
},
- addDomain: {title: 'ドメインを追加', subtitle: 'アクセスしたいプライベートドメインの名前を入力してください(例:expensify.com)。', domainName: 'ドメイン名'},
domainAdded: {title: 'ドメインが追加されました', description: '次に、ドメインの所有権を確認し、セキュリティ設定を調整する必要があります。', configure: '設定'},
enhancedSecurity: {
title: '強化されたセキュリティ',
- subtitle: 'ドメインのメンバーにシングルサインオンでのログインを必須にし、ワークスペースの作成を制限するなど。',
+ subtitle: 'ドメインのメンバーにシングルサインオンでのログインを必須化し、ワークスペースの作成を制限するなど、さらに多くのことができます。',
enable: '有効にする',
},
},
diff --git a/src/languages/nl.ts b/src/languages/nl.ts
index 7fc30d6b..b472822e 100644
--- a/src/languages/nl.ts
+++ b/src/languages/nl.ts
@@ -1337,7 +1337,7 @@ const translations: TranslationDeepObject<typeof en> = {
updatedTheDistanceMerchant: ({translatedChangedField, newMerchant, oldMerchant, newAmountToDisplay, oldAmountToDisplay}: UpdatedTheDistanceMerchantParams) =>
`veranderde de ${translatedChangedField} naar ${newMerchant} (voorheen ${oldMerchant}), wat het bedrag bijwerkte naar ${newAmountToDisplay} (voorheen ${oldAmountToDisplay})`,
basedOnAI: 'op basis van eerdere activiteit',
- basedOnMCC: 'op basis van werkruimteregel',
+ basedOnMCC: 'op basis van een werkruimteregel',
threadExpenseReportName: ({formattedAmount, comment}: ThreadRequestReportNameParams) => `${formattedAmount} ${comment ? `voor ${comment}` : 'uitgave'}`,
invoiceReportName: ({linkedReportID}: OriginalMessage<typeof CONST.REPORT.ACTIONS.TYPE.REPORT_PREVIEW>) => `Factuurrapport #${linkedReportID}`,
threadPaySomeoneReportName: ({formattedAmount, comment}: ThreadSentMoneyReportNameParams) => `${formattedAmount} verzonden${comment ? `voor ${comment}` : ''}`,
@@ -7697,17 +7697,26 @@ ${
},
accessRestricted: {
title: 'Toegang beperkt',
- subtitle: ({domainName}: {domainName: string}) => `Bevestig dat u een bevoegde bedrijfsbeheerder bent voor <strong>${domainName}</strong> als u controle nodig heeft over:`,
- companyCardManagement: 'Bedrijfskaartbeheer',
- accountCreationAndDeletion: 'Aanmaken en verwijderen van accounts',
+ subtitle: ({domainName}: {domainName: string}) => `Bevestig dat u een geautoriseerde bedrijfsbeheerder bent voor <strong>${domainName}</strong> als u controle nodig hebt over:`,
+ companyCardManagement: 'Beheer van bedrijfskaarten',
+ accountCreationAndDeletion: 'Accountaanmaak en -verwijdering',
workspaceCreation: 'Werkruimte aanmaken',
samlSSO: 'SAML SSO',
},
- addDomain: {title: 'Domein toevoegen', subtitle: 'Voer de naam in van het privédomein waartoe je toegang wilt krijgen (bijv. expensify.com).', domainName: 'Domeinnaam'},
- domainAdded: {title: 'Domein toegevoegd', description: 'Vervolgens moet je de domeineigendom verifiëren en je beveiligingsinstellingen aanpassen.', configure: 'Configureren'},
+ addDomain: {
+ title: 'Domein toevoegen',
+ subtitle: 'Voer de naam in van het privédomein waartoe je toegang wilt krijgen (bijv. expensify.com).',
+ domainName: 'Domeinnaam',
+ newDomain: 'Nieuw domein',
+ },
+ domainAdded: {
+ title: 'Domein toegevoegd',
+ description: 'Vervolgens moet je het eigendom van het domein verifiëren en je beveiligingsinstellingen aanpassen.',
+ configure: 'Configureren',
+ },
enhancedSecurity: {
title: 'Verbeterde beveiliging',
- subtitle: 'Vereis dat leden op je domein via single sign-on inloggen, beperk het aanmaken van werkruimtes en meer.',
+ subtitle: 'Verplicht leden van je domein om in te loggen via single sign-on, beperk het aanmaken van werkruimten en meer.',
enable: 'Inschakelen',
},
},
diff --git a/src/languages/pl.ts b/src/languages/pl.ts
index ce9fef0e..4f812135 100644
--- a/src/languages/pl.ts
+++ b/src/languages/pl.ts
@@ -1336,7 +1336,7 @@ const translations: TranslationDeepObject<typeof en> = {
updatedTheDistanceMerchant: ({translatedChangedField, newMerchant, oldMerchant, newAmountToDisplay, oldAmountToDisplay}: UpdatedTheDistanceMerchantParams) =>
`zmienił ${translatedChangedField} na ${newMerchant} (wcześniej ${oldMerchant}), co zaktualizowało kwotę na ${newAmountToDisplay} (wcześniej ${oldAmountToDisplay})`,
basedOnAI: 'na podstawie wcześniejszej aktywności',
- basedOnMCC: 'na podstawie reguły przestrzeni roboczej',
+ basedOnMCC: 'na podstawie reguły obszaru roboczego',
threadExpenseReportName: ({formattedAmount, comment}: ThreadRequestReportNameParams) => `${formattedAmount} ${comment ? `dla ${comment}` : 'wydatek'}`,
invoiceReportName: ({linkedReportID}: OriginalMessage<typeof CONST.REPORT.ACTIONS.TYPE.REPORT_PREVIEW>) => `Raport faktury nr ${linkedReportID}`,
threadPaySomeoneReportName: ({formattedAmount, comment}: ThreadSentMoneyReportNameParams) => `${formattedAmount} wysłano${comment ? `dla ${comment}` : ''}`,
@@ -7686,17 +7686,22 @@ ${
accessRestricted: {
title: 'Dostęp ograniczony',
subtitle: ({domainName}: {domainName: string}) =>
- `Proszę zweryfikować się jako upoważniony administrator firmy dla <strong>${domainName}</strong>, jeśli potrzebujesz kontroli nad:`,
+ `Proszę zweryfikować się jako autoryzowany administrator firmy dla <strong>${domainName}</strong>, jeśli potrzebujesz kontroli nad:`,
companyCardManagement: 'Zarządzanie kartami firmowymi',
accountCreationAndDeletion: 'Tworzenie i usuwanie konta',
workspaceCreation: 'Tworzenie obszaru roboczego',
samlSSO: 'SAML SSO',
},
- addDomain: {title: 'Dodaj domenę', subtitle: 'Wprowadź nazwę prywatnej domeny, do której chcesz uzyskać dostęp (np. expensify.com).', domainName: 'Nazwa domeny'},
+ addDomain: {
+ title: 'Dodaj domenę',
+ subtitle: 'Wprowadź nazwę prywatnej domeny, do której chcesz uzyskać dostęp (np. expensify.com).',
+ domainName: 'Nazwa domeny',
+ newDomain: 'Nowa domena',
+ },
domainAdded: {title: 'Dodano domenę', description: 'Następnie musisz zweryfikować własność domeny i dostosować ustawienia zabezpieczeń.', configure: 'Skonfiguruj'},
enhancedSecurity: {
title: 'Zwiększone bezpieczeństwo',
- subtitle: 'Wymagaj, aby członkowie w Twojej domenie logowali się za pomocą logowania jednokrotnego (SSO), ograniczaj tworzenie obszarów roboczych i nie tylko.',
+ subtitle: 'Wymagaj, aby członkowie Twojej domeny logowali się przez Single Sign-On (SSO), ograniczaj tworzenie obszarów roboczych i nie tylko.',
enable: 'Włącz',
},
},
diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts
index c1a7beee..c38c032f 100644
--- a/src/languages/pt-BR.ts
+++ b/src/languages/pt-BR.ts
@@ -7701,13 +7701,18 @@ ${
},
accessRestricted: {
title: 'Acesso restrito',
- subtitle: ({domainName}: {domainName: string}) => `Confirme que você é um administrador autorizado da empresa <strong>${domainName}</strong> se precisar de controle sobre:`,
+ subtitle: ({domainName}: {domainName: string}) => `Confirme que você é um administrador autorizado da empresa para <strong>${domainName}</strong> se precisar de controle sobre:`,
companyCardManagement: 'Gerenciamento de cartões corporativos',
- accountCreationAndDeletion: 'Criação e exclusão de contas',
- workspaceCreation: 'Criação de espaço de trabalho',
+ accountCreationAndDeletion: 'Criação e exclusão de conta',
+ workspaceCreation: 'Criação do espaço de trabalho',
samlSSO: 'SSO SAML',
},
- addDomain: {title: 'Adicionar domínio', subtitle: 'Insira o nome do domínio privado que você deseja acessar (por exemplo, expensify.com).', domainName: 'Nome de domínio'},
+ addDomain: {
+ title: 'Adicionar domínio',
+ subtitle: 'Digite o nome do domínio privado que você deseja acessar (ex.: expensify.com).',
+ domainName: 'Nome de domínio',
+ newDomain: 'Novo domínio',
+ },
domainAdded: {
title: 'Domínio adicionado',
description: 'Em seguida, você precisará verificar a propriedade do domínio e ajustar suas configurações de segurança.',
@@ -7715,7 +7720,7 @@ ${
},
enhancedSecurity: {
title: 'Segurança aprimorada',
- subtitle: 'Exija que os membros do seu domínio façam login por meio de single sign-on (SSO), restrinja a criação de espaços de trabalho e muito mais.',
+ subtitle: 'Exija que os membros do seu domínio façam login por meio de logon único (SSO), restrinja a criação de espaços de trabalho e muito mais.',
enable: 'Ativar',
},
},
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index a0743192..b52bc088 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -1317,7 +1317,7 @@ const translations: TranslationDeepObject<typeof en> = {
updatedTheDistanceMerchant: ({translatedChangedField, newMerchant, oldMerchant, newAmountToDisplay, oldAmountToDisplay}: UpdatedTheDistanceMerchantParams) =>
`将${translatedChangedField}更改为${newMerchant}(之前为${oldMerchant}),这更新了金额为${newAmountToDisplay}(之前为${oldAmountToDisplay})`,
basedOnAI: '基于过去的活动',
- basedOnMCC: '基于工作空间规则',
+ basedOnMCC: '基于工作区规则',
threadExpenseReportName: ({formattedAmount, comment}: ThreadRequestReportNameParams) => `${formattedAmount} ${comment ? `为${comment}` : '费用'}`,
invoiceReportName: ({linkedReportID}: OriginalMessage<typeof CONST.REPORT.ACTIONS.TYPE.REPORT_PREVIEW>) => `发票报告 #${linkedReportID}`,
threadPaySomeoneReportName: ({formattedAmount, comment}: ThreadSentMoneyReportNameParams) => `${formattedAmount} 已发送${comment ? `对于${comment}` : ''}`,
@@ -7531,15 +7531,15 @@ ${
},
accessRestricted: {
title: '访问受限',
- subtitle: ({domainName}: {domainName: string}) => `如果您需要对以下内容进行控制,请验证您是 <strong>${domainName}</strong> 的授权公司管理员:`,
+ subtitle: ({domainName}: {domainName: string}) => `如果您需要对以下内容进行管理,请验证您是 <strong>${domainName}</strong> 的授权公司管理员:`,
companyCardManagement: '公司卡管理',
- accountCreationAndDeletion: '账户创建与删除',
+ accountCreationAndDeletion: '账户创建和删除',
workspaceCreation: '工作区创建',
samlSSO: 'SAML 单点登录',
},
- addDomain: {title: '添加域', subtitle: '请输入您要访问的私有域名(例如 expensify.com)。', domainName: '域名'},
- domainAdded: {title: '域名已添加', description: '接下来,您需要验证域名所有权并调整您的安全设置。', configure: '配置'},
- enhancedSecurity: {title: '增强的安全性', subtitle: '要求您域内的成员通过单点登录进行登录,限制工作区创建等。', enable: '启用'},
+ addDomain: {title: '添加域', subtitle: '请输入您想访问的私有域名(例如:expensify.com)。', domainName: '域名', newDomain: '新域名'},
+ domainAdded: {title: '已添加域名', description: '接下来,您需要验证域名的所有权并调整您的安全设置。', configure: '配置'},
+ enhancedSecurity: {title: '增强的安全性', subtitle: '要求您域内的成员使用单点登录登录、限制工作区创建等。', enable: '启用'},
},
};
// IMPORTANT: This line is manually replaced in generate translation files by scripts/generateTranslations.ts,
Note You can apply these changes to your branch by copying the patch to your clipboard, then running |
…hen isRestrictedPolicyCreation is true
blazejkustra
left a comment
There was a problem hiding this comment.
Minor comments, other than that lgtm!
thanks, should be fixed now |
I removed logging the error, the domain update is pushed by the pusher after the domain creation succeeds, so the first time the useEffect runs the new domain is not there, and then when it appears we correctly navigate to it. |
I think it's correct the way it is. The domain verification flow is opened from the SAML page, so the back button (at least the system one) has to go back to the SAML page. I could change "Got it" button to navigate to the SAML page too, should I? |
this looks like a global issue when navigating back via a swipe back from a screen that has the tab bar to a screen that doesn't have it. Nagranie.z.ekranu.2025-12-8.o.11.14.12.movnot sure I can fix this easily now, but I will talk to the navigation team |
Oh But yes |
actually, I think we found a fix. I made it so that on narrow layouts we show the top level navigation bar only if the workspaces list page is under the current page in the stack. it is a little bit risky though. let me know if I should move it to a separate PR/issue instead to not risk regressions. cc: @mountiny Nagranie.z.ekranu.2025-12-8.o.13.09.56.mov |
Yes |
|
And as for me, everything looks good! |
|
okay, I reverted the changes to TopLevelNavigationTabBar for now, to not risk regression with this PR |
mountiny
left a comment
There was a problem hiding this comment.
Nothing stands out to me, looks good!
|
✋ 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/NikkiWines in version: 9.2.75-0 🚀
|
|
🚀 Deployed to staging by https://github.com/NikkiWines in version: 9.2.75-0 🚀
|
|
@mhawryluk QA team cannot execute steps 6-7 because we’re unable to verify the domain on the DomainAccessRestrictedPage. Is it acceptable to skip these steps?” |
|
not ideal, but I think it is acceptable. we tested it on some real private domains during implementation and I think the flow was also skipped in QA tests when we introduced the domain verification flow to new dot. cc: @NikkiWines |
|
🚀 Deployed to staging by https://github.com/NikkiWines in version: 9.2.77-0 🚀
|
|
🚀 Deployed to production by https://github.com/yuwenmemon in version: 9.2.77-1 🚀
|

Explanation of Change
Creates a flow for claiming a new domain, as well as one for non-admins to verify a domain to become its admins.
Fixed Issues
$ #72895
PROPOSAL: N/A
Tests
account that doesn't have any workspaces and domains
account that doesn't have any workspaces, but has domains
account that has workspaces, but doesn't have any domains
account that has workspaces and domains
AddDomainPage, DomainAddedPage
AddDomainVerifyAccountPage
DomainAccessRestrictedPage
for all RHPs
Offline tests
QA Steps
Same as tests.
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectioncanBeMissingparam foruseOnyxtoggleReportand 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-1.mov
Android: mWeb Chrome
Nagranie.z.ekranu.2025-12-3.o.17.55.17.mov
iOS: Native
Simulator.Screen.Recording.-.iPhone.16.Pro.Max.-.2025-12-03.at.11.28.24.mp4
iOS: mWeb Safari
Simulator.Screen.Recording.-.iPhone.16.Pro.Max.-.2025-12-03.at.17.58.55.mp4
MacOS: Chrome / Safari
Nagranie.z.ekranu.2025-12-2.o.18.26.26.mov
(the recording below is slightly outdated, the input label has been fixed to say "Domain name")
Nagranie.z.ekranu.2025-11-28.o.11.35.32.mov
Nagranie.z.ekranu.2025-12-1.o.16.03.11.mov
Nagranie.z.ekranu.2025-12-3.o.11.33.53.mov