[NO QA] Update various empty state messages for conciseness#92011
Conversation
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
@MelvinBot please apply the Polyglot Parrot translations |
Co-authored-by: James Dean <jamesdeanexpensify@users.noreply.github.com>
|
🦜 Applied the Polyglot Parrot translations from this gist to 9 language files (de, es, fr, it, ja, nl, pl, pt-BR, zh-hans). |
|
@chuckdries Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button] |
|
@chuckdries I'm just editing down some product copy to be more concise. No GH issue to link. I also don't think this really needs QA, but one question: The changes I made around the |
|
Looks like |
|
Thank you! |
|
@chuckdries since these are pretty much all copy changes, do you think I should update the title to include |
|
@jamesdeanexpensify Yes please, and also could you write brief test steps for how to actually get to the pages with the copy changes on them? It will save me a lot of digging through code. Copy changes are usually pretty safe but I still like to lay eyes on all the screens so that users aren't the first ones to do so. You never know when something doesn't scroll right or whatever |
|
@chuckdries is one scenario ok? |
|
Just as many scenarios to actually see each discrete message that changed. I'm a bit of a stickler on PR reviews! If there are any messages where you're not sure where or how they're used I can dig in and figure it out. |
|
Ok, did my best! These ones I couldn't fine very easily:
Up to you how much time you want to spend digging, but given these are fairly straightforward copy changes, I wouldn't worry too much! |
Reviewer Checklist
Screenshots/Videos |
chuckdries
left a comment
There was a problem hiding this comment.
LGTM! Looks like we have a prettier diff - I'll go ahead and apply the fix and find another engineer to approve
🦜 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 5ba7dfa2144..cf48fe71539 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -5897,7 +5897,7 @@ _Für ausführlichere Anweisungen [besuchen Sie unsere Hilfeseite](${CONST.NETSU
disableValues: 'Werte deaktivieren',
enableValue: 'Wert aktivieren',
enableValues: 'Werte aktivieren',
- emptyReportFieldsValues: {title: 'Noch keine Listeneinträge', subtitle: 'Füge benutzerdefinierte Werte hinzu, die in Berichten erscheinen.'},
+ emptyReportFieldsValues: {title: 'Noch keine Listenwerte', subtitle: 'Füge benutzerdefinierte Werte hinzu, die in Berichten erscheinen.'},
deleteValuePrompt: 'Sind Sie sicher, dass Sie diesen Listenwert löschen möchten?',
deleteValuesPrompt: 'Bist du sicher, dass du diese Listenwerte löschen möchtest?',
listValueRequiredError: 'Bitte gib einen Namen für den Listeneintrag ein',
diff --git a/src/languages/es.ts b/src/languages/es.ts
index c8078c7e473..19dbc1f3b7a 100644
--- a/src/languages/es.ts
+++ b/src/languages/es.ts
@@ -929,7 +929,7 @@ const translations: TranslationDeepObject<typeof en> = {
title: ({days}: {days: number}) => `Prueba gratuita: ${days} ${days === 1 ? 'día' : 'días'} restantes!`,
offer50Body: '¡Obtén 50% de descuento en tu primer año',
offer25Body: '¡Obtén 25% de descuento en tu primer año',
- addCardBody: 'Añadir una tarjeta de pago',
+ addCardBody: 'Añade una tarjeta de pago',
ctaClaim: 'Reclamar',
ctaAdd: 'Añadir tarjeta',
timeRemaining: ({formattedTime}: {formattedTime: string}) => `Tiempo restante: ${formattedTime}`,
@@ -5405,7 +5405,7 @@ ${amount} para ${merchant} - ${date}`,
needCategoryForExportToIntegration: (connectionName) => `Todos los gastos deben estar categorizados para poder exportar a ${connectionName}.`,
subtitle: 'Obtén una visión general de dónde te gastas el dinero. Utiliza las categorías predeterminadas o añade las tuyas propias.',
emptyCategories: {
- title: 'Todavía no hay categorías',
+ title: 'Aún no hay categorías',
subtitle: 'Añade una categoría para organizar tu gasto.',
subtitleWithAccounting: (accountingPageURL) =>
`<muted-text><centered-text>Tus categorías se están importando actualmente desde una conexión de contabilidad. Dirígete a <a href="${accountingPageURL}">contabilidad</a> para hacer cualquier cambio.</centered-text></muted-text>`,
@@ -5774,7 +5774,7 @@ ${amount} para ${merchant} - ${date}`,
subtitleWithDependentTags: (importSpreadsheetLink) =>
`<muted-text>Las etiquetas añaden formas más detalladas de clasificar los costos. Estás usando <a href="${CONST.IMPORT_TAGS_EXPENSIFY_URL_DEPENDENT_TAGS}">etiquetas dependientes</a>. Puedes <a href="${importSpreadsheetLink}">reimportar una hoja de cálculo</a> para actualizar tus etiquetas.</muted-text>`,
emptyTags: {
- title: 'Aún no hay etiquetas',
+ title: 'Todavía no hay etiquetas',
subtitle: 'Añade una etiqueta para realizar el seguimiento de proyectos, ubicaciones, departamentos y otros.',
subtitleHTML: `<muted-text><centered-text>Importa una hoja de cálculo para añadir etiquetas y organizar proyectos, ubicaciones, departamentos y más. <a href="${CONST.IMPORT_TAGS_EXPENSIFY_URL}">Obtén más información</a> sobre cómo dar formato a los archivos de etiquetas.</centered-text></muted-text>`,
subtitleWithAccounting: (accountingPageURL) =>
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index 8c2d6241138..8ec27b4e189 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -5922,7 +5922,7 @@ _Pour des instructions plus détaillées, [visitez notre site d’aide](${CONST.
disableValues: 'Désactiver les valeurs',
enableValue: 'Activer la valeur',
enableValues: 'Activer les valeurs',
- emptyReportFieldsValues: {title: 'Pas encore de valeurs de liste', subtitle: 'Ajoutez des valeurs personnalisées à faire apparaître sur les notes de frais.'},
+ emptyReportFieldsValues: {title: 'Aucune valeur de liste pour le moment', subtitle: 'Ajoutez des valeurs personnalisées à faire apparaître sur les notes de frais.'},
deleteValuePrompt: 'Voulez-vous vraiment supprimer cette valeur de liste ?',
deleteValuesPrompt: 'Voulez-vous vraiment supprimer ces valeurs de liste ?',
listValueRequiredError: 'Veuillez saisir un nom de valeur de liste',
@@ -6233,7 +6233,7 @@ _Pour des instructions plus détaillées, [visitez notre site d’aide](${CONST.
copyExisting: 'Copier l’existant',
createNew: 'Créer nouveau',
spendRulesEmptyStateTitle: 'Aucune règle à sélectionner',
- spendRulesEmptyStateSubtitle: 'Aucune règle pour le moment. Vous pouvez en créer une depuis l’écran précédent.',
+ spendRulesEmptyStateSubtitle: 'Aucune règle pour l’instant. Vous pouvez en créer une à partir de l’écran précédent.',
},
deactivateCardModal: {
deactivate: 'Désactiver',
@@ -7934,7 +7934,7 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e
subtitleWithOnlyCreateButton: 'Utilisez le bouton vert ci-dessous pour créer une dépense.',
},
emptyReportResults: {
- title: 'Aucune note de frais pour le moment',
+ title: 'Aucune note de frais pour l’instant',
subtitle: 'Créez une note de frais ou faites un essai d’Expensify pour en savoir plus.',
subtitleWithOnlyCreateButton: 'Utilisez le bouton vert ci-dessous pour créer une note de frais.',
},
@@ -7945,7 +7945,7 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e
subtitleCannotSend: "Vous avez besoin d'un espace de travail avec Invoices activé pour envoyer des factures.",
subtitleCannotSendWithTestDrive: "Vous avez besoin d'un espace de travail avec Invoices activé pour envoyer des factures. Faites un essai d'Expensify pour en savoir plus.",
},
- emptyTripResults: {title: 'Aucun voyage pour le moment', subtitle: 'Commencez en réservant votre premier voyage ci-dessous.', buttonText: 'Réserver un voyage'},
+ emptyTripResults: {title: 'Aucun déplacement pour l’instant', subtitle: 'Commencez en réservant votre premier voyage ci-dessous.', buttonText: 'Réserver un voyage'},
emptySubmitResults: {
title: 'Aucune dépense à soumettre',
subtitle: 'Tout est bon. Faites un tour d’honneur !',
diff --git a/src/languages/it.ts b/src/languages/it.ts
index 5a883ad56a2..d30072f4a4b 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -2814,7 +2814,7 @@ ${amount} per ${merchant} - ${date}`,
expenseRulesPage: {
title: 'Regole spese',
findRule: 'Trova regola',
- emptyRules: {title: 'Ancuna nessuna regola', subtitle: 'Aggiungi una regola per automatizzare la rendicontazione delle spese.'},
+ emptyRules: {title: 'Nessuna regola ancora', subtitle: 'Aggiungi una regola per automatizzare la rendicontazione delle spese.'},
changes: {
billableUpdate: (value: boolean) => `Aggiorna spesa ${value ? 'fatturabile' : 'non fatturabile'}`,
categoryUpdate: (value: string) => `Aggiorna categoria in “${value}”`,
@@ -5553,7 +5553,7 @@ _Per istruzioni più dettagliate, [visita il nostro sito di assistenza](${CONST.
needCategoryForExportToIntegration: (connectionName: string) => `Tutte le spese devono essere categorizzate per poterle esportare su ${connectionName}.`,
subtitle: 'Ottieni una panoramica migliore di dove viene speso il denaro. Usa le nostre categorie predefinite oppure aggiungi le tue.',
emptyCategories: {
- title: 'Nessuna categoria ancora',
+ title: 'Ancuna nessuna categoria',
subtitle: 'Aggiungi una categoria per organizzare le tue spese.',
subtitleWithAccounting: (accountingPageURL: string) =>
`<muted-text><centered-text>Le tue categorie sono attualmente importate da una connessione contabile. Vai alla sezione <a href="${accountingPageURL}">contabilità</a> per apportare modifiche.</centered-text></muted-text>`,
@@ -5863,7 +5863,7 @@ _Per istruzioni più dettagliate, [visita il nostro sito di assistenza](${CONST.
findReportField: 'Trova campo report',
deleteConfirmation: 'Sei sicuro di voler eliminare questo campo del report?',
deleteFieldsConfirmation: 'Sei sicuro di voler eliminare questi campi del resoconto?',
- emptyReportFields: {title: 'Nessun campo di report ancora', subtitle: 'Aggiungi un campo personalizzato (testo, data o menu a discesa) che appare nei report.'},
+ emptyReportFields: {title: 'Nessun campo rapporto ancora', subtitle: 'Aggiungi un campo personalizzato (testo, data o menu a discesa) che appare nei report.'},
subtitle: 'I campi del report si applicano a tutte le spese e possono essere utili quando desideri richiedere informazioni aggiuntive.',
disableReportFields: 'Disattiva campi del report',
disableReportFieldsConfirmation: 'Sei sicuro? I campi di testo e data verranno eliminati e gli elenchi verranno disattivati.',
@@ -5923,7 +5923,7 @@ _Per istruzioni più dettagliate, [visita il nostro sito di assistenza](${CONST.
subtitleWithDependentTags: (importSpreadsheetLink: string) =>
`<muted-text>I tag aggiungono modi più dettagliati per classificare i costi. Stai usando i <a href="${CONST.IMPORT_TAGS_EXPENSIFY_URL_DEPENDENT_TAGS}">tag dipendenti</a>. Puoi <a href="${importSpreadsheetLink}">importare nuovamente un foglio di calcolo</a> per aggiornare i tuoi tag.</muted-text>`,
emptyTags: {
- title: 'Nessun tag ancora',
+ title: 'Ancun tag ancora',
subtitle: 'Aggiungi un tag per tenere traccia di progetti, sedi, reparti e altro ancora.',
subtitleHTML: `<muted-text><centered-text>Aggiungi tag per tenere traccia di progetti, sedi, reparti e altro ancora. <a href="${CONST.IMPORT_TAGS_EXPENSIFY_URL}">Scopri di più</a> sulla formattazione dei file dei tag da importare.</centered-text></muted-text>`,
subtitleWithAccounting: (accountingPageURL: string) =>
@@ -6196,7 +6196,7 @@ _Per istruzioni più dettagliate, [visita il nostro sito di assistenza](${CONST.
copyExisting: 'Copia esistente',
createNew: 'Crea nuovo',
spendRulesEmptyStateTitle: 'Nessuna regola tra cui scegliere',
- spendRulesEmptyStateSubtitle: 'Ancuna nessuna regola. Puoi crearne una dalla schermata precedente.',
+ spendRulesEmptyStateSubtitle: 'Nessuna regola ancora. Puoi crearne una dalla schermata precedente.',
},
deactivateCardModal: {
deactivate: 'Disattiva',
@@ -7890,7 +7890,7 @@ Aggiungi altre regole di spesa per proteggere il flusso di cassa aziendale.`,
subtitleWithOnlyCreateButton: 'Usa il pulsante verde qui sotto per creare una spesa.',
},
emptyReportResults: {
- title: 'Nessun report ancora',
+ title: 'Ancun report ancora',
subtitle: 'Crea un report o fai un giro di prova con Expensify per saperne di più.',
subtitleWithOnlyCreateButton: 'Usa il pulsante verde qui sotto per creare un report.',
},
diff --git a/src/languages/ja.ts b/src/languages/ja.ts
index 1264a12a797..95a2252312d 100644
--- a/src/languages/ja.ts
+++ b/src/languages/ja.ts
@@ -5504,7 +5504,7 @@ _詳しい手順については、[ヘルプサイトをご覧ください](${CO
needCategoryForExportToIntegration: (connectionName: string) => `${connectionName} にエクスポートするには、すべての経費にカテゴリを指定する必要があります。`,
subtitle: 'お金がどこで使われているかを、より分かりやすく把握しましょう。デフォルトのカテゴリを使うか、自分用のカテゴリを追加できます。',
emptyCategories: {
- title: 'カテゴリはまだありません',
+ title: 'まだカテゴリがありません',
subtitle: '支出を整理するカテゴリを追加してください。',
subtitleWithAccounting: (accountingPageURL: string) =>
`<muted-text><centered-text>現在、お客様のカテゴリは会計連携からインポートされています。変更するには、<a href="${accountingPageURL}">会計</a>に移動してください。</centered-text></muted-text>`,
@@ -5798,7 +5798,7 @@ _詳しい手順については、[ヘルプサイトをご覧ください](${CO
findReportField: 'レポート項目を検索',
deleteConfirmation: 'このレポートフィールドを削除してもよろしいですか?',
deleteFieldsConfirmation: 'これらのレポートフィールドを削除してもよろしいですか?',
- emptyReportFields: {title: 'レポート項目はまだありません', subtitle: 'レポートに表示されるカスタムフィールド(テキスト、日付、またはドロップダウン)を追加する。'},
+ emptyReportFields: {title: 'レポート項目がまだありません', subtitle: 'レポートに表示されるカスタムフィールド(テキスト、日付、またはドロップダウン)を追加する。'},
subtitle: 'レポートフィールドはすべての支出に適用され、追加情報の入力を促したい場合に便利です。',
disableReportFields: 'レポート項目を無効にする',
disableReportFieldsConfirmation: '本当に実行しますか?テキストと日付フィールドは削除され、リストは無効になります。',
@@ -5822,7 +5822,7 @@ _詳しい手順については、[ヘルプサイトをご覧ください](${CO
disableValues: '値を無効にする',
enableValue: '値を有効にする',
enableValues: '値を有効化',
- emptyReportFieldsValues: {title: 'まだリストの値がありません', subtitle: 'レポートに表示するカスタム値を追加します。'},
+ emptyReportFieldsValues: {title: 'リスト値はまだありません', subtitle: 'レポートに表示するカスタム値を追加します。'},
deleteValuePrompt: 'このリスト値を削除してもよろしいですか?',
deleteValuesPrompt: 'これらのリスト値を削除してもよろしいですか?',
listValueRequiredError: 'リスト値の名前を入力してください',
@@ -7792,7 +7792,7 @@ ${reportName}
subtitle: `検索条件を調整するか、+ボタンを使って作成してみてください。`,
},
emptyExpenseResults: {
- title: '経費はまだありません',
+ title: 'まだ経費はありません',
subtitle: '経費を作成するか、Expensify をお試し利用して詳細を確認しましょう。',
subtitleWithOnlyCreateButton: '下の緑色のボタンを使って経費を作成してください。',
},
diff --git a/src/languages/nl.ts b/src/languages/nl.ts
index bea78d9aee3..b61347f5f80 100644
--- a/src/languages/nl.ts
+++ b/src/languages/nl.ts
@@ -6174,7 +6174,7 @@ _Voor meer gedetailleerde instructies, [bezoek onze help-site](${CONST.NETSUITE_
copyExisting: 'Bestaande kopiëren',
createNew: 'Nieuw maken',
spendRulesEmptyStateTitle: 'Geen regels om uit te kiezen',
- spendRulesEmptyStateSubtitle: 'Nog geen regels. Je kunt er een aanmaken vanaf het vorige scherm.',
+ spendRulesEmptyStateSubtitle: 'Nog geen regels. Je kunt er een maken vanaf het vorige scherm.',
},
deactivateCardModal: {
deactivate: 'Deactiveren',
diff --git a/src/languages/pl.ts b/src/languages/pl.ts
index 40ea09e2508..a7e71cf6cc0 100644
--- a/src/languages/pl.ts
+++ b/src/languages/pl.ts
@@ -2805,7 +2805,7 @@ ${amount} dla ${merchant} - ${date}`,
expenseRulesPage: {
title: 'Reguły wydatków',
findRule: 'Znajdź regułę',
- emptyRules: {title: 'Nie ma jeszcze żadnych zasad', subtitle: 'Dodaj regułę, aby zautomatyzować raportowanie wydatków.'},
+ emptyRules: {title: 'Brak reguł', subtitle: 'Dodaj regułę, aby zautomatyzować raportowanie wydatków.'},
changes: {
billableUpdate: (value: boolean) => `Zaktualizuj wydatek ${value ? 'rozliczalny' : 'niepodlegające fakturowaniu'}`,
categoryUpdate: (value: string) => `Zaktualizuj kategorię na „${value}”`,
@@ -5836,7 +5836,7 @@ _Aby uzyskać bardziej szczegółowe instrukcje, [odwiedź naszą stronę pomocy
findReportField: 'Znajdź pole raportu',
deleteConfirmation: 'Czy na pewno chcesz usunąć to pole raportu?',
deleteFieldsConfirmation: 'Czy na pewno chcesz usunąć te pola raportu?',
- emptyReportFields: {title: 'Brak jeszcze pól raportu', subtitle: 'Dodaj niestandardowe pole (tekstowe, daty lub z listą wyboru), które będzie widoczne w raportach.'},
+ emptyReportFields: {title: 'Brak pól raportu', subtitle: 'Dodaj niestandardowe pole (tekstowe, daty lub z listą wyboru), które będzie widoczne w raportach.'},
subtitle: 'Pola raportu mają zastosowanie do wszystkich wydatków i mogą być pomocne, gdy chcesz poprosić o dodatkowe informacje.',
disableReportFields: 'Wyłącz pola raportu',
disableReportFieldsConfirmation: 'Na pewno? Pola tekstowe i daty zostaną usunięte, a listy wyłączone.',
@@ -5860,7 +5860,7 @@ _Aby uzyskać bardziej szczegółowe instrukcje, [odwiedź naszą stronę pomocy
disableValues: 'Wyłącz wartości',
enableValue: 'Włącz wartość',
enableValues: 'Włącz wartości',
- emptyReportFieldsValues: {title: 'Nie ma jeszcze wartości listy', subtitle: 'Dodaj własne wartości, które będą wyświetlane w raportach.'},
+ emptyReportFieldsValues: {title: 'Na liście nie ma jeszcze żadnych wartości', subtitle: 'Dodaj własne wartości, które będą wyświetlane w raportach.'},
deleteValuePrompt: 'Czy na pewno chcesz usunąć tę wartość listy?',
deleteValuesPrompt: 'Czy na pewno chcesz usunąć te wartości listy?',
listValueRequiredError: 'Wpisz nazwę wartości listy',
@@ -7861,7 +7861,7 @@ Dodaj więcej zasad wydatków, żeby chronić płynność finansową firmy.`,
subtitleCannotSend: 'Potrzebujesz przestrzeni roboczej z włączonym Invoices, aby wysyłać faktury.',
subtitleCannotSendWithTestDrive: 'Potrzebujesz przestrzeni roboczej z włączonym Invoices, aby wysyłać faktury. Wypróbuj Expensify, aby dowiedzieć się więcej.',
},
- emptyTripResults: {title: 'Brak podróży', subtitle: 'Zacznij od zarezerwowania swojej pierwszej podróży poniżej.', buttonText: 'Zarezerwuj podróż'},
+ emptyTripResults: {title: 'Nie masz jeszcze żadnych podróży', subtitle: 'Zacznij od zarezerwowania swojej pierwszej podróży poniżej.', buttonText: 'Zarezerwuj podróż'},
emptySubmitResults: {
title: 'Brak wydatków do przesłania',
subtitle: 'Wszystko gotowe. Czas na rundę zwycięstwa!',
diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts
index 219fb1ce36b..be639b3beb6 100644
--- a/src/languages/pt-BR.ts
+++ b/src/languages/pt-BR.ts
@@ -2805,7 +2805,7 @@ ${amount} para ${merchant} - ${date}`,
expenseRulesPage: {
title: 'Regras de despesas',
findRule: 'Encontrar regra',
- emptyRules: {title: 'Ainda não há regras', subtitle: 'Adicione uma regra para automatizar o relatório de despesas.'},
+ emptyRules: {title: 'Nenhuma regra ainda', subtitle: 'Adicione uma regra para automatizar o relatório de despesas.'},
changes: {
billableUpdate: (value: boolean) => `Atualizar despesa ${value ? 'faturável' : 'não faturável'}`,
categoryUpdate: (value: string) => `Atualizar categoria para “${value}”`,
@@ -5902,7 +5902,7 @@ _Para instruções mais detalhadas, [visite nossa central de ajuda](${CONST.NETS
subtitleWithDependentTags: (importSpreadsheetLink: string) =>
`<muted-text>As tags acrescentam maneiras mais detalhadas de classificar custos. Você está usando <a href="${CONST.IMPORT_TAGS_EXPENSIFY_URL_DEPENDENT_TAGS}">tags dependentes</a>. Você pode <a href="${importSpreadsheetLink}">reimportar uma planilha</a> para atualizar suas tags.</muted-text>`,
emptyTags: {
- title: 'Ainda não há tags',
+ title: 'Ainda sem tags',
subtitle: 'Adicione uma tag para acompanhar projetos, locais, departamentos e mais.',
subtitleHTML: `<muted-text><centered-text>Adicione tags para acompanhar projetos, locais, departamentos e mais. <a href="${CONST.IMPORT_TAGS_EXPENSIFY_URL}">Saiba mais</a> sobre como formatar arquivos de tags para importação.</centered-text></muted-text>`,
subtitleWithAccounting: (accountingPageURL: string) =>
@@ -6174,7 +6174,7 @@ _Para instruções mais detalhadas, [visite nossa central de ajuda](${CONST.NETS
copyExisting: 'Copiar existente',
createNew: 'Criar novo',
spendRulesEmptyStateTitle: 'Nenhuma regra para escolher',
- spendRulesEmptyStateSubtitle: 'Ainda não há regras. Você pode criar uma a partir da tela anterior.',
+ spendRulesEmptyStateSubtitle: 'Nenhuma regra ainda. Você pode criar uma a partir da tela anterior.',
},
deactivateCardModal: {
deactivate: 'Desativar',
@@ -7852,18 +7852,18 @@ Adicione mais regras de gasto para proteger o fluxo de caixa da empresa.`,
subtitleWithOnlyCreateButton: 'Use o botão verde abaixo para criar uma despesa.',
},
emptyReportResults: {
- title: 'Nenhum relatório ainda',
+ title: 'Ainda não há relatórios',
subtitle: 'Crie um relatório ou faça um test drive do Expensify para saber mais.',
subtitleWithOnlyCreateButton: 'Use o botão verde abaixo para criar um relatório.',
},
emptyInvoiceResults: {
- title: 'Ainda não há faturas',
+ title: 'Nenhuma fatura ainda',
subtitle: 'Envie uma fatura ou faça um test drive do Expensify para saber mais.',
subtitleWithOnlyCreateButton: 'Use o botão verde abaixo para enviar uma fatura.',
subtitleCannotSend: 'Você precisa de um espaço de trabalho com Invoices habilitado para enviar faturas.',
subtitleCannotSendWithTestDrive: 'Você precisa de um espaço de trabalho com Invoices habilitado para enviar faturas. Faça um test drive do Expensify para saber mais.',
},
- emptyTripResults: {title: 'Nenhuma viagem ainda', subtitle: 'Comece reservando sua primeira viagem abaixo.', buttonText: 'Reservar uma viagem'},
+ emptyTripResults: {title: 'Ainda não há viagens', subtitle: 'Comece reservando sua primeira viagem abaixo.', buttonText: 'Reservar uma viagem'},
emptySubmitResults: {
title: 'Nenhuma despesa para enviar',
subtitle: 'Está tudo certo. Pode comemorar!',
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index b40eb7cc085..bbf19aec327 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -2733,7 +2733,7 @@ ${amount},商户:${merchant} - 日期:${date}`,
expenseRulesPage: {
title: '报销规则',
findRule: '查找规则',
- emptyRules: {title: '尚未设置规则', subtitle: '添加规则以自动生成报销报告。'},
+ emptyRules: {title: '尚未添加任何规则', subtitle: '添加规则以自动生成报销报告。'},
changes: {
billableUpdate: (value: boolean) => `更新报销 ${value ? '可计费' : '不可计费'}`,
categoryUpdate: (value: string) => `将类别更新为“${value}”`,
@@ -5407,7 +5407,7 @@ _如需更详细的说明,请[访问我们的帮助网站](${CONST.NETSUITE_IM
needCategoryForExportToIntegration: (connectionName: string) => `要导出到 ${connectionName},所有报销都必须先进行分类。`,
subtitle: '更好地了解资金的支出去向。使用我们的默认类别或添加你自己的类别。',
emptyCategories: {
- title: '尚无类别',
+ title: '尚未添加类别',
subtitle: '添加类别来整理您的支出。',
subtitleWithAccounting: (accountingPageURL: string) =>
`<muted-text><centered-text>您的类别目前正从会计连接中导入。前往<a href="${accountingPageURL}">会计</a>页面进行任何更改。</centered-text></muted-text>`,
@@ -5750,7 +5750,7 @@ _如需更详细的说明,请[访问我们的帮助网站](${CONST.NETSUITE_IM
subtitleWithDependentTags: (importSpreadsheetLink: string) =>
`<muted-text>标签可用于以更细致的方式分类成本。您正在使用<a href="${CONST.IMPORT_TAGS_EXPENSIFY_URL_DEPENDENT_TAGS}">依赖标签</a>。您可以<a href="${importSpreadsheetLink}">重新导入电子表格</a>来更新您的标签。</muted-text>`,
emptyTags: {
- title: '尚无标签',
+ title: '暂无标签',
subtitle: '添加标签,以跟踪项目、地点、部门等。',
subtitleHTML: `<muted-text><centered-text>添加标签以跟踪项目、地点、部门等。<a href="${CONST.IMPORT_TAGS_EXPENSIFY_URL}">了解更多</a>关于用于导入的标签文件格式。</centered-text></muted-text>`,
subtitleWithAccounting: (accountingPageURL: string) =>
@@ -6018,7 +6018,7 @@ _如需更详细的说明,请[访问我们的帮助网站](${CONST.NETSUITE_IM
copyExisting: '复制现有设置',
createNew: '新建',
spendRulesEmptyStateTitle: '没有可供选择的规则',
- spendRulesEmptyStateSubtitle: '尚未创建规则。您可以在上一屏创建一个。',
+ spendRulesEmptyStateSubtitle: '还没有规则。你可以在上一屏创建。',
},
deactivateCardModal: {
deactivate: '停用',
@@ -7646,10 +7646,10 @@ ${reportName}
title: '暂无内容',
subtitle: `请尝试调整搜索条件,或使用 “+” 按钮创建新项目。`,
},
- emptyExpenseResults: {title: '还没有报销费用', subtitle: '创建一笔报销,或试用 Expensify 以了解更多。', subtitleWithOnlyCreateButton: '使用下面的绿色按钮来创建一笔报销。'},
- emptyReportResults: {title: '尚无报表', subtitle: '创建报表或试用 Expensify,了解更多信息。', subtitleWithOnlyCreateButton: '使用下方的绿色按钮创建报表。'},
+ emptyExpenseResults: {title: '暂无费用', subtitle: '创建一笔报销,或试用 Expensify 以了解更多。', subtitleWithOnlyCreateButton: '使用下面的绿色按钮来创建一笔报销。'},
+ emptyReportResults: {title: '暂无报表', subtitle: '创建报表或试用 Expensify,了解更多信息。', subtitleWithOnlyCreateButton: '使用下方的绿色按钮创建报表。'},
emptyInvoiceResults: {
- title: '还没有发票',
+ title: '暂无发票',
subtitle: '发送发票或试用 Expensify,了解更多信息。',
subtitleWithOnlyCreateButton: '使用下方的绿色按钮发送发票。',
subtitleCannotSend: '您需要一个启用了Invoices的工作区才能发送发票。',
Note You can apply these changes to your branch by copying the patch to your clipboard, then running |
robertjchen
left a comment
There was a problem hiding this comment.
Reviewer Checklist
- I have verified the author checklist is complete (all boxes are checked off).
- I verified the correct issue is linked in the
### Fixed Issuessection above - I verified testing steps are clear and they cover the changes made in this PR
- I verified the steps for local testing are in the
Testssection - I verified the steps for Staging and/or Production testing are in the
QA stepssection - I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
- I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
- I verified the steps for local testing are in the
- I checked that screenshots or videos are included for tests on all platforms
- I included screenshots or videos for tests on all platforms
- I verified that the composer does not automatically focus or open the keyboard on mobile unless explicitly intended. This includes checking that returning the app from the background does not unexpectedly open the keyboard.
- I verified tests pass on all platforms & I tested again on:
- Android: HybridApp
- Android: mWeb Chrome
- iOS: HybridApp
- iOS: mWeb Safari
- MacOS: Chrome / Safari
- If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
- I verified proper code patterns were followed (see Reviewing the code)
- I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e.
toggleReportand notonIconClick). - I verified that comments were added to code that is not self explanatory
- I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
- I verified any copy / text shown in the product is localized by adding it to
src/languages/*files and using the translation method - I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
- I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
- I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
- I verified the JSDocs style guidelines (in
STYLE.md) were followed
- I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e.
- If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
- I verified that this PR follows the guidelines as stated in the Review Guidelines
- I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like
Avatar, I verified the components usingAvatarhave been tested & I retested again) - I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
- I verified any variables that can be defined as constants (ie. in CONST.ts or at the top of the file that uses the constant) are defined as such
- If a new component is created I verified that:
- A similar component doesn't exist in the codebase
- All props are defined accurately and each prop has a
/** comment above it */ - The file is named correctly
- The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
- The only data being stored in the state is data necessary for rendering and nothing else
- For Class Components, any internal methods passed to components event handlers are bound to
thisproperly so there are no scoping issues (i.e. foronClick={this.submit}the methodthis.submitshould be bound tothisin the constructor) - Any internal methods bound to
thisare necessary to be bound (i.e. avoidthis.submit = this.submit.bind(this);ifthis.submitis never passed to a component event handler likeonClick) - All JSX used for rendering exists in the render method
- The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions
- If any new file was added I verified that:
- The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory
- If a new CSS style is added I verified that:
- A similar style doesn't already exist
- The style can't be created with an existing StyleUtils function (i.e.
StyleUtils.getBackgroundAndBorderStyle(theme.componentBG)
- If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
- If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like
Avataris modified, I verified thatAvataris working as expected in all cases) - If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
- If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
- If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:
- I verified that all the inputs inside a form are aligned with each other.
- I added
Designlabel and/or tagged@Expensify/designso the design team can review the changes.
- If a new page is added, I verified it's using the
ScrollViewcomponent to make it scrollable when more elements are added to the page. - For any bug fix or new feature in this PR, I verified that sufficient unit tests are included to prevent regressions in this flow.
- If the
mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps. - I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.
Screenshots/Videos
Android: HybridApp
Android: mWeb Chrome
iOS: HybridApp
iOS: mWeb Safari
MacOS: Chrome / Safari
|
Hmmm, that last commit only changed a bunch of double quotes to single quotes, not the meaning or phrasing of anything. Not gonna apply the latest polyglot parrot diff |
|
@chuckdries looks like this was merged without a test passing. Please add a note explaining why this was done and remove the |
|
What!! That's literally just not true |
|
🚧 @chuckdries 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/chuckdries in version: 9.3.90-0 🚀
Bundle Size Analysis (Sentry): |
Help site review: no changes requiredI reviewed the changes in this PR against the help site articles under What this PR changesAll edits are in-app copy in
Why no docs changes are needed
I did not create a draft help site PR since there is nothing to update. If you'd like documentation added or expanded for any of these areas regardless, let me know and I'll open a draft PR. @jamesdeanexpensify, please confirm you agree no help site changes are required. If you'd prefer I create a docs PR anyway for any of these areas, reply with |
|
🚀 Deployed to production by https://github.com/lakchote in version: 9.3.90-3 🚀
|





Explanation of Change
Fixed Issues
$
PROPOSAL:
Tests
Offline tests
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