Merge iOS strings into Core
This commit is contained in:
parent
366ff3ebf1
commit
cda9bdcc3f
|
@ -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 {
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.";
|
||||
|
|
Loading…
Reference in New Issue