Skip to content

Commit f0ae89f

Browse files
committed
Merge branch 'french'
2 parents bab23b9 + c1341fd commit f0ae89f

File tree

11 files changed

+355
-73
lines changed

11 files changed

+355
-73
lines changed

Workout Core/Model/Workout/Additional Data/RunningHeartZones.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,14 @@ public class RunningHeartZones: AdditionalDataProcessor, AdditionalDataProvider,
126126
return zonesData?.count ?? 1
127127
}
128128

129+
public func heightForRowAt(_ indexPath: IndexPath, in tableView: UITableView) -> CGFloat? {
130+
if zonesData == nil {
131+
return UITableView.automaticDimension
132+
} else {
133+
return nil
134+
}
135+
}
136+
129137
public func cellForRowAt(_ indexPath: IndexPath, for tableView: UITableView) -> UITableViewCell {
130138
guard let data = zonesData?[indexPath.row] else {
131139
let cell = tableView.dequeueReusableCell(withIdentifier: "msg", for: indexPath)

Workout.xcodeproj/project.pbxproj

Lines changed: 82 additions & 59 deletions
Large diffs are not rendered by default.

Workout/Base.lproj/Localizable.strings

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,6 @@
7878
"EXPORT_ERROR_PARTIAL" = "Cannot export some workout data";
7979
"EXPORT_ERROR_PARTIAL_%@" = "The workouts at the following times failed to export:\n%@";
8080

81-
8281
// MARK: - Settings
8382

8483
"HEART_ZONES_MAX_RATE" = "Max %@";

Workout/Controller/ListTVC.swift

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ import StoreKit
1515

1616
class ListTableViewController: UITableViewController, WorkoutListDelegate, WorkoutBulkExporterDelegate, PreferencesDelegate, AdsManagerDelegate, EnhancedNavigationBarDelegate {
1717

18+
private static let defaultHeight: CGFloat = 44
19+
1820
private let list = WorkoutList(healthData: healthData, preferences: preferences)
1921
private var exporter: WorkoutBulkExporter?
2022

@@ -63,6 +65,9 @@ class ListTableViewController: UITableViewController, WorkoutListDelegate, Worko
6365
adsManager.delegate = self
6466
adsManager.initialize()
6567

68+
tableView.rowHeight = UITableView.automaticDimension
69+
tableView.estimatedRowHeight = Self.defaultHeight
70+
6671
preferences.add(delegate: self)
6772
list.delegate = self
6873
updateFilterLabel()
@@ -142,6 +147,14 @@ class ListTableViewController: UITableViewController, WorkoutListDelegate, Worko
142147
}
143148
}
144149

150+
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
151+
if indexPath.section == 0, list.workouts?.isEmpty ?? true {
152+
return UITableView.automaticDimension
153+
} else {
154+
return Self.defaultHeight
155+
}
156+
}
157+
145158
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
146159
if indexPath.section == 1 {
147160
let res = tableView.dequeueReusableCell(withIdentifier: "loadMore", for: indexPath) as! LoadMoreCell

Workout/Info.plist

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,18 @@
1818
<string>$(MARKETING_VERSION)</string>
1919
<key>CFBundleVersion</key>
2020
<string>$(CURRENT_PROJECT_VERSION)</string>
21+
<key>GADApplicationIdentifier</key>
22+
<string>ca-app-pub-7085161342725707~3715618473</string>
2123
<key>LSRequiresIPhoneOS</key>
2224
<true/>
25+
<key>NSBluetoothPeripheralUsageDescription</key>
26+
<string>Bluetooth may be used while interacting with ads.</string>
27+
<key>NSCalendarsUsageDescription</key>
28+
<string>Calendar data my be used while interacting with ads.</string>
29+
<key>NSHealthShareUsageDescription</key>
30+
<string>Access to data is used to package it in CSV files for exporting purposes.</string>
31+
<key>NSHealthUpdateUsageDescription</key>
32+
<string>Access to data is used to package it in CSV files for exporting purposes.</string>
2333
<key>UIApplicationSceneManifest</key>
2434
<dict>
2535
<key>UIApplicationSupportsMultipleScenes</key>
@@ -54,15 +64,5 @@
5464
<array>
5565
<string>UIInterfaceOrientationPortrait</string>
5666
</array>
57-
<key>NSBluetoothPeripheralUsageDescription</key>
58-
<string>Bluetooth may be used while interacting with ads.</string>
59-
<key>NSCalendarsUsageDescription</key>
60-
<string>Calendar data my be used while interacting with ads.</string>
61-
<key>NSHealthShareUsageDescription</key>
62-
<string>Access to data is used to package it in CSV files for exporting purposes.</string>
63-
<key>NSHealthUpdateUsageDescription</key>
64-
<string>Access to data is used to package it in CSV files for exporting purposes.</string>
65-
<key>GADApplicationIdentifier</key>
66-
<string>ca-app-pub-7085161342725707~3715618473</string>
6767
</dict>
6868
</plist>

Workout/View/Base.lproj/Main.storyboard

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
4949
<autoresizingMask key="autoresizingMask"/>
5050
<subviews>
51-
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="[Message]" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="kRo-Ia-wba">
51+
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="[Message]" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="kRo-Ia-wba">
5252
<rect key="frame" x="16" y="0.0" width="343" height="44"/>
5353
<autoresizingMask key="autoresizingMask"/>
5454
<fontDescription key="fontDescription" type="system" pointSize="17"/>
@@ -96,7 +96,7 @@
9696
</connections>
9797
</tableView>
9898
<navigationItem key="navigationItem" title="Workouts" largeTitleDisplayMode="always" id="wns-Y0-8IB">
99-
<barButtonItem key="leftBarButtonItem" title="Item" image="Settings" id="rf3-yY-QN1">
99+
<barButtonItem key="leftBarButtonItem" image="Settings" id="rf3-yY-QN1">
100100
<connections>
101101
<segue destination="2eA-QV-v1Q" kind="presentation" identifier="info" id="fhz-TV-p7Z"/>
102102
</connections>
@@ -171,7 +171,7 @@
171171
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
172172
<autoresizingMask key="autoresizingMask"/>
173173
<subviews>
174-
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="[Message]" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="8" id="JJ1-ny-IjM">
174+
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="[Message]" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" minimumFontSize="8" id="JJ1-ny-IjM">
175175
<rect key="frame" x="16" y="0.0" width="343" height="44"/>
176176
<autoresizingMask key="autoresizingMask"/>
177177
<fontDescription key="fontDescription" type="system" pointSize="17"/>

Workout/View/fr.lproj/Main.strings

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
/*
2+
InfoPlist.strings
3+
Workout
4+
5+
Created by Maxime Killinger on 14/12/2019.
6+
Copyright © 2019 Marco Boschi. All rights reserved.
7+
*/
8+
9+
/* Class = "UITableViewSection"; footerTitle = "Select the source from which to load step data. If your devices have not a standard name insert a custom source."; ObjectID = "DE6-lx-y5P"; */
10+
"DE6-lx-y5P.footerTitle" = "Sélectionnez la source à partir de laquelle charger les données de pas. Si vos appareils n’ont pas de nom, insérez une source personnalisée.";
11+
12+
/* Class = "UILabel"; text = "Authorize Health data access"; ObjectID = "DeD-yh-hfG"; */
13+
"DeD-yh-hfG.text" = "Autoriser l’accès aux données de Santé";
14+
15+
/* Class = "UILabel"; text = "bpm"; ObjectID = "DyT-UL-y1f"; */
16+
"DyT-UL-y1f.text" = "bpm";
17+
18+
/* Class = "UILabel"; text = "Source Code"; ObjectID = "Hhm-6m-J7Z"; */
19+
"Hhm-6m-J7Z.text" = "Code source";
20+
21+
/* Class = "UILabel"; text = "Custom"; ObjectID = "IHW-A3-oq6"; */
22+
"IHW-A3-oq6.text" = "Personnalisé";
23+
24+
/* Class = "UILabel"; text = "to"; ObjectID = "Jz3-dh-rRA"; */
25+
"Jz3-dh-rRA.text" = "à";
26+
27+
/* Class = "UINavigationItem"; title = "Units"; ObjectID = "O9R-3v-zu9"; */
28+
"O9R-3v-zu9.title" = "Unités";
29+
30+
/* Class = "UINavigationItem"; title = "Workout detail"; ObjectID = "QUK-cG-kWu"; */
31+
"QUK-cG-kWu.title" = "Détails d’entraînement";
32+
33+
/* Class = "UIButton"; normalTitle = "Remove Ads"; ObjectID = "Qam-ee-Z2S"; */
34+
"Qam-ee-Z2S.normalTitle" = "Supprimer la pub";
35+
36+
/* Class = "UILabel"; text = "Step Source"; ObjectID = "RXY-ea-kL0"; */
37+
"RXY-ea-kL0.text" = "Source du podomètre";
38+
39+
/* Class = "UILabel"; text = "Manage Ads Consent"; ObjectID = "UZS-mG-WS7"; */
40+
"UZS-mG-WS7.text" = "Gérer le consentement des annonces";
41+
42+
/* Class = "UILabel"; text = "All"; ObjectID = "Uxm-XN-Aib"; */
43+
"Uxm-XN-Aib.text" = "Tout";
44+
45+
/* Class = "UILabel"; text = "Max Heart Rate"; ObjectID = "Xkc-YX-SQk"; */
46+
"Xkc-YX-SQk.text" = "Fréquence cardiaque maximale";
47+
48+
/* Class = "UIButton"; normalTitle = "Restore"; ObjectID = "aur-kd-U1r"; */
49+
"aur-kd-U1r.normalTitle" = "Restaurer";
50+
51+
/* Class = "UILabel"; text = "Subtitle"; ObjectID = "bbu-3H-lJv"; */
52+
"bbu-3H-lJv.text" = "Sous-Titre";
53+
54+
/* Class = "UILabel"; text = "Filter"; ObjectID = "c7b-sc-qHH"; */
55+
"c7b-sc-qHH.text" = "Filtre";
56+
57+
/* Class = "UILabel"; text = "Units"; ObjectID = "drg-GC-zpj"; */
58+
"drg-GC-zpj.text" = "Unités";
59+
60+
/* Class = "UILabel"; text = "Running Heart Zones"; ObjectID = "gp7-Kc-v84"; */
61+
"gp7-Kc-v84.text" = "Zones cardiaques";
62+
63+
/* Class = "UINavigationItem"; title = "Running Heart Zones"; ObjectID = "jdI-fn-b3q"; */
64+
"jdI-fn-b3q.title" = "Zones cardiaques";
65+
66+
/* Class = "UINavigationItem"; title = "Step Source"; ObjectID = "n64-Oo-NfG"; */
67+
"n64-Oo-NfG.title" = "Source du podomètre";
68+
69+
/* Class = "UILabel"; text = "Contact Me"; ObjectID = "wAE-M9-GC0"; */
70+
"wAE-M9-GC0.text" = "Me contacter";
71+
72+
/* Class = "UINavigationItem"; title = "Workouts"; ObjectID = "wns-Y0-8IB"; */
73+
"wns-Y0-8IB.title" = "Entraînements";
74+
75+
/* Class = "UIButton"; normalTitle = "Load More"; ObjectID = "ya0-9d-7C7"; */
76+
"ya0-9d-7C7.normalTitle" = "Charger plus";
77+
78+
/* Class = "UILabel"; text = "Route Type"; ObjectID = "bK9-dT-qgf"; */
79+
"bK9-dT-qgf.text" = "Type de trajet";
80+
81+
/* Class = "UINavigationItem"; title = "Workouts"; ObjectID = "HJJ-j5-2gn"; */
82+
"HJJ-j5-2gn.title" = "Type de trajet";

Workout/fr.lproj/InfoPlist.strings

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/*
2+
InfoPlist.strings
3+
Workout
4+
5+
Created by Maxime Killinger on 28/12/2019.
6+
Copyright © 2019 Marco Boschi. All rights reserved.
7+
*/
8+
9+
NSBluetoothPeripheralUsageDescription = "Le bluetooth peut être utilisé pour intéragir avec des publicités.";
10+
NSCalendarsUsageDescription = "Le calendrier peut être utilisé pour intéragir avec des publicités.";
11+
NSHealthShareUsageDescription = "L'accès aux données de santé est utilisé pour les empaqueter dans des fichiers CSV à des fins d'exportation.";
12+
NSHealthUpdateUsageDescription = "L'accès aux données de santé est utilisé pour les empaqueter dans des fichiers CSV à des fins d'exportation.";
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
/*
2+
Localizable.strings
3+
Workout
4+
5+
Created by Marco Boschi on 12/08/16.
6+
Copyright © 2016 Marco Boschi. All rights reserved.
7+
*/
8+
9+
// MARK: - Model
10+
"UNITS_NAME_0" = "Métrique";
11+
"UNITS_NAME_1" = "Impérial";
12+
13+
"STEP_SOURCE_ALL" = "Toutes les sources";
14+
15+
"WRKT_FILTER_ANY_TIME" = "N’importe quand";
16+
"WRKT_FILTER_FROM_%@" = "Depuis %@";
17+
"WRKT_FILTER_TO_%@" = "À %@";
18+
"WRKT_FILTER_FROM_%@_TO_%@" = "Depuis %@ à %@";
19+
20+
// MARK: - Errors
21+
22+
"WRKT_ERR_LOADING" = "Impossible de charger les données d’entraînement";
23+
"WRKT_ERR_NO_HEALTH" = "Les données de Santé ne sont pas disponibles";
24+
25+
// MARK: - Workout List View
26+
"WRKT_FILTER" = "Filtre";
27+
"WRKT_FILTER_ALL" = "Tous les entraînements";
28+
"WRKT_FILTER_%lld_OUT_%lld" = "%lld/%lld entraînements";
29+
30+
"WRKT_FILTER_DATE" = "Date de début";
31+
"WRKT_FILTER_TYPE" = "Type";
32+
33+
"WRKT_FILTER_FROM" = "Depuis";
34+
"WRKT_FILTER_FROM_NONE" = "La nuit des temps";
35+
"WRKT_FILTER_TO" = "À";
36+
"WRKT_FILTER_TO_NONE" = "La fin des temps";
37+
38+
"WRKT_LIST_MORE" = "Charger Plus";
39+
40+
"WRKT_LIST_LOADING" = "Chargement depuis l’application Santé...";
41+
"WRKT_LIST_ERR_NO_WORKOUT" = "Aucun entraînement";
42+
43+
// MARK: - Workout View
44+
45+
"WRKT_TYPE" = "Type";
46+
"WRKT_START" = "Début";
47+
"WRKT_END" = "Fin";
48+
"WRKT_DURATION" = "Durée";
49+
"WRKT_DISTANCE" = "Distance";
50+
"WRKT_AVG_HEART" = "Rythme cardiaque moyen";
51+
"WRKT_MAX_HEART" = "Rythme cardiaque maximum";
52+
"WRKT_AVG_PACE" = "Allure moyenne";
53+
"WRKT_AVG_SPEED" = "Vitesse moyenne";
54+
"WRKT_ENERGY" = "Énergie";
55+
"WRKT_ELEVATION" = "Dénivelée";
56+
57+
"WRKT_SPLIT_CAL_%@_TOTAL_%@" = "%@ (%@ total)";
58+
59+
// MARK: - Data Providers
60+
"MINBYMIN_TITLE" = "Détails";
61+
"MINBYMIN_%@_PAUSE" = "Pause de %@";
62+
63+
"HEART_ZONES_TITLE" = "Zones cardiaques";
64+
"HEART_ZONES_FOOTER" = "Il est possible que les temps dans chaque zone cardiaque ne correspondent pas à la durée totale de l’entraînement car dans certaines parties, les données cardiaques peuvent être indisponibles ou la fréquence cardiaque est en dessous du seuil de la Zone 1.";
65+
"HEART_ZONES_NEED_CONFIG" = "Réglez votre fréquence cardiaque maximale dans les paramètres pour afficher ceci.";
66+
"HEART_ZONES_ZONE_%lld" = "Zone %d";
67+
68+
"WRKT_ROUTE_TITLE" = "Trajet";
69+
"WRKT_ROUTE_START" = "Départ";
70+
"WRKT_ROUTE_END" = "Arrivée";
71+
72+
// MARK: - Export
73+
74+
"EXPORT_SELECT_ALL" = "Sélectionner tout";
75+
"EXPORT_SELECT_NONE" = "Ne rien sélectionner";
76+
77+
"EXPORT_ERROR" = "Impossible d’exporter les données d’entraînement";
78+
"EXPORT_ERROR_PARTIAL" = "Impossible d’exporter certaines données d’entraînement";
79+
"EXPORT_ERROR_PARTIAL_%@" = "Les séances d’entraînement aux moments suivants n’ont pas réussi à être exportées:\n%@";
80+
81+
// MARK: - Settings
82+
83+
"HEART_ZONES_MAX_RATE" = "%@ max";
84+
"HEART_ZONES_EXPLANATION" = "Les zones cardiaques sont des plages de votre fréquence cardiaque en termes de pourcentage de votre fréquence cardiaque maximale. Passer un certain temps dans chaque zone vous aidera à vous entraîner d’une certaine manière. Personnalisez les zones pour mieux répondre à vos besoins.";
85+
86+
"REPORT_TEXT" = "Signalez tout problème sur Twitter @piscoTech ou sur GitHub en tapant le code source.";
87+
88+
"REMOVE_ADS" = "Supprimer la pub";
89+
"MANAGE_CONSENT" = "Gérer le consentement des annonces";
90+
"MANAGE_CONSENT_ERR" = "Impossible de mettre à jour le consentement des annonces";
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+
<plist version="1.0">
4+
<dict>
5+
<key>%lld_STROKES</key>
6+
<dict>
7+
<key>NSStringLocalizedFormatKey</key>
8+
<string>%#@strokes@</string>
9+
<key>strokes</key>
10+
<dict>
11+
<key>NSStringFormatSpecTypeKey</key>
12+
<string>NSStringPluralRuleType</string>
13+
<key>NSStringFormatValueTypeKey</key>
14+
<string>lld</string>
15+
<key>one</key>
16+
<string>%lld brasse</string>
17+
<key>other</key>
18+
<string>%lld brasses</string>
19+
</dict>
20+
</dict>
21+
<key>%lld_STEPS</key>
22+
<dict>
23+
<key>NSStringLocalizedFormatKey</key>
24+
<string>%#@steps@</string>
25+
<key>steps</key>
26+
<dict>
27+
<key>NSStringFormatSpecTypeKey</key>
28+
<string>NSStringPluralRuleType</string>
29+
<key>NSStringFormatValueTypeKey</key>
30+
<string>lld</string>
31+
<key>one</key>
32+
<string>%lld pas</string>
33+
<key>other</key>
34+
<string>%lld pas</string>
35+
</dict>
36+
</dict>
37+
<key>%lld_WRKT_FILTERS</key>
38+
<dict>
39+
<key>NSStringLocalizedFormatKey</key>
40+
<string>%#@filters@</string>
41+
<key>filters</key>
42+
<dict>
43+
<key>NSStringFormatSpecTypeKey</key>
44+
<string>NSStringPluralRuleType</string>
45+
<key>NSStringFormatValueTypeKey</key>
46+
<string>lld</string>
47+
<key>one</key>
48+
<string>%lld entraînement</string>
49+
<key>other</key>
50+
<string>%lld entraînements</string>
51+
</dict>
52+
</dict>
53+
</dict>
54+
</plist>

0 commit comments

Comments
 (0)