Commit cb625977 authored by stopcovid@lunabee.com's avatar stopcovid@lunabee.com
Browse files

Update to 2.2.0

- Cosmetic improvement
- Add possibility to have timestamp in QR Code deeplinks
- Fix crash with malformed key figures json
- Fix error in onBoarding if locale is not supported
parent cb576edc
......@@ -74,7 +74,8 @@ fun Context.showPermissionRationale(
fun Context.getFirstSupportedLanguage(): String {
return if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
resources.configuration.locales.getFirstMatch(UiConstants.SUPPORTED_LANGUAGE)?.language ?: UiConstants.DEFAULT_LANGUAGE
val locales = resources.configuration.locales.toList()
locales.firstOrNull { UiConstants.SUPPORTED_LANGUAGE.contains(it.language) }?.language ?: UiConstants.DEFAULT_LANGUAGE
} else {
Locale.getDefault().language.takeIf { UiConstants.SUPPORTED_LANGUAGE.contains(it) } ?: UiConstants.DEFAULT_LANGUAGE
}
......
/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*
* Authors
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Created by Lunabee Studio / Date - 2021/14/01 - for the TOUS-ANTI-COVID project
*/
package com.lunabeestudio.stopcovid.coreui.extension
import android.os.Build
import android.os.LocaleList
import androidx.annotation.RequiresApi
import java.util.Locale
@RequiresApi(Build.VERSION_CODES.N)
fun LocaleList.toList(): List<Locale> {
return (0 until size()).map { get(it) }
}
\ No newline at end of file
......@@ -304,7 +304,7 @@ class RobertManagerImpl(
if (shouldRefreshStatus) {
if (ssu is RobertResultData.Success) {
val venueQrCodeList: List<VenueQrCode>? = robertApplication.getVenueQrCodeList(null)
if (configuration.displayRecordVenues && !venueQrCodeList.isNullOrEmpty()) {
if (!venueQrCodeList.isNullOrEmpty()) {
val wResult = remoteServiceRepository.wstatus(configuration.warningApiVersion, venueQrCodeList)
when (wResult) {
is RobertResultData.Success -> {
......@@ -438,7 +438,7 @@ class RobertManagerImpl(
override suspend fun wreportIfNeeded(application: RobertApplication, shouldRetry: Boolean) {
val wToken = keystoreRepository.reportValidationToken
val reportToSendTime = keystoreRepository.reportToSendTime
if (wToken != null && reportToSendTime != null && configuration.displayRecordVenues) {
if (wToken != null && reportToSendTime != null) {
val venueQrCodeList = application.getVenueQrCodeList(reportToSendTime)
if (!venueQrCodeList.isNullOrEmpty()) {
val result = remoteServiceRepository.wreport(configuration.warningApiVersion, wToken, venueQrCodeList)
......
......@@ -43,8 +43,8 @@ android {
applicationId "fr.gouv.android.stopcovid"
minSdkVersion 21
targetSdkVersion 30
versionCode 132
versionName "2.2.1"
versionCode 136
versionName "2.2.2"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
......
......@@ -11,6 +11,7 @@ import com.lunabeestudio.framework.local.datasource.SecureKeystoreDataSource
import com.lunabeestudio.stopcovid.extension.privateEventQrCode
import com.lunabeestudio.stopcovid.extension.privateEventQrCodeGenerationDate
import com.lunabeestudio.stopcovid.extension.robertManager
import com.lunabeestudio.stopcovid.extension.roundedTimeIntervalSince1900
import com.lunabeestudio.stopcovid.extension.secureKeystoreDataSource
import org.junit.After
import org.junit.Assert.assertNotNull
......@@ -18,6 +19,7 @@ import org.junit.Before
import org.junit.Test
import java.security.KeyStore
import java.util.Calendar
import java.util.Date
import kotlin.time.ExperimentalTime
import kotlin.time.days
import kotlin.time.seconds
......@@ -76,7 +78,7 @@ class VenuesManagerTest {
"uuid",
VenueQrType.STATIC,
"GA",
System.currentTimeMillis(),
System.currentTimeMillis().unixTimeMsToNtpTimeS(),
null,
null,
"playload"
......@@ -91,6 +93,16 @@ class VenuesManagerTest {
null,
"playload"
)
val venue4 = VenueQrCode(
"idtest3",
"uuid",
VenueQrType.STATIC,
"GA",
Long.MAX_VALUE,
null,
null,
"playload"
)
VenuesManager.clearAllData(sharedPrefs, keystoreDataSource)
assert(VenuesManager.getVenuesQrCode(keystoreDataSource)?.count() ?: 0 == 0)
......@@ -108,14 +120,19 @@ class VenuesManagerTest {
saveVenueMethod.invoke(VenuesManager, *parameters)
parameters[1] = venue3
saveVenueMethod.invoke(VenuesManager, *parameters)
parameters[1] = venue4
saveVenueMethod.invoke(VenuesManager, *parameters)
assert(VenuesManager.getVenuesQrCode(keystoreDataSource)?.count() == 2)
assert(VenuesManager.getVenuesQrCode(keystoreDataSource)?.get(0) == venue1)
assert(VenuesManager.getVenuesQrCode(keystoreDataSource)?.get(1) == venue2)
assert(VenuesManager.getVenuesQrCode(keystoreDataSource, 0L)?.count() == 2)
assert(VenuesManager.getVenuesQrCode(keystoreDataSource, 2L)?.count() == 1)
assert(VenuesManager.getVenuesQrCode(keystoreDataSource, includingFuture = true)?.count() == 3)
assert(VenuesManager.getVenuesQrCode(keystoreDataSource, 2L, true)?.count() == 2)
VenuesManager.clearAllData(sharedPrefs, keystoreDataSource)
assert(VenuesManager.getVenuesQrCode(keystoreDataSource)?.count() ?: 0 == 0)
assert(VenuesManager.getVenuesQrCode(keystoreDataSource, includingFuture = true)?.count() ?: 0 == 0)
}
@OptIn(ExperimentalTime::class)
......@@ -275,8 +292,8 @@ class VenuesManagerTest {
"https://tac.gouv.fr/1/491ab3ae-ad35-4301-8dd9-414ecf210713/GA/-/400/"
) == "GA")
val venue2QrCode = VenuesManager.getVenuesQrCode(keystoreDataSource)?.get(1)
assertNotNull("venue QR code should exist", venueQrCode)
assert(venue2QrCode!!.id == "491ab3ae-ad35-4301-8dd9-414ecf210713${venueQrCode.ntpTimestamp}") { "id is wrong" }
assertNotNull("venue QR code should exist", venue2QrCode)
assert(venue2QrCode!!.id == "491ab3ae-ad35-4301-8dd9-414ecf210713${venue2QrCode.ntpTimestamp}") { "id is wrong" }
assert(venue2QrCode.qrType == VenueQrType.DYNAMIC) { "Qr type is wrong" }
assert(venue2QrCode.uuid == "491ab3ae-ad35-4301-8dd9-414ecf210713") { "UUID is wrong" }
assert(venue2QrCode.venueType == "GA") { "Venue type is wrong" }
......@@ -289,8 +306,8 @@ class VenuesManagerTest {
"https://tac.gouv.fr/1/491ab3ae-ad35-4301-8dd9-414ecf210714/GA/4/400/"
) == "GA")
val venue3QrCode = VenuesManager.getVenuesQrCode(keystoreDataSource)?.get(2)
assertNotNull("venue QR code should exist", venueQrCode)
assert(venue3QrCode!!.id == "491ab3ae-ad35-4301-8dd9-414ecf210714${venueQrCode.ntpTimestamp}") { "id is wrong" }
assertNotNull("venue QR code should exist", venue3QrCode)
assert(venue3QrCode!!.id == "491ab3ae-ad35-4301-8dd9-414ecf210714${venue3QrCode.ntpTimestamp}") { "id is wrong" }
assert(venue3QrCode.qrType == VenueQrType.DYNAMIC) { "Qr type is wrong" }
assert(venue3QrCode.uuid == "491ab3ae-ad35-4301-8dd9-414ecf210714") { "UUID is wrong" }
assert(venue3QrCode.venueType == "GA") { "Venue type is wrong" }
......@@ -303,8 +320,8 @@ class VenuesManagerTest {
"https://tac.gouv.fr/1/491ab3ae-ad35-4301-8dd9-414ecf210715/GA/4/-/"
) == "GA")
val venue4QrCode = VenuesManager.getVenuesQrCode(keystoreDataSource)?.get(3)
assertNotNull("venue QR code should exist", venueQrCode)
assert(venue4QrCode!!.id == "491ab3ae-ad35-4301-8dd9-414ecf210715${venueQrCode.ntpTimestamp}") { "id is wrong" }
assertNotNull("venue QR code should exist", venue4QrCode)
assert(venue4QrCode!!.id == "491ab3ae-ad35-4301-8dd9-414ecf210715${venue4QrCode.ntpTimestamp}") { "id is wrong" }
assert(venue4QrCode.qrType == VenueQrType.DYNAMIC) { "Qr type is wrong" }
assert(venue4QrCode.uuid == "491ab3ae-ad35-4301-8dd9-414ecf210715") { "UUID is wrong" }
assert(venue4QrCode.venueType == "GA") { "Venue type is wrong" }
......@@ -317,13 +334,57 @@ class VenuesManagerTest {
"https://tac.gouv.fr/1/491ab3ae-ad35-4301-8dd9-414ecf210716/GA/-/-/"
) == "GA")
val venue5QrCode = VenuesManager.getVenuesQrCode(keystoreDataSource)?.get(4)
assertNotNull("venue QR code should exist", venueQrCode)
assert(venue5QrCode!!.id == "491ab3ae-ad35-4301-8dd9-414ecf210716${venueQrCode.ntpTimestamp}") { "id is wrong" }
assertNotNull("venue QR code should exist", venue5QrCode)
assert(venue5QrCode!!.id == "491ab3ae-ad35-4301-8dd9-414ecf210716${venue5QrCode.ntpTimestamp}") { "id is wrong" }
assert(venue5QrCode.qrType == VenueQrType.DYNAMIC) { "Qr type is wrong" }
assert(venue5QrCode.uuid == "491ab3ae-ad35-4301-8dd9-414ecf210716") { "UUID is wrong" }
assert(venue5QrCode.venueType == "GA") { "Venue type is wrong" }
assert(venue5QrCode.venueCategory == 0) { "Venue category is wrong" }
assert(venue5QrCode.venueCapacity == 0) { "Venue capacity is wrong" }
assert(VenuesManager.processVenueUrl(
robertManager = context.robertManager(),
secureKeystoreDataSource = keystoreDataSource,
"https://tac.gouv.fr/1/491ab3ae-ad35-4301-8dd9-414ecf210717/GA/-/-/1610621656"
) == "GA")
val venue6QrCode = VenuesManager.getVenuesQrCode(keystoreDataSource)?.get(5)
assertNotNull("venue QR code should exist", venue6QrCode)
assert(venue6QrCode!!.id == "491ab3ae-ad35-4301-8dd9-414ecf210717${venue6QrCode.ntpTimestamp}") { "id is wrong" }
assert(venue6QrCode.qrType == VenueQrType.DYNAMIC) { "Qr type is wrong" }
assert(venue6QrCode.uuid == "491ab3ae-ad35-4301-8dd9-414ecf210717") { "UUID is wrong" }
assert(venue6QrCode.venueType == "GA") { "Venue type is wrong" }
assert(venue6QrCode.venueCategory == 0) { "Venue category is wrong" }
assert(venue6QrCode.venueCapacity == 0) { "Venue capacity is wrong" }
assert(venue6QrCode.ntpTimestamp == Date(1610621656000)
.roundedTimeIntervalSince1900(context.robertManager().configuration.venuesTimestampRoundingInterval.toLong())) {
"Venue capacity is wrong"
}
}
@OptIn(ExperimentalTime::class)
@Test
fun is_venue_expired() {
assert(!VenuesManager.isVenueUrlExpired(
robertManager = context.robertManager(),
"https://tac.gouv.fr/0/491ab3/GA/4/400/"
)) { "Invalid format" }
assert(!VenuesManager.isVenueUrlExpired(
robertManager = context.robertManager(),
"https://tac.gouv.fr/1/491ab3ae-ad35-4301-8dd9-414ecf210717/GA/-/-"
)) { "Not date shouldn't be expired" }
val expiredTimestamp = (System.currentTimeMillis() - context.robertManager().configuration.venuesRetentionPeriod.days.toLongMilliseconds()) / 1000
assert(VenuesManager.isVenueUrlExpired(
robertManager = context.robertManager(),
"https://tac.gouv.fr/1/491ab3ae-ad35-4301-8dd9-414ecf210717/GA/-/-/$expiredTimestamp"
)) { "Timestamp before retention date should be expired" }
val notExpiredTimestamp = expiredTimestamp + 1
assert(!VenuesManager.isVenueUrlExpired(
robertManager = context.robertManager(),
"https://tac.gouv.fr/1/491ab3ae-ad35-4301-8dd9-414ecf210717/GA/-/-/$notExpiredTimestamp"
)) { "Expired +1s shouldn't be expired" }
}
@OptIn(ExperimentalTime::class)
......
......@@ -48,9 +48,6 @@
{
"code":"travail"
},
{
"code":"achats"
},
{
"code":"sante"
},
......@@ -60,9 +57,6 @@
{
"code":"handicap"
},
{
"code":"sport_animaux"
},
{
"code":"convocation"
},
......@@ -70,7 +64,10 @@
"code":"missions"
},
{
"code":"enfants"
"code":"transits"
},
{
"code":"animaux"
}
]
}
......
......@@ -30,8 +30,12 @@
},
{
"section": "l'Assurance Maladie",
"description": "Voici plusieurs informations utiles fournies par Ameli.fr.",
"description": "Voici plusieurs informations utiles fournies par Ameli.fr, dont l’arrêt de travail dérogatoire si vous êtes personne contact ou si vous présentez des symptômes de la Covid-19.",
"links": [
{
"label": "Arrêt de travail dérogatoire",
"url": "https://declare.ameli.fr/"
},
{
"label": "Contact tracing",
"url": "https://www.ameli.fr/assure/covid-19/tester-alerter-proteger-comprendre-la-strategie-pour-stopper-lepidemie/contact-tracing-arreter-les-chaines-de-transmission"
......@@ -40,10 +44,6 @@
"label": "Vous êtes une personne contact ?",
"url": "https://www.ameli.fr/assure/covid-19/en-cas-de-contact-avec-une-personne-malade-du-covid-19/en-cas-de-contact-avec-une-personne-malade-de-la-covid-19"
},
{
"label": "Arrêt de travail",
"url": "https://www.ameli.fr/assure/covid-19/arret-de-travail/covid-19-dispositif-dindemnisation-des-interruptions-de-travail"
}
]
......
......@@ -30,8 +30,12 @@
},
{
"section": "l'Assurance Maladie",
"description": "Voici plusieurs informations utiles fournies par Ameli.fr.",
"description": "Voici plusieurs informations utiles fournies par Ameli.fr, dont l’arrêt de travail dérogatoire si vous êtes personne contact ou si vous présentez des symptômes de la Covid-19.",
"links": [
{
"label": "Arrêt de travail dérogatoire",
"url": "https://declare.ameli.fr/"
},
{
"label": "Contact tracing",
"url": "https://www.ameli.fr/assure/covid-19/tester-alerter-proteger-comprendre-la-strategie-pour-stopper-lepidemie/contact-tracing-arreter-les-chaines-de-transmission"
......@@ -40,10 +44,6 @@
"label": "Vous êtes une personne contact ?",
"url": "https://www.ameli.fr/assure/covid-19/en-cas-de-contact-avec-une-personne-malade-du-covid-19/en-cas-de-contact-avec-une-personne-malade-de-la-covid-19"
},
{
"label": "Arrêt de travail",
"url": "https://www.ameli.fr/assure/covid-19/arret-de-travail/covid-19-dispositif-dindemnisation-des-interruptions-de-travail"
}
]
......
......@@ -557,7 +557,7 @@
"home.moreSection.venuesHistory": "قائمة الأماكن",
"venuesRecording.onboardingController.title": "الأماكن",
"venuesRecording.onboardingController.mainMessage.title": "نحن بحاجة اليك لاعلامك واعلام غيرك في حال التعرّض الى الكوفيد19 بمكان معيّن",
"venuesRecording.onboardingController.mainMessage.message": "بامكانك التعرّف عن حالات الاصابات المعلن عنها على التطبيق فقط من خلال مسح رمز الاستجابة السريع المعلّق بعين المكان.\n\nكما أنّك في حال اعلانك عن اصابتك ستُعلِم الأشخاص الذين كانوا متواجدين معك بالمكان مع احتفاظك بسرية هويتك!",
"venuesRecording.onboardingController.mainMessage.message": "بامكانك التعرّف عن حالات الاصابات المعلن عنها على التطبيق فقط من خلال مسح رمز الاستجابة السريع المعلّق بعين المكان.",
"venuesRecording.onboardingController.button.participate": "أشارك",
"venuesRecording.confirmationController.title": "تمّ تسجيل المكان",
"erp.confirmationMessage.default.title": "شكرا!",
......@@ -701,16 +701,24 @@
"confirmVenueQrCodeController.explanation.subtitle": "هل تريد اضافة هذا المكان الى سجل قائمة الأماكن؟",
"confirmVenueQrCodeController.confirm": "اضافة المكان",
"home.vaccinationSection.cellTitle": "La vaccination, c'est maintenant !",
"home.vaccinationSection.cellSubtitle": "Vérifiez votre éligibilité et trouvez où vous faire vacciner.",
"vaccinationController.title": "Vaccination",
"vaccinationController.eligibility.title": "Suis-je éligible ?",
"vaccinationController.eligibility.subtitle": "Tu as plus de 65 ans et cice et cela et encore cela .... ? C'est le moment.",
"vaccinationController.eligibility.buttonTitle": "En savoir plus",
"vaccinationController.eligibility.url": "https://solidarites-sante.gouv.fr/grands-dossiers/la-vaccination-contre-la-covid-19/article/la-strategie-vaccinale",
"vaccinationController.vaccinationLocation.title": "Où me faire vacciner ?",
"vaccinationController.vaccinationLocation.subtitle": "Rendez-vous sur sante.fr pour trouver les lieux de vaccination.",
"vaccinationController.vaccinationLocation.buttonTitle": "Trouver un lieu",
"vaccinationController.vaccinationLocation.url": "https://www.data.gouv.fr/fr/datasets/vaccinations-covid19-en-france-par-region-donnees-ministere-de-la-sante/",
"contactUs.url": "https://bonjour.tousanticovid.gouv.fr/contact.html"
"home.vaccinationSection.cellTitle": "Je me fais vacciner !",
"home.vaccinationSection.cellSubtitle": "Vérifiez votre éligibilité et trouvez un centre près de chez vous pour vous faire vacciner.",
"vaccinationController.title": "Vaccination",
"vaccinationController.eligibility.title": "Suis-je prioritaire pour me faire vacciner ?",
"vaccinationController.eligibility.subtitle": "Aujourd’hui, les publics prioritaires définis par les autorités sanitaires sont :\n- Les personnes âgées en EHPAD ou en unité de soin de longue durée.\n- L’ensemble des soignants de plus de 50 ans ou présentant des comorbidités.\n- Les pompiers de plus de 50 ans ou présentant des comorbidités.\n- Les aides à domicile de plus de 50 ans ou présentant des comorbidités.\n- Personnes handicapées vulnérables prises en charge dans les foyers d’accueil médicalisés et les maisons d’accueil spécialisées\n\nDès le 18 janvier la campagne de vaccination s’ouvrira à l’ensemble des personnes de plus de 75 ans.",
"vaccinationController.eligibility.buttonTitle": "En savoir plus",
"vaccinationController.eligibility.url": "https://solidarites-sante.gouv.fr/grands-dossiers/la-vaccination-contre-la-covid-19/article/la-strategie-vaccinale",
"vaccinationController.vaccinationLocation.title": "Trouver un centre pour me faire vacciner",
"vaccinationController.vaccinationLocation.subtitle": "Rendez vous sur www.Santé.fr pour trouver les centres de vaccination dès le vendredi 15 janvier à 8h.",
"vaccinationController.vaccinationLocation.buttonTitle": "Trouver un centre",
"vaccinationController.vaccinationLocation.url": "https://www.sante.fr/carte-vaccination-covid?source=TousAntiCovid",
"contactUs.url": "https://bonjour.tousanticovid.gouv.fr/contact.html",
"keyfigure.nombrevaccinations.colorCode.light":"#34C859",
"keyfigure.nombrevaccinations.colorCode.dark":"#31D158",
"keyfigure.nombrevaccinations.label":"Nombre total de personnes vaccinées",
"keyfigure.nombrevaccinations.shortLabel":"Total vaccinés",
"keyfigure.nombrevaccinations.description":"Le nombre cumulé de personnes vaccinées en France est obtenu quotidiennement auprès des Agences Régionales de Santé, qui recensent les données auprès des établissements pour personnes âgées (vaccination des résidents et des professionnels des établissements) et des centres de vaccination (vaccination des professionnels de santé). Les données sont disponibles au niveau régional et national de manière quotidienne.",
"enterCodeController.alert.expiredCode.title":"Expiré",
"enterCodeController.alert.expiredCode.message":"Votre présence dans ce lieu date de plus de 14 jours. Il n'est donc plus utile d'un point de vue sanitaire de l'ajouter à votre historique."
}
......@@ -580,7 +580,7 @@
"onboarding.venuesController.title": "Orte",
"onboarding.venuesController.bottomButton": "Weiter",
"onboarding.venuesController.mainMessage.title": "Unterbrechung der Übertragungskette an Orten mit Publikumsverkehr",
"onboarding.venuesController.mainMessage.subtitle": "Scannen Sie den QR-Code an diesen Orten und lassen Sie sich benachrichtigen, wenn jemand, der sich zur gleichen Zeit wie Sie an diesen Orten aufgehalten hat, einen Fall von COVID-19 meldet. \n\nSie sind Gastgeber einer privaten Veranstaltung? Erstellen Sie zu diesem Anlass einen QR-Code und teilen Sie ihn mit Ihren Gästen, um sich anonym zu schützen.",
"onboarding.venuesController.mainMessage.subtitle": "Scannen Sie den QR-Code an diesen Orten und lassen Sie sich benachrichtigen, wenn jemand, der sich zur gleichen Zeit wie Sie an diesen Orten aufgehalten hat, einen Fall von COVID-19 meldet.",
"venueType.l": "Veranstaltungsort",
"erp.confirmationMessage.n.title": "Guten Appetit🍽!",
"erp.confirmationMessage.n.message": " Sie haben diese Seite zu Ihrem Verlauf hinzugefügt, Sie werden benachrichtigt, wenn sich jemand meldet, der zur gleichen Zeit wie Sie an diesem Ort war und eine Ansteckung mit COVID-19 gemeldet hat.",
......@@ -701,16 +701,24 @@
"confirmVenueQrCodeController.explanation.subtitle": "Möchten Sie diesen Ort zu Ihrem Orteverlauf hinzufügen?",
"confirmVenueQrCodeController.confirm": "Diesen Ort hinzufügen",
"home.vaccinationSection.cellTitle": "La vaccination, c'est maintenant !",
"home.vaccinationSection.cellSubtitle": "Vérifiez votre éligibilité et trouvez où vous faire vacciner.",
"vaccinationController.title": "Vaccination",
"vaccinationController.eligibility.title": "Suis-je éligible ?",
"vaccinationController.eligibility.subtitle": "Tu as plus de 65 ans et cice et cela et encore cela .... ? C'est le moment.",
"vaccinationController.eligibility.buttonTitle": "En savoir plus",
"vaccinationController.eligibility.url": "https://solidarites-sante.gouv.fr/grands-dossiers/la-vaccination-contre-la-covid-19/article/la-strategie-vaccinale",
"vaccinationController.vaccinationLocation.title": "Où me faire vacciner ?",
"vaccinationController.vaccinationLocation.subtitle": "Rendez-vous sur sante.fr pour trouver les lieux de vaccination.",
"vaccinationController.vaccinationLocation.buttonTitle": "Trouver un lieu",
"vaccinationController.vaccinationLocation.url": "https://www.data.gouv.fr/fr/datasets/vaccinations-covid19-en-france-par-region-donnees-ministere-de-la-sante/",
"contactUs.url": "https://bonjour.tousanticovid.gouv.fr/contact.html"
"home.vaccinationSection.cellTitle": "Je me fais vacciner !",
"home.vaccinationSection.cellSubtitle": "Vérifiez votre éligibilité et trouvez un centre près de chez vous pour vous faire vacciner.",
"vaccinationController.title": "Vaccination",
"vaccinationController.eligibility.title": "Suis-je prioritaire pour me faire vacciner ?",
"vaccinationController.eligibility.subtitle": "Aujourd’hui, les publics prioritaires définis par les autorités sanitaires sont :\n- Les personnes âgées en EHPAD ou en unité de soin de longue durée.\n- L’ensemble des soignants de plus de 50 ans ou présentant des comorbidités.\n- Les pompiers de plus de 50 ans ou présentant des comorbidités.\n- Les aides à domicile de plus de 50 ans ou présentant des comorbidités.\n- Personnes handicapées vulnérables prises en charge dans les foyers d’accueil médicalisés et les maisons d’accueil spécialisées\n\nDès le 18 janvier la campagne de vaccination s’ouvrira à l’ensemble des personnes de plus de 75 ans.",
"vaccinationController.eligibility.buttonTitle": "En savoir plus",
"vaccinationController.eligibility.url": "https://solidarites-sante.gouv.fr/grands-dossiers/la-vaccination-contre-la-covid-19/article/la-strategie-vaccinale",
"vaccinationController.vaccinationLocation.title": "Trouver un centre pour me faire vacciner",
"vaccinationController.vaccinationLocation.subtitle": "Rendez vous sur www.Santé.fr pour trouver les centres de vaccination dès le vendredi 15 janvier à 8h.",
"vaccinationController.vaccinationLocation.buttonTitle": "Trouver un centre",
"vaccinationController.vaccinationLocation.url": "https://www.sante.fr/carte-vaccination-covid?source=TousAntiCovid",
"contactUs.url": "https://bonjour.tousanticovid.gouv.fr/contact.html",
"keyfigure.nombrevaccinations.colorCode.light":"#34C859",
"keyfigure.nombrevaccinations.colorCode.dark":"#31D158",
"keyfigure.nombrevaccinations.label":"Nombre total de personnes vaccinées",
"keyfigure.nombrevaccinations.shortLabel":"Total vaccinés",
"keyfigure.nombrevaccinations.description":"Le nombre cumulé de personnes vaccinées en France est obtenu quotidiennement auprès des Agences Régionales de Santé, qui recensent les données auprès des établissements pour personnes âgées (vaccination des résidents et des professionnels des établissements) et des centres de vaccination (vaccination des professionnels de santé). Les données sont disponibles au niveau régional et national de manière quotidienne.",
"enterCodeController.alert.expiredCode.title":"Expiré",
"enterCodeController.alert.expiredCode.message":"Votre présence dans ce lieu date de plus de 14 jours. Il n'est donc plus utile d'un point de vue sanitaire de l'ajouter à votre historique."
}
......@@ -580,7 +580,7 @@
"onboarding.venuesController.title": "Locations",
"onboarding.venuesController.bottomButton": "Continue",
"onboarding.venuesController.mainMessage.title": "Break the chain of transmission in public places",
"onboarding.venuesController.mainMessage.subtitle": "Scan the QR code in these locations and you will receive a notification if someone who has tested positive for COVID-19 was there at the same time as you.\n\nAre you organising a private event? Create a QR code for the event and share it with your guests so that they can stay safe anonymously.",
"onboarding.venuesController.mainMessage.subtitle": "Scan the QR code in these locations and you will receive a notification if someone who has tested positive for COVID-19 was there at the same time as you.",
"venueType.l": "Concert hall",
"erp.confirmationMessage.n.title": "Bon appétit 🍽 !",
"erp.confirmationMessage.n.message": "You have added this location to your history. You will be notified if someone who has tested positive for COVID-19 and who was contagious was there at the same time as you.",
......@@ -701,16 +701,24 @@
"confirmVenueQrCodeController.explanation.subtitle": "Do you want to add this location to your location history?",
"confirmVenueQrCodeController.confirm": "Add this location",
"home.vaccinationSection.cellTitle": "La vaccination, c'est maintenant !",
"home.vaccinationSection.cellSubtitle": "Vérifiez votre éligibilité et trouvez où vous faire vacciner.",
"vaccinationController.title": "Vaccination",
"vaccinationController.eligibility.title": "Suis-je éligible ?",
"vaccinationController.eligibility.subtitle": "Tu as plus de 65 ans et cice et cela et encore cela .... ? C'est le moment.",
"vaccinationController.eligibility.buttonTitle": "En savoir plus",
"vaccinationController.eligibility.url": "https://solidarites-sante.gouv.fr/grands-dossiers/la-vaccination-contre-la-covid-19/article/la-strategie-vaccinale",
"vaccinationController.vaccinationLocation.title": "Où me faire vacciner ?",
"vaccinationController.vaccinationLocation.subtitle": "Rendez-vous sur sante.fr pour trouver les lieux de vaccination.",
"vaccinationController.vaccinationLocation.buttonTitle": "Trouver un lieu",
"vaccinationController.vaccinationLocation.url": "https://www.data.gouv.fr/fr/datasets/vaccinations-covid19-en-france-par-region-donnees-ministere-de-la-sante/",
"contactUs.url": "https://bonjour.tousanticovid.gouv.fr/contact.html"
"home.vaccinationSection.cellTitle": "Je me fais vacciner !",
"home.vaccinationSection.cellSubtitle": "Vérifiez votre éligibilité et trouvez un centre près de chez vous pour vous faire vacciner.",
"vaccinationController.title": "Vaccination",
"vaccinationController.eligibility.title": "Suis-je prioritaire pour me faire vacciner ?",
"vaccinationController.eligibility.subtitle": "Aujourd’hui, les publics prioritaires définis par les autorités sanitaires sont :\n- Les personnes âgées en EHPAD ou en unité de soin de longue durée.\n- L’ensemble des soignants de plus de 50 ans ou présentant des comorbidités.\n- Les pompiers de plus de 50 ans ou présentant des comorbidités.\n- Les aides à domicile de plus de 50 ans ou présentant des comorbidités.\n- Personnes handicapées vulnérables prises en charge dans les foyers d’accueil médicalisés et les maisons d’accueil spécialisées\n\nDès le 18 janvier la campagne de vaccination s’ouvrira à l’ensemble des personnes de plus de 75 ans.",
"vaccinationController.eligibility.buttonTitle": "En savoir plus",
"vaccinationController.eligibility.url": "https://solidarites-sante.gouv.fr/grands-dossiers/la-vaccination-contre-la-covid-19/article/la-strategie-vaccinale",
"vaccinationController.vaccinationLocation.title": "Trouver un centre pour me faire vacciner",
"vaccinationController.vaccinationLocation.subtitle": "Rendez vous sur www.Santé.fr pour trouver les centres de vaccination dès le vendredi 15 janvier à 8h.",
"vaccinationController.vaccinationLocation.buttonTitle": "Trouver un centre",
"vaccinationController.vaccinationLocation.url": "https://www.sante.fr/carte-vaccination-covid?source=TousAntiCovid",
"contactUs.url": "https://bonjour.tousanticovid.gouv.fr/contact.html",
"keyfigure.nombrevaccinations.colorCode.light":"#34C859",
"keyfigure.nombrevaccinations.colorCode.dark":"#31D158",
"keyfigure.nombrevaccinations.label":"Nombre total de personnes vaccinées",
"keyfigure.nombrevaccinations.shortLabel":"Total vaccinés",
"keyfigure.nombrevaccinations.description":"Le nombre cumulé de personnes vaccinées en France est obtenu quotidiennement auprès des Agences Régionales de Santé, qui recensent les données auprès des établissements pour personnes âgées (vaccination des résidents et des professionnels des établissements) et des centres de vaccination (vaccination des professionnels de santé). Les données sont disponibles au niveau régional et national de manière quotidienne.",
"enterCodeController.alert.expiredCode.title":"Expiré",
"enterCodeController.alert.expiredCode.message":"Votre présence dans ce lieu date de plus de 14 jours. Il n'est donc plus utile d'un point de vue sanitaire de l'ajouter à votre historique."
}
......@@ -580,7 +580,7 @@
"onboarding.venuesController.title": "Ubicaciones",
"onboarding.venuesController.bottomButton": "Continuar",
"onboarding.venuesController.mainMessage.title": "Romper la cadena de transmisión en los establecimientos públicos",
"onboarding.venuesController.mainMessage.subtitle": "Escanea el código QR de estos establecimientos y recibe un aviso en caso de que alguien que haya coincidido contigo en este lugar comunique un positivo por COVID-19.\n¿Organizas un evento privado? Crea un código QR para la ocasión y compártelo con tus invitados para protegerlos de forma anónima.",
"onboarding.venuesController.mainMessage.subtitle": "Escanea el código QR de estos establecimientos y recibe un aviso en caso de que alguien que haya coincidido contigo en este lugar comunique un positivo por COVID-19.",
"venueType.l": "Sala de espectáculos",
"erp.confirmationMessage.n.title": "¡Buen provecho 🍽!",
"erp.confirmationMessage.n.message": "Has añadido esta ubicación a tu historial. Recibirás un aviso en caso de que alguien que haya coincidido contigo en este lugar, durante su periodo infectivo, comunique un positivo COVID-19.",
......@@ -701,16 +701,24 @@
"confirmVenueQrCodeController.explanation.subtitle": "¿Quieres añadirlo a tu historial de ubicaciones?",
"confirmVenueQrCodeController.confirm": "Añadir esta ubicación",
"home.vaccinationSection.cellTitle": "La vaccination, c'est maintenant !",
"home.vaccinationSection.cellSubtitle": "Vérifiez votre éligibilité et trouvez où vous faire vacciner.",
"vaccinationController.title": "Vaccination",
"vaccinationController.eligibility.title": "Suis-je éligible ?",
"vaccinationController.eligibility.subtitle": "Tu as plus de 65 ans et cice et cela et encore cela .... ? C'est le moment.",
"vaccinationController.eligibility.buttonTitle": "En savoir plus",
"vaccinationController.eligibility.url": "https://solidarites-sante.gouv.fr/grands-dossiers/la-vaccination-contre-la-covid-19/article/la-strategie-vaccinale",
"vaccinationController.vaccinationLocation.title": "Où me faire vacciner ?",
"vaccinationController.vaccinationLocation.subtitle": "Rendez-vous sur sante.fr pour trouver les lieux de vaccination.",
"vaccinationController.vaccinationLocation.buttonTitle": "Trouver un lieu",
"vaccinationController.vaccinationLocation.url": "https://www.data.gouv.fr/fr/datasets/vaccinations-covid19-en-france-par-region-donnees-ministere-de-la-sante/",
"contactUs.url": "https://bonjour.tousanticovid.gouv.fr/contact.html"
"home.vaccinationSection.cellTitle": "Je me fais vacciner !",
"home.vaccinationSection.cellSubtitle": "Vérifiez votre éligibilité et trouvez un centre près de chez vous pour vous faire vacciner.",
"vaccinationController.title": "Vaccination",
"vaccinationController.eligibility.title": "Suis-je prioritaire pour me faire vacciner ?",
"vaccinationController.eligibility.subtitle": "Aujourd’hui, les publics prioritaires définis par les autorités sanitaires sont :\n- Les personnes âgées en EHPAD ou en unité de soin de longue durée.\n- L’ensemble des soignants de plus de 50 ans ou présentant des comorbidités.\n- Les pompiers de plus de 50 ans ou présentant des comorbidités.\n- Les aides à domicile de plus de 50 ans ou présentant des comorbidités.\n- Personnes handicapées vulnérables prises en charge dans les foyers d’accueil médicalisés et les maisons d’accueil spécialisées\n\nDès le 18 janvier la campagne de vaccination s’ouvrira à l’ensemble des personnes de plus de 75 ans.",
"vaccinationController.eligibility.buttonTitle": "En savoir plus",
"vaccinationController.eligibility.url": "https://solidarites-sante.gouv.fr/grands-dossiers/la-vaccination-contre-la-covid-19/article/la-strategie-vaccinale",
"vaccinationController.vaccinationLocation.title": "Trouver un centre pour me faire vacciner",
"vaccinationController.vaccinationLocation.subtitle": "Rendez vous sur www.Santé.fr pour trouver les centres de vaccination dès le vendredi 15 janvier à 8h.",
"vaccinationController.vaccinationLocation.buttonTitle": "Trouver un centre",
"vaccinationController.vaccinationLocation.url": "https://www.sante.fr/carte-vaccination-covid?source=TousAntiCovid",
"contactUs.url": "https://bonjour.tousanticovid.gouv.fr/contact.html",
"keyfigure.nombrevaccinations.colorCode.light":"#34C859",
"keyfigure.nombrevaccinations.colorCode.dark":"#31D158",
"keyfigure.nombrevaccinations.label":"Nombre total de personnes vaccinées",
"keyfigure.nombrevaccinations.shortLabel":"Total vaccinés",
"keyfigure.nombrevaccinations.description":"Le nombre cumulé de personnes vaccinées en France est obtenu quotidiennement auprès des Agences Régionales de Santé, qui recensent les données auprès des établissements pour personnes âgées (vaccination des résidents et des professionnels des établissements) et des centres de vaccination (vaccination des professionnels de santé). Les données sont disponibles au niveau régional et national de manière quotidienne.",
"enterCodeController.alert.expiredCode.title":"Expiré",
"enterCodeController.alert.expiredCode.message":"Votre présence dans ce lieu date de plus de 14 jours. Il n'est donc plus utile d'un point de vue sanitaire de l'ajouter à votre historique."
}
......@@ -49,7 +49,7 @@
"sickController.state.nothing.title":"Vous n'avez pas été à proximité d’un utilisateur diagnostiqué comme un cas de COVID-19",
"sickController.state.nothing.subtitle":"N'oubliez pas pour autant les mesures barrières et les recommandations sanitaires",
"sickController.state.contact.title":"Vous avez été exposé à au moins un utilisateur diagnostiqué comme un cas de COVID-19 ces derniers jours, vous êtes un contact à risque",
"sickController.state.contact.subtitle":"Isolez-vous, contactez votre médecin en l’informant que vous avez été notifié comme contact à risque et faites-vous tester dès aujourd’hui grâce à un accès prioritaire. Ne contactez pas les plateformes de l’Assurance Maladie, elles vous contacteront si la personne diagnostiquée positive vous connait. Pour savoir combien de temps vous isoler, allez sur la page d'accueil de l'appli.",
"sickController.state.contact.subtitle":"Isolez-vous, contactez votre médecin en l’informant que vous avez été notifié comme contact à risque et faites-vous tester dès aujourd’hui grâce à un accès prioritaire.\n\nNe contactez pas les plateformes de l’Assurance Maladie, elles vous contacteront si la personne diagnostiquée positive vous connait.\n\nPour savoir combien de temps vous isoler, allez sur l'écran d'accueil de l'appli.",
"sickController.state.deleteNotification":"Supprimer la notification",
"sickController.state.deleteNotification.alert.title":"Voulez-vous vraiment supprimer la notification ?",
"sharingController.title":"Partager",
......@@ -570,13 +570,13 @@
"home.venuesSection.title": "Lieux",
"home.venuesSection.recordCell.title": "Scanner un QR code lieu",
"home.venuesSection.recordCell.subtitle": "Enregistrez l’historique des lieux que vous fréquentez",
"home.venuesSection.recordCell.subtitle": "Enregistrez l’historique des lieux que vous fréquentez (en cours de déploiement)",
"home.venuesSection.privateCell.title": "Vous organisez un événement privé ?",
"home.venuesSection.privateCell.subtitle": "Créez votre propre code, permettant de protéger vos invités",
"home.moreSection.venuesHistory": "Historique des lieux",
"venuesRecording.onboardingController.title": "Lieux",
"venuesRecording.onboardingController.mainMessage.title": "Pour être informé et informer les autres en cas d’exposition à la COVID-19 dans un lieu, nous avons besoin de vous",
"venuesRecording.onboardingController.mainMessage.message": "Simplement en scannant les QR Codes affichés dans les lieux, vous pourrez être informé si quelqu’un se déclare comme un cas COVID-19 dans l’application.\n\nEt si vous vous déclarez positif dans l'application, vous informerez anonymement toutes les personnes qui étaient dans ce lieu en même temps que vous !",
"venuesRecording.onboardingController.mainMessage.message": "En scannant les QR Codes affichés dans les lieux, vous pourrez être informé si quelqu’un se déclare comme un cas COVID-19 dans l’application et qu’il a fréquenté le même lieu que vous lorsqu’il était contagieux.\n\nEt si vous vous déclarez positif dans l'application, vous informerez anonymement toutes les personnes qui étaient dans ce lieu en même temps que vous quand vous étiez contagieux.\n\n👉🏻 En phase de pré-lancement, seulement un nombre limité de lieux présente ces QR Codes pour l'instant, pour accompagner la réouverture des lieux en fonction de la situation sanitaire et des mesures prises par les autorités.",
"venuesRecording.onboardingController.button.participate": "Je participe",
"venuesRecording.confirmationController.title": "Lieu enregistré",
"erp.confirmationMessage.default.title": "Merci !",
......@@ -602,7 +602,7 @@
"onboarding.venuesController.title":"Lieux",
"onboarding.venuesController.bottomButton":"Continuer",
"onboarding.venuesController.mainMessage.title":"Rompre les chaînes de transmission dans les lieux recevant du public",
"onboarding.venuesController.mainMessage.subtitle":"Scannez le QR code dans ces lieux, et soyez notifié si quelqu’un qui a fréquenté ces lieux en même temps que vous se déclare comme un cas de COVID-19.\n\nVous organisez un événement privé ? Créez un QR code pour l'occasion et partagez-le avec vos invités pour se protéger anonymement.",
"onboarding.venuesController.mainMessage.subtitle":"En scannant les QR Codes affichés dans les lieux, vous pourrez être informé si quelqu’un se déclare comme un cas COVID-19 dans l’application et qu’il a fréquenté le même lieu que vous lorsqu’il était contagieux.\n\nEt si vous vous déclarez positif dans l'application, vous informerez anonymement toutes les personnes qui étaient dans ce lieu en même temps que vous quand vous étiez contagieux.\n\n👉🏻 En phase de pré-lancement, seulement un nombre limité de lieux présente ces QR Codes pour l'instant, pour accompagner la réouverture des lieux en fonction de la situation sanitaire et des mesures prises par les autorités.",
"venueType.l" : "Salle de spectacle",
"erp.confirmationMessage.n.title": "Bon appétit 🍽 !",
......@@ -696,7 +696,7 @@
"isolation.recommendation.symptoms.negativeTest": "Je suis testé négatif",
"isolation.recommendation.contactCaseUnknownIndex.testingSites": "Où me faire dépister ?",
"isolation.recommendation.contactCaseUnknownIndex.symptoms": "J'ai des symptômes COVID-19",
"isolation.recommendation.contactCaseUnknownIndex.positiveTest": "Je suis testé positif",
"isolation.recommendation.contactCaseUnknownIndex.positiveTest": "Je suis testé positif",
"isolation.recommendation.contactCaseUnknownIndex.negativeTest": "Je suis testé négatif",
"isolation.recommendation.contactCaseKnownIndexNotTested.testingSites": "Où me faire dépister ?",
"isolation.recommendation.contactCaseKnownIndexNotTested.positiveTest": "Je suis testé positif",
......@@ -743,26 +743,34 @@
"venuesHistoryController.footer": "Cet historique des lieux vous permettra d'être averti si quelqu'un se déclare positif dans ce lieu.\nTous les lieux de plus de 14 jours sont effacés automatiquement à chaque ouverture de l'application.",
"venuesHistoryController.delete.alert.title": "Souhaitez-vous supprimer ce lieu ?",
"venuesHistoryController.delete.alert.message": "Une fois supprimé, si une personne qui a fréquenté ce lieu en même temps que vous se déclare malade, alors vous ne serez pas notifié.",
"manageDataController.isolationData.title":"Mes données \"Isolement\"",
"manageDataController.isolationData.title":"Mes données \"isolement\"",
"manageDataController.isolationData.subtitle":"Vous pouvez supprimer les données de votre téléphone liées aux informations d’isolement.",
"manageDataController.isolationData.button":"Effacer sur mon téléphone",
"manageDataController.isolationData.confirmationDialog.title":"Confirmation",
"manageDataController.isolationData.confirmationDialog.message":"Confirmez-vous vouloir supprimer toutes les données liées à l'isolement ?",
"confirmVenueQrCodeController.title":"Confirmation",
"confirmVenueQrCodeController.explanation.title":"Vous venez d'appuyer sur un lien TousAntiCovid pour un lieu.",
"confirmVenueQrCodeController.explanation.subtitle":"Voulez-vous ajouter ce lieu à votre historique de lieux ?",
"confirmVenueQrCodeController.explanation.title":"En ajoutant ce lieu, vous pourrez être informé si quelqu’un se déclare comme un cas COVID-19 et qu’il a fréquenté ce même lieu que vous lorsqu’il était contagieux.\n\nEt si vous vous déclarez positif, vous informerez anonymement toutes les personnes qui étaient dans ce lieu en même temps que vous.",
"confirmVenueQrCodeController.explanation.subtitle":"Confirmez-vous l'ajout de ce lieu à votre historique ?",
"confirmVenueQrCodeController.confirm":"Ajouter ce lieu",
"home.vaccinationSection.cellTitle": "La vaccination, c'est maintenant !",
"home.vaccinationSection.cellSubtitle": "Vérifiez votre éligibilité et trouvez vous faire vacciner.",
"home.vaccinationSection.cellTitle": "Je me fais vacciner !",
"home.vaccinationSection.cellSubtitle": "Vérifiez votre éligibilité et trouvez un centre près de chez vous pour vous faire vacciner.",
"vaccinationController.title": "Vaccination",
"vaccinationController.eligibility.title": "Suis-je éligible ?",
"vaccinationController.eligibility.subtitle": "Tu as plus de 65 ans et cice et cela et encore cela .... ? C'est le moment.",
"vaccinationController.eligibility.title": "Suis-je prioritaire pour me faire vacciner ?",
"vaccinationController.eligibility.subtitle": "Aujourd’hui, les publics prioritaires définis par les autorités sanitaires sont :\n- Les personnes âgées en EHPAD ou en unité de soin de longue durée.\n- L’ensemble des soignants de plus de 50 ans ou présentant des comorbidités.\n- Les pompiers de plus de 50 ans ou présentant des comorbidités.\n- Les aides à domicile de plus de 50 ans ou présentant des comorbidités.\n- Personnes handicapées vulnérables prises en charge dans les foyers d’accueil médicalisés et les maisons d’accueil spécialisées\n\nDès le 18 janvier la campagne de vaccination s’ouvrira à l’ensemble des personnes de plus de 75 ans.",
"vaccinationController.eligibility.buttonTitle": "En savoir plus",
"vaccinationController.eligibility.url": "https://solidarites-sante.gouv.fr/grands-dossiers/la-vaccination-contre-la-covid-19/article/la-strategie-vaccinale",
"vaccinationController.vaccinationLocation.title": "Où me faire vacciner ?",
"vaccinationController.vaccinationLocation.subtitle": "Rendez-vous sur sante.fr pour trouver les lieux de vaccination.",
"vaccinationController.vaccinationLocation.buttonTitle": "Trouver un lieu",
"vaccinationController.vaccinationLocation.url": "https://www.data.gouv.fr/fr/datasets/vaccinations-covid19-en-france-par-region-donnees-ministere-de-la-sante/",
"contactUs.url": "https://bonjour.tousanticovid.gouv.fr/contact.html"
"vaccinationController.vaccinationLocation.title": "Trouver un centre pour me faire vacciner",
"vaccinationController.vaccinationLocation.subtitle": "Rendez vous sur www.Santé.fr pour trouver les centres de vaccination.",
"vaccinationController.vaccinationLocation.buttonTitle": "Trouver un centre",