Laurent 3 years ago
parent 6949d53596
commit 89d0adb448
  1. 30
      LeCountdown.xcodeproj/project.pbxproj
  2. 2
      LeCountdown/Base.lproj/SiriIntents.intentdefinition
  3. 2
      LeCountdown/Conductor.swift
  4. 5
      LeCountdown/Subscription/AppGuard.swift
  5. 4
      LeCountdown/Utils/TextToSpeechRecorder.swift
  6. 245
      LeCountdown/en.lproj/Localizable.strings
  7. 9
      LeCountdown/fr.lproj/Localizable.strings

@ -76,7 +76,6 @@
C473C30829A91BCC0056B38A /* fr.xcloc in Resources */ = {isa = PBXBuildFile; fileRef = C473C30629A91BCB0056B38A /* fr.xcloc */; };
C473C30929A91BCC0056B38A /* fr.xcloc in Resources */ = {isa = PBXBuildFile; fileRef = C473C30629A91BCB0056B38A /* fr.xcloc */; };
C473C31329A925D50056B38A /* SiriIntents.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = C473C31629A925D50056B38A /* SiriIntents.intentdefinition */; };
C473C31429A925D50056B38A /* SiriIntents.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = C473C31629A925D50056B38A /* SiriIntents.intentdefinition */; };
C473C31829A926F50056B38A /* LaunchWidget.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = C473C31C29A926F50056B38A /* LaunchWidget.intentdefinition */; };
C473C31929A926F50056B38A /* LaunchWidget.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = C473C31C29A926F50056B38A /* LaunchWidget.intentdefinition */; };
C473C31A29A926F50056B38A /* LaunchWidget.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = C473C31C29A926F50056B38A /* LaunchWidget.intentdefinition */; };
@ -158,6 +157,7 @@
C4BA2B6A29A4BE1800CB4FBA /* Date+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4BA2B6929A4BE1800CB4FBA /* Date+Extensions.swift */; };
C4BA2B7329A60CF000CB4FBA /* Shortcut.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4BA2B7229A60CF000CB4FBA /* Shortcut.swift */; };
C4BA2B7929A65C1400CB4FBA /* UIDevice+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4BA2B7829A65C1400CB4FBA /* UIDevice+Extensions.swift */; };
C4E5D66129B64C1B008E7465 /* SiriIntents.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = C473C31629A925D50056B38A /* SiriIntents.intentdefinition */; };
C4F8B1532987FE6F005C86A5 /* LaunchWidgetLiveActivity.swift in Sources */ = {isa = PBXBuildFile; fileRef = C438C7D72981216200BF3EF9 /* LaunchWidgetLiveActivity.swift */; };
C4F8B15729891271005C86A5 /* Conductor.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4F8B15629891271005C86A5 /* Conductor.swift */; };
C4F8B15929891528005C86A5 /* forest_stream.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = C4F8B15829891528005C86A5 /* forest_stream.mp3 */; };
@ -366,6 +366,7 @@
C4BA2B6B29A4C47100CB4FBA /* LeCountdown.0.6.2.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = LeCountdown.0.6.2.xcdatamodel; sourceTree = "<group>"; };
C4BA2B7229A60CF000CB4FBA /* Shortcut.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Shortcut.swift; sourceTree = "<group>"; };
C4BA2B7829A65C1400CB4FBA /* UIDevice+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIDevice+Extensions.swift"; sourceTree = "<group>"; };
C4E5D66329B64C7F008E7465 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/SiriIntents.strings; sourceTree = "<group>"; };
C4F8B15629891271005C86A5 /* Conductor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Conductor.swift; sourceTree = "<group>"; };
C4F8B15829891528005C86A5 /* forest_stream.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = forest_stream.mp3; sourceTree = "<group>"; };
C4F8B15E298961A7005C86A5 /* ReorderableForEach.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReorderableForEach.swift; sourceTree = "<group>"; };
@ -1145,6 +1146,7 @@
C4BA2AF82996A4F000CB4FBA /* CustomSound+CoreDataProperties.swift in Sources */,
C4F8B199298AC288005C86A5 /* Record+CoreDataClass.swift in Sources */,
C438C8012981327600BF3EF9 /* Persistence.swift in Sources */,
C4E5D66129B64C1B008E7465 /* SiriIntents.intentdefinition in Sources */,
C473C31A29A926F50056B38A /* LaunchWidget.intentdefinition in Sources */,
C4BA2B5D299FFAB000CB4FBA /* Logger.swift in Sources */,
C473C2FB29A8DC3A0056B38A /* LaunchWidgetAttributes.swift in Sources */,
@ -1154,7 +1156,6 @@
C4BA2B1E299BE6A100CB4FBA /* Interval+CoreDataClass.swift in Sources */,
C473C2FC29A8DC4B0056B38A /* Date+Extensions.swift in Sources */,
C473C2F429A8DAE70056B38A /* Model+Extensions.swift in Sources */,
C473C31429A925D50056B38A /* SiriIntents.intentdefinition in Sources */,
C445FA86298448720054D761 /* CoolPic.swift in Sources */,
C4BA2B4E299FCE0C00CB4FBA /* Stopwatch+CoreDataProperties.swift in Sources */,
C4BA2B23299BE82E00CB4FBA /* AbstractSoundTimer+CoreDataProperties.swift in Sources */,
@ -1196,6 +1197,7 @@
children = (
C473C32629AA307D0056B38A /* Base */,
C473C32829AA30890056B38A /* fr */,
C4E5D66329B64C7F008E7465 /* en */,
);
name = SiriIntents.intentdefinition;
sourceTree = "<group>";
@ -1360,8 +1362,8 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.staxriver.LeCountdown;
MARKETING_VERSION = 0.1;
PRODUCT_BUNDLE_IDENTIFIER = com.staxriver.LeCountdown2;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
@ -1393,8 +1395,8 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.staxriver.LeCountdown;
MARKETING_VERSION = 0.1;
PRODUCT_BUNDLE_IDENTIFIER = com.staxriver.LeCountdown2;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
@ -1496,8 +1498,8 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.staxriver.LeCountdown.LaunchWidget;
MARKETING_VERSION = 0.1;
PRODUCT_BUNDLE_IDENTIFIER = com.staxriver.LeCountdown2.LaunchWidget;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_EMIT_LOC_STRINGS = YES;
@ -1524,8 +1526,8 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.staxriver.LeCountdown.LaunchWidget;
MARKETING_VERSION = 0.1;
PRODUCT_BUNDLE_IDENTIFIER = com.staxriver.LeCountdown2.LaunchWidget;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_EMIT_LOC_STRINGS = YES;
@ -1551,8 +1553,8 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.staxriver.LeCountdown.LaunchIntents;
MARKETING_VERSION = 0.1;
PRODUCT_BUNDLE_IDENTIFIER = com.staxriver.LeCountdown2.LaunchIntents;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_EMIT_LOC_STRINGS = YES;
@ -1578,8 +1580,8 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.staxriver.LeCountdown.LaunchIntents;
MARKETING_VERSION = 0.1;
PRODUCT_BUNDLE_IDENTIFIER = com.staxriver.LeCountdown2.LaunchIntents;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_EMIT_LOC_STRINGS = YES;

