From c011ffab47f70979576af89050589feb33635dc2 Mon Sep 17 00:00:00 2001 From: Piyal Basu Date: Wed, 29 Jul 2026 12:58:27 -0400 Subject: [PATCH 1/2] copy(preferences): rename data-sharing toggle to "Usage data sharing" + accurate disclosure The toggle was labeled "Anonymous data sharing" and claimed we collect "public keys, transaction amounts, and balances" only. Relabel to "Usage data sharing" (i18n key anonymousDataSharing -> usageDataSharing) and replace the description with an accurate disclosure covering usage/device/activity data, public keys, IP address, and the persistent cross-platform ID sent to our analytics and crash-reporting providers. Also aligns the ATT permission-modal wording. Removes the stale pt strings so they fall back to English until a professional pt translation is added. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../PreferencesScreen/PreferencesScreen.tsx | 4 ++-- src/i18n/locales/en/translations.json | 10 +++++----- src/i18n/locales/pt/translations.json | 4 ---- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/src/components/screens/SettingsScreen/PreferencesScreen/PreferencesScreen.tsx b/src/components/screens/SettingsScreen/PreferencesScreen/PreferencesScreen.tsx index 7feb590a8..c31972d0f 100644 --- a/src/components/screens/SettingsScreen/PreferencesScreen/PreferencesScreen.tsx +++ b/src/components/screens/SettingsScreen/PreferencesScreen/PreferencesScreen.tsx @@ -98,9 +98,9 @@ const PreferencesScreen: React.FC = () => { const preferencesItems: PreferenceListItem[] = useMemo( () => [ { - title: t("preferences.anonymousDataSharing.title"), + title: t("preferences.usageDataSharing.title"), titleColor: themeColors.text.primary, - description: t("preferences.anonymousDataSharing.description"), + description: t("preferences.usageDataSharing.description"), trailingContent: renderAnalyticsToggle(), testID: "anonymous-data-sharing-item", }, diff --git a/src/i18n/locales/en/translations.json b/src/i18n/locales/en/translations.json index ea52f51d3..4347e95e5 100644 --- a/src/i18n/locales/en/translations.json +++ b/src/i18n/locales/en/translations.json @@ -85,19 +85,19 @@ "deleteAccountConfirmMessage": "Make sure you have your recovery phrase in a safe place. You will not be able to recover your wallet without it." }, "preferences": { - "anonymousDataSharing": { - "title": "Anonymous data sharing", - "description": "Allow Freighter to collect limited information about usage. We will collect public keys, transaction amounts, and balances. This information will not be used for marketing or to identify you personally. We will not collect information such as name, address, email addresses, phone numbers, etc." + "usageDataSharing": { + "title": "Usage data sharing", + "description": "Help us improve Freighter by sharing usage, device, and activity data, including your public keys, IP address, and a persistent ID that links your wallet across extension and mobile, with our analytics and crash-reporting providers. You can turn this off at any time. See our Privacy Policy for details." }, "permissionModal": { "enable": { "title": "Enable Analytics", - "description": "To enable anonymous data sharing, you'll need to allow tracking permissions in your device settings.", + "description": "To enable usage data sharing, you'll need to allow tracking permissions in your device settings.", "instruction": "Tap \"Open Settings\" below, then find Freighter and enable \"Allow Tracking\"." }, "disable": { "title": "Disable Analytics", - "description": "To disable anonymous data sharing, you'll need to change tracking permissions in your device settings.", + "description": "To disable usage data sharing, you'll need to change tracking permissions in your device settings.", "instruction": "Tap \"Open Settings\" below, then find Freighter and disable \"Allow Tracking\"." }, "openSettings": "Open Settings", diff --git a/src/i18n/locales/pt/translations.json b/src/i18n/locales/pt/translations.json index 2d8cb92ba..6d737fee3 100644 --- a/src/i18n/locales/pt/translations.json +++ b/src/i18n/locales/pt/translations.json @@ -85,10 +85,6 @@ "deleteAccountConfirmMessage": "Certifique-se de que você tem sua frase de recuperação em um local seguro. Você não conseguirá recuperar sua carteira sem ela." }, "preferences": { - "anonymousDataSharing": { - "title": "Compartilhamento de dados anônimos", - "description": "Permitir que o Freighter colete informações limitadas sobre o uso. Coletaremos chaves públicas, valores de transações e saldos. Essas informações não serão usadas para marketing ou para identificar você pessoalmente. Não coletaremos informações como nome, endereço, e-mails, números de telefone, etc." - }, "permissionModal": { "enable": { "title": "Habilitar Analytics", From eecf96a325e3c3e8e8afa09bb53d9ee0132d0d42 Mon Sep 17 00:00:00 2001 From: Piyal Basu Date: Wed, 29 Jul 2026 14:34:05 -0400 Subject: [PATCH 2/2] =?UTF-8?q?i18n(pt):=20translate=20usage-data-sharing?= =?UTF-8?q?=20copy=20+=20drop=20"an=C3=B4nimos"=20from=20ATT=20modal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Addresses review feedback on #956, which caught that removing only the pt `anonymousDataSharing` block left the ATT permission modal saying "compartilhamento de dados anônimos" — the exact term this PR retires. A Portuguese user toggling the setting saw the modal contradict the (English fallback) toggle description, and still saw "anonymous", which is the inaccuracy the change exists to fix. Fixed by translating rather than deleting, so Portuguese users stay in Portuguese: - Restored `preferences.usageDataSharing` in pt with Brazilian Portuguese for title + description. - `permissionModal.enable.description` and `.disable.description`: "compartilhamento de dados anônimos" -> "compartilhamento de dados de uso", matching the en strings this PR already aligned. The reviewer's suggested fix was to delete the two modal descriptions too and let `fallbackLng: "en"` cover them. That resolves the contradiction but regresses two already-translated strings to English; since the toggle copy needed pt anyway, translating all four keeps the screen in one language. Copy is byte-identical to stellar/freighter#2922 (extension) for all four en/pt strings, verified programmatically — these two PRs exist to make the disclosure consistent across platforms, so drift between them would defeat the point. Terminology follows the existing catalog: "Política de Privacidade", "chave pública", "dispositivo", "carteira", "extensão", and the "o Freighter" article convention. Verified: 940/940 en/pt leaf-key parity (was 938/940 on this branch, so the gap this PR opened is closed); zero occurrences of "anônim" left in pt and zero of "anonymous" in en; `yarn lint:translations` reports no missing-translations errors; `yarn lint:ts` clean; prettier clean; 13 tests pass across PreferencesScreen.test.tsx and ducks/preferences.test.ts. The 6 `import/order` errors from `lint:translations` are pre-existing on main in parseTransaction.ts / buildAuthJwt.ts / deriveAuthKeypair.ts and unrelated to this change — confirmed by running eslint on those files at main. Co-Authored-By: Claude Opus 5 (1M context) --- src/i18n/locales/pt/translations.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/pt/translations.json b/src/i18n/locales/pt/translations.json index 6d737fee3..53ca2f275 100644 --- a/src/i18n/locales/pt/translations.json +++ b/src/i18n/locales/pt/translations.json @@ -85,15 +85,19 @@ "deleteAccountConfirmMessage": "Certifique-se de que você tem sua frase de recuperação em um local seguro. Você não conseguirá recuperar sua carteira sem ela." }, "preferences": { + "usageDataSharing": { + "title": "Compartilhamento de dados de uso", + "description": "Ajude-nos a melhorar o Freighter compartilhando dados de uso, do dispositivo e de atividade — incluindo suas chaves públicas, endereço IP e um ID persistente que vincula sua carteira entre a extensão e o aplicativo móvel — com nossos provedores de análise de dados e de relatórios de falhas. Você pode desativar essa opção a qualquer momento. Consulte nossa Política de Privacidade para mais detalhes." + }, "permissionModal": { "enable": { "title": "Habilitar Analytics", - "description": "Para habilitar o compartilhamento de dados anônimos, você precisará permitir permissões de rastreamento nas configurações do seu dispositivo.", + "description": "Para habilitar o compartilhamento de dados de uso, você precisará permitir permissões de rastreamento nas configurações do seu dispositivo.", "instruction": "Toque em \"Abrir Configurações\" abaixo, depois encontre Freighter e habilite \"Permitir Rastreamento\"." }, "disable": { "title": "Desabilitar Analytics", - "description": "Para desabilitar o compartilhamento de dados anônimos, você precisará alterar as permissões de rastreamento nas configurações do seu dispositivo.", + "description": "Para desabilitar o compartilhamento de dados de uso, você precisará alterar as permissões de rastreamento nas configurações do seu dispositivo.", "instruction": "Toque em \"Abrir Configurações\" abaixo, depois encontre Freighter e desabilite \"Permitir Rastreamento\"." }, "openSettings": "Abrir Configurações",