From 3d0a9c687d24f6764330e05aec32b3891497243b Mon Sep 17 00:00:00 2001 From: Philip Blair Date: Thu, 13 May 2021 13:24:17 +0200 Subject: [PATCH 1/2] Add English localization --- ViteMaDose.xcodeproj/project.pbxproj | 5 + ViteMaDose/Models/VaccinationCentre.swift | 11 +- ViteMaDose/Resources/AppConstant.swift | 5 - .../Resources/Localization/Localization.swift | 2 +- .../Localization/en.lproj/Localizable.strings | 46 +++++++ .../en.lproj/Localizable.stringsdict | 112 ++++++++++++++++++ 6 files changed, 171 insertions(+), 10 deletions(-) create mode 100644 ViteMaDose/Resources/Localization/en.lproj/Localizable.strings create mode 100644 ViteMaDose/Resources/Localization/en.lproj/Localizable.stringsdict diff --git a/ViteMaDose.xcodeproj/project.pbxproj b/ViteMaDose.xcodeproj/project.pbxproj index ddab98d1..7286e538 100644 --- a/ViteMaDose.xcodeproj/project.pbxproj +++ b/ViteMaDose.xcodeproj/project.pbxproj @@ -227,6 +227,8 @@ 57FE5C0E261FA84D0012B66D /* UIColor+VideMaDose.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIColor+VideMaDose.swift"; sourceTree = ""; }; 6A28354B262DC06C00FA6456 /* ViteMaDose.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = ViteMaDose.entitlements; sourceTree = ""; }; 889B9A49263307EC00175E24 /* .swiftlint.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = .swiftlint.yml; sourceTree = ""; }; + A17FECFE264D301E0044E034 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; + A17FECFF264D301F0044E034 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = en; path = en.lproj/Localizable.stringsdict; sourceTree = ""; }; DA234DC22626494600D6F71C /* remote-configuration.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "remote-configuration.plist"; sourceTree = ""; }; DA234DD02626506600D6F71C /* RemoteConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RemoteConfig.swift; sourceTree = ""; }; DA4D9952261E6B6A00D28AD0 /* LocationSearchViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationSearchViewController.swift; sourceTree = ""; }; @@ -715,6 +717,7 @@ knownRegions = ( fr, Base, + en, ); mainGroup = 576738B3261E329C004A700D; packageReferences = ( @@ -1011,6 +1014,7 @@ isa = PBXVariantGroup; children = ( 57B2BCA42633B254001B3D61 /* fr */, + A17FECFE264D301E0044E034 /* en */, ); name = Localizable.strings; sourceTree = ""; @@ -1019,6 +1023,7 @@ isa = PBXVariantGroup; children = ( 57DEAA04263444BB005E8628 /* fr */, + A17FECFF264D301F0044E034 /* en */, ); name = Localizable.stringsdict; sourceTree = ""; diff --git a/ViteMaDose/Models/VaccinationCentre.swift b/ViteMaDose/Models/VaccinationCentre.swift index 36383082..7ccfb225 100644 --- a/ViteMaDose/Models/VaccinationCentre.swift +++ b/ViteMaDose/Models/VaccinationCentre.swift @@ -111,15 +111,18 @@ extension VaccinationCentre { } var nextAppointmentDate: Date? { - return prochainRdv?.toDate(nil, region: AppConstant.franceRegion)?.date ?? prochainRdv?.toISODate(nil, region: AppConstant.franceRegion)?.date + return prochainRdv?.toDate(nil, region: Region.current)?.date ?? prochainRdv?.toISODate(nil, region: Region.current)?.date } var nextAppointmentDay: String? { - return prochainRdv?.toString(with: .date(.long), region: AppConstant.franceRegion) + // Don't display year + // [TODO] Technically an en_US locale should do "MMM dd" instead + return prochainRdv?.toString(with: .custom("dd MMM"), region: Region.current) } var nextAppointmentTime: String? { - return prochainRdv?.toString(with: .time(.short), region: AppConstant.franceRegion) + // Avoid AM/PM in English locale + return prochainRdv?.toString(with: .custom("HH:mm"), region: Region.current) } var appointmentUrl: URL? { @@ -230,7 +233,7 @@ struct VaccinationCentres: Codable, Hashable { } var formattedLastUpdated: String? { - guard let lastUpdateDate = lastUpdated?.toDate(nil, region: AppConstant.franceRegion) else { + guard let lastUpdateDate = lastUpdated?.toDate(nil, region: Region.current) else { return nil } diff --git a/ViteMaDose/Resources/AppConstant.swift b/ViteMaDose/Resources/AppConstant.swift index 69d80589..58ea7404 100644 --- a/ViteMaDose/Resources/AppConstant.swift +++ b/ViteMaDose/Resources/AppConstant.swift @@ -9,9 +9,4 @@ import Foundation import SwiftDate enum AppConstant { - static let franceRegion = Region( - calendar: Calendar.current, - zone: Zones.current, - locale: Locale(identifier: "fr_FR") - ) } diff --git a/ViteMaDose/Resources/Localization/Localization.swift b/ViteMaDose/Resources/Localization/Localization.swift index 18d49296..011e0233 100644 --- a/ViteMaDose/Resources/Localization/Localization.swift +++ b/ViteMaDose/Resources/Localization/Localization.swift @@ -31,7 +31,7 @@ enum Localization { } enum LocationSearch { - static let search_placeholder = "Commune, Code Postal, Département...".localized + static let search_placeholder = "location_search.search_placeholder".localized enum MainTitle { static let title = "location_search.main_title".localized diff --git a/ViteMaDose/Resources/Localization/en.lproj/Localizable.strings b/ViteMaDose/Resources/Localization/en.lproj/Localizable.strings new file mode 100644 index 00000000..5392022f --- /dev/null +++ b/ViteMaDose/Resources/Localization/en.lproj/Localizable.strings @@ -0,0 +1,46 @@ +/* + Localizable.strings + ViteMaDose + + Created by Philip Blair on 12/05/2021. + +*/ + +// Home +"home.main_title" = "Find a vaccine quickly and easily"; +"home.main_title.first_highlighted_text" = "quickly"; +"home.main_title.second_highlighted_text" = "easily"; +"home.search_placeholder" = "Search..."; +"home.last_stats" = "Latest statistics..."; +"home.open_map" = "See locations on the map"; +"home.partners" = "Find your appointments with"; +"home.stats.all_locations" = "Locations found in France"; +"home.stats.all_availabilities" = "Appointments available"; +"home.stats.locations_with_availabilities" = "Locations with available appointments"; +"home.stats.available_locations_percentage" = "Of locations have availabilities"; +// Department Selection +"location_search.main_title" = "Select or search for a location in France"; +"location_search.main_title.highlighted_text" = "France"; +"location_search.search_placeholder" = "Commune, Postal Code, Department..."; +// Locations +"locations.list_title" = "List of locations"; +"locations.no_results" = "We have not found any appointments for %@"; +"locations.sort_option.closest" = "Closest"; +"locations.sort_option.fastest" = "Available soonest"; +// Location +"location.date" = "On %@ at %@"; +"location.book_button" = "Book an appointment"; +"location.verify_button" = "Check with this location"; +"location.last_update" = "Last updated on %@ at %@"; +"location.no_appointment" = "No appointments"; +"location.open_route" = "Show route"; +"location.unavailable_date" = "Date unavailable"; +"location.unavailable_name" = "Name of location unavailable"; +"location.unavailable_address" = "Address unavailable"; +// Error +"error.generic.title" = "Oops! We're having some technical difficulties..."; +"error.generic.retry_button" = "Retry"; +"error.generic.cancel_button" = "Cancel"; +"error.generic.default_message" = "If the problem persists, please contact the team at https://covidtracker.fr/contact"; +"error.network.server_error" = "We've encountered a server error. Please try again later."; +"error.network.offline" = "You appear to be offline."; diff --git a/ViteMaDose/Resources/Localization/en.lproj/Localizable.stringsdict b/ViteMaDose/Resources/Localization/en.lproj/Localizable.stringsdict new file mode 100644 index 00000000..545fac29 --- /dev/null +++ b/ViteMaDose/Resources/Localization/en.lproj/Localizable.stringsdict @@ -0,0 +1,112 @@ + + + + + locations.available_locations + + NSStringLocalizedFormatKey + %#@count@ + count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + zero + Locations with appointments + one + Location with appointments + other + Locations with appointments + + + locations.all_locations + + NSStringLocalizedFormatKey + %#@count@ + count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + zero + Total locations found + one + Total location found + other + Total locations found + + + locations.appointments + + NSStringLocalizedFormatKey + %#@count@ + count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + zero + %d appointments + one + %d appointment + other + %d appointments + + + locations.main_title_department + + NSStringLocalizedFormatKey + %#@count@ + count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + We have found %d appointment for %@ + other + We have found %d appointments for %@ + + + locations.main_title_city + + NSStringLocalizedFormatKey + %#@count@ + count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + We have found %d appointment near %@ + other + We have found %d appointments near %@ + + + home.recent_search + + New item + + NSStringLocalizedFormatKey + %#@count@ + count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + zero + Recent searches + one + Recent search + other + Recent searches + + + + From 43acab49b2ba2a7beb2b1d5eaf6c23c7965a3933 Mon Sep 17 00:00:00 2001 From: Philip Blair Date: Sat, 15 May 2021 01:18:21 +0200 Subject: [PATCH 2/2] Localize Chronodose text items for English --- .../Helpers/Utils/OnboardingManager.swift | 18 ++++++------- .../Resources/Localization/Localization.swift | 24 +++++++++++++++++ .../Localization/en.lproj/Localizable.strings | 26 +++++++++++++++++++ .../Localization/fr.lproj/Localizable.strings | 15 +++++++++++ .../Views/CentresList/Cells/CentreCell.swift | 2 +- .../CentresListViewController.swift | 4 +-- .../Home/Cells/HomeFollowedCentresCell.swift | 2 +- 7 files changed, 78 insertions(+), 13 deletions(-) diff --git a/ViteMaDose/Helpers/Utils/OnboardingManager.swift b/ViteMaDose/Helpers/Utils/OnboardingManager.swift index 7b6cc50e..b99c94ae 100644 --- a/ViteMaDose/Helpers/Utils/OnboardingManager.swift +++ b/ViteMaDose/Helpers/Utils/OnboardingManager.swift @@ -13,7 +13,7 @@ enum OnboardingManager { private static let descriptionFontSize: CGFloat = 18.0 static func makeFirstPage() -> BLTNPageItem { - let page = BLTNPageItem(title: "Vite Ma Dose fait le plein de nouveautés !") + let page = BLTNPageItem(title: Localization.Onboarding.Page1.title) page.image = "🎉".toImage(ofSize: 60) let appearance = BLTNItemAppearance() @@ -22,8 +22,8 @@ enum OnboardingManager { appearance.actionButtonColor = .royalBlue page.appearance = appearance - page.descriptionText = "Découvrez les notifications pour ne rater aucune dose, et les chronodoses permettant à chacun de trouver un rendez-vous en 24h sans restriction." - page.actionButtonTitle = "Suivant" + page.descriptionText = Localization.Onboarding.Page1.description + page.actionButtonTitle = Localization.Onboarding.Page1.button page.alternativeButton?.isHidden = true page.isDismissable = false page.actionHandler = { item in @@ -34,7 +34,7 @@ enum OnboardingManager { } static func makeNotificationsPage() -> BLTNPageItem { - let page = BLTNPageItem(title: "Notifications") + let page = BLTNPageItem(title: Localization.Onboarding.Page2.title) page.image = "🔔".toImage(ofSize: 60) let appearance = BLTNItemAppearance() @@ -43,8 +43,8 @@ enum OnboardingManager { appearance.actionButtonColor = .royalBlue page.appearance = appearance - page.descriptionText = "Pour ne rater aucun créneau de vaccination, nous avons ajouté un système de notifications ! Pour vous abonner à un centre, rien de plus simple, il suffit de toucher la cloche. Vous recevrez une alerte si nous détectons des disponibilités." - page.actionButtonTitle = "Suivant" + page.descriptionText = Localization.Onboarding.Page2.description + page.actionButtonTitle = Localization.Onboarding.Page2.button page.alternativeButton?.isHidden = true page.isDismissable = false page.actionHandler = { item in @@ -56,7 +56,7 @@ enum OnboardingManager { } static func makeChronoDosesPage() -> BLTNPageItem { - let page = BLTNPageItem(title: "Chronodoses") + let page = BLTNPageItem(title: Localization.Onboarding.Page3.title) page.image = "⚡️".toImage(ofSize: 60) let appearance = BLTNItemAppearance() @@ -65,8 +65,8 @@ enum OnboardingManager { appearance.actionButtonColor = .mandy page.appearance = appearance - page.descriptionText = "À partir du mercredi 12 mai, vous pourrez réserver les rendez-vous de vaccination vacants du jour même et du lendemain, sans restriction. Nous les appelons les “Chronodoses”, et sont matérialisées par des éclairs et un bandeau rouge." - page.actionButtonTitle = "Merci !" + page.descriptionText = Localization.Onboarding.Page3.description + page.actionButtonTitle = Localization.Onboarding.Page3.button page.alternativeButton?.isHidden = true page.isDismissable = false page.actionHandler = { item in diff --git a/ViteMaDose/Resources/Localization/Localization.swift b/ViteMaDose/Resources/Localization/Localization.swift index 011e0233..ba534b45 100644 --- a/ViteMaDose/Resources/Localization/Localization.swift +++ b/ViteMaDose/Resources/Localization/Localization.swift @@ -42,6 +42,7 @@ enum Localization { enum Locations { static let list_title = "locations.list_title".localized static let followed_list_title = "locations.followed_list_title".localized + static let followed_list_button = "locations.followed_list_button".localized static let no_results = "locations.no_results".localized static let available_locations = "locations.available_locations".localized static let all_locations = "locations.all_locations".localized @@ -59,6 +60,7 @@ enum Localization { } enum Location { + static let chronodoses_available = "location.chronodoses_available".localized static let date = "location.date".localized static let book_button = "location.book_button".localized static let verify_button = "location.verify_button".localized @@ -70,6 +72,8 @@ enum Localization { static let unavailable_address = "location.unavailable_address".localized static let start_following_title = "location.start_following_title".localized static let start_following_message = "location.start_following_message".localized + static let start_following_button_all = "location.start_following_button_all".localized + static let start_following_button_chronodoses = "location.start_following_button_chronodoses".localized static let follow_action_title = "location.follow_action_title".localized static let notify_button = "location.notify_button".localized static let follow_button = "location.follow_button".localized @@ -92,4 +96,24 @@ enum Localization { static let offline = "error.network.offline".localized } } + + enum Onboarding { + enum Page1 { + static let title = "onboarding.page_1.title".localized + static let description = "onboarding.page_1.description".localized + static let button = "onboarding.page_1.button".localized + } + + enum Page2 { + static let title = "onboarding.page_2.title".localized + static let description = "onboarding.page_2.description".localized + static let button = "onboarding.page_2.button".localized + } + + enum Page3 { + static let title = "onboarding.page_3.title".localized + static let description = "onboarding.page_3.description".localized + static let button = "onboarding.page_3.button".localized + } + } } diff --git a/ViteMaDose/Resources/Localization/en.lproj/Localizable.strings b/ViteMaDose/Resources/Localization/en.lproj/Localizable.strings index 5392022f..0f92e112 100644 --- a/ViteMaDose/Resources/Localization/en.lproj/Localizable.strings +++ b/ViteMaDose/Resources/Localization/en.lproj/Localizable.strings @@ -24,10 +24,13 @@ "location_search.search_placeholder" = "Commune, Postal Code, Department..."; // Locations "locations.list_title" = "List of locations"; +"locations.followed_list_button" = "My locations"; +"locations.followed_list_title" = "My followed locations"; "locations.no_results" = "We have not found any appointments for %@"; "locations.sort_option.closest" = "Closest"; "locations.sort_option.fastest" = "Available soonest"; // Location +"location.chronodoses_available" = "Chronodoses Available"; "location.date" = "On %@ at %@"; "location.book_button" = "Book an appointment"; "location.verify_button" = "Check with this location"; @@ -37,6 +40,19 @@ "location.unavailable_date" = "Date unavailable"; "location.unavailable_name" = "Name of location unavailable"; "location.unavailable_address" = "Address unavailable"; +// Location start following +"location.start_following_title" = "Start following?"; +"location.start_following_message" = "You can choose to be notified for each change in availability or only when Chronodoses become available at this center."; +"location.start_following_button_all" = "All notifications"; +"location.start_following_button_chronodoses" = "Chronodoses only"; +"location.follow_action_title" = "Follow"; +"location.notify_button" = "Be Notified"; +"location.follow_button" = "Follow without notifications"; +// Location stop following +"location.stop_following_title" = "Stop following this center?"; +"location.stop_following_message" = "If you have activated notifications for this center, they will be deactivated."; +"location.unfollow_action_title" = "Stop Following?"; +"location.stop_following_button" = "Unfollow"; // Error "error.generic.title" = "Oops! We're having some technical difficulties..."; "error.generic.retry_button" = "Retry"; @@ -44,3 +60,13 @@ "error.generic.default_message" = "If the problem persists, please contact the team at https://covidtracker.fr/contact"; "error.network.server_error" = "We've encountered a server error. Please try again later."; "error.network.offline" = "You appear to be offline."; +// Onboarding +"onboarding.page_1.title" = "Vite Ma Dose has many new features!"; +"onboarding.page_1.description" = "Notifications allow you to never miss a new dose, and Chronodoses allow anyone to find an appointment in the next 24 hours without any restrictions."; +"onboarding.page_1.button" = "Next"; +"onboarding.page_2.title" = "Notifications"; +"onboarding.page_2.description" = "To never miss a vaccination availability, we have added a notification system! To follow a center, it's as simple as pressing the bell icon. You will recieve an alert if we detect any openings."; +"onboarding.page_2.button" = "Next"; +"onboarding.page_3.title" = "Chronodoses"; +"onboarding.page_3.description" = "Starting 12 May, you can reserve a vaccination appointment the same day or the next day, without restrictions. We call these Chronodoses, and they are denoted by lightning and a red band."; +"onboarding.page_3.button" = "Thank You!"; diff --git a/ViteMaDose/Resources/Localization/fr.lproj/Localizable.strings b/ViteMaDose/Resources/Localization/fr.lproj/Localizable.strings index faedc438..d3bda6ac 100644 --- a/ViteMaDose/Resources/Localization/fr.lproj/Localizable.strings +++ b/ViteMaDose/Resources/Localization/fr.lproj/Localizable.strings @@ -24,11 +24,13 @@ "location_search.search_placeholder" = "Commune, Code Postal, Département..."; // Locations "locations.list_title" = "Liste des lieux"; +"locations.followed_list_button" = "Mes centres suivis"; "locations.followed_list_title" = "Liste de vos lieux suivis"; "locations.no_results" = "Nous n'avons pas trouvé de créneau pour %@"; "locations.sort_option.closest" = "Au plus proche"; "locations.sort_option.fastest" = "Au plus vite"; // Location +"location.chronodoses_available" = "Chronodoses disponibles"; "location.date" = "Le %@ à partir de %@"; "location.book_button" = "Prendre rendez-vous"; "location.verify_button" = "Vérifier ce lieu"; @@ -41,6 +43,9 @@ // Location start following "location.start_following_title" = "Recevoir les notifications ?"; "location.start_following_message" = "Vous pouvez choisir d'être notifié pour chaque changement de disponibilité ou seulement lorsque des Chronodoses sont disponibles pour ce centre."; +// Alerts +"location.start_following_button_all" = "Toutes les notifications"; +"location.start_following_button_chronodoses" = "Chronodoses uniquement"; "location.follow_action_title" = "Suivre"; "location.notify_button" = "Être notifié"; "location.follow_button" = "Suivre sans notifications"; @@ -56,3 +61,13 @@ "error.generic.default_message" = "Si le problème persiste, merci de contacter l'équipe sur https://covidtracker.fr/contact"; "error.network.server_error" = "Nous rencontrons des problèmes avec le serveur, veuillez réessayer plus tard."; "error.network.offline" = "Il semblerait que vous soyez hors ligne."; +// Onboarding +"onboarding.page_1.title" = "Vite Ma Dose fait le plein de nouveautés !"; +"onboarding.page_1.description" = "Découvrez les notifications pour ne rater aucune dose, et les chronodoses permettant à chacun de trouver un rendez-vous en 24h sans restriction."; +"onboarding.page_1.button" = "Suivant"; +"onboarding.page_2.title" = "Notifications"; +"onboarding.page_2.description" = "Pour ne rater aucun créneau de vaccination, nous avons ajouté un système de notifications ! Pour vous abonner à un centre, rien de plus simple, il suffit de toucher la cloche. Vous recevrez une alerte si nous détectons des disponibilités."; +"onboarding.page_2.button" = "Suivant"; +"onboarding.page_3.title" = "Chronodoses"; +"onboarding.page_3.description" = "À partir du mercredi 12 mai, vous pourrez réserver les rendez-vous de vaccination vacants du jour même et du lendemain, sans restriction. Nous les appelons les “Chronodoses”, et sont matérialisées par des éclairs et un bandeau rouge."; +"onboarding.page_3.button" = "Merci !"; diff --git a/ViteMaDose/Views/CentresList/Cells/CentreCell.swift b/ViteMaDose/Views/CentresList/Cells/CentreCell.swift index 555b3482..ea9da470 100644 --- a/ViteMaDose/Views/CentresList/Cells/CentreCell.swift +++ b/ViteMaDose/Views/CentresList/Cells/CentreCell.swift @@ -315,7 +315,7 @@ final class CentreCell: UITableViewCell { chronoDoseViewContainer.clipsToBounds = false chronoDoseViewContainer.layer.cornerRadius = 15.0 chronoDoseViewContainer.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner] - chronoDoseLabel.text = "Chronodoses disponibles" + chronoDoseLabel.text = Localization.Location.chronodoses_available } private func configureFollowCentreButton(_ viewData: CentreViewData) { diff --git a/ViteMaDose/Views/CentresList/CentresListViewController.swift b/ViteMaDose/Views/CentresList/CentresListViewController.swift index 84c87eb8..0b7b5753 100644 --- a/ViteMaDose/Views/CentresList/CentresListViewController.swift +++ b/ViteMaDose/Views/CentresList/CentresListViewController.swift @@ -297,13 +297,13 @@ extension CentresListViewController: UITableViewDelegate { preferredStyle: .actionSheet ) - let allNotificationsAction = UIAlertAction(title: "Toutes les notifications", style: .default) { [weak self] _ in + let allNotificationsAction = UIAlertAction(title: Localization.Location.start_following_button_all, style: .default) { [weak self] _ in self?.viewModel.requestNotificationsAuthorizationIfNeeded { self?.viewModel.followCentre(at: indexPath, notificationsType: .all) } } - let chronoDosesNotificationsAction = UIAlertAction(title: "Chronodoses uniquement", style: .default) { [weak self] _ in + let chronoDosesNotificationsAction = UIAlertAction(title: Localization.Location.start_following_button_chronodoses, style: .default) { [weak self] _ in self?.viewModel.requestNotificationsAuthorizationIfNeeded { self?.viewModel.followCentre(at: indexPath, notificationsType: .chronodoses) } diff --git a/ViteMaDose/Views/Home/Cells/HomeFollowedCentresCell.swift b/ViteMaDose/Views/Home/Cells/HomeFollowedCentresCell.swift index 900183af..0832789c 100644 --- a/ViteMaDose/Views/Home/Cells/HomeFollowedCentresCell.swift +++ b/ViteMaDose/Views/Home/Cells/HomeFollowedCentresCell.swift @@ -31,7 +31,7 @@ final class HomeFollowedCentresCell: UITableViewCell { iconContainerView.setCornerRadius(15) cellContainerView.setCornerRadius(15) - titleLabel.text = "Mes centres suivis" + titleLabel.text = Localization.Locations.followed_list_button titleLabel.textColor = .label titleLabel.font = .rounded(ofSize: 18, weight: .bold) }