From 79102803e7a1fc920df553f8acafe0f3a653c95c Mon Sep 17 00:00:00 2001 From: axelherbstreith <75120552+axelherbstreith@users.noreply.github.com> Date: Fri, 18 Jun 2021 11:10:38 +0200 Subject: [PATCH] Add Recovery Certificate Details Screen (EXPOSUREAPP-7658) (#3446) * added classes + layout * add view model + ui module entry * added layout files and fixed errors * added recovery strings file for non-translatable attributes * lint * added recovery screen menu * switch to travel notice custom view * lint * switched to materialAlertBuilder * fix max line length error * unify attribute_strings.xml file * added missing texts Co-authored-by: Mohamed Metwalli <mohamed.metwalli@sap.com> --- .../common/certificate/TravelNoticeView.kt | 8 +- .../ui/RecoveryCertificateUIModule.kt | 8 +- .../RecoveryCertificateDetailsFragment.kt | 113 +++++++ .../RecoveryCertificateDetailsModule.kt | 19 ++ .../RecoveryCertificateDetailsNavigation.kt | 6 + .../RecoveryCertificateDetailsViewModel.kt | 66 ++++ .../fragment_recovery_certificate_details.xml | 283 ++++++++++++++++++ .../fragment_test_certificate_details.xml | 24 +- .../layout/fragment_vaccination_details.xml | 10 +- .../res/layout/include_travel_notice_card.xml | 4 +- .../menu_recovery_certificate_details.xml | 5 + .../covid_certificate_attribute_strings.xml | 86 ++++++ .../res/values/covid_certificate_strings.xml | 6 + .../green_certificate_attribute_strings.xml | 37 --- .../values/vaccination_attribute_strings.xml | 31 -- translation_v2.json | 1 - 16 files changed, 614 insertions(+), 93 deletions(-) create mode 100644 Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/recovery/ui/details/RecoveryCertificateDetailsFragment.kt create mode 100644 Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/recovery/ui/details/RecoveryCertificateDetailsModule.kt create mode 100644 Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/recovery/ui/details/RecoveryCertificateDetailsNavigation.kt create mode 100644 Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/recovery/ui/details/RecoveryCertificateDetailsViewModel.kt create mode 100644 Corona-Warn-App/src/main/res/layout/fragment_recovery_certificate_details.xml create mode 100644 Corona-Warn-App/src/main/res/menu/menu_recovery_certificate_details.xml create mode 100644 Corona-Warn-App/src/main/res/values/covid_certificate_attribute_strings.xml delete mode 100644 Corona-Warn-App/src/main/res/values/green_certificate_attribute_strings.xml delete mode 100644 Corona-Warn-App/src/main/res/values/vaccination_attribute_strings.xml diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/common/certificate/TravelNoticeView.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/common/certificate/TravelNoticeView.kt index 9aecb83ee..ae24fef7a 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/common/certificate/TravelNoticeView.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/common/certificate/TravelNoticeView.kt @@ -27,20 +27,20 @@ class TravelNoticeView @JvmOverloads constructor( binding.apply { if (travelNoticeGerman.text == - context.getString(R.string.green_certificate_attribute_certificate_travel_notice_german) + context.getString(R.string.covid_certificate_attribute_travel_notice_german) ) { travelNoticeGerman.setUrl( - R.string.green_certificate_attribute_certificate_travel_notice_german, + R.string.covid_certificate_attribute_travel_notice_german, R.string.green_certificate_travel_notice_link_de, R.string.green_certificate_travel_notice_link_de ) } if (travelNoticeEnglish.text == - context.getString(R.string.green_certificate_attribute_certificate_travel_notice_english) + context.getString(R.string.covid_certificate_attribute_travel_notice_english) ) { travelNoticeEnglish.setUrl( - R.string.green_certificate_attribute_certificate_travel_notice_english, + R.string.covid_certificate_attribute_travel_notice_english, R.string.green_certificate_travel_notice_link_en, R.string.green_certificate_travel_notice_link_en ) diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/recovery/ui/RecoveryCertificateUIModule.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/recovery/ui/RecoveryCertificateUIModule.kt index 18289e3a3..73c22fe51 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/recovery/ui/RecoveryCertificateUIModule.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/recovery/ui/RecoveryCertificateUIModule.kt @@ -1,6 +1,12 @@ package de.rki.coronawarnapp.covidcertificate.recovery.ui import dagger.Module +import dagger.android.ContributesAndroidInjector +import de.rki.coronawarnapp.covidcertificate.recovery.ui.details.RecoveryCertificateDetailsFragment +import de.rki.coronawarnapp.covidcertificate.recovery.ui.details.RecoveryCertificateDetailsModule @Module -abstract class RecoveryCertificateUIModule +abstract class RecoveryCertificateUIModule { + @ContributesAndroidInjector(modules = [RecoveryCertificateDetailsModule::class]) + abstract fun recoveryCertificateDetailsFragment(): RecoveryCertificateDetailsFragment +} diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/recovery/ui/details/RecoveryCertificateDetailsFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/recovery/ui/details/RecoveryCertificateDetailsFragment.kt new file mode 100644 index 000000000..37153b2f1 --- /dev/null +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/recovery/ui/details/RecoveryCertificateDetailsFragment.kt @@ -0,0 +1,113 @@ +package de.rki.coronawarnapp.covidcertificate.recovery.ui.details + +import android.graphics.Bitmap +import android.os.Bundle +import android.view.View +import android.widget.LinearLayout +import androidx.coordinatorlayout.widget.CoordinatorLayout +import androidx.fragment.app.Fragment +import androidx.navigation.fragment.FragmentNavigatorExtras +import androidx.navigation.fragment.findNavController +import com.google.android.material.appbar.AppBarLayout +import com.google.android.material.dialog.MaterialAlertDialogBuilder +import de.rki.coronawarnapp.R +import de.rki.coronawarnapp.bugreporting.ui.toErrorDialogBuilder +import de.rki.coronawarnapp.covidcertificate.recovery.core.RecoveryCertificate +import de.rki.coronawarnapp.databinding.FragmentRecoveryCertificateDetailsBinding +import de.rki.coronawarnapp.ui.qrcode.fullscreen.QrCodeFullScreenFragmentArgs +import de.rki.coronawarnapp.ui.view.onOffsetChange +import de.rki.coronawarnapp.util.di.AutoInject +import de.rki.coronawarnapp.util.ui.popBackStack +import de.rki.coronawarnapp.util.ui.viewBinding +import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider +import de.rki.coronawarnapp.util.viewmodel.cwaViewModels +import javax.inject.Inject + +class RecoveryCertificateDetailsFragment : Fragment(R.layout.fragment_recovery_certificate_details), AutoInject { + + @Inject lateinit var viewModelFactory: CWAViewModelFactoryProvider.Factory + private val binding by viewBinding<FragmentRecoveryCertificateDetailsBinding>() + private val viewModel: RecoveryCertificateDetailsViewModel by cwaViewModels { viewModelFactory } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) = with(binding) { + appBarLayout.onOffsetChange { titleAlpha, subtitleAlpha -> + title.alpha = titleAlpha + subtitle.alpha = subtitleAlpha + } + + bindToolbar() + setToolbarOverlay() + + viewModel.qrCode.observe(viewLifecycleOwner) { onQrCodeReady(it) } + viewModel.errors.observe(viewLifecycleOwner) { onError(it) } + viewModel.events.observe(viewLifecycleOwner) { onNavEvent(it) } + viewModel.recoveryCertificate.observe(viewLifecycleOwner) { it?.let { onCertificateReady(it) } } + } + + private fun FragmentRecoveryCertificateDetailsBinding.onCertificateReady( + recoveryCertificate: RecoveryCertificate + ) { + /* TODO */ + } + + private fun FragmentRecoveryCertificateDetailsBinding.onQrCodeReady(bitmap: Bitmap?) { + qrCodeCard.apply { + image.setImageBitmap(bitmap) + progressBar.hide() + bitmap?.let { image.setOnClickListener { viewModel.openFullScreen() } } + } + } + + private fun FragmentRecoveryCertificateDetailsBinding.onError(error: Throwable) { + qrCodeCard.progressBar.hide() + error.toErrorDialogBuilder(requireContext()).show() + } + + private fun FragmentRecoveryCertificateDetailsBinding.onNavEvent(event: RecoveryCertificateDetailsNavigation) { + when (event) { + RecoveryCertificateDetailsNavigation.Back -> popBackStack() + is RecoveryCertificateDetailsNavigation.FullQrCode -> findNavController().navigate( + R.id.action_global_qrCodeFullScreenFragment, + QrCodeFullScreenFragmentArgs(event.qrCodeText).toBundle(), + null, + FragmentNavigatorExtras(qrCodeCard.image to qrCodeCard.image.transitionName) + ) + } + } + + private fun FragmentRecoveryCertificateDetailsBinding.bindToolbar() = toolbar.apply { + setNavigationOnClickListener { popBackStack() } + setOnMenuItemClickListener { + when (it.itemId) { + R.id.menu_covid_certificate_delete -> { + showCertificateDeletionRequest() + true + } + else -> onOptionsItemSelected(it) + } + } + } + + private fun setToolbarOverlay() { + val width = requireContext().resources.displayMetrics.widthPixels + val params: CoordinatorLayout.LayoutParams = binding.scrollView.layoutParams as (CoordinatorLayout.LayoutParams) + + val textParams = binding.subtitle.layoutParams as (LinearLayout.LayoutParams) + textParams.bottomMargin = (width / 3) + 170 + binding.subtitle.requestLayout() + + val behavior: AppBarLayout.ScrollingViewBehavior = params.behavior as (AppBarLayout.ScrollingViewBehavior) + behavior.overlayTop = (width / 3) + 170 + } + + private fun showCertificateDeletionRequest() { + MaterialAlertDialogBuilder(requireContext()).apply { + setTitle(R.string.green_certificate_details_dialog_remove_test_title) + setMessage(R.string.green_certificate_details_dialog_remove_test_message) + setNegativeButton(R.string.green_certificate_details_dialog_remove_test_button_negative) { _, _ -> } + setPositiveButton(R.string.green_certificate_details_dialog_remove_test_button_positive) { _, _ -> + viewModel.onDeleteTestConfirmed() + } + }.show() + } +} diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/recovery/ui/details/RecoveryCertificateDetailsModule.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/recovery/ui/details/RecoveryCertificateDetailsModule.kt new file mode 100644 index 000000000..0b6458a20 --- /dev/null +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/recovery/ui/details/RecoveryCertificateDetailsModule.kt @@ -0,0 +1,19 @@ +package de.rki.coronawarnapp.covidcertificate.recovery.ui.details + +import dagger.Binds +import dagger.Module +import dagger.multibindings.IntoMap +import de.rki.coronawarnapp.util.viewmodel.CWAViewModel +import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactory +import de.rki.coronawarnapp.util.viewmodel.CWAViewModelKey + +@Module +abstract class RecoveryCertificateDetailsModule { + + @Binds + @IntoMap + @CWAViewModelKey(RecoveryCertificateDetailsViewModel::class) + abstract fun recoveryCertificateDetailsFragment( + factory: RecoveryCertificateDetailsViewModel.Factory + ): CWAViewModelFactory<out CWAViewModel> +} diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/recovery/ui/details/RecoveryCertificateDetailsNavigation.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/recovery/ui/details/RecoveryCertificateDetailsNavigation.kt new file mode 100644 index 000000000..43f53dd4a --- /dev/null +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/recovery/ui/details/RecoveryCertificateDetailsNavigation.kt @@ -0,0 +1,6 @@ +package de.rki.coronawarnapp.covidcertificate.recovery.ui.details + +sealed class RecoveryCertificateDetailsNavigation { + object Back : RecoveryCertificateDetailsNavigation() + data class FullQrCode(val qrCodeText: String) : RecoveryCertificateDetailsNavigation() +} diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/recovery/ui/details/RecoveryCertificateDetailsViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/recovery/ui/details/RecoveryCertificateDetailsViewModel.kt new file mode 100644 index 000000000..477e5f1b3 --- /dev/null +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/recovery/ui/details/RecoveryCertificateDetailsViewModel.kt @@ -0,0 +1,66 @@ +package de.rki.coronawarnapp.covidcertificate.recovery.ui.details + +import android.graphics.Bitmap +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.asLiveData +import dagger.assisted.Assisted +import dagger.assisted.AssistedFactory +import dagger.assisted.AssistedInject +import de.rki.coronawarnapp.covidcertificate.recovery.core.RecoveryCertificate +import de.rki.coronawarnapp.covidcertificate.recovery.core.RecoveryCertificateRepository +import de.rki.coronawarnapp.covidcertificate.recovery.core.storage.RecoveryCertificateIdentifier +import de.rki.coronawarnapp.presencetracing.checkins.qrcode.QrCodeGenerator +import de.rki.coronawarnapp.util.coroutine.DispatcherProvider +import de.rki.coronawarnapp.util.ui.SingleLiveEvent +import de.rki.coronawarnapp.util.viewmodel.CWAViewModel +import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactory +import kotlinx.coroutines.flow.map +import timber.log.Timber + +class RecoveryCertificateDetailsViewModel @AssistedInject constructor( + dispatcherProvider: DispatcherProvider, + @Assisted private val recoveryCertificateIdentifier: RecoveryCertificateIdentifier, + private val qrCodeGenerator: QrCodeGenerator, + private val recoveryCertificateRepository: RecoveryCertificateRepository +) : CWAViewModel(dispatcherProvider) { + + private var qrCodeText: String? = null + private val bitmapStateData = MutableLiveData<Bitmap>() + val qrCode: LiveData<Bitmap> = bitmapStateData + val events = SingleLiveEvent<RecoveryCertificateDetailsNavigation>() + val errors = SingleLiveEvent<Throwable>() + val recoveryCertificate = recoveryCertificateRepository.certificates.map { certificates -> + certificates.find { it.identifier == recoveryCertificateIdentifier }?.testCertificate + .also { generateQrCode(it) } + }.asLiveData(dispatcherProvider.Default) + + fun onClose() = events.postValue(RecoveryCertificateDetailsNavigation.Back) + + fun openFullScreen() = qrCodeText?.let { events.postValue(RecoveryCertificateDetailsNavigation.FullQrCode(it)) } + + fun onDeleteTestConfirmed() = launch { + Timber.d("Removing Recovery Certificate=$recoveryCertificateIdentifier") + recoveryCertificateRepository.deleteCertificate(recoveryCertificateIdentifier) + events.postValue(RecoveryCertificateDetailsNavigation.Back) + } + + private fun generateQrCode(recoveryCertificate: RecoveryCertificate?) = launch { + try { + bitmapStateData.postValue( + recoveryCertificate?.let { certificate -> + qrCodeGenerator.createQrCode(certificate.qrCode.also { qrCodeText = it }) + } + ) + } catch (e: Exception) { + Timber.d(e, "generateQrCode failed for covidCertificate=%s", recoveryCertificateIdentifier) + bitmapStateData.postValue(null) + errors.postValue(e) + } + } + + @AssistedFactory + interface Factory : CWAViewModelFactory<RecoveryCertificateDetailsViewModel> { + fun create(testCertificateIdentifier: RecoveryCertificateIdentifier): RecoveryCertificateDetailsViewModel + } +} diff --git a/Corona-Warn-App/src/main/res/layout/fragment_recovery_certificate_details.xml b/Corona-Warn-App/src/main/res/layout/fragment_recovery_certificate_details.xml new file mode 100644 index 000000000..4d225b531 --- /dev/null +++ b/Corona-Warn-App/src/main/res/layout/fragment_recovery_certificate_details.xml @@ -0,0 +1,283 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:id="@+id/coordinator_layout" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@drawable/trace_location_gradient_background" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + <com.google.android.material.appbar.AppBarLayout + android:id="@+id/appBarLayout" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <com.google.android.material.appbar.CollapsingToolbarLayout + android:id="@+id/collapsing_toolbar_layout" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:nestedScrollingEnabled="true" + app:layout_scrollFlags="scroll|exitUntilCollapsed"> + + <ImageView + android:id="@+id/expandedImage" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:importantForAccessibility="no" + app:layout_collapseMode="parallax" + app:srcCompat="@drawable/certificate_complete_gradient" /> + + <ImageView + android:id="@+id/europa_image" + android:layout_width="match_parent" + android:layout_height="250dp" + android:importantForAccessibility="no" + android:layout_marginStart="50dp" + app:layout_collapseMode="parallax" + app:srcCompat="@drawable/ic_eu_stars_blue" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + app:layout_collapseMode="parallax"> + + <TextView + android:id="@+id/title" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginHorizontal="24dp" + android:layout_marginTop="90dp" + android:layout_marginBottom="12dp" + android:gravity="center" + android:text="@string/recovery_certificate_details_title" + android:textColor="@android:color/white" + android:textSize="20sp" + android:textStyle="bold" /> + + <TextView + android:id="@+id/subtitle" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:layout_marginHorizontal="24dp" + android:layout_marginBottom="8dp" + android:gravity="center" + android:text="@string/recovery_certificate_details_subtitle" + android:textColor="@android:color/white" + android:textSize="18sp" /> + + </LinearLayout> + + <com.google.android.material.appbar.MaterialToolbar + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="?attr/actionBarSize" + android:theme="@style/Theme.MaterialComponents" + app:layout_collapseMode="pin" + app:layout_scrollFlags="scroll|enterAlways" + app:menu="@menu/menu_recovery_certificate_details" + app:navigationIcon="@drawable/ic_back" + app:navigationIconTint="@android:color/white" + app:popupTheme="@style/Theme.MaterialComponents.Light"> + + <LinearLayout + android:id="@+id/header_text_layout" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:gravity="center_vertical" + android:orientation="horizontal"> + + <ImageView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginEnd="32dp" + android:importantForAccessibility="no" + app:srcCompat="@drawable/ic_cwa_logo_white" /> + + </LinearLayout> + + </com.google.android.material.appbar.MaterialToolbar> + + </com.google.android.material.appbar.CollapsingToolbarLayout> + + </com.google.android.material.appbar.AppBarLayout> + + <androidx.core.widget.NestedScrollView + android:id="@+id/scroll_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + app:layout_behavior="@string/appbar_scrolling_view_behavior"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginVertical="16dp" + android:orientation="vertical"> + + <include + android:id="@+id/qr_code_card" + layout="@layout/include_certificate_qrcode_card" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginHorizontal="24dp" + android:layout_marginBottom="6dp" /> + + <LinearLayout + style="@style/Card.GreenCertificate" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginHorizontal="24dp" + android:orientation="vertical" + android:padding="16dp"> + + <TextView + style="@style/body1Medium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@string/covid_certificate_attribute_name" /> + + <TextView + android:id="@+id/name" + style="@style/body1" + android:layout_width="match_parent" + android:layout_height="wrap_content" + tools:text="Andrea Schneider" /> + + <TextView + style="@style/body1Medium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="24dp" + android:text="@string/covid_certificate_attribute_date_of_birth" /> + + <TextView + android:id="@+id/date_of_birth" + style="@style/body1" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="4dp" + tools:text="1943-02-23" /> + + <TextView + style="@style/body1Medium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="24dp" + android:text="@string/recovery_certificate_attribute_recovered_from" /> + + <TextView + android:id="@+id/recovered_from_desease" + style="@style/body1" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="4dp" + tools:text="COVID-19" /> + + <TextView + style="@style/body1Medium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="24dp" + android:text="@string/recovery_certificate_attribute_first_positive_test_result" /> + + <TextView + android:id="@+id/date_of_first_positive_test_result" + style="@style/body1" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="4dp" + tools:text="2021-05-23" /> + + <TextView + style="@style/body1Medium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="24dp" + android:text="@string/test_certificate_attribute_state_of_testing" /> + + <TextView + android:id="@+id/certificate_country" + style="@style/body1" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="4dp" + tools:text="Germany" /> + + <TextView + style="@style/body1Medium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="24dp" + android:text="@string/covid_certificate_attribute_certificate_issuer" /> + + <TextView + android:id="@+id/certificate_issuer" + style="@style/body1" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="4dp" + tools:text="G05930482748454836478695764787840" /> + + + <TextView + style="@style/body1Medium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="24dp" + android:text="@string/recovery_certificate_attribute_certificate_certification_period_start" /> + + <TextView + android:id="@+id/certification_period_start" + style="@style/body1" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="4dp" + tools:text="2021-05-23" /> + + <TextView + style="@style/body1Medium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="24dp" + android:text="@string/recovery_certificate_attribute_certificate_certification_period_end" /> + + <TextView + android:id="@+id/certification_period_end" + style="@style/body1" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="4dp" + tools:text="2021-11-23" /> + + <TextView + style="@style/body1Medium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="24dp" + android:text="@string/covid_certificate_attribute_certificate_id" /> + + <TextView + android:id="@+id/certificate_id" + style="@style/body1" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="4dp" + tools:text="05930482748454836478695764787840" /> + + </LinearLayout> + + <de.rki.coronawarnapp.covidcertificate.common.certificate.TravelNoticeView + android:id="@+id/travel_notice" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:focusable="true" /> + + </LinearLayout> + + </androidx.core.widget.NestedScrollView> + +</androidx.coordinatorlayout.widget.CoordinatorLayout> \ No newline at end of file diff --git a/Corona-Warn-App/src/main/res/layout/fragment_test_certificate_details.xml b/Corona-Warn-App/src/main/res/layout/fragment_test_certificate_details.xml index 23d5a4055..47182a5ea 100644 --- a/Corona-Warn-App/src/main/res/layout/fragment_test_certificate_details.xml +++ b/Corona-Warn-App/src/main/res/layout/fragment_test_certificate_details.xml @@ -138,7 +138,7 @@ style="@style/body1Medium" android:layout_width="match_parent" android:layout_height="wrap_content" - android:text="@string/green_certificate_attribute_name" /> + android:text="@string/covid_certificate_attribute_name" /> <TextView android:id="@+id/name" @@ -152,7 +152,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="24dp" - android:text="@string/green_certificate_attribute_dob" /> + android:text="@string/covid_certificate_attribute_date_of_birth" /> <TextView android:id="@+id/birth_date" @@ -167,7 +167,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="24dp" - android:text="@string/green_certificate_attribute_disease" /> + android:text="@string/covid_certificate_attribute_disease_type" /> <TextView android:id="@+id/disease_type" @@ -182,7 +182,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="24dp" - android:text="@string/green_certificate_attribute_test_type" /> + android:text="@string/test_certificate_attribute_test_type" /> <TextView android:id="@+id/test_type" @@ -197,7 +197,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="24dp" - android:text="@string/green_certificate_attribute_test_name" /> + android:text="@string/test_certificate_attribute_test_name" /> <TextView android:id="@+id/test_name" @@ -212,7 +212,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="24dp" - android:text="@string/green_certificate_attribute_test_manufacturer" /> + android:text="@string/test_certificate_attribute_test_manufacturer" /> <TextView android:id="@+id/test_manufacturer" @@ -227,7 +227,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="24dp" - android:text="@string/green_certificate_attribute_test_date" /> + android:text="@string/test_certificate_attribute_test_date" /> <TextView android:id="@+id/test_date" @@ -242,7 +242,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="24dp" - android:text="@string/green_certificate_attribute_test_result" /> + android:text="@string/test_certificate_attribute_test_result" /> <TextView android:id="@+id/test_result" @@ -257,7 +257,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="24dp" - android:text="@string/green_certificate_attribute_test_center" /> + android:text="@string/test_certificate_attribute_test_center" /> <TextView android:id="@+id/test_center" @@ -272,7 +272,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="24dp" - android:text="@string/green_certificate_attribute_state_of_testing" /> + android:text="@string/test_certificate_attribute_state_of_testing" /> <TextView android:id="@+id/certificate_country" @@ -287,7 +287,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="24dp" - android:text="@string/green_certificate_attribute_certificate_issuer" /> + android:text="@string/covid_certificate_attribute_certificate_issuer" /> <TextView android:id="@+id/certificate_issuer" @@ -303,7 +303,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="24dp" - android:text="@string/green_certificate_attribute_certificate_id" /> + android:text="@string/covid_certificate_attribute_certificate_id" /> <TextView android:id="@+id/certificate_id" diff --git a/Corona-Warn-App/src/main/res/layout/fragment_vaccination_details.xml b/Corona-Warn-App/src/main/res/layout/fragment_vaccination_details.xml index 7ddc46222..d77ef5d22 100644 --- a/Corona-Warn-App/src/main/res/layout/fragment_vaccination_details.xml +++ b/Corona-Warn-App/src/main/res/layout/fragment_vaccination_details.xml @@ -136,7 +136,7 @@ style="@style/body1Medium" android:layout_width="match_parent" android:layout_height="wrap_content" - android:text="@string/vaccination_certificate_attribute_name" /> + android:text="@string/covid_certificate_attribute_name" /> <TextView android:id="@+id/name" @@ -150,7 +150,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="24dp" - android:text="@string/vaccination_certificate_attribute_date_of_birth" /> + android:text="@string/covid_certificate_attribute_date_of_birth" /> <TextView android:id="@+id/date_of_birth" @@ -165,7 +165,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="24dp" - android:text="@string/vaccination_certificate_attribute_disease_type" /> + android:text="@string/covid_certificate_attribute_disease_type" /> <TextView android:id="@+id/disease_type" @@ -270,7 +270,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="24dp" - android:text="@string/vaccination_certificate_attribute_certificate_issuer" /> + android:text="@string/covid_certificate_attribute_certificate_issuer" /> <TextView android:id="@+id/certificate_issuer" @@ -285,7 +285,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="24dp" - android:text="@string/vaccination_certificate_attribute_certificate_id" /> + android:text="@string/covid_certificate_attribute_certificate_id" /> <TextView android:id="@+id/certificate_id" diff --git a/Corona-Warn-App/src/main/res/layout/include_travel_notice_card.xml b/Corona-Warn-App/src/main/res/layout/include_travel_notice_card.xml index 0b5318219..70445e0f1 100644 --- a/Corona-Warn-App/src/main/res/layout/include_travel_notice_card.xml +++ b/Corona-Warn-App/src/main/res/layout/include_travel_notice_card.xml @@ -13,7 +13,7 @@ style="@style/body2" android:layout_width="match_parent" android:layout_height="wrap_content" - android:text="@string/green_certificate_attribute_certificate_travel_notice_german" /> + android:text="@string/covid_certificate_attribute_travel_notice_german" /> <TextView android:id="@+id/travel_notice_english" @@ -21,5 +21,5 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="24dp" - android:text="@string/green_certificate_attribute_certificate_travel_notice_english" /> + android:text="@string/covid_certificate_attribute_travel_notice_english" /> </LinearLayout> \ No newline at end of file diff --git a/Corona-Warn-App/src/main/res/menu/menu_recovery_certificate_details.xml b/Corona-Warn-App/src/main/res/menu/menu_recovery_certificate_details.xml new file mode 100644 index 000000000..40fb7b02e --- /dev/null +++ b/Corona-Warn-App/src/main/res/menu/menu_recovery_certificate_details.xml @@ -0,0 +1,5 @@ +<menu xmlns:android="http://schemas.android.com/apk/res/android"> + <item + android:id="@+id/menu_recovery_certificate_delete" + android:title="@string/green_certificate_details_menu_item_delete" /> +</menu> diff --git a/Corona-Warn-App/src/main/res/values/covid_certificate_attribute_strings.xml b/Corona-Warn-App/src/main/res/values/covid_certificate_attribute_strings.xml new file mode 100644 index 000000000..98a30fe03 --- /dev/null +++ b/Corona-Warn-App/src/main/res/values/covid_certificate_attribute_strings.xml @@ -0,0 +1,86 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + + <!-- #################################### + Special string files for the strings + that should always keep the german / english + version independent from the selected system language + ###################################### --> + + <!-- ##################################################### + COMMON STRINGS FOR ALL TYPES OF CERTIFICATES BELOW + ##################################################### --> + + <!-- XTXT: Vaccination Certificate Detail Screen Attribute: Name --> + <string name="covid_certificate_attribute_name" translatable="false">"Name, Vorname / Name, First Name"</string> + <!-- XTXT: Vaccination Certificate Detail Screen Attribute: Date of Birth --> + <string name="covid_certificate_attribute_date_of_birth" translatable="false">"Geburtsdatum / Date of Birth (YYYY-MM-DD)"</string> + <!-- XTXT: Vaccination Certificate Detail Screen Attribute: Target Disease --> + <string name="covid_certificate_attribute_disease_type" translatable="false">"Zielkrankheit oder -erreger / Disease or Agent Targeted"</string> + <!-- XTXT: Green Certificate Detail Screen Attribute: Certificate Issuer --> + <string name="covid_certificate_attribute_certificate_issuer" translatable="false">"Zertifikataussteller / Certificate Issuer"</string> + <!-- XTXT: Vaccination Certificate Detail Screen Attribute: Certification Id --> + <string name="covid_certificate_attribute_certificate_id" translatable="false">"Zertifikatkennung / Unique Certificate Identifier"</string> + <!-- XTXT: Vaccination Certificate Detail Screen Attribute: Travel Notice German --> + <string name="covid_certificate_attribute_travel_notice_german" translatable="false">"Diese Bescheinigung ist kein Reisedokument. Die wissenschaftlichen Erkenntnisse zu COVID-19 in den Bereichen Impfung, Testung und Genesung entwickeln sich fortlaufend weiter, auch im Hinblick auf neue besorgniserregende Virusvarianten. Bitte informieren Sie sich vor Reiseantritt über die am Zielort geltenden Gesundheitsmaßnahmen und entsprechenden Beschränkungen. Informationen über die in den jeweiligen EU-Ländern geltenden Einreisebestimmungen finden Sie unter https://reopen.europa.eu/de."</string> + <!-- XTXT: Vaccination Certificate Detail Screen Attribute: Travel Notice English --> + <string name="covid_certificate_attribute_travel_notice_english" translatable="false">"This certificate is not a travel document. The scientific evidence on COVID-19 vaccination, testing, and recovery continues to evolve, also in view of new variants of concern of the virus. Before traveling, please check the applicable public health measures and related restrictions applied at the point of destination. Information on the current travel restrictions that apply to EU countries is available at https://reopen.europa.eu/en."</string> + + + <!-- ##################################################### + VACCINATION CERTIFICATE STRINGS BELOW + ##################################################### --> + + <!-- XTXT: Vaccination Certificate Detail Screen Attribute: Vaccine --> + <string name="vaccination_certificate_attribute_vaccine_name" translatable="false">"Impfstoff / Vaccine"</string> + <!-- XTXT: Vaccination Certificate Detail Screen Attribute: Vaccination Type --> + <string name="vaccination_certificate_attribute_vaccine_type" translatable="false">"Art des Impfstoffs / Vaccine Type"</string> + <!-- XTXT: Vaccination Certificate Detail Screen Attribute: Manufacturer --> + <string name="vaccination_certificate_attribute_manufacturer" translatable="false">"Hersteller / Manufacturer"</string> + <!-- XTXT: Vaccination Certificate Detail Screen Attribute: Vaccination Number --> + <string name="vaccination_certificate_attribute_vaccination_number" translatable="false">"Nummer der Impfung / Number in a series of vaccinations"</string> + <!-- XTXT: Vaccination Certificate Detail Screen Attribute: Vaccination Date --> + <string name="vaccination_certificate_attribute_vaccination_date" translatable="false">"Datum der Impfung / Date of vaccination (YYYY-MM-DD)"</string> + <!-- XTXT: Vaccination Certificate Detail Screen Attribute: State of Vaccination --> + <string name="vaccination_certificate_attribute_certificate_country" translatable="false">"Land der Impfung / Member State of Vaccination"</string> + <!-- XTXT: Vaccination Details Vaccination Dose Number--> + <string name="vaccination_certificate_attribute_dose_number" translatable="false">"%1$d of %2$d"</string> + + + <!-- ##################################################### + RECOVERY CERTIFICATE STRINGS BELOW + ##################################################### --> + + <!-- XTXT: Recovery Certificate Detail Screen Attribute: Recovered From Desease --> + <string name="recovery_certificate_attribute_recovered_from" translatable="false">"Genesen von / Recovered from"</string> + <!-- XTXT: Recovery Certificate Detail Screen Attribute: First Positive Test Result --> + <string name="recovery_certificate_attribute_first_positive_test_result" translatable="false">"Datum des ersten positiven Testergebnisses / Date of first positive test result (YYYY-MM-DD)"</string> + <!-- XTXT: Recovery Certificate Detail Screen Attribute: Member State of Test --> + <string name="recovery_certificate_attribute_state_of_testing" translatable="false">"Land der Testung / Member State of Test"</string> + <!-- XTXT: Recovery Certificate Detail Screen Attribute: Start of Certification Period --> + <string name="recovery_certificate_attribute_certificate_certification_period_start" translatable="false">"Zertifikat gültig ab / Certificate valid from (YYYY-MM-DD)"</string> + <!-- XTXT: Recovery Certificate Detail Screen Attribute: End of Certification Period --> + <string name="recovery_certificate_attribute_certificate_certification_period_end" translatable="false">"Zertifikat gültig bis / Certificate valid until (YYYY-MM-DD)"</string> + + + <!-- ##################################################### + TEST CERTIFICATE STRINGS BELOW + ##################################################### --> + + <!-- XTXT: Green Certificate Detail Screen Attribute: Test Type --> + <string name="test_certificate_attribute_test_type" translatable="false">"Art des Tests / Type of Test"</string> + <!-- XTXT: Green Certificate Detail Screen Attribute: Test Name --> + <string name="test_certificate_attribute_test_name" translatable="false">"Produktname / Test Name"</string> + <!-- XTXT: Green Certificate Detail Screen Attribute: Test Manufacturer --> + <string name="test_certificate_attribute_test_manufacturer" translatable="false">"Testhersteller / Test Manufacturer"</string> + <!-- XTXT: Green Certificate Detail Screen Attribute: Test Date --> + <string name="test_certificate_attribute_test_date" translatable="false">"Datum und Uhrzeit der Probenahme / Date and Time of Sample Collection"</string> + <!-- XTXT: Green Certificate Detail Screen Attribute: Result of the Test --> + <string name="test_certificate_attribute_test_result" translatable="false">"Testergebnis / Result of the Test"</string> + <!-- XTXT: Green Certificate Detail Screen Attribute: Testing Center or Facility --> + <string name="test_certificate_attribute_test_center" translatable="false">"Testzentrum oder -einrichtung / Testing Center or Facility"</string> + <!-- XTXT: Green Certificate Detail Screen Attribute: Member State of Test --> + <string name="test_certificate_attribute_state_of_testing" translatable="false">"Land der Testung / Member State of Test"</string> + + +</resources> \ No newline at end of file diff --git a/Corona-Warn-App/src/main/res/values/covid_certificate_strings.xml b/Corona-Warn-App/src/main/res/values/covid_certificate_strings.xml index a39fbd586..51010c522 100644 --- a/Corona-Warn-App/src/main/res/values/covid_certificate_strings.xml +++ b/Corona-Warn-App/src/main/res/values/covid_certificate_strings.xml @@ -31,4 +31,10 @@ <string name="vaccination_consent_onboarding_legal_information">"Ausführliche Informationen zur Datenverarbeitung finden Sie in der Datenschutzerklärung."</string> <!-- XBUT: Text for vaccination consent accept button --> <string name="vaccination_consent_accept_button">"Weiter"</string> + + <!-- XTXT: Recovery certificate detail title --> + <string name="recovery_certificate_details_title">"Genesenenzertifikat"</string> + <!-- XTXT: Recovery certificate detail subtitle --> + <string name="recovery_certificate_details_subtitle">"EU Digitales COVID-Zertifikat"</string> + </resources> \ No newline at end of file diff --git a/Corona-Warn-App/src/main/res/values/green_certificate_attribute_strings.xml b/Corona-Warn-App/src/main/res/values/green_certificate_attribute_strings.xml deleted file mode 100644 index 97061edf8..000000000 --- a/Corona-Warn-App/src/main/res/values/green_certificate_attribute_strings.xml +++ /dev/null @@ -1,37 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2" tools:ignore="MissingTranslation"> - <!-- #################################### - Special string files for the strings - that should always keep the german / english - version independent from the selected system language - ###################################### --> - <!-- XTXT: Green Certificate Detail Screen Attribute: Name --> - <string name="green_certificate_attribute_name" translatable="false">"Name, Vorname / Name, First Name"</string> - <!-- XTXT: Green Certificate Detail Screen Attribute: Date of Birth --> - <string name="green_certificate_attribute_dob" translatable="false">"Geburtsdatum / Date of Birth"</string> - <!-- XTXT: Green Certificate Detail Screen Attribute: Disease --> - <string name="green_certificate_attribute_disease" translatable="false">"Zielkrankheit bzw. -erreger / Disease or Agent Targeted"</string> - <!-- XTXT: Green Certificate Detail Screen Attribute: Test Type --> - <string name="green_certificate_attribute_test_type" translatable="false">"Art des Tests / Type of Test"</string> - <!-- XTXT: Green Certificate Detail Screen Attribute: Test Name --> - <string name="green_certificate_attribute_test_name" translatable="false">"Produktname / Test Name"</string> - <!-- XTXT: Green Certificate Detail Screen Attribute: Test Manufacturer --> - <string name="green_certificate_attribute_test_manufacturer" translatable="false">"Testhersteller / Test Manufacturer"</string> - <!-- XTXT: Green Certificate Detail Screen Attribute: Test Date --> - <string name="green_certificate_attribute_test_date" translatable="false">"Datum und Uhrzeit der Probenahme / Date and Time of Sample Collection"</string> - <!-- XTXT: Green Certificate Detail Screen Attribute: Result of the Test --> - <string name="green_certificate_attribute_test_result" translatable="false">"Testergebnis / Result of the Test"</string> - <!-- XTXT: Green Certificate Detail Screen Attribute: Testing Center or Facility --> - <string name="green_certificate_attribute_test_center" translatable="false">"Testzentrum oder -einrichtung / Testing Center or Facility"</string> - <!-- XTXT: Green Certificate Detail Screen Attribute: Member State of Test --> - <string name="green_certificate_attribute_state_of_testing" translatable="false">"Land der Testung / Member State of Test"</string> - <!-- XTXT: Green Certificate Detail Screen Attribute: Certificate Issuer --> - <string name="green_certificate_attribute_certificate_issuer" translatable="false">"Zertifikataussteller / Certificate Issuer"</string> - <!-- XTXT: Green Certificate Detail Screen Attribute: Unique Certificate Identifier --> - <string name="green_certificate_attribute_certificate_id" translatable="false">"Zertifikatkennung / Unique Certificate Identifier"</string> - <!-- XTXT: Green Certificate Detail Screen Attribute: Travel Notice German --> - <string name="green_certificate_attribute_certificate_travel_notice_german" translatable="false">"Diese Bescheinigung ist kein Reisedokument. Die wissenschaftlichen Erkenntnisse zu COVID-19 in den Bereichen Impfung, Testung und Genesung entwickeln sich fortlaufend weiter, auch im Hinblick auf neue besorgniserregende Virusvarianten. Bitte informieren Sie sich vor Reiseantritt über die am Zielort geltenden Gesundheitsmaßnahmen und entsprechenden Beschränkungen. Informationen über die in den jeweiligen EU-Ländern geltenden Einreisebestimmungen finden Sie unter https://reopen.europa.eu/de."</string> - <!-- XTXT: Green Certificate Detail Screen Attribute: Travel Notice English --> - <string name="green_certificate_attribute_certificate_travel_notice_english" translatable="false">"This certificate is not a travel document. The scientific evidence on COVID-19 vaccination, testing, and recovery continues to evolve, also in view of new variants of concern of the virus. Before traveling, please check the applicable public health measures and related restrictions applied at the point of destination. Information on the current travel restrictions that apply to EU countries is available at https://reopen.europa.eu/en."</string> - -</resources> diff --git a/Corona-Warn-App/src/main/res/values/vaccination_attribute_strings.xml b/Corona-Warn-App/src/main/res/values/vaccination_attribute_strings.xml deleted file mode 100644 index 2464a2d71..000000000 --- a/Corona-Warn-App/src/main/res/values/vaccination_attribute_strings.xml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<resources> - - <!-- XTXT: Vaccination Certificate Detail Screen Attribute: Name --> - <string name="vaccination_certificate_attribute_name" translatable="false">"Name, Vorname / Name, First Name"</string> - <!-- XTXT: Vaccination Certificate Detail Screen Attribute: Date of Birth --> - <string name="vaccination_certificate_attribute_date_of_birth" translatable="false">"Geburtsdatum / Date of Birth (YYYY-MM-DD)"</string> - <!-- XTXT: Vaccination Certificate Detail Screen Attribute: Target Disease --> - <string name="vaccination_certificate_attribute_disease_type" translatable="false">"Zielkrankheit oder -erreger / Disease or Agent Targeted"</string> - <!-- XTXT: Vaccination Certificate Detail Screen Attribute: Vaccine --> - <string name="vaccination_certificate_attribute_vaccine_name" translatable="false">"Impfstoff / Vaccine"</string> - <!-- XTXT: Vaccination Certificate Detail Screen Attribute: Vaccination Type --> - <string name="vaccination_certificate_attribute_vaccine_type" translatable="false">"Art des Impfstoffs / Vaccine Type"</string> - <!-- XTXT: Vaccination Certificate Detail Screen Attribute: Manufacturer --> - <string name="vaccination_certificate_attribute_manufacturer" translatable="false">"Hersteller / Manufacturer"</string> - <!-- XTXT: Vaccination Certificate Detail Screen Attribute: Vaccination Number --> - <string name="vaccination_certificate_attribute_vaccination_number" translatable="false">"Nummer der Impfung / Number in a series of vaccinations"</string> - <!-- XTXT: Vaccination Certificate Detail Screen Attribute: Vaccination Date --> - <string name="vaccination_certificate_attribute_vaccination_date" translatable="false">"Datum der Impfung / Date of vaccination (YYYY-MM-DD)"</string> - <!-- XTXT: Vaccination Certificate Detail Screen Attribute: State of Vaccination --> - <string name="vaccination_certificate_attribute_certificate_country" translatable="false">"Land der Impfung / Member State of Vaccination"</string> - <!-- XTXT: Vaccination Certificate Detail Screen Attribute: Certification Issuer --> - <string name="vaccination_certificate_attribute_certificate_issuer" translatable="false">"Zertifikataussteller / Certificate Issuer"</string> - <!-- XTXT: Vaccination Certificate Detail Screen Attribute: Certification Id --> - <string name="vaccination_certificate_attribute_certificate_id" translatable="false">"Zertifikatkennung / Unique Certificate Identifier"</string> - - <!-- XTXT: Vaccination Certificate Detail Screen Attribute: Travel Notice German --> - <string name="vaccination_certificate_attribute_certificate_travel_notice_german" translatable="false">"Diese Bescheinigung ist kein Reisedokument. Die wissenschaftlichen Erkenntnisse zu COVID-19 in den Bereichen Impfung, Testung und Genesung entwickeln sich fortlaufend weiter, auch im Hinblick auf neue besorgniserregende Virusvarianten. Bitte informieren Sie sich vor Reiseantritt über die am Zielort geltenden Gesundheitsmaßnahmen und entsprechenden Beschränkungen. Informationen über die in den jeweiligen EU-Ländern geltenden Einreisebestimmungen finden Sie unter https://reopen.europa.eu/de."</string> - <!-- XTXT: Vaccination Certificate Detail Screen Attribute: Travel Notice English --> - <string name="vaccination_certificate_attribute_certificate_travel_notice_english" translatable="false">"This certificate is not a travel document. The scientific evidence on COVID-19 vaccination, testing, and recovery continues to evolve, also in view of new variants of concern of the virus. Before traveling, please check the applicable public health measures and related restrictions applied at the point of destination. Information on the current travel restrictions that apply to EU countries is available at https://reopen.europa.eu/en."</string> -</resources> \ No newline at end of file diff --git a/translation_v2.json b/translation_v2.json index 8b057cc8a..a4aa4591c 100644 --- a/translation_v2.json +++ b/translation_v2.json @@ -13,7 +13,6 @@ "antigen_strings.xml", "vaccination_strings.xml", "green_certificate_strings.xml", - "green_certificate_attribute_strings.xml", "covid_certificate_strings.xml" ], "targetFolderPath": "../values-[langCode]" -- GitLab