mirror of
https://github.com/passepartoutvpn/passepartout-apple.git
synced 2024-12-24 18:32:36 +00:00
3540e1cb1a
- Split suggested product and full version - Hide sections with no products - Hide full features if no full products - Fail if no purchasable products
369 lines
17 KiB
Plaintext
369 lines
17 KiB
Plaintext
//
|
|
// Localizable.strings
|
|
// Passepartout
|
|
//
|
|
// Created by Davide De Rosa on 10/29/24.
|
|
// Copyright (c) 2024 Davide De Rosa. All rights reserved.
|
|
//
|
|
// https://github.com/passepartoutvpn
|
|
//
|
|
// This file is part of Passepartout.
|
|
//
|
|
// Passepartout is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// Passepartout is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with Passepartout. If not, see <http://www.gnu.org/licenses/>.
|
|
//
|
|
|
|
// MARK: Views
|
|
|
|
"views.about.title" = "About";
|
|
"views.about.links.title" = "Links";
|
|
"views.about.links.sections.support" = "Support";
|
|
"views.about.links.sections.web" = "Web";
|
|
"views.about.links.rows.join_community" = "Join community";
|
|
"views.about.links.rows.write_review" = "Write a review";
|
|
"views.about.links.rows.home_page" = "Home page";
|
|
"views.about.links.rows.disclaimer" = "Disclaimer";
|
|
"views.about.links.rows.privacy_policy" = "Privacy policy";
|
|
"views.about.credits.title" = "Credits";
|
|
"views.about.credits.licenses" = "Licenses";
|
|
"views.about.credits.notices" = "Notices";
|
|
"views.about.credits.translations" = "Translations";
|
|
|
|
"views.app.installed_profile.none.name" = "No profile";
|
|
"views.app.installed_profile.none.status" = "Tap list to connect";
|
|
"views.app.profile.no_modules" = "No active modules";
|
|
"views.app.folders.default" = "My profiles";
|
|
"views.app.folders.no_profiles" = "No profiles";
|
|
"views.app.folders.no_profiles.migrate" = "Migrate old profiles...";
|
|
"views.app.toolbar.new_profile.empty" = "Empty profile";
|
|
"views.app.toolbar.new_profile.provider" = "Provider";
|
|
"views.app.toolbar.import_profile" = "Import profile";
|
|
"views.app.toolbar.migrate_profiles" = "Migrate profiles";
|
|
"views.app.tv.header" = "Open %@ on your iOS or macOS device and enable the \"%@\" toggle of a profile to make it appear here.";
|
|
|
|
"views.app.profile_context.connect_to" = "Connect to";
|
|
|
|
"views.app_menu.items.quit" = "Quit %@";
|
|
|
|
"views.diagnostics.title" = "Diagnostics";
|
|
"views.diagnostics.sections.live" = "Live log";
|
|
"views.diagnostics.sections.tunnel" = "Tunnel logs";
|
|
"views.diagnostics.rows.app" = "App";
|
|
"views.diagnostics.rows.tunnel" = "Tunnel";
|
|
"views.diagnostics.rows.include_private_data" = "Include private data";
|
|
"views.diagnostics.rows.remove_tunnel_logs" = "Delete all logs";
|
|
"views.diagnostics.openvpn.rows.server_configuration" = "Server configuration";
|
|
"views.diagnostics.report_issue.title" = "Report issue";
|
|
"views.diagnostics.alerts.report_issue.email" = "The device is not configured to send e-mails.";
|
|
|
|
"views.donate.title" = "Make a donation";
|
|
"views.donate.sections.main.footer" = "If you want to display gratitude for my work, here are a couple of amounts you can donate instantly. You will only be charged once per donation, and you can donate multiple times.";
|
|
"views.donate.alerts.thank_you.message" = "This means a lot to me and I really hope you keep using and promoting this app.";
|
|
|
|
"views.migration.title" = "Migrate";
|
|
"views.migration.no_profiles" = "Nothing to migrate";
|
|
"views.migration.items.discard" = "Discard";
|
|
"views.migration.items.migrate" = "Proceed";
|
|
"views.migration.sections.main.header" = "Select below the profiles from old versions of %@ that you want to import. In case your profiles are stored on iCloud, they may take a while to synchronize. If you do not see them now, please come back later.";
|
|
"views.migration.alerts.delete.message" = "Do you want to discard these profiles? You will not be able to recover them later.\n\n%@";
|
|
|
|
"views.paywall.sections.required_features.header" = "Required features";
|
|
"views.paywall.sections.suggested_product.header" = "One-time purchase";
|
|
"views.paywall.sections.full_products.header" = "Full version";
|
|
"views.paywall.sections.all_features.header" = "Full version includes";
|
|
"views.paywall.sections.restore.header" = "Restore";
|
|
"views.paywall.sections.restore.footer" = "If you bought this app or feature in the past, you can restore your purchases.";
|
|
"views.paywall.rows.restore_purchases" = "Restore purchases";
|
|
"views.paywall.alerts.confirmation.title" = "Purchase required";
|
|
"views.paywall.alerts.confirmation.message" = "This profile requires paid features to work.";
|
|
"views.paywall.alerts.restricted.title" = "Restricted";
|
|
"views.paywall.alerts.restricted.message" = "Some features are unavailable in this build.";
|
|
"views.paywall.alerts.pending.message" = "The purchase is pending external confirmation. The feature will be credited upon approval.";
|
|
|
|
"views.preferences.launches_on_login" = "Launch on login";
|
|
"views.preferences.launches_on_login.footer" = "Open the app in background after login.";
|
|
"views.preferences.keeps_in_menu" = "Keep in menu bar";
|
|
"views.preferences.keeps_in_menu.footer" = "Enable this to keep the app in the menu bar after closing it.";
|
|
"views.preferences.locks_in_background" = "Lock in background";
|
|
"views.preferences.locks_in_background.footer" = "Lock the app with FaceID when sent to the background.";
|
|
"views.preferences.erase_icloud" = "Erase iCloud store";
|
|
"views.preferences.erase_icloud.footer" = "To erase the iCloud store securely, do so on all your synced devices. This will not affect local profiles.";
|
|
|
|
"views.profile.sections.name.footer" = "Use this name to create your VPN automations from the Shortcuts app.";
|
|
"views.profile.rows.add_module" = "Add module";
|
|
"views.profile.module_list.section.footer" = "Drag modules to rearrange them, as their order determines priority.";
|
|
"views.profile.alerts.purchase.buttons.ok" = "Save anyway";
|
|
|
|
"views.providers.no_provider" = "None";
|
|
"views.providers.select_provider" = "Select a provider";
|
|
"views.providers.select_entity" = "Select";
|
|
"views.providers.only_favorites" = "Only favorites";
|
|
"views.providers.clear_filters" = "Clear filters";
|
|
"views.providers.refresh_infrastructure" = "Refresh infrastructure";
|
|
"views.providers.last_updated" = "Last updated on %@";
|
|
"views.providers.last_updated.loading" = "Loading...";
|
|
|
|
"views.purchased.title" = "Purchased";
|
|
"views.purchased.sections.download.header" = "First download";
|
|
"views.purchased.sections.products.header" = "Purchases";
|
|
"views.purchased.sections.features.header" = "Eligible features";
|
|
"views.purchased.rows.build_number" = "Build number";
|
|
"views.purchased.rows.download_date" = "Download date";
|
|
"views.purchased.no_purchases" = "No purchases";
|
|
|
|
"views.ui.connection_status.on_demand_suffix" = " (on-demand)";
|
|
"views.ui.purchase_required.purchase.help" = "Purchase required";
|
|
"views.ui.purchase_required.restricted.help" = "Feature is restricted";
|
|
|
|
"views.version.extra" = "%@ is a project maintained by %@.\n\nSource code is publicly available on GitHub under the GPLv3, you can find links in the home page.";
|
|
|
|
"views.vpn.category.any" = "All categories";
|
|
"views.vpn.preset" = "Preset";
|
|
"views.vpn.no_servers" = "No servers";
|
|
|
|
// MARK: Views (Modules)
|
|
|
|
"modules.general.sections.storage.header" = "%@";
|
|
"modules.general.sections.storage.footer" = "Profiles are stored to %@ encrypted.";
|
|
"modules.general.sections.storage.footer.purchase.tv_beta" = "TV profiles do not work in beta builds.";
|
|
"modules.general.sections.storage.footer.purchase.tv_release" = "TV profiles do not work without a purchase.";
|
|
"modules.general.rows.shared" = "Enabled";
|
|
"modules.general.rows.shared.purchase" = "Share on iCloud";
|
|
"modules.general.rows.appletv" = "%@";
|
|
"modules.general.rows.appletv.purchase" = "Drop TV restriction";
|
|
"modules.general.rows.import_from_file" = "Import from file";
|
|
|
|
"modules.dns.servers.add" = "Add address";
|
|
"modules.dns.search_domains.add" = "Add domain";
|
|
"modules.http_proxy.bypass_domains.add" = "Add bypass domain";
|
|
|
|
"modules.ip.routes.include" = "Include route";
|
|
"modules.ip.routes.exclude" = "Exclude route";
|
|
"modules.ip.routes.included" = "Included routes";
|
|
"modules.ip.routes.excluded" = "Excluded routes";
|
|
"modules.ip.routes.add_family" = "Add %@";
|
|
|
|
"modules.on_demand.policy" = "Policy";
|
|
"modules.on_demand.policy.footer" = "Activate the VPN %@.";
|
|
"modules.on_demand.policy.footer.any" = "in any network";
|
|
"modules.on_demand.policy.footer.including" = "only in the networks below";
|
|
"modules.on_demand.policy.footer.excluding" = "except in the networks below";
|
|
"modules.on_demand.mobile" = "Mobile";
|
|
"modules.on_demand.ethernet" = "Ethernet";
|
|
"modules.on_demand.ssid.add" = "Add SSID";
|
|
|
|
"modules.openvpn.pull" = "Pull";
|
|
"modules.openvpn.redirect_gateway" = "Redirect gateway";
|
|
"modules.openvpn.credentials" = "Credentials";
|
|
"modules.openvpn.credentials.guidance.web" = "Use your account credentials.";
|
|
"modules.openvpn.credentials.guidance.specific" = "Use your specific OpenVPN credentials, which are not the same credentials you log in with.";
|
|
"modules.openvpn.credentials.guidance.link" = "See your OpenVPN credentials";
|
|
"modules.openvpn.remotes" = "Remotes";
|
|
"modules.openvpn.communication" = "Communication";
|
|
"modules.openvpn.cipher" = "Cipher";
|
|
"modules.openvpn.digest" = "Digest";
|
|
"modules.openvpn.compression" = "Compression";
|
|
"modules.openvpn.compression_framing" = "Framing";
|
|
"modules.openvpn.compression_algorithm" = "Algorithm";
|
|
"modules.openvpn.tls_wrap" = "Wrapping";
|
|
"modules.openvpn.eku" = "Extended verification";
|
|
"modules.openvpn.renegotiation" = "Renegotiation";
|
|
"modules.openvpn.randomize_endpoint" = "Randomize endpoint";
|
|
"modules.openvpn.randomize_hostname" = "Randomize hostname";
|
|
"modules.openvpn.credentials.interactive" = "Interactive";
|
|
"modules.openvpn.credentials.interactive.footer" = "On-demand will be disabled.";
|
|
"modules.openvpn.credentials.otp_method.approach.append" = "The OTP will be appended to the password.";
|
|
"modules.openvpn.credentials.otp_method.approach.encode" = "The OTP will be encoded in Base64 with the password.";
|
|
|
|
"modules.wireguard.provider_key" = "Private key";
|
|
"modules.wireguard.interface" = "Interface";
|
|
"modules.wireguard.peer" = "Peer #%d";
|
|
"modules.wireguard.preshared_key" = "Pre-shared key";
|
|
"modules.wireguard.allowed_ips" = "Allowed IPs";
|
|
|
|
// MARK: - Entities
|
|
|
|
"entities.tunnel_status.inactive" = "Inactive";
|
|
"entities.tunnel_status.activating" = "Activating";
|
|
"entities.tunnel_status.active" = "Active";
|
|
"entities.tunnel_status.deactivating" = "Deactivating";
|
|
|
|
// MARK: Entities (Modules)
|
|
|
|
"entities.dns.servers" = "Servers";
|
|
"entities.dns.search_domains" = "Search domains";
|
|
|
|
"entities.dns_protocol.cleartext" = "Cleartext";
|
|
"entities.dns_protocol.https" = "Over HTTPS";
|
|
"entities.dns_protocol.tls" = "Over TLS";
|
|
|
|
"entities.http_proxy.bypass_domains" = "Bypass domains";
|
|
|
|
"entities.on_demand.policy.any" = "All networks";
|
|
"entities.on_demand.policy.excluding" = "Excluding";
|
|
"entities.on_demand.policy.including" = "Including";
|
|
|
|
"entities.openvpn.compression_algorithm.other" = "Unsupported";
|
|
"entities.openvpn.otp_method.none" = "None";
|
|
"entities.openvpn.otp_method.append" = "Append";
|
|
"entities.openvpn.otp_method.encode" = "Encode";
|
|
|
|
// MARK: - Features
|
|
|
|
"features.appletv" = "%@";
|
|
"features.dns" = "%@ Settings";
|
|
"features.http_proxy" = "%@ Settings";
|
|
"features.interactiveLogin" = "Interactive Login";
|
|
"features.on_demand" = "On-Demand Rules";
|
|
"features.providers" = "All Providers";
|
|
"features.routing" = "Custom %@";
|
|
"features.sharing" = "%@";
|
|
|
|
// MARK: - Global
|
|
|
|
// MARK: Global (Actions)
|
|
|
|
"global.actions.cancel" = "Cancel";
|
|
"global.actions.connect" = "Connect";
|
|
"global.actions.delete" = "Delete";
|
|
"global.actions.disable" = "Disable";
|
|
"global.actions.disconnect" = "Disconnect";
|
|
"global.actions.duplicate" = "Duplicate";
|
|
"global.actions.edit" = "Edit";
|
|
"global.actions.enable" = "Enable";
|
|
"global.actions.hide" = "Hide";
|
|
"global.actions.purchase" = "Purchase";
|
|
"global.actions.remove" = "Delete";
|
|
"global.actions.restart" = "Restart";
|
|
"global.actions.save" = "Save";
|
|
"global.actions.select" = "Select";
|
|
"global.actions.show" = "Show";
|
|
|
|
// MARK: Global (Nouns)
|
|
|
|
"global.nouns.about" = "About";
|
|
"global.nouns.account" = "Account";
|
|
"global.nouns.address" = "Address";
|
|
"global.nouns.addresses" = "Addresses";
|
|
"global.nouns.any" = "Any";
|
|
"global.nouns.category" = "Category";
|
|
"global.nouns.certificate" = "Certificate";
|
|
"global.nouns.compression" = "Compression";
|
|
"global.nouns.connection" = "Connection";
|
|
"global.nouns.country" = "Country";
|
|
"global.nouns.default" = "Default";
|
|
"global.nouns.destination" = "Destination";
|
|
"global.nouns.disabled" = "Disabled";
|
|
"global.nouns.domain" = "Domain";
|
|
"global.nouns.done" = "Done";
|
|
"global.nouns.do_not_ask_again" = "Don't ask again";
|
|
"global.nouns.empty" = "Empty";
|
|
"global.nouns.enabled" = "Enabled";
|
|
"global.nouns.endpoint" = "Endpoint";
|
|
"global.nouns.filters" = "Filters";
|
|
"global.nouns.folder" = "Folder";
|
|
"global.nouns.gateway" = "Gateway";
|
|
"global.nouns.general" = "General";
|
|
"global.nouns.hostname" = "Hostname";
|
|
"global.nouns.interface" = "Interface";
|
|
"global.nouns.keep_alive" = "Keep-alive";
|
|
"global.nouns.key" = "Key";
|
|
"global.nouns.last_update" = "Last update";
|
|
"global.nouns.loading" = "Loading";
|
|
"global.nouns.method" = "Method";
|
|
"global.nouns.modules" = "Modules";
|
|
"global.nouns.n_seconds" = "%d seconds";
|
|
"global.nouns.name" = "Name";
|
|
"global.nouns.networks" = "Networks";
|
|
"global.nouns.no_content" = "No content";
|
|
"global.nouns.no_selection" = "No selection";
|
|
"global.nouns.none" = "None";
|
|
"global.nouns.ok" = "OK";
|
|
"global.nouns.on_demand" = "On-demand";
|
|
"global.nouns.other" = "Other";
|
|
"global.nouns.password" = "Password";
|
|
"global.nouns.port" = "Port";
|
|
"global.nouns.private_key" = "Private key";
|
|
"global.nouns.profile" = "Profile";
|
|
"global.nouns.protocol" = "Protocol";
|
|
"global.nouns.provider" = "Provider";
|
|
"global.nouns.public_key" = "Public key";
|
|
"global.nouns.region" = "Region";
|
|
"global.nouns.route" = "Route";
|
|
"global.nouns.routes" = "Routes";
|
|
"global.nouns.routing" = "Routing";
|
|
"global.nouns.server" = "Server";
|
|
"global.nouns.servers" = "Servers";
|
|
"global.nouns.settings" = "Settings";
|
|
"global.nouns.status" = "Status";
|
|
"global.nouns.subnet" = "Subnet";
|
|
"global.nouns.unknown" = "Unknown";
|
|
"global.nouns.username" = "Username";
|
|
"global.nouns.version" = "Version";
|
|
|
|
// MARK: Global (Placeholders)
|
|
|
|
"placeholders.profile.name" = "My profile";
|
|
"placeholders.on_demand.ssid" = "My SSID";
|
|
"placeholders.username" = "username";
|
|
"placeholders.secret" = "secret";
|
|
|
|
// MARK: Global (Alerts)
|
|
|
|
"alerts.community.message" = "Did you know that Passepartout has a subreddit? Subscribe for updates or to discuss issues, features, new platforms or whatever you like.\n\nIt's also a great way to show you care about this project.";
|
|
"alerts.community.subscribe" = "Subscribe now";
|
|
"alerts.community.dismiss" = "No, thanks";
|
|
"alerts.import.passphrase.message" = "Enter passphrase for '%@'.";
|
|
"alerts.import.passphrase.ok" = "Decrypt";
|
|
"alerts.providers.missing_server.message" = "No provider server selected. Please select a destination server on your iOS/macOS device.";
|
|
|
|
// MARK: Global (App errors)
|
|
|
|
"errors.app.default" = "Unable to complete operation.";
|
|
"errors.app.duplicate" = "Unable to duplicate profile '%@'.";
|
|
"errors.app.empty_products" = "Unable to fetch products, please retry later.";
|
|
"errors.app.empty_profile_name" = "Profile name is empty.";
|
|
"errors.app.import" = "Unable to import profiles.";
|
|
"errors.app.malformed_module" = "Module %@ is malformed. %@";
|
|
"errors.app.tunnel" = "Unable to execute tunnel operation.";
|
|
|
|
// MARK: Global (PassepartoutKit errors)
|
|
|
|
"errors.app.passepartout.connection_module_required" = "Routing module can only be enabled together with a connection.";
|
|
"errors.app.passepartout.corrupt_provider_module" = "Unable to connect to provider server (reason=%@).";
|
|
"errors.app.passepartout.default" = "Unable to complete operation (code=%@).";
|
|
"errors.app.passepartout.incompatible_modules" = "Some active modules are incompatible, try to only activate one of them.";
|
|
"errors.app.passepartout.invalid_fields" = "Invalid fields.";
|
|
"errors.app.passepartout.missing_provider_entity" = "No provider server selected.";
|
|
"errors.app.passepartout.no_active_modules" = "The profile has no active modules.";
|
|
"errors.app.passepartout.parsing" = "Unable to parse file.";
|
|
"errors.app.passepartout.provider_required" = "No provider selected.";
|
|
|
|
"errors.tunnel.auth" = "Auth failed";
|
|
"errors.tunnel.compression" = "Compression unsupported";
|
|
"errors.tunnel.dns" = "DNS failed";
|
|
"errors.tunnel.encryption" = "Encryption failed";
|
|
"errors.tunnel.generic" = "Failed";
|
|
"errors.tunnel.ineligible" = "Purchase required";
|
|
"errors.tunnel.routing" = "Missing routing";
|
|
"errors.tunnel.shutdown" = "Server shutdown";
|
|
"errors.tunnel.timeout" = "Timeout";
|
|
"errors.tunnel.tls" = "TLS failed";
|
|
|
|
// MARK: Global (Theme)
|
|
|
|
"theme.confirmation.ok" = "Confirm";
|
|
"theme.confirmation.cancel" = "Cancel";
|
|
"theme.confirmation.message" = "Are you sure you want to proceed with this operation?";
|
|
"theme.lock_screen.reason" = "%@ is locked";
|