@ -110,8 +110,6 @@
</array>
<key>INIntentResponseLastParameterTag</key>
<integer>2</integer>
<key>INIntentResponseOutput</key>
<string>timer</string>
<key>INIntentResponseParameters</key>
<array>
<dict>

@ -236,7 +236,7 @@ class Conductor: ObservableObject {
fileprivate func _createTimerIntent(_ timer: AbstractTimer) {
let intent = LaunchTimerIntent()
let invocationPhrase = "testooooo \(timer.defaultName)" // String(format: NSLocalizedString("Launch %@", comment: ""), timer.displayName)
let invocationPhrase = String(format: NSLocalizedString("Launch %@", comment: ""), timer.displayName)
intent.suggestedInvocationPhrase = String(format: invocationPhrase, timer.displayName)
intent.timer = TimerIdentifier(identifier: timer.stringId, display: timer.displayName)

@ -126,11 +126,6 @@ extension Notification.Name {
if let currentBestPlan = self.currentBestPlan, let plan = StorePlan(rawValue: currentBestPlan.productID) {
return plan
}
if let vf = Preferences.verifiedTransaction(),
vf.expiryDate > Date(), vf.graceDate > Date(),
let plan = StorePlan(rawValue: vf.productId) {
return plan
}
return .none
#endif
}

@ -20,8 +20,8 @@ class TextToSpeechRecorder {
let utterance = AVSpeechUtterance(string: speech)
utterance.voice = AVSpeechSynthesisVoice(language: "fr-FR")
synthesizer.speak(utterance)
return
// synthesizer.speak(utterance)
// return
var output: AVAudioFile?

@ -0,0 +1,245 @@
/* No comment provided by engineer. */
".create countdown" = ".Créer un minuteur";
/* No comment provided by engineer. */
".create stopwatch" = ".Créer un chrono";
/* No comment provided by engineer. */
"Activities" = "Activités";
/* No comment provided by engineer. */
"alarm" = "Alarme";
/* No comment provided by engineer. */
"All" = "Tout";
/* No comment provided by engineer. */
"Average duration" = "Durée moyenne";
/* No comment provided by engineer. */
"Black tea" = "Thé noir";
/* No comment provided by engineer. */
"Cancel" = "Annuler";
/* No comment provided by engineer. */
"Cancelled" = "Annulé";
/* No comment provided by engineer. */
"Cooking" = "Cuisine";
/* No comment provided by engineer. */
"Coundown" = "Minuteur";
/* No comment provided by engineer. */
"Count" = "Nombre";
/* No comment provided by engineer. */
"countdown" = "compteur";
/* No comment provided by engineer. */
"Create" = "Nouveau";
/* No comment provided by engineer. */
"Create a new countdown" = "Créer un nouveau minuteur";
/* No comment provided by engineer. */
"Create countdown" = "Créer un minuteur";
/* No comment provided by engineer. */
"Custom" = "Personnalisé";
/* No comment provided by engineer. */
"date" = "Date";
/* No comment provided by engineer. */
"Do you really want to delete?" = "Voulez-vous vraiment effacer ?";
/* No comment provided by engineer. */
"Do you wish to rename or create a new activity" = "Souhaitez-vous renommer ou créer une nouvelle activité ?";
/* No comment provided by engineer. */
"Don't show this again" = "Ne plus montrer";
/* No comment provided by engineer. */
"Done" = "Sauver";
/* No comment provided by engineer. */
"Duration" = "Durée";
/* No comment provided by engineer. */
"Edit" = "Editer";
/* No comment provided by engineer. */
"Edit alarm" = "Éditer alarme";
/* No comment provided by engineer. */
"Edit countdown" = "Éditer minuteur";
/* No comment provided by engineer. */
"Edit stopwatch" = "Éditer chrono";
/* No comment provided by engineer. */
"Fun" = "Fun";
/* No comment provided by engineer. */
"Green tea" = "Thé vert";
/* No comment provided by engineer. */
"haha" = "";
/* No comment provided by engineer. */
"Hard boiled eggs" = "Oeufs dur";
/* No comment provided by engineer. */
"Home" = "Kikai";
/* No comment provided by engineer. */
"It's time!" = "C'est l'heure !";
/* No comment provided by engineer. */
"Make sure your device is not on silent mode" = "Vérifiez que votre appareil n'est pas en mode silencieux";
/* No comment provided by engineer. */
"Meditation" = "Méditation";
/* No comment provided by engineer. */
"Medium boiled eggs" = "Oeufs mollets";
/* No comment provided by engineer. */
"Min" = "Min";
/* No comment provided by engineer. */
"Minutes" = "Minutes";
/* No comment provided by engineer. */
"Month" = "Mois";
/* No comment provided by engineer. */
"name" = "nom";
/* No comment provided by engineer. */
"Name (activates tracking)" = "Nom (active le suivi)";
/* No comment provided by engineer. */
"Name for tracking the activity" = "Nom pour suivre l'activité";
/* No comment provided by engineer. */
"Nap" = "Sieste";
/* No comment provided by engineer. */
"Nature" = "Nature";
/* No comment provided by engineer. */
"New activity" = "Nouvelle activité";
/* No comment provided by engineer. */
"New alarm" = "Nouvelle alarme";
/* No comment provided by engineer. */
"New countdown" = "Nouveau minuteur";
/* No comment provided by engineer. */
"New stopwatch" = "Nouveau chrono";
/* No comment provided by engineer. */
"No" = "Non";
/* No comment provided by engineer. */
"OK" = "OK";
/* No comment provided by engineer. */
"Other" = "Autre";
/* No comment provided by engineer. */
"Play sound on end" = "Jouer un son de fin";
/* No comment provided by engineer. */
"Presets" = "Préselection";
/* No comment provided by engineer. */
"Properties" = "Propriétes";
/* No comment provided by engineer. */
"Rename" = "Renommer";
/* No comment provided by engineer. */
"Repeat Count" = "Nombre de répétitions";
/* No comment provided by engineer. */
"Save" = "Sauvegarder";
/* No comment provided by engineer. */
"Seconds" = "Secondes";
/* No comment provided by engineer. */
"Show permissions" = "Voir permissions";
/* No comment provided by engineer. */
"Soft boiled eggs" = "Oeufs coque";
/* No comment provided by engineer. */
"Sound" = "Son";
/* sounds */
"sounds" = "sons";
/* No comment provided by engineer. */
"Sounds" = "Sons";
/* No comment provided by engineer. */
"Stats" = "Statistiques";
/* No comment provided by engineer. */
"Stop" = "Arrêter";
/* No comment provided by engineer. */
"stopwatch" = "chrono";
/* No comment provided by engineer. */
"Stopwatch" = "Chrono";
/* No comment provided by engineer. */
"Tea" = "Thé";
/* No comment provided by engineer. */
"Time" = "Temps";
/* No comment provided by engineer. */
"Time's up for %@!" = "C'est l'heure pour %@ !";
/* No comment provided by engineer. */
"Tooth brushing" = "Brossage de dent";
/* No comment provided by engineer. */
"value" = "valeur";
/* No comment provided by engineer. */
"Workout" = "Exercice";
/* No comment provided by engineer. */
"Year" = "Année";
/* No comment provided by engineer. */
"Yes" = "Oui";
"You can add widget for your timers and countdowns by modifying your home or lock screen" = "You pouvez ajouter des widgets pour vos minuteurs et chronomètres en modifiant votre écran verrouillé ou votre page d'accueil";
/* No comment provided by engineer. */
"You can ask Siri to create and launch countdowns and stopwatches" = "Vous pouvez demander à Siri de vous lancer les minuteurs et les chronos";
/* No comment provided by engineer. */
"You can edit the duration, sound and label before adding" = "Vous pouvez changer la durée, le son et le label avant l'ajout";
/* No comment provided by engineer. */
"You don't have any recorded activity yet" = "Vous n'avez pas encore d'activités enregistrées";
/* No comment provided by engineer. */
"You need to accept notifications, please check your settings" = "Vous devez accepter les notifications, veuillez vérifier vos réglages";
/* No comment provided by engineer. */
"Your %@ countdown is over!" = "Votre minuteur de %@ est terminé !";
"Launch" = "Démarrer";
"Launch %@" = "Lance %@";

@ -242,11 +242,4 @@
"Launch" = "Démarrer";
"Launch %@" = "Démarrer %@";
//"Launch Timer" = "Démarrer un compteur";
//"Launch timers and stopwatches" = "Démarre des minuteurs et chronos";
//"Timer" = "Compteur";
//"Starts immediately" = "Démarre immédiatement";
//"Launch ${timer}" = "Test> lance ${timer}";
//"${timer} has been launched" = "${timer} a démarré lololol";
"Launch %@" = "Lance %@";

Loading…
Cancel
Save