diff --git a/Cable/Base.lproj/Localizable.strings b/Cable/Base.lproj/Localizable.strings index 2a7614a..c81eba2 100644 --- a/Cable/Base.lproj/Localizable.strings +++ b/Cable/Base.lproj/Localizable.strings @@ -26,6 +26,21 @@ "battery.bank.warning.voltage.short" = "Voltage"; "battery.editor.advanced.usable_capacity.footer_default" = "Defaults to %@ based on chemistry."; "battery.editor.advanced.usable_capacity.footer_override" = "Override active. Chemistry default remains %@."; +"battery.editor.advanced.charge_voltage.helper" = "Set the maximum recommended charging voltage."; +"battery.editor.advanced.cutoff_voltage.helper" = "Set the minimum safe discharge voltage."; +"battery.editor.advanced.temperature_range.helper" = "Define the recommended operating temperature range."; +"battery.editor.alert.charge_voltage.message" = "Enter charge voltage in volts (V)"; +"battery.editor.alert.charge_voltage.placeholder" = "Charge Voltage"; +"battery.editor.alert.charge_voltage.title" = "Edit Charge Voltage"; +"battery.editor.alert.cutoff_voltage.message" = "Enter cut-off voltage in volts (V)"; +"battery.editor.alert.cutoff_voltage.placeholder" = "Cut-off Voltage"; +"battery.editor.alert.cutoff_voltage.title" = "Edit Cut-off Voltage"; +"battery.editor.alert.maximum_temperature.message" = "Enter maximum temperature in degrees Celsius (\u00B0C)"; +"battery.editor.alert.maximum_temperature.placeholder" = "Maximum Temperature (\u00B0C)"; +"battery.editor.alert.maximum_temperature.title" = "Edit Maximum Temperature"; +"battery.editor.alert.minimum_temperature.message" = "Enter minimum temperature in degrees Celsius (\u00B0C)"; +"battery.editor.alert.minimum_temperature.placeholder" = "Minimum Temperature (\u00B0C)"; +"battery.editor.alert.minimum_temperature.title" = "Edit Minimum Temperature"; "battery.editor.alert.cancel" = "Cancel"; "battery.editor.alert.capacity.message" = "Enter capacity in amp-hours (Ah)"; "battery.editor.alert.capacity.placeholder" = "Capacity"; @@ -47,6 +62,11 @@ "battery.editor.section.advanced" = "Advanced"; "battery.editor.section.summary" = "Summary"; "battery.editor.slider.capacity" = "Capacity"; +"battery.editor.slider.charge_voltage" = "Charge Voltage"; +"battery.editor.slider.cutoff_voltage" = "Cut-off Voltage"; +"battery.editor.slider.temperature_range" = "Temperature Range"; +"battery.editor.slider.temperature_range.max" = "Maximum"; +"battery.editor.slider.temperature_range.min" = "Minimum"; "battery.editor.slider.usable_capacity" = "Usable Capacity (%)"; "battery.editor.slider.voltage" = "Nominal Voltage"; "battery.editor.title" = "Battery Setup"; @@ -222,6 +242,11 @@ "cable.pro.privacy.label" = "Privacy"; "cable.pro.terms.url" = "https://voltplan.app/terms"; "cable.pro.privacy.url" = "https://voltplan.app/privacy"; +"cable.pro.paywall.title" = "Cable PRO"; +"cable.pro.paywall.subtitle" = "Cable PRO enables more configuration options for loads, batteries and chargers."; +"cable.pro.feature.dutyCycle" = "Duty-cycle aware cable calculators"; +"cable.pro.feature.batteryCapacity" = "Configure usable battery capacity"; +"cable.pro.feature.usageBased" = "Usage based calculations"; "cable.pro.button.unlock" = "Unlock Now"; "cable.pro.button.freeTrial" = "Start Free Trial"; "cable.pro.button.unlocked" = "Unlocked"; diff --git a/Cable/Batteries/BatteryEditorView.swift b/Cable/Batteries/BatteryEditorView.swift index aabc50d..cd5aceb 100644 --- a/Cable/Batteries/BatteryEditorView.swift +++ b/Cable/Batteries/BatteryEditorView.swift @@ -1000,7 +1000,7 @@ struct BatteryEditorView: View { Button { showingProUpsell = true } label: { - Text("Get Cable Pro") + Text("Get Cable PRO") .font(.callout.weight(.semibold)) .frame(maxWidth: .infinity) .padding(.vertical, 6) diff --git a/Cable/Loads/CalculatorView.swift b/Cable/Loads/CalculatorView.swift index 35af11a..f6d0503 100644 --- a/Cable/Loads/CalculatorView.swift +++ b/Cable/Loads/CalculatorView.swift @@ -1074,7 +1074,7 @@ struct CalculatorView: View { Button { showingProUpsell = true } label: { - Text("Get Cable Pro") + Text("Get Cable PRO") .font(.callout.weight(.semibold)) .frame(maxWidth: .infinity) .padding(.vertical, 6) diff --git a/Cable/Paywall/CableProPaywallView.swift b/Cable/Paywall/CableProPaywallView.swift index e435955..4d827bb 100644 --- a/Cable/Paywall/CableProPaywallView.swift +++ b/Cable/Paywall/CableProPaywallView.swift @@ -192,9 +192,9 @@ struct CableProPaywallView: View { private var header: some View { VStack(alignment: .leading, spacing: 12) { - Text("Unlock Cable PRO") + Text(localizedString("cable.pro.paywall.title", defaultValue: "Unlock Cable PRO")) .font(.largeTitle.bold()) - Text("Keep advanced calculations available and get every new tool the moment it ships.") + Text(localizedString("cable.pro.paywall.subtitle", defaultValue: "Cable PRO enables more configuration options for loads, batteries and chargers.")) .font(.body) .foregroundStyle(.secondary) .fixedSize(horizontal: false, vertical: true) @@ -204,9 +204,9 @@ struct CableProPaywallView: View { private var featureList: some View { VStack(alignment: .leading, spacing: 10) { - paywallFeature(text: "Duty-cycle aware cable calculators", icon: "bolt.fill") - paywallFeature(text: "Full BOM exports & sourcing help", icon: "list.clipboard") - paywallFeature(text: "Early access to new tools & units", icon: "sparkles") + paywallFeature(text: localizedString("cable.pro.feature.dutyCycle", defaultValue: "Duty-cycle aware cable calculators"), icon: "bolt.fill") + paywallFeature(text: localizedString("cable.pro.feature.batteryCapacity", defaultValue: "Configure usable battery capacity"), icon: "list.clipboard") + paywallFeature(text: localizedString("cable.pro.feature.usageBased", defaultValue: "Usage based calculations"), icon: "sparkles") } .frame(maxWidth: .infinity, alignment: .leading) } diff --git a/Cable/SettingsView.swift b/Cable/SettingsView.swift index 419055f..13c1783 100644 --- a/Cable/SettingsView.swift +++ b/Cable/SettingsView.swift @@ -30,7 +30,7 @@ struct SettingsView: View { } .pickerStyle(.segmented) } - Section("Cable Pro") { + Section("Cable PRO") { proSectionContent } Section { diff --git a/Cable/de.lproj/Localizable.strings b/Cable/de.lproj/Localizable.strings index c20ee15..6ca5ac9 100644 --- a/Cable/de.lproj/Localizable.strings +++ b/Cable/de.lproj/Localizable.strings @@ -86,6 +86,21 @@ "battery.bank.warning.voltage.short" = "Spannung"; "battery.editor.advanced.usable_capacity.footer_default" = "Standardwert %@ basierend auf der Chemie."; "battery.editor.advanced.usable_capacity.footer_override" = "Überschreibung aktiv. Chemie-Standard bleibt %@."; +"battery.editor.advanced.charge_voltage.helper" = "Lege die maximal empfohlene Ladespannung fest."; +"battery.editor.advanced.cutoff_voltage.helper" = "Lege die minimale sichere Entladespannung fest."; +"battery.editor.advanced.temperature_range.helper" = "Definiere den empfohlenen Betriebstemperaturbereich."; +"battery.editor.alert.charge_voltage.message" = "Gib die Ladespannung in Volt (V) ein."; +"battery.editor.alert.charge_voltage.placeholder" = "Ladespannung"; +"battery.editor.alert.charge_voltage.title" = "Ladespannung bearbeiten"; +"battery.editor.alert.cutoff_voltage.message" = "Gib die Abschaltspannung in Volt (V) ein."; +"battery.editor.alert.cutoff_voltage.placeholder" = "Abschaltspannung"; +"battery.editor.alert.cutoff_voltage.title" = "Abschaltspannung bearbeiten"; +"battery.editor.alert.maximum_temperature.message" = "Gib die Höchsttemperatur in Grad Celsius (\u00B0C) ein."; +"battery.editor.alert.maximum_temperature.placeholder" = "Höchsttemperatur (\u00B0C)"; +"battery.editor.alert.maximum_temperature.title" = "Höchsttemperatur bearbeiten"; +"battery.editor.alert.minimum_temperature.message" = "Gib die Mindesttemperatur in Grad Celsius (\u00B0C) ein."; +"battery.editor.alert.minimum_temperature.placeholder" = "Mindesttemperatur (\u00B0C)"; +"battery.editor.alert.minimum_temperature.title" = "Mindesttemperatur bearbeiten"; "battery.editor.alert.cancel" = "Abbrechen"; "battery.editor.alert.capacity.message" = "Kapazität in Amperestunden (Ah) eingeben"; "battery.editor.alert.capacity.placeholder" = "Kapazität"; @@ -107,6 +122,11 @@ "battery.editor.section.advanced" = "Erweitert"; "battery.editor.section.summary" = "Übersicht"; "battery.editor.slider.capacity" = "Kapazität"; +"battery.editor.slider.charge_voltage" = "Ladespannung"; +"battery.editor.slider.cutoff_voltage" = "Abschaltspannung"; +"battery.editor.slider.temperature_range" = "Temperaturbereich"; +"battery.editor.slider.temperature_range.max" = "Maximum"; +"battery.editor.slider.temperature_range.min" = "Minimum"; "battery.editor.slider.usable_capacity" = "Nutzbare Kapazität (%)"; "battery.editor.slider.voltage" = "Nennspannung"; "battery.editor.title" = "Batterie einrichten"; @@ -268,7 +288,7 @@ "tab.overview" = "Übersicht"; "units.imperial.display" = "Imperial (AWG, ft)"; "units.metric.display" = "Metrisch (mm², m)"; -"settings.pro.cta.description" = "Cable PRO hält erweiterte Berechnungen und neue Werkzeuge verfügbar."; +"settings.pro.cta.description" = "Cable PRO ermöglicht detailliertere Einstellungen für Verbraucher, Batterien und Ladegeräte."; "settings.pro.cta.button" = "Cable PRO abonnieren"; "settings.pro.renewal.date" = "Nächste Verlängerung am %@."; "settings.pro.trial.remaining" = "%@ verbleibend in der Testphase."; @@ -282,6 +302,11 @@ "cable.pro.privacy.label" = "Datenschutz"; "cable.pro.terms.url" = "https://voltplan.app/terms"; "cable.pro.privacy.url" = "https://voltplan.app/privacy"; +"cable.pro.paywall.title" = "Cable PRO"; +"cable.pro.paywall.subtitle" = "Cable PRO bietet mehr Konfigurationsoptionen für Verbraucher, Batterien und Ladegeräte."; +"cable.pro.feature.dutyCycle" = "Kabelberechnungen mit Einschaltdauer"; +"cable.pro.feature.batteryCapacity" = "Verfügbare Batteriekapazität konfigurieren"; +"cable.pro.feature.usageBased" = "Nutzungsbasierte Berechnungen"; "cable.pro.button.unlock" = "Jetzt freischalten"; "cable.pro.button.freeTrial" = "Kostenlose Testphase starten"; "cable.pro.button.unlocked" = "Bereits aktiviert"; diff --git a/Cable/es.lproj/Localizable.strings b/Cable/es.lproj/Localizable.strings index caca2e4..fdfd823 100644 --- a/Cable/es.lproj/Localizable.strings +++ b/Cable/es.lproj/Localizable.strings @@ -217,10 +217,18 @@ "battery.editor.slider.voltage" = "Voltaje nominal"; "battery.editor.slider.capacity" = "Capacidad"; "battery.editor.slider.usable_capacity" = "Capacidad utilizable (%)"; +"battery.editor.slider.charge_voltage" = "Voltaje de carga"; +"battery.editor.slider.cutoff_voltage" = "Voltaje de corte"; +"battery.editor.slider.temperature_range" = "Rango de temperatura"; +"battery.editor.slider.temperature_range.min" = "Mínimo"; +"battery.editor.slider.temperature_range.max" = "Máximo"; "battery.editor.section.advanced" = "Avanzado"; "battery.editor.button.reset_default" = "Restablecer"; "battery.editor.advanced.usable_capacity.footer_default" = "Valor predeterminado %@ basado en la química."; "battery.editor.advanced.usable_capacity.footer_override" = "Sobrescritura activa. El valor predeterminado por química sigue siendo %@."; +"battery.editor.advanced.charge_voltage.helper" = "Establece el voltaje máximo de carga recomendado."; +"battery.editor.advanced.cutoff_voltage.helper" = "Establece el voltaje mínimo seguro de descarga."; +"battery.editor.advanced.temperature_range.helper" = "Define el rango de temperatura de operación recomendado."; "battery.editor.alert.voltage.title" = "Editar voltaje nominal"; "battery.editor.alert.voltage.placeholder" = "Voltaje"; "battery.editor.alert.voltage.message" = "Introduce el voltaje en voltios (V)"; @@ -230,6 +238,18 @@ "battery.editor.alert.usable_capacity.title" = "Editar capacidad utilizable"; "battery.editor.alert.usable_capacity.placeholder" = "Capacidad utilizable (%)"; "battery.editor.alert.usable_capacity.message" = "Introduce el porcentaje de capacidad utilizable (%)"; +"battery.editor.alert.charge_voltage.title" = "Editar voltaje de carga"; +"battery.editor.alert.charge_voltage.placeholder" = "Voltaje de carga"; +"battery.editor.alert.charge_voltage.message" = "Introduce el voltaje de carga en voltios (V)."; +"battery.editor.alert.cutoff_voltage.title" = "Editar voltaje de corte"; +"battery.editor.alert.cutoff_voltage.placeholder" = "Voltaje de corte"; +"battery.editor.alert.cutoff_voltage.message" = "Introduce el voltaje de corte en voltios (V)."; +"battery.editor.alert.minimum_temperature.title" = "Editar temperatura mínima"; +"battery.editor.alert.minimum_temperature.placeholder" = "Temperatura mínima (\u00B0C)"; +"battery.editor.alert.minimum_temperature.message" = "Introduce la temperatura mínima en grados Celsius (\u00B0C)."; +"battery.editor.alert.maximum_temperature.title" = "Editar temperatura máxima"; +"battery.editor.alert.maximum_temperature.placeholder" = "Temperatura máxima (\u00B0C)"; +"battery.editor.alert.maximum_temperature.message" = "Introduce la temperatura máxima en grados Celsius (\u00B0C)."; "battery.editor.alert.cancel" = "Cancelar"; "battery.editor.alert.save" = "Guardar"; "battery.editor.default_name" = "Nueva batería"; @@ -279,3 +299,9 @@ "chargers.title" = "Cargadores para %@"; "chargers.subtitle" = "Los componentes de carga estarán disponibles pronto."; + +"cable.pro.paywall.title" = "Cable PRO"; +"cable.pro.paywall.subtitle" = "Cable PRO permite más opciones de configuración para cargas, baterías y cargadores."; +"cable.pro.feature.dutyCycle" = "Calculadoras de cables conscientes del ciclo de trabajo"; +"cable.pro.feature.batteryCapacity" = "Configura la capacidad utilizable de la batería"; +"cable.pro.feature.usageBased" = "Cálculos basados en el uso"; diff --git a/Cable/fr.lproj/Localizable.strings b/Cable/fr.lproj/Localizable.strings index afadfc1..26f3b4e 100644 --- a/Cable/fr.lproj/Localizable.strings +++ b/Cable/fr.lproj/Localizable.strings @@ -217,10 +217,18 @@ "battery.editor.slider.voltage" = "Tension nominale"; "battery.editor.slider.capacity" = "Capacité"; "battery.editor.slider.usable_capacity" = "Capacité utilisable (%)"; +"battery.editor.slider.charge_voltage" = "Tension de charge"; +"battery.editor.slider.cutoff_voltage" = "Tension de coupure"; +"battery.editor.slider.temperature_range" = "Plage de température"; +"battery.editor.slider.temperature_range.min" = "Minimum"; +"battery.editor.slider.temperature_range.max" = "Maximum"; "battery.editor.section.advanced" = "Avancé"; "battery.editor.button.reset_default" = "Réinitialiser"; "battery.editor.advanced.usable_capacity.footer_default" = "Valeur par défaut %@ selon la chimie."; "battery.editor.advanced.usable_capacity.footer_override" = "Remplacement actif. La valeur par défaut liée à la chimie reste %@."; +"battery.editor.advanced.charge_voltage.helper" = "Définissez la tension de charge maximale recommandée."; +"battery.editor.advanced.cutoff_voltage.helper" = "Définissez la tension minimale de décharge sûre."; +"battery.editor.advanced.temperature_range.helper" = "Définissez la plage de température de fonctionnement recommandée."; "battery.editor.alert.voltage.title" = "Modifier la tension nominale"; "battery.editor.alert.voltage.placeholder" = "Tension"; "battery.editor.alert.voltage.message" = "Saisissez la tension en volts (V)"; @@ -230,6 +238,18 @@ "battery.editor.alert.usable_capacity.title" = "Modifier la capacité utilisable"; "battery.editor.alert.usable_capacity.placeholder" = "Capacité utilisable (%)"; "battery.editor.alert.usable_capacity.message" = "Saisissez le pourcentage de capacité utilisable (%)"; +"battery.editor.alert.charge_voltage.title" = "Modifier la tension de charge"; +"battery.editor.alert.charge_voltage.placeholder" = "Tension de charge"; +"battery.editor.alert.charge_voltage.message" = "Saisissez la tension de charge en volts (V)."; +"battery.editor.alert.cutoff_voltage.title" = "Modifier la tension de coupure"; +"battery.editor.alert.cutoff_voltage.placeholder" = "Tension de coupure"; +"battery.editor.alert.cutoff_voltage.message" = "Saisissez la tension de coupure en volts (V)."; +"battery.editor.alert.minimum_temperature.title" = "Modifier la température minimale"; +"battery.editor.alert.minimum_temperature.placeholder" = "Température minimale (\u00B0C)"; +"battery.editor.alert.minimum_temperature.message" = "Saisissez la température minimale en degrés Celsius (\u00B0C)."; +"battery.editor.alert.maximum_temperature.title" = "Modifier la température maximale"; +"battery.editor.alert.maximum_temperature.placeholder" = "Température maximale (\u00B0C)"; +"battery.editor.alert.maximum_temperature.message" = "Saisissez la température maximale en degrés Celsius (\u00B0C)."; "battery.editor.alert.cancel" = "Annuler"; "battery.editor.alert.save" = "Enregistrer"; "battery.editor.default_name" = "Nouvelle batterie"; @@ -279,3 +299,9 @@ "chargers.title" = "Chargeurs pour %@"; "chargers.subtitle" = "Les chargeurs seront bientôt disponibles ici."; + +"cable.pro.paywall.title" = "Cable PRO"; +"cable.pro.paywall.subtitle" = "Cable PRO offre davantage d'options de configuration pour les charges, les batteries et les chargeurs."; +"cable.pro.feature.dutyCycle" = "Calculs de câbles tenant compte du cycle d'utilisation"; +"cable.pro.feature.batteryCapacity" = "Configurez la capacité utilisable de la batterie"; +"cable.pro.feature.usageBased" = "Calculs basés sur l'utilisation"; diff --git a/Cable/nl.lproj/Localizable.strings b/Cable/nl.lproj/Localizable.strings index e5b8727..88a5e87 100644 --- a/Cable/nl.lproj/Localizable.strings +++ b/Cable/nl.lproj/Localizable.strings @@ -217,10 +217,18 @@ "battery.editor.slider.voltage" = "Nominale spanning"; "battery.editor.slider.capacity" = "Capaciteit"; "battery.editor.slider.usable_capacity" = "Beschikbare capaciteit (%)"; +"battery.editor.slider.charge_voltage" = "Laadspanning"; +"battery.editor.slider.cutoff_voltage" = "Afsluitspanning"; +"battery.editor.slider.temperature_range" = "Temperatuurbereik"; +"battery.editor.slider.temperature_range.min" = "Minimum"; +"battery.editor.slider.temperature_range.max" = "Maximum"; "battery.editor.section.advanced" = "Geavanceerd"; "battery.editor.button.reset_default" = "Resetten"; "battery.editor.advanced.usable_capacity.footer_default" = "Standaardwaarde %@ op basis van de chemie."; "battery.editor.advanced.usable_capacity.footer_override" = "Handmatige override actief. Chemische standaard blijft %@."; +"battery.editor.advanced.charge_voltage.helper" = "Stel de maximaal aanbevolen laadspanning in."; +"battery.editor.advanced.cutoff_voltage.helper" = "Stel de minimale veilige ontlaadspanning in."; +"battery.editor.advanced.temperature_range.helper" = "Bepaal het aanbevolen temperatuurbereik voor gebruik."; "battery.editor.alert.voltage.title" = "Nominale spanning bewerken"; "battery.editor.alert.voltage.placeholder" = "Spanning"; "battery.editor.alert.voltage.message" = "Voer de spanning in volt (V) in"; @@ -230,6 +238,18 @@ "battery.editor.alert.usable_capacity.title" = "Beschikbare capaciteit bewerken"; "battery.editor.alert.usable_capacity.placeholder" = "Beschikbare capaciteit (%)"; "battery.editor.alert.usable_capacity.message" = "Voer het percentage beschikbare capaciteit (%) in"; +"battery.editor.alert.charge_voltage.title" = "Laadspanning bewerken"; +"battery.editor.alert.charge_voltage.placeholder" = "Laadspanning"; +"battery.editor.alert.charge_voltage.message" = "Voer de laadspanning in volt (V) in."; +"battery.editor.alert.cutoff_voltage.title" = "Afsluitspanning bewerken"; +"battery.editor.alert.cutoff_voltage.placeholder" = "Afsluitspanning"; +"battery.editor.alert.cutoff_voltage.message" = "Voer de afsluitspanning in volt (V) in."; +"battery.editor.alert.minimum_temperature.title" = "Minimale temperatuur bewerken"; +"battery.editor.alert.minimum_temperature.placeholder" = "Minimale temperatuur (\u00B0C)"; +"battery.editor.alert.minimum_temperature.message" = "Voer de minimale temperatuur in graden Celsius (\u00B0C) in."; +"battery.editor.alert.maximum_temperature.title" = "Maximale temperatuur bewerken"; +"battery.editor.alert.maximum_temperature.placeholder" = "Maximale temperatuur (\u00B0C)"; +"battery.editor.alert.maximum_temperature.message" = "Voer de maximale temperatuur in graden Celsius (\u00B0C) in."; "battery.editor.alert.cancel" = "Annuleren"; "battery.editor.alert.save" = "Opslaan"; "battery.editor.default_name" = "Nieuwe batterij"; @@ -279,3 +299,9 @@ "chargers.title" = "Laders voor %@"; "chargers.subtitle" = "Ladercomponenten zijn binnenkort beschikbaar."; + +"cable.pro.paywall.title" = "Cable PRO"; +"cable.pro.paywall.subtitle" = "Cable PRO biedt meer configuratie-opties voor verbruikers, batterijen en laders."; +"cable.pro.feature.dutyCycle" = "Kabelberekeningen die rekening houden met de inschakelduur"; +"cable.pro.feature.batteryCapacity" = "Configureer bruikbare batterijcapaciteit"; +"cable.pro.feature.usageBased" = "Gebruiksgestuurde berekeningen";