Merge iOS strings into Core

This commit is contained in:
Davide De Rosa 2021-08-07 12:18:01 +02:00
parent 366ff3ebf1
commit cda9bdcc3f
16 changed files with 212 additions and 241 deletions

View File

@ -11,172 +11,6 @@ import Foundation
// swiftlint:disable nesting type_body_length type_name vertical_whitespace_opening_braces
internal enum L10n {
internal enum App {
internal enum Account {
internal enum Sections {
internal enum Credentials {
/// Credentials
internal static let header = L10n.tr("App", "account.sections.credentials.header")
}
}
}
internal enum Endpoint {
internal enum Sections {
internal enum LocationAddresses {
/// Addresses
internal static let header = L10n.tr("App", "endpoint.sections.location_addresses.header")
}
internal enum LocationProtocols {
/// Protocols
internal static let header = L10n.tr("App", "endpoint.sections.location_protocols.header")
}
}
}
internal enum ImportedHosts {
/// Imported hosts
internal static let title = L10n.tr("App", "imported_hosts.title")
}
internal enum NetworkSettings {
internal enum Cells {
internal enum AddDnsDomain {
/// Add search domain
internal static let caption = L10n.tr("App", "network_settings.cells.add_dns_domain.caption")
}
internal enum AddDnsServer {
/// Add address
internal static let caption = L10n.tr("App", "network_settings.cells.add_dns_server.caption")
}
internal enum AddProxyBypass {
/// Add bypass domain
internal static let caption = L10n.tr("App", "network_settings.cells.add_proxy_bypass.caption")
}
internal enum ProxyBypass {
/// Bypass domain
internal static let caption = L10n.tr("App", "network_settings.cells.proxy_bypass.caption")
}
}
}
internal enum Organizer {
internal enum Cells {
internal enum AddHost {
/// Add from Files
internal static let caption = L10n.tr("App", "organizer.cells.add_host.caption")
}
internal enum AddProvider {
/// Add new provider
internal static let caption = L10n.tr("App", "organizer.cells.add_provider.caption")
}
internal enum ImportHost {
/// Add from imported
internal static let caption = L10n.tr("App", "organizer.cells.import_host.caption")
}
}
}
internal enum Provider {
internal enum Pool {
internal enum Actions {
/// Favorite
internal static let favorite = L10n.tr("App", "provider.pool.actions.favorite")
/// Unfavorite
internal static let unfavorite = L10n.tr("App", "provider.pool.actions.unfavorite")
}
internal enum Sections {
internal enum EmptyFavorites {
/// Swipe left on a location to add or remove it from Favorites.
internal static let footer = L10n.tr("App", "provider.pool.sections.empty_favorites.footer")
}
}
}
internal enum Preset {
internal enum Cells {
internal enum TechDetails {
/// Technical details
internal static let caption = L10n.tr("App", "provider.preset.cells.tech_details.caption")
}
}
}
}
internal enum Service {
internal enum Alerts {
internal enum Location {
internal enum Button {
/// Settings
internal static let settings = L10n.tr("App", "service.alerts.location.button.settings")
}
internal enum Message {
/// You must allow location access to trust this Wi-Fi network. Go to iOS settings and review your location permissions for Passepartout.
internal static let denied = L10n.tr("App", "service.alerts.location.message.denied")
}
}
}
internal enum Cells {
internal enum Host {
internal enum Parameters {
/// Parameters
internal static let caption = L10n.tr("App", "service.cells.host.parameters.caption")
}
}
internal enum Provider {
internal enum Refresh {
/// Refresh infrastructure
internal static let caption = L10n.tr("App", "service.cells.provider.refresh.caption")
}
}
internal enum TrustedAddWifi {
/// Add Wi-Fi
internal static let caption = L10n.tr("App", "service.cells.trusted_add_wifi.caption")
}
internal enum VpnService {
/// Enabled
internal static let caption = L10n.tr("App", "service.cells.vpn_service.caption")
}
}
internal enum Sections {
internal enum Configuration {
/// Configuration
internal static let header = L10n.tr("App", "service.sections.configuration.header")
}
internal enum Status {
/// Connection
internal static let header = L10n.tr("App", "service.sections.status.header")
}
internal enum Vpn {
/// VPN
internal static let header = L10n.tr("App", "service.sections.vpn.header")
}
}
}
internal enum Shortcuts {
internal enum Add {
/// Add shortcut
internal static let title = L10n.tr("App", "shortcuts.add.title")
}
internal enum Edit {
/// Manage shortcuts
internal static let title = L10n.tr("App", "shortcuts.edit.title")
internal enum Cells {
internal enum AddShortcut {
/// Add shortcut
internal static let caption = L10n.tr("App", "shortcuts.edit.cells.add_shortcut.caption")
}
}
}
}
internal enum Wizards {
internal enum Host {
internal enum Cells {
internal enum TitleInput {
/// Title
internal static let caption = L10n.tr("App", "wizards.host.cells.title_input.caption")
}
}
internal enum Sections {
internal enum Existing {
/// Existing profiles
internal static let header = L10n.tr("App", "wizards.host.sections.existing.header")
}
}
}
}
}
internal enum Core {
internal enum About {
@ -251,6 +85,10 @@ internal enum L10n {
}
}
internal enum Sections {
internal enum Credentials {
/// Credentials
internal static let header = L10n.tr("Core", "account.sections.credentials.header")
}
internal enum Guidance {
internal enum Footer {
internal enum Infrastructure {
@ -500,6 +338,16 @@ internal enum L10n {
internal static let caption = L10n.tr("Core", "endpoint.cells.any_protocol.caption")
}
}
internal enum Sections {
internal enum LocationAddresses {
/// Addresses
internal static let header = L10n.tr("Core", "endpoint.sections.location_addresses.header")
}
internal enum LocationProtocols {
/// Protocols
internal static let header = L10n.tr("Core", "endpoint.sections.location_protocols.header")
}
}
}
internal enum Global {
/// Cancel
@ -543,6 +391,10 @@ internal enum L10n {
internal static let `none` = L10n.tr("Core", "global.values.none")
}
}
internal enum ImportedHosts {
/// Imported hosts
internal static let title = L10n.tr("Core", "imported_hosts.title")
}
internal enum IssueReporter {
/// The debug log of your latest connections is crucial to resolve your connectivity issues and is completely anonymous.\n\nThe .ovpn configuration file, if any, is attached stripped of any sensitive data.\n\nPlease double check the e-mail attachments if unsure.
internal static let message = L10n.tr("Core", "issue_reporter.message")
@ -568,6 +420,24 @@ internal enum L10n {
internal enum NetworkSettings {
/// Network settings
internal static let title = L10n.tr("Core", "network_settings.title")
internal enum Cells {
internal enum AddDnsDomain {
/// Add search domain
internal static let caption = L10n.tr("Core", "network_settings.cells.add_dns_domain.caption")
}
internal enum AddDnsServer {
/// Add address
internal static let caption = L10n.tr("Core", "network_settings.cells.add_dns_server.caption")
}
internal enum AddProxyBypass {
/// Add bypass domain
internal static let caption = L10n.tr("Core", "network_settings.cells.add_proxy_bypass.caption")
}
internal enum ProxyBypass {
/// Bypass domain
internal static let caption = L10n.tr("Core", "network_settings.cells.proxy_bypass.caption")
}
}
internal enum Dns {
/// DNS
internal static let title = L10n.tr("Core", "network_settings.dns.title")
@ -623,6 +493,14 @@ internal enum L10n {
return L10n.tr("Core", "organizer.cells.about.caption", String(describing: p1))
}
}
internal enum AddHost {
/// Add from Files
internal static let caption = L10n.tr("Core", "organizer.cells.add_host.caption")
}
internal enum AddProvider {
/// Add new provider
internal static let caption = L10n.tr("Core", "organizer.cells.add_provider.caption")
}
internal enum Donate {
/// Make a donation
internal static let caption = L10n.tr("Core", "organizer.cells.donate.caption")
@ -635,6 +513,10 @@ internal enum L10n {
/// Support me on GitHub
internal static let caption = L10n.tr("Core", "organizer.cells.github_sponsors.caption")
}
internal enum ImportHost {
/// Add from imported
internal static let caption = L10n.tr("Core", "organizer.cells.import_host.caption")
}
internal enum JoinCommunity {
/// Join community
internal static let caption = L10n.tr("Core", "organizer.cells.join_community.caption")
@ -743,6 +625,30 @@ internal enum L10n {
}
}
}
internal enum Provider {
internal enum Pool {
internal enum Actions {
/// Favorite
internal static let favorite = L10n.tr("Core", "provider.pool.actions.favorite")
/// Unfavorite
internal static let unfavorite = L10n.tr("Core", "provider.pool.actions.unfavorite")
}
internal enum Sections {
internal enum EmptyFavorites {
/// Swipe left on a location to add or remove it from Favorites.
internal static let footer = L10n.tr("Core", "provider.pool.sections.empty_favorites.footer")
}
}
}
internal enum Preset {
internal enum Cells {
internal enum TechDetails {
/// Technical details
internal static let caption = L10n.tr("Core", "provider.preset.cells.tech_details.caption")
}
}
}
}
internal enum Purchase {
/// Purchase
internal static let title = L10n.tr("Core", "purchase.title")
@ -819,6 +725,16 @@ internal enum L10n {
internal static let extracting = L10n.tr("Core", "service.alerts.download.hud.extracting")
}
}
internal enum Location {
internal enum Button {
/// Settings
internal static let settings = L10n.tr("Core", "service.alerts.location.button.settings")
}
internal enum Message {
/// You must allow location access to trust this Wi-Fi network. Go to iOS settings and review your location permissions for Passepartout.
internal static let denied = L10n.tr("Core", "service.alerts.location.message.denied")
}
}
internal enum MasksPrivateData {
internal enum Messages {
/// In order to safely reset the current debug log and apply the new masking preference, you must reconnect to the VPN now.
@ -873,6 +789,12 @@ internal enum L10n {
/// Debug log
internal static let caption = L10n.tr("Core", "service.cells.debug_log.caption")
}
internal enum Host {
internal enum Parameters {
/// Parameters
internal static let caption = L10n.tr("Core", "service.cells.host.parameters.caption")
}
}
internal enum MasksPrivateData {
/// Mask network data
internal static let caption = L10n.tr("Core", "service.cells.masks_private_data.caption")
@ -886,6 +808,10 @@ internal enum L10n {
/// Preset
internal static let caption = L10n.tr("Core", "service.cells.provider.preset.caption")
}
internal enum Refresh {
/// Refresh infrastructure
internal static let caption = L10n.tr("Core", "service.cells.provider.refresh.caption")
}
}
internal enum Reconnect {
/// Reconnect
@ -907,6 +833,10 @@ internal enum L10n {
/// Test connectivity
internal static let caption = L10n.tr("Core", "service.cells.test_connectivity.caption")
}
internal enum TrustedAddWifi {
/// Add Wi-Fi
internal static let caption = L10n.tr("Core", "service.cells.trusted_add_wifi.caption")
}
internal enum TrustedMobile {
/// Cellular network
internal static let caption = L10n.tr("Core", "service.cells.trusted_mobile.caption")
@ -923,12 +853,20 @@ internal enum L10n {
/// Resolve provider hostname
internal static let caption = L10n.tr("Core", "service.cells.vpn_resolves_hostname.caption")
}
internal enum VpnService {
/// Enabled
internal static let caption = L10n.tr("Core", "service.cells.vpn_service.caption")
}
internal enum VpnSurvivesSleep {
/// Keep alive on sleep
internal static let caption = L10n.tr("Core", "service.cells.vpn_survives_sleep.caption")
}
}
internal enum Sections {
internal enum Configuration {
/// Configuration
internal static let header = L10n.tr("Core", "service.sections.configuration.header")
}
internal enum Diagnostics {
/// Masking status will be effective after reconnecting. Network data are hostnames, IP addresses, routing, SSID. Credentials and private keys are not logged regardless.
internal static let footer = L10n.tr("Core", "service.sections.diagnostics.footer")
@ -941,6 +879,10 @@ internal enum L10n {
return L10n.tr("Core", "service.sections.provider_infrastructure.footer", String(describing: p1))
}
}
internal enum Status {
/// Connection
internal static let header = L10n.tr("Core", "service.sections.status.header")
}
internal enum Trusted {
/// When entering a trusted network, the VPN is normally shut down and kept disconnected. Disable this option to not enforce such behavior.
internal static let footer = L10n.tr("Core", "service.sections.trusted.footer")
@ -950,6 +892,8 @@ internal enum L10n {
internal enum Vpn {
/// The connection will be established whenever necessary.
internal static let footer = L10n.tr("Core", "service.sections.vpn.footer")
/// VPN
internal static let header = L10n.tr("Core", "service.sections.vpn.header")
}
internal enum VpnResolvesHostname {
/// Preferred in most networks and required in some IPv6 networks. Disable where DNS is blocked, or to speed up negotiation when DNS is slow to respond.
@ -971,6 +915,8 @@ internal enum L10n {
}
internal enum Shortcuts {
internal enum Add {
/// Add shortcut
internal static let title = L10n.tr("Core", "shortcuts.add.title")
internal enum Alerts {
internal enum NoProfiles {
/// There is no profile to connect to.
@ -1023,6 +969,14 @@ internal enum L10n {
}
}
internal enum Edit {
/// Manage shortcuts
internal static let title = L10n.tr("Core", "shortcuts.edit.title")
internal enum Cells {
internal enum AddShortcut {
/// Add shortcut
internal static let caption = L10n.tr("Core", "shortcuts.edit.cells.add_shortcut.caption")
}
}
internal enum Sections {
internal enum All {
/// Existing shortcuts
@ -1085,6 +1039,18 @@ internal enum L10n {
internal static let message = L10n.tr("Core", "wizards.host.alerts.existing.message")
}
}
internal enum Cells {
internal enum TitleInput {
/// Title
internal static let caption = L10n.tr("Core", "wizards.host.cells.title_input.caption")
}
}
internal enum Sections {
internal enum Existing {
/// Existing profiles
internal static let header = L10n.tr("Core", "wizards.host.sections.existing.header")
}
}
}
internal enum Provider {
internal enum Alerts {

View File

@ -67,7 +67,7 @@ class AccountViewController: UIViewController, StrongTableHost {
model.clear()
model.add(.credentials)
model.setHeader(L10n.App.Account.Sections.Credentials.header, forSection: .credentials)
model.setHeader(L10n.Core.Account.Sections.Credentials.header, forSection: .credentials)
model.set([.username, .password], forSection: .credentials)
if let _ = infrastructureName {

View File

@ -67,8 +67,8 @@ class EndpointViewController: UIViewController, StrongTableHost {
model.add(.locationAddresses)
model.add(.locationProtocols)
model.setHeader(L10n.App.Endpoint.Sections.LocationAddresses.header, forSection: .locationAddresses)
model.setHeader(L10n.App.Endpoint.Sections.LocationProtocols.header, forSection: .locationProtocols)
model.setHeader(L10n.Core.Endpoint.Sections.LocationAddresses.header, forSection: .locationAddresses)
model.setHeader(L10n.Core.Endpoint.Sections.LocationProtocols.header, forSection: .locationProtocols)
if dataSource.canCustomizeEndpoint {
var addressRows: [RowType] = Array(repeating: .availableAddress, count: dataSource.addresses.count)

View File

@ -495,7 +495,7 @@ extension NetworkSettingsViewController {
case .dnsAddAddress:
let cell = Cells.setting.dequeue(from: tableView, for: indexPath)
cell.applyAction(.current)
cell.leftText = L10n.App.NetworkSettings.Cells.AddDnsServer.caption
cell.leftText = L10n.Core.NetworkSettings.Cells.AddDnsServer.caption
return cell
case .dnsDomain:
@ -516,7 +516,7 @@ extension NetworkSettingsViewController {
case .dnsAddDomain:
let cell = Cells.setting.dequeue(from: tableView, for: indexPath)
cell.applyAction(.current)
cell.leftText = L10n.App.NetworkSettings.Cells.AddDnsDomain.caption
cell.leftText = L10n.Core.NetworkSettings.Cells.AddDnsDomain.caption
return cell
case .proxyAddress:
@ -562,7 +562,7 @@ extension NetworkSettingsViewController {
let i = indexPath.row - Offsets.proxyBypass
let cell = Cells.field.dequeue(from: tableView, for: indexPath)
cell.caption = L10n.App.NetworkSettings.Cells.ProxyBypass.caption
cell.caption = L10n.Core.NetworkSettings.Cells.ProxyBypass.caption
cell.field.tag = FieldTag.proxyBypass.rawValue + i
cell.field.placeholder = L10n.Core.Global.Values.none
cell.field.text = networkSettings.proxyBypassDomains?[i]
@ -576,7 +576,7 @@ extension NetworkSettingsViewController {
case .proxyAddBypass:
let cell = Cells.setting.dequeue(from: tableView, for: indexPath)
cell.applyAction(.current)
cell.leftText = L10n.App.NetworkSettings.Cells.AddProxyBypass.caption
cell.leftText = L10n.Core.NetworkSettings.Cells.AddProxyBypass.caption
return cell
case .mtuBytes:

View File

@ -42,7 +42,7 @@ class ImportedHostsViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
title = L10n.App.ImportedHosts.title
title = L10n.Core.ImportedHosts.title
}
private func selectHost(withUrl url: URL) {

View File

@ -66,7 +66,7 @@ class OrganizerViewController: UITableViewController, StrongTableHost {
}
model.add(.about)
model.add(.destruction)
model.setHeader(L10n.App.Service.Sections.Vpn.header, forSection: .vpn)
model.setHeader(L10n.Core.Service.Sections.Vpn.header, forSection: .vpn)
model.setHeader(L10n.Core.Organizer.Sections.Providers.header, forSection: .providers)
model.setHeader(L10n.Core.Organizer.Sections.Hosts.header, forSection: .hosts)
model.setFooter(L10n.Core.Organizer.Sections.Providers.footer, forSection: .providers)
@ -515,19 +515,19 @@ extension OrganizerViewController {
case .addProvider:
let cell = Cells.setting.dequeue(from: tableView, for: indexPath)
cell.applyAction(.current)
cell.leftText = L10n.App.Organizer.Cells.AddProvider.caption
cell.leftText = L10n.Core.Organizer.Cells.AddProvider.caption
return cell
case .addHost:
let cell = Cells.setting.dequeue(from: tableView, for: indexPath)
cell.applyAction(.current)
cell.leftText = L10n.App.Organizer.Cells.AddHost.caption
cell.leftText = L10n.Core.Organizer.Cells.AddHost.caption
return cell
case .importHost:
let cell = Cells.setting.dequeue(from: tableView, for: indexPath)
cell.applyAction(.current)
cell.leftText = L10n.App.Organizer.Cells.ImportHost.caption
cell.leftText = L10n.Core.Organizer.Cells.ImportHost.caption
return cell
case .siriShortcuts:

View File

@ -58,7 +58,7 @@ class WizardHostViewController: UITableViewController, StrongTableHost {
// model.setFooter(L10n.Core.Global.Host.TitleInput.message, forSection: .meta)
if !existingHostIds.isEmpty {
model.add(.existing)
model.setHeader(L10n.App.Wizards.Host.Sections.Existing.header, forSection: .existing)
model.setHeader(L10n.Core.Wizards.Host.Sections.Existing.header, forSection: .existing)
}
model.set([.titleInput], forSection: .meta)
model.set(.existingHost, count: existingHostIds.count, forSection: .existing)
@ -211,7 +211,7 @@ extension WizardHostViewController {
switch model.row(at: indexPath) {
case .titleInput:
let cell = Cells.field.dequeue(from: tableView, for: indexPath)
cell.caption = L10n.App.Wizards.Host.Cells.TitleInput.caption
cell.caption = L10n.Core.Wizards.Host.Cells.TitleInput.caption
cell.captionWidth = 100.0
// cell.allowedCharset = .filename
cell.field.applyHostTitle(.current)

View File

@ -181,7 +181,7 @@ extension ProviderPoolViewController: UITableViewDataSource, UITableViewDelegate
func tableView(_ tableView: UITableView, titleForFooterInSection section: Int) -> String? {
if isShowingEmptyFavorites {
return L10n.App.Provider.Pool.Sections.EmptyFavorites.footer
return L10n.Core.Provider.Pool.Sections.EmptyFavorites.footer
}
return nil
}
@ -251,12 +251,12 @@ extension ProviderPoolViewController: UITableViewDataSource, UITableViewDelegate
let action: UIContextualAction
if favoriteGroupIds.contains(groupId) {
action = UIContextualAction(style: .destructive, title: L10n.App.Provider.Pool.Actions.unfavorite) {
action = UIContextualAction(style: .destructive, title: L10n.Core.Provider.Pool.Actions.unfavorite) {
self.unfavoriteGroup(in: category, withId: groupId, deletingRowAt: self.isShowingFavorites ? indexPath : nil)
$2(true)
}
} else if !isShowingFavorites {
action = UIContextualAction(style: .normal, title: L10n.App.Provider.Pool.Actions.favorite) {
action = UIContextualAction(style: .normal, title: L10n.Core.Provider.Pool.Actions.favorite) {
self.favoriteGroup(withId: groupId)
$2(true)
}

View File

@ -107,7 +107,7 @@ extension ProviderPresetViewController: UITableViewDataSource, UITableViewDelega
case .techDetails:
cell.applyAction(.current)
cell.leftText = L10n.App.Provider.Preset.Cells.TechDetails.caption
cell.leftText = L10n.Core.Provider.Preset.Cells.TechDetails.caption
cell.accessoryType = .none
}
return cell

View File

@ -267,7 +267,7 @@ extension ServerNetworkViewController {
guard let domain = configuration.proxyBypassDomains?[indexPath.row - indexOfFirstProxyBypassDomain] else {
fatalError("Got proxy bypass domain with empty domains")
}
cell.leftText = L10n.App.NetworkSettings.Cells.ProxyBypass.caption
cell.leftText = L10n.Core.NetworkSettings.Cells.ProxyBypass.caption
cell.rightText = domain
default:

View File

@ -190,7 +190,7 @@ class ServiceViewController: UIViewController, StrongTableHost {
case .hostParametersSegueIdentifier:
let vc = destination as? ConfigurationViewController
vc?.title = L10n.App.Service.Cells.Host.Parameters.caption
vc?.title = L10n.Core.Service.Cells.Host.Parameters.caption
vc?.initialConfiguration = uncheckedHostProfile.parameters.sessionConfiguration
vc?.originalConfigurationURL = service.configurationURL(for: uncheckedHostProfile)
vc?.delegate = self
@ -290,7 +290,7 @@ class ServiceViewController: UIViewController, StrongTableHost {
}
guard !service.needsCredentials(for: uncheckedProfile) else {
let alert = UIAlertController.asAlert(
L10n.App.Service.Sections.Vpn.header,
L10n.Core.Service.Sections.Vpn.header,
L10n.Core.Service.Alerts.CredentialsNeeded.message
)
alert.addCancelAction(L10n.Core.Global.ok) {
@ -420,11 +420,11 @@ class ServiceViewController: UIViewController, StrongTableHost {
case .denied:
isPendingTrustedWiFi = false
let alert = UIAlertController.asAlert(
L10n.App.Service.Cells.TrustedAddWifi.caption,
L10n.App.Service.Alerts.Location.Message.denied
L10n.Core.Service.Cells.TrustedAddWifi.caption,
L10n.Core.Service.Alerts.Location.Message.denied
)
alert.addCancelAction(L10n.Core.Global.ok)
alert.addPreferredAction(L10n.App.Service.Alerts.Location.Button.settings) {
alert.addPreferredAction(L10n.Core.Service.Alerts.Location.Button.settings) {
UIApplication.shared.open(URL(string: UIApplication.openSettingsURLString)!, options: [:], completionHandler: nil)
}
present(alert, animated: true, completion: nil)
@ -450,7 +450,7 @@ class ServiceViewController: UIViewController, StrongTableHost {
field.delegate = self
}
alert.addCancelAction(L10n.Core.Global.cancel)
alert.addPreferredAction(L10n.App.Service.Cells.TrustedAddWifi.caption) {
alert.addPreferredAction(L10n.Core.Service.Cells.TrustedAddWifi.caption) {
guard let wifi = alert.textFields?.first?.text else {
return
}
@ -891,7 +891,7 @@ extension ServiceViewController: UITableViewDataSource, UITableViewDelegate, Tog
}
let cell = Cells.toggle.dequeue(from: tableView, for: indexPath, tag: row.rawValue, delegate: self)
cell.caption = L10n.App.Service.Cells.VpnService.caption
cell.caption = L10n.Core.Service.Cells.VpnService.caption
cell.isOn = vpn.isEnabled
return cell
@ -957,7 +957,7 @@ extension ServiceViewController: UITableViewDataSource, UITableViewDelegate, Tog
case .providerRefresh:
let cell = Cells.setting.dequeue(from: tableView, for: indexPath)
cell.applyAction(.current)
cell.leftText = L10n.App.Service.Cells.Provider.Refresh.caption
cell.leftText = L10n.Core.Service.Cells.Provider.Refresh.caption
return cell
// host cells
@ -965,7 +965,7 @@ extension ServiceViewController: UITableViewDataSource, UITableViewDelegate, Tog
case .hostParameters:
let parameters = uncheckedHostProfile.parameters
let cell = Cells.setting.dequeue(from: tableView, for: indexPath)
cell.leftText = L10n.App.Service.Cells.Host.Parameters.caption
cell.leftText = L10n.Core.Service.Cells.Host.Parameters.caption
if !parameters.sessionConfiguration.fallbackCipher.embedsDigest {
cell.rightText = "\(parameters.sessionConfiguration.fallbackCipher.genericName) / \(parameters.sessionConfiguration.fallbackDigest.genericName)"
} else {
@ -1003,7 +1003,7 @@ extension ServiceViewController: UITableViewDataSource, UITableViewDelegate, Tog
case .trustedAddCurrentWiFi:
let cell = Cells.setting.dequeue(from: tableView, for: indexPath)
cell.applyAction(.current)
cell.leftText = L10n.App.Service.Cells.TrustedAddWifi.caption
cell.leftText = L10n.Core.Service.Cells.TrustedAddWifi.caption
return cell
case .trustedPolicy:
@ -1238,11 +1238,11 @@ extension ServiceViewController: UITableViewDataSource, UITableViewDelegate, Tog
}
// headers
model.setHeader(L10n.App.Service.Sections.Vpn.header, forSection: .vpn)
model.setHeader(L10n.Core.Service.Sections.Vpn.header, forSection: .vpn)
if isProvider {
model.setHeader(L10n.App.Service.Sections.Configuration.header, forSection: .authentication)
model.setHeader(L10n.Core.Service.Sections.Configuration.header, forSection: .authentication)
} else {
model.setHeader(L10n.App.Service.Sections.Configuration.header, forSection: .configuration)
model.setHeader(L10n.Core.Service.Sections.Configuration.header, forSection: .configuration)
}
if isActiveProfile {
if isProvider {

View File

@ -56,7 +56,7 @@ class ShortcutsAddViewController: UITableViewController, StrongTableHost {
override func viewDidLoad() {
super.viewDidLoad()
title = L10n.App.Shortcuts.Add.title
title = L10n.Core.Shortcuts.Add.title
}
// MARK: UITableViewController

View File

@ -192,7 +192,7 @@ class ShortcutsViewController: UITableViewController, INUIAddVoiceShortcutViewCo
case .addShortcut:
cell.applyAction(.current)
cell.leftText = L10n.App.Shortcuts.Edit.Cells.AddShortcut.caption
cell.leftText = L10n.Core.Shortcuts.Edit.Cells.AddShortcut.caption
cell.accessoryType = .none
cell.isTappable = true
}

View File

@ -22,44 +22,3 @@
// You should have received a copy of the GNU General Public License
// along with Passepartout. If not, see <http://www.gnu.org/licenses/>.
//
"organizer.cells.add_provider.caption" = "Add new provider";
"organizer.cells.add_host.caption" = "Add from Files";
"organizer.cells.import_host.caption" = "Add from imported";
"wizards.host.cells.title_input.caption" = "Title";
"wizards.host.sections.existing.header" = "Existing profiles";
"imported_hosts.title" = "Imported hosts";
"service.sections.vpn.header" = "VPN";
"service.sections.status.header" = "Connection";
"service.sections.configuration.header" = "Configuration";
"service.cells.vpn_service.caption" = "Enabled";
"service.cells.provider.refresh.caption" = "Refresh infrastructure";
"service.cells.host.parameters.caption" = "Parameters";
"service.cells.trusted_add_wifi.caption" = "Add Wi-Fi";
"service.alerts.location.message.denied" = "You must allow location access to trust this Wi-Fi network. Go to iOS settings and review your location permissions for Passepartout.";
"service.alerts.location.button.settings" = "Settings";
"account.sections.credentials.header" = "Credentials";
"endpoint.sections.location_addresses.header" = "Addresses";
"endpoint.sections.location_protocols.header" = "Protocols";
"provider.pool.actions.favorite" = "Favorite";
"provider.pool.actions.unfavorite" = "Unfavorite";
"provider.pool.sections.empty_favorites.footer" = "Swipe left on a location to add or remove it from Favorites.";
"provider.preset.cells.tech_details.caption" = "Technical details";
"network_settings.cells.add_dns_server.caption" = "Add address";
"network_settings.cells.add_dns_domain.caption" = "Add search domain";
"network_settings.cells.proxy_bypass.caption" = "Bypass domain";
"network_settings.cells.add_proxy_bypass.caption" = "Add bypass domain";
"shortcuts.add.title" = "Add shortcut";
"shortcuts.edit.title" = "Manage shortcuts";
"shortcuts.edit.cells.add_shortcut.caption" = "Add shortcut";

View File

@ -775,6 +775,16 @@ internal enum L10n {
}
}
}
internal enum Provider {
internal enum Pool {
internal enum Actions {
/// Favorite
internal static let favorite = L10n.tr("Core", "provider.pool.actions.favorite")
/// Unfavorite
internal static let unfavorite = L10n.tr("Core", "provider.pool.actions.unfavorite")
}
}
}
internal enum Purchase {
/// Purchase
internal static let title = L10n.tr("Core", "purchase.title")
@ -918,6 +928,10 @@ internal enum L10n {
/// Preset
internal static let caption = L10n.tr("Core", "service.cells.provider.preset.caption")
}
internal enum Refresh {
/// Refresh infrastructure
internal static let caption = L10n.tr("Core", "service.cells.provider.refresh.caption")
}
}
internal enum Reconnect {
/// Reconnect

View File

@ -107,6 +107,9 @@
"organizer.cells.translate.caption" = "Offer to translate";
"organizer.cells.about.caption" = "About %@";
"organizer.cells.uninstall.caption" = "Remove VPN configuration";
"organizer.cells.add_provider.caption" = "Add new provider";
"organizer.cells.add_host.caption" = "Add from Files";
"organizer.cells.import_host.caption" = "Add from imported";
"organizer.alerts.exhausted_providers.message" = "You have created profiles for any available provider.";
"organizer.alerts.add_host.message" = "Open an URL to an .ovpn configuration file from Safari, Mail or another app to set up a host profile.\n\nYou can also import an .ovpn with iTunes File Sharing.";
"organizer.alerts.cannot_donate.message" = "There is no payment method configured on this device.";
@ -114,10 +117,17 @@
"wizards.provider.cells.update_list.caption" = "Update list";
"wizards.provider.alerts.unavailable.message" = "Could not download provider infrastructure, please retry later.";
"wizards.host.sections.existing.header" = "Existing profiles";
"wizards.host.cells.title_input.caption" = "Title";
"wizards.host.alerts.existing.message" = "A host profile with the same title already exists. Replace it?";
"imported_hosts.title" = "Imported hosts";
"service.welcome.message" = "Welcome to Passepartout!\n\nUse the organizer to add a new profile.";
"service.sections.vpn.header" = "VPN";
"service.sections.vpn.footer" = "The connection will be established whenever necessary.";
"service.sections.status.header" = "Connection";
"service.sections.configuration.header" = "Configuration";
"service.sections.provider_infrastructure.footer" = "Last updated on %@.";
"service.sections.vpn_survives_sleep.footer" = "Disable to improve battery usage, at the expense of occasional slowdowns due to wake-up reconnections.";
"service.sections.vpn_resolves_hostname.footer" = "Preferred in most networks and required in some IPv6 networks. Disable where DNS is blocked, or to speed up negotiation when DNS is slow to respond.";
@ -126,11 +136,15 @@
"service.sections.diagnostics.header" = "Diagnostics";
"service.sections.diagnostics.footer" = "Masking status will be effective after reconnecting. Network data are hostnames, IP addresses, routing, SSID. Credentials and private keys are not logged regardless.";
"service.cells.use_profile.caption" = "Use this profile";
"service.cells.vpn_service.caption" = "Enabled";
"service.cells.connection_status.caption" = "Status";
"service.cells.host.parameters.caption" = "Parameters";
"service.cells.provider.pool.caption" = "Location";
"service.cells.provider.preset.caption" = "Preset";
"service.cells.provider.refresh.caption" = "Refresh infrastructure";
"service.cells.vpn_survives_sleep.caption" = "Keep alive on sleep";
"service.cells.vpn_resolves_hostname.caption" = "Resolve provider hostname";
"service.cells.trusted_add_wifi.caption" = "Add Wi-Fi";
"service.cells.trusted_mobile.caption" = "Cellular network";
"service.cells.trusted_policy.caption" = "Trust disables VPN";
"service.cells.test_connectivity.caption" = "Test connectivity";
@ -159,8 +173,17 @@
"service.alerts.download.message" = "%@ requires the download of additional configuration files.\n\nConfirm to start the download.";
"service.alerts.download.failed" = "Failed to download configuration files. %@";
"service.alerts.download.hud.extracting" = "Extracting files, please be patient...";
"service.alerts.location.message.denied" = "You must allow location access to trust this Wi-Fi network. Go to iOS settings and review your location permissions for Passepartout.";
"service.alerts.location.button.settings" = "Settings";
"provider.pool.sections.empty_favorites.footer" = "Swipe left on a location to add or remove it from Favorites.";
"provider.pool.actions.favorite" = "Favorite";
"provider.pool.actions.unfavorite" = "Unfavorite";
"provider.preset.cells.tech_details.caption" = "Technical details";
"account.title" = "Account";
"account.sections.credentials.header" = "Credentials";
"account.sections.guidance.footer.infrastructure.default.web" = "Use your %@ website credentials.";
"account.sections.guidance.footer.infrastructure.default.specific" = "Use your %@ service credentials, which may differ from website credentials.";
"account.sections.guidance.footer.infrastructure.mullvad" = "Use your %@ website credentials. Your username is usually numeric (without spaces).";
@ -179,10 +202,16 @@
"account.cells.signup.caption" = "Register with %@";
"endpoint.title" = "Endpoint";
"endpoint.sections.location_addresses.header" = "Addresses";
"endpoint.sections.location_protocols.header" = "Protocols";
"endpoint.cells.any_address.caption" = "Automatic";
"endpoint.cells.any_protocol.caption" = "Automatic";
"network_settings.title" = "Network settings";
"network_settings.cells.add_dns_server.caption" = "Add address";
"network_settings.cells.add_dns_domain.caption" = "Add search domain";
"network_settings.cells.proxy_bypass.caption" = "Bypass domain";
"network_settings.cells.add_proxy_bypass.caption" = "Add bypass domain";
"configuration.sections.communication.header" = "Communication";
"configuration.sections.reset.footer" = "If you ended up with broken connectivity after changing the communication parameters, tap to revert to the original configuration.";
@ -226,6 +255,7 @@
"debug_log.buttons.next" = "Next";
"debug_log.alerts.empty_log.message" = "The debug log is empty.";
"shortcuts.add.title" = "Add shortcut";
"shortcuts.add.sections.vpn.header" = "VPN";
"shortcuts.add.sections.wifi.header" = "Wi-Fi";
"shortcuts.add.sections.cellular.header" = "Cellular";
@ -238,7 +268,9 @@
"shortcuts.add.cells.untrust_cellular.caption" = "Untrust cellular network";
"shortcuts.add.alerts.no_profiles.message" = "There is no profile to connect to.";
"shortcuts.edit.title" = "Manage shortcuts";
"shortcuts.edit.sections.all.header" = "Existing shortcuts";
"shortcuts.edit.cells.add_shortcut.caption" = "Add shortcut";
"purchase.title" = "Purchase";
"purchase.sections.products.footer" = "Every product is a one-time purchase. Provider purchases do not include a VPN subscription.";