Skip to content
This repository was archived by the owner on Feb 24, 2025. It is now read-only.

Commit 916fd10

Browse files
Ship Review: VPN App Exclusions (#3850)
Task/Issue URL: https://app.asana.com/0/1142021229838617/1209157524718919 **Description**: Releases VPN App Exclusions for macOS.
1 parent d24591d commit 916fd10

File tree

13 files changed

+231
-127
lines changed

13 files changed

+231
-127
lines changed

DuckDuckGo/Common/Localizables/UserText+NetworkProtection.swift

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -55,23 +55,15 @@ extension UserText {
5555
value: "VPN Settings",
5656
comment: "The VPN status view's 'VPN Settings' menu item for our main app. The number shown is how many Apps are excluded.")
5757

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

64-
return String(format: message, count)
65-
}
66-
67-
static func vpnStatusViewExcludedDomainsMenuItemTitle(_ count: Int) -> String {
68-
let message = NSLocalizedString(
69-
"vpn.status-view.excluded-domains.menu-item.title",
70-
value: "Excluded Websites (%d)",
71-
comment: "The VPN status view's 'Excluded Websites' menu item for our main app. The number shown is how many websites are excluded.")
72-
73-
return String(format: message, count)
74-
}
63+
static let vpnStatusViewExcludedDomainsMenuItemTitle = NSLocalizedString(
64+
"vpn.status-view.excluded-domains.menu-item.title",
65+
value: "Excluded Websites",
66+
comment: "The VPN status view's 'Excluded Websites' menu item for our main app.")
7567

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

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

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

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

217-
static let vpnExcludedAppsTitle = NSLocalizedString("vpn.excluded.apps.title", value: "Excluded Apps", comment: "Excluded Apps title in VPN settings")
218-
219209
static let vpnGeneralTitle = NSLocalizedString("vpn.general.title", value: "General", comment: "General section title in VPN settings")
220210

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

227217
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")
228218

219+
// MARK: - Excluded Apps
220+
221+
static let vpnExcludedAppsTitle = NSLocalizedString("vpn.excluded.apps.title", value: "Excluded Apps", comment: "Excluded Apps title in VPN settings")
222+
223+
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")
224+
229225
// MARK: - Location
230226

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

262258
// MARK: - Excluded Apps
263259

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

266262
// MARK: - Excluded Domains
267263

DuckDuckGo/Localizable.xcstrings

Lines changed: 98 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -69064,55 +69064,115 @@
6906469064
"de" : {
6906569065
"stringUnit" : {
6906669066
"state" : "translated",
69067-
"value" : "Anwendung hinzufügen"
69067+
"value" : "Anwendungen durchsuchen"
6906869068
}
6906969069
},
6907069070
"en" : {
6907169071
"stringUnit" : {
6907269072
"state" : "new",
69073-
"value" : "Add Application"
69073+
"value" : "Browse Applications"
6907469074
}
6907569075
},
6907669076
"es" : {
6907769077
"stringUnit" : {
6907869078
"state" : "translated",
69079-
"value" : "Añadir aplicación"
69079+
"value" : "Explorar aplicaciones"
6908069080
}
6908169081
},
6908269082
"fr" : {
6908369083
"stringUnit" : {
6908469084
"state" : "translated",
69085-
"value" : "Ajouter une application"
69085+
"value" : "Parcourir les applications"
6908669086
}
6908769087
},
6908869088
"it" : {
6908969089
"stringUnit" : {
6909069090
"state" : "translated",
69091-
"value" : "Aggiungi applicazione"
69091+
"value" : "Sfoglia applicazioni"
6909269092
}
6909369093
},
6909469094
"nl" : {
6909569095
"stringUnit" : {
6909669096
"state" : "translated",
69097-
"value" : "Applicatie toevoegen"
69097+
"value" : "Applicaties browsen"
6909869098
}
6909969099
},
6910069100
"pl" : {
6910169101
"stringUnit" : {
6910269102
"state" : "translated",
69103-
"value" : "Dodaj aplikację"
69103+
"value" : "Przeglądaj aplikacje"
6910469104
}
6910569105
},
6910669106
"pt" : {
6910769107
"stringUnit" : {
6910869108
"state" : "translated",
69109-
"value" : "Adicionar aplicação"
69109+
"value" : "Procurar aplicações"
6911069110
}
6911169111
},
6911269112
"ru" : {
6911369113
"stringUnit" : {
6911469114
"state" : "translated",
69115-
"value" : "Добавить приложение"
69115+
"value" : "Просмотреть приложения"
69116+
}
69117+
}
69118+
}
69119+
},
69120+
"vpn.excluded.apps.description" : {
69121+
"comment" : "Excluded Apps description in VPN settings",
69122+
"extractionState" : "extracted_with_value",
69123+
"localizations" : {
69124+
"de" : {
69125+
"stringUnit" : {
69126+
"state" : "translated",
69127+
"value" : "Füge Apps hinzu, die nicht mit VPNs kompatibel sind, damit du sie nutzen kannst, ohne das VPN zu deaktivieren."
69128+
}
69129+
},
69130+
"en" : {
69131+
"stringUnit" : {
69132+
"state" : "new",
69133+
"value" : "Add apps that aren’t compatible with VPNs to use them without turning off the VPN."
69134+
}
69135+
},
69136+
"es" : {
69137+
"stringUnit" : {
69138+
"state" : "translated",
69139+
"value" : "Añade aplicaciones que no sean compatibles con las VPN para poder usarlas sin desactivar la VPN."
69140+
}
69141+
},
69142+
"fr" : {
69143+
"stringUnit" : {
69144+
"state" : "translated",
69145+
"value" : "Ajoutez des applications qui ne sont pas compatibles avec les VPN pour les utiliser sans désactiver le VPN."
69146+
}
69147+
},
69148+
"it" : {
69149+
"stringUnit" : {
69150+
"state" : "translated",
69151+
"value" : "Aggiungi app che non sono compatibili con le VPN per usarle senza spegnere la VPN."
69152+
}
69153+
},
69154+
"nl" : {
69155+
"stringUnit" : {
69156+
"state" : "translated",
69157+
"value" : "Voeg apps toe die niet compatibel zijn met VPN's om ze te gebruiken zonder de VPN uit te schakelen."
69158+
}
69159+
},
69160+
"pl" : {
69161+
"stringUnit" : {
69162+
"state" : "translated",
69163+
"value" : "Dodaj aplikacje, które nie są zgodne z sieciami VPN, aby móc z nich korzystać bez wyłączania sieci VPN."
69164+
}
69165+
},
69166+
"pt" : {
69167+
"stringUnit" : {
69168+
"state" : "translated",
69169+
"value" : "Adiciona aplicações que não sejam compatíveis com VPNs para as utilizares sem desativares a VPN."
69170+
}
69171+
},
69172+
"ru" : {
69173+
"stringUnit" : {
69174+
"state" : "translated",
69175+
"value" : "Добавьте приложения, несовместимые с VPN, и вы сможете пользоваться ими, не отключая его."
6911669176
}
6911769177
}
6911869178
}
@@ -69364,55 +69424,55 @@
6936469424
"de" : {
6936569425
"stringUnit" : {
6936669426
"state" : "translated",
69367-
"value" : "Ausschlüsse"
69427+
"value" : "VPN-Ausschlüsse"
6936869428
}
6936969429
},
6937069430
"en" : {
6937169431
"stringUnit" : {
6937269432
"state" : "new",
69373-
"value" : "Exclusions"
69433+
"value" : "VPN Exclusions"
6937469434
}
6937569435
},
6937669436
"es" : {
6937769437
"stringUnit" : {
6937869438
"state" : "translated",
69379-
"value" : "Exclusiones"
69439+
"value" : "Exclusiones de VPN"
6938069440
}
6938169441
},
6938269442
"fr" : {
6938369443
"stringUnit" : {
6938469444
"state" : "translated",
69385-
"value" : "Exclusions"
69445+
"value" : "Exclusions VPN"
6938669446
}
6938769447
},
6938869448
"it" : {
6938969449
"stringUnit" : {
6939069450
"state" : "translated",
69391-
"value" : "Esclusioni"
69451+
"value" : "Esclusioni VPN"
6939269452
}
6939369453
},
6939469454
"nl" : {
6939569455
"stringUnit" : {
6939669456
"state" : "translated",
69397-
"value" : "Uitsluitingen"
69457+
"value" : "VPN-uitsluitingen"
6939869458
}
6939969459
},
6940069460
"pl" : {
6940169461
"stringUnit" : {
6940269462
"state" : "translated",
69403-
"value" : "Wykluczenia"
69463+
"value" : "Wykluczenia działania VPN"
6940469464
}
6940569465
},
6940669466
"pt" : {
6940769467
"stringUnit" : {
6940869468
"state" : "translated",
69409-
"value" : "Exclusões"
69469+
"value" : "Exclusões VPN"
6941069470
}
6941169471
},
6941269472
"ru" : {
6941369473
"stringUnit" : {
6941469474
"state" : "translated",
69415-
"value" : "Исключения"
69475+
"value" : "Исключения из VPN"
6941669476
}
6941769477
}
6941869478
}
@@ -72418,121 +72478,121 @@
7241872478
}
7241972479
},
7242072480
"vpn.status-view.excluded-apps.menu-item.title" : {
72421-
"comment" : "The VPN status view's 'Excluded Apps' menu item for our main app. The number shown is how many Apps are excluded.",
72481+
"comment" : "The VPN status view's 'Excluded Apps' menu item for our main app.",
7242272482
"extractionState" : "extracted_with_value",
7242372483
"localizations" : {
7242472484
"de" : {
7242572485
"stringUnit" : {
7242672486
"state" : "translated",
72427-
"value" : "Ausgeschlossene Apps (%d)"
72487+
"value" : "Ausgeschlossene Apps"
7242872488
}
7242972489
},
7243072490
"en" : {
7243172491
"stringUnit" : {
7243272492
"state" : "new",
72433-
"value" : "Excluded Apps (%d)"
72493+
"value" : "Excluded Apps"
7243472494
}
7243572495
},
7243672496
"es" : {
7243772497
"stringUnit" : {
7243872498
"state" : "translated",
72439-
"value" : "Aplicaciones excluidas (%d)"
72499+
"value" : "Aplicaciones excluidas"
7244072500
}
7244172501
},
7244272502
"fr" : {
7244372503
"stringUnit" : {
7244472504
"state" : "translated",
72445-
"value" : "Applications exclues (%d)"
72505+
"value" : "Applications exclues"
7244672506
}
7244772507
},
7244872508
"it" : {
7244972509
"stringUnit" : {
7245072510
"state" : "translated",
72451-
"value" : "App escluse (%d)"
72511+
"value" : "App escluse"
7245272512
}
7245372513
},
7245472514
"nl" : {
7245572515
"stringUnit" : {
7245672516
"state" : "translated",
72457-
"value" : "Uitgesloten apps (%d)"
72517+
"value" : "Uitgesloten apps"
7245872518
}
7245972519
},
7246072520
"pl" : {
7246172521
"stringUnit" : {
7246272522
"state" : "translated",
72463-
"value" : "Wykluczone aplikacje (%d)"
72523+
"value" : "Wykluczone aplikacje"
7246472524
}
7246572525
},
7246672526
"pt" : {
7246772527
"stringUnit" : {
7246872528
"state" : "translated",
72469-
"value" : "Aplicações excluídas (%d)"
72529+
"value" : "Aplicações excluídas"
7247072530
}
7247172531
},
7247272532
"ru" : {
7247372533
"stringUnit" : {
7247472534
"state" : "translated",
72475-
"value" : "Исключенные приложения (%d)"
72535+
"value" : "Исключенные приложения"
7247672536
}
7247772537
}
7247872538
}
7247972539
},
7248072540
"vpn.status-view.excluded-domains.menu-item.title" : {
72481-
"comment" : "The VPN status view's 'Excluded Websites' menu item for our main app. The number shown is how many websites are excluded.",
72541+
"comment" : "The VPN status view's 'Excluded Websites' menu item for our main app.",
7248272542
"extractionState" : "extracted_with_value",
7248372543
"localizations" : {
7248472544
"de" : {
7248572545
"stringUnit" : {
7248672546
"state" : "translated",
72487-
"value" : "Ausgeschlossene Websites (%d)"
72547+
"value" : "Ausgeschlossene Websites"
7248872548
}
7248972549
},
7249072550
"en" : {
7249172551
"stringUnit" : {
7249272552
"state" : "new",
72493-
"value" : "Excluded Websites (%d)"
72553+
"value" : "Excluded Websites"
7249472554
}
7249572555
},
7249672556
"es" : {
7249772557
"stringUnit" : {
7249872558
"state" : "translated",
72499-
"value" : "Sitios web excluidos (%d)"
72559+
"value" : "Sitios web excluidos"
7250072560
}
7250172561
},
7250272562
"fr" : {
7250372563
"stringUnit" : {
7250472564
"state" : "translated",
72505-
"value" : "Sites Web exclus (%d)"
72565+
"value" : "Sites Web exclus"
7250672566
}
7250772567
},
7250872568
"it" : {
7250972569
"stringUnit" : {
7251072570
"state" : "translated",
72511-
"value" : "Siti esclusi (%d)"
72571+
"value" : "Siti web esclusi"
7251272572
}
7251372573
},
7251472574
"nl" : {
7251572575
"stringUnit" : {
7251672576
"state" : "translated",
72517-
"value" : "Uitgesloten websites (%d)"
72577+
"value" : "Uitgesloten websites"
7251872578
}
7251972579
},
7252072580
"pl" : {
7252172581
"stringUnit" : {
7252272582
"state" : "translated",
72523-
"value" : "Wykluczone witryny internetowe (%d)"
72583+
"value" : "Wykluczone witryny internetowe"
7252472584
}
7252572585
},
7252672586
"pt" : {
7252772587
"stringUnit" : {
7252872588
"state" : "translated",
72529-
"value" : "Websites excluídos (%d)"
72589+
"value" : "Websites excluídos"
7253072590
}
7253172591
},
7253272592
"ru" : {
7253372593
"stringUnit" : {
7253472594
"state" : "translated",
72535-
"value" : "Исключенные сайты (%d)"
72595+
"value" : "Исключенные сайты"
7253672596
}
7253772597
}
7253872598
}

0 commit comments

Comments
 (0)