Skip to content

Commit

Permalink
Ship Review: VPN App Exclusions (#3850)
Browse files Browse the repository at this point in the history
Task/Issue URL:
https://app.asana.com/0/1142021229838617/1209157524718919

**Description**:

Releases VPN App Exclusions for macOS.
  • Loading branch information
diegoreymendez authored Feb 12, 2025
1 parent d24591d commit 916fd10
Show file tree
Hide file tree
Showing 13 changed files with 231 additions and 127 deletions.
36 changes: 16 additions & 20 deletions DuckDuckGo/Common/Localizables/UserText+NetworkProtection.swift
Original file line number Diff line number Diff line change
Expand Up @@ -55,23 +55,15 @@ extension UserText {
value: "VPN Settings",
comment: "The VPN status view's 'VPN Settings' menu item for our main app. The number shown is how many Apps are excluded.")

static func vpnStatusViewExcludedAppsMenuItemTitle(_ count: Int) -> String {
let message = NSLocalizedString(
"vpn.status-view.excluded-apps.menu-item.title",
value: "Excluded Apps (%d)",
comment: "The VPN status view's 'Excluded Apps' menu item for our main app. The number shown is how many Apps are excluded.")
static let vpnStatusViewExcludedAppsMenuItemTitle = NSLocalizedString(
"vpn.status-view.excluded-apps.menu-item.title",
value: "Excluded Apps",
comment: "The VPN status view's 'Excluded Apps' menu item for our main app.")

return String(format: message, count)
}

static func vpnStatusViewExcludedDomainsMenuItemTitle(_ count: Int) -> String {
let message = NSLocalizedString(
"vpn.status-view.excluded-domains.menu-item.title",
value: "Excluded Websites (%d)",
comment: "The VPN status view's 'Excluded Websites' menu item for our main app. The number shown is how many websites are excluded.")

return String(format: message, count)
}
static let vpnStatusViewExcludedDomainsMenuItemTitle = NSLocalizedString(
"vpn.status-view.excluded-domains.menu-item.title",
value: "Excluded Websites",
comment: "The VPN status view's 'Excluded Websites' menu item for our main app.")

static let vpnStatusViewSendFeedbackMenuItemTitle = NSLocalizedString(
"vpn.status-view.send-feedback.menu-item.title",
Expand Down Expand Up @@ -210,12 +202,10 @@ extension UserText {

static let vpnLocationTitle = NSLocalizedString("vpn.location.title", value: "Location", comment: "Location section title in VPN settings")

static let vpnExclusionsTitle = NSLocalizedString("vpn.exclusions.title", value: "Exclusions", comment: "Exclusions section title in VPN settings")
static let vpnExclusionsTitle = NSLocalizedString("vpn.exclusions.title", value: "VPN Exclusions", comment: "Exclusions section title in VPN settings")

static let vpnExcludedSitesTitle = NSLocalizedString("vpn.excluded.sites.title", value: "Excluded Websites", comment: "Excluded Sites title in VPN settings")

static let vpnExcludedAppsTitle = NSLocalizedString("vpn.excluded.apps.title", value: "Excluded Apps", comment: "Excluded Apps title in VPN settings")

static let vpnGeneralTitle = NSLocalizedString("vpn.general.title", value: "General", comment: "General section title in VPN settings")

static let vpnShortcutsSettingsTitle = NSLocalizedString("vpn.shortcuts.settings.title", value: "Shortcuts", comment: "Shortcuts section title in VPN settings")
Expand All @@ -226,6 +216,12 @@ extension UserText {

static let vpnNotificationsConnectionDropsOrStatusChangesTitle = NSLocalizedString("vpn.notifications.connection.drops.or.status.changes.title", value: "VPN connection drops or status changes", comment: "Title of the VPN notification option")

// MARK: - Excluded Apps

static let vpnExcludedAppsTitle = NSLocalizedString("vpn.excluded.apps.title", value: "Excluded Apps", comment: "Excluded Apps title in VPN settings")

static let vpnExcludedAppsDescription = NSLocalizedString("vpn.excluded.apps.description", value: "Add apps that aren’t compatible with VPNs to use them without turning off the VPN.", comment: "Excluded Apps description in VPN settings")

// MARK: - Location

static let vpnLocationChangeButtonTitle = NSLocalizedString("vpn.location.change.button.title", value: "Change...", comment: "Title of the VPN location preference change button")
Expand Down Expand Up @@ -261,7 +257,7 @@ extension UserText {

// MARK: - Excluded Apps

static let vpnExcludedAppsAddApp = NSLocalizedString("vpn.excluded.apps.add.app", value: "Add Application", comment: "Add Application button for the excluded apps view")
static let vpnExcludedAppsAddApp = NSLocalizedString("vpn.excluded.apps.add.app", value: "Browse Applications", comment: "Add Application button for the excluded apps view")

// MARK: - Excluded Domains

Expand Down
136 changes: 98 additions & 38 deletions DuckDuckGo/Localizable.xcstrings
Original file line number Diff line number Diff line change
Expand Up @@ -69064,55 +69064,115 @@
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "Anwendung hinzufügen"
"value" : "Anwendungen durchsuchen"
}
},
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Add Application"
"value" : "Browse Applications"
}
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Añadir aplicación"
"value" : "Explorar aplicaciones"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ajouter une application"
"value" : "Parcourir les applications"
}
},
"it" : {
"stringUnit" : {
"state" : "translated",
"value" : "Aggiungi applicazione"
"value" : "Sfoglia applicazioni"
}
},
"nl" : {
"stringUnit" : {
"state" : "translated",
"value" : "Applicatie toevoegen"
"value" : "Applicaties browsen"
}
},
"pl" : {
"stringUnit" : {
"state" : "translated",
"value" : "Dodaj aplikację"
"value" : "Przeglądaj aplikacje"
}
},
"pt" : {
"stringUnit" : {
"state" : "translated",
"value" : "Adicionar aplicação"
"value" : "Procurar aplicações"
}
},
"ru" : {
"stringUnit" : {
"state" : "translated",
"value" : "Добавить приложение"
"value" : "Просмотреть приложения"
}
}
}
},
"vpn.excluded.apps.description" : {
"comment" : "Excluded Apps description in VPN settings",
"extractionState" : "extracted_with_value",
"localizations" : {
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "Füge Apps hinzu, die nicht mit VPNs kompatibel sind, damit du sie nutzen kannst, ohne das VPN zu deaktivieren."
}
},
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Add apps that aren’t compatible with VPNs to use them without turning off the VPN."
}
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Añade aplicaciones que no sean compatibles con las VPN para poder usarlas sin desactivar la VPN."
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ajoutez des applications qui ne sont pas compatibles avec les VPN pour les utiliser sans désactiver le VPN."
}
},
"it" : {
"stringUnit" : {
"state" : "translated",
"value" : "Aggiungi app che non sono compatibili con le VPN per usarle senza spegnere la VPN."
}
},
"nl" : {
"stringUnit" : {
"state" : "translated",
"value" : "Voeg apps toe die niet compatibel zijn met VPN's om ze te gebruiken zonder de VPN uit te schakelen."
}
},
"pl" : {
"stringUnit" : {
"state" : "translated",
"value" : "Dodaj aplikacje, które nie są zgodne z sieciami VPN, aby móc z nich korzystać bez wyłączania sieci VPN."
}
},
"pt" : {
"stringUnit" : {
"state" : "translated",
"value" : "Adiciona aplicações que não sejam compatíveis com VPNs para as utilizares sem desativares a VPN."
}
},
"ru" : {
"stringUnit" : {
"state" : "translated",
"value" : "Добавьте приложения, несовместимые с VPN, и вы сможете пользоваться ими, не отключая его."
}
}
}
Expand Down Expand Up @@ -69364,55 +69424,55 @@
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ausschlüsse"
"value" : "VPN-Ausschlüsse"
}
},
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Exclusions"
"value" : "VPN Exclusions"
}
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Exclusiones"
"value" : "Exclusiones de VPN"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Exclusions"
"value" : "Exclusions VPN"
}
},
"it" : {
"stringUnit" : {
"state" : "translated",
"value" : "Esclusioni"
"value" : "Esclusioni VPN"
}
},
"nl" : {
"stringUnit" : {
"state" : "translated",
"value" : "Uitsluitingen"
"value" : "VPN-uitsluitingen"
}
},
"pl" : {
"stringUnit" : {
"state" : "translated",
"value" : "Wykluczenia"
"value" : "Wykluczenia działania VPN"
}
},
"pt" : {
"stringUnit" : {
"state" : "translated",
"value" : "Exclusões"
"value" : "Exclusões VPN"
}
},
"ru" : {
"stringUnit" : {
"state" : "translated",
"value" : "Исключения"
"value" : "Исключения из VPN"
}
}
}
Expand Down Expand Up @@ -72418,121 +72478,121 @@
}
},
"vpn.status-view.excluded-apps.menu-item.title" : {
"comment" : "The VPN status view's 'Excluded Apps' menu item for our main app. The number shown is how many Apps are excluded.",
"comment" : "The VPN status view's 'Excluded Apps' menu item for our main app.",
"extractionState" : "extracted_with_value",
"localizations" : {
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ausgeschlossene Apps (%d)"
"value" : "Ausgeschlossene Apps"
}
},
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Excluded Apps (%d)"
"value" : "Excluded Apps"
}
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Aplicaciones excluidas (%d)"
"value" : "Aplicaciones excluidas"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Applications exclues (%d)"
"value" : "Applications exclues"
}
},
"it" : {
"stringUnit" : {
"state" : "translated",
"value" : "App escluse (%d)"
"value" : "App escluse"
}
},
"nl" : {
"stringUnit" : {
"state" : "translated",
"value" : "Uitgesloten apps (%d)"
"value" : "Uitgesloten apps"
}
},
"pl" : {
"stringUnit" : {
"state" : "translated",
"value" : "Wykluczone aplikacje (%d)"
"value" : "Wykluczone aplikacje"
}
},
"pt" : {
"stringUnit" : {
"state" : "translated",
"value" : "Aplicações excluídas (%d)"
"value" : "Aplicações excluídas"
}
},
"ru" : {
"stringUnit" : {
"state" : "translated",
"value" : "Исключенные приложения (%d)"
"value" : "Исключенные приложения"
}
}
}
},
"vpn.status-view.excluded-domains.menu-item.title" : {
"comment" : "The VPN status view's 'Excluded Websites' menu item for our main app. The number shown is how many websites are excluded.",
"comment" : "The VPN status view's 'Excluded Websites' menu item for our main app.",
"extractionState" : "extracted_with_value",
"localizations" : {
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ausgeschlossene Websites (%d)"
"value" : "Ausgeschlossene Websites"
}
},
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Excluded Websites (%d)"
"value" : "Excluded Websites"
}
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Sitios web excluidos (%d)"
"value" : "Sitios web excluidos"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Sites Web exclus (%d)"
"value" : "Sites Web exclus"
}
},
"it" : {
"stringUnit" : {
"state" : "translated",
"value" : "Siti esclusi (%d)"
"value" : "Siti web esclusi"
}
},
"nl" : {
"stringUnit" : {
"state" : "translated",
"value" : "Uitgesloten websites (%d)"
"value" : "Uitgesloten websites"
}
},
"pl" : {
"stringUnit" : {
"state" : "translated",
"value" : "Wykluczone witryny internetowe (%d)"
"value" : "Wykluczone witryny internetowe"
}
},
"pt" : {
"stringUnit" : {
"state" : "translated",
"value" : "Websites excluídos (%d)"
"value" : "Websites excluídos"
}
},
"ru" : {
"stringUnit" : {
"state" : "translated",
"value" : "Исключенные сайты (%d)"
"value" : "Исключенные сайты"
}
}
}
Expand Down
Loading

0 comments on commit 916fd10

Please sign in to comment.