manager-app/lib/l10n/app_localizations_en.dart
Thomas Fransolet bb4d4fe2d5 Écran Statistiques refondu + Guide IA + onboarding (auth, abonnement) + i18n FR/EN/NL
Statistiques — refonte complète, aucun changement backend
  statistics_screen.dart réécrit (+1832) : barres horizontales monochromes à la place
  des barres verticales tronquées et des deux anneaux, barre de filtres unique avec les
  volumes par canal, règle mono-canal, 4 KPI portant chacun leur variation, bandeau
  « à retenir », courbe en aire avec bandes de week-end. La période précédente s'obtient
  en rappelant le même endpoint.
  statistics_report.dart : export PDF généré côté client (paquet pdf Dart), il partage
  les valeurs calculées de l'écran — un chiffre ne peut pas diverger entre l'écran et le
  document envoyé à la commune. Deux puces du sommaire promettaient des données
  inexistantes (parcours terminés, questions au guide IA), retirées.
  ⚠️ Jamais ouvert dans un navigateur. Cases de test : test-plan.md §8bis / §8ter.

Guide IA
  Screens/GuideIa/guide_ia_screen.dart — onglet Configuration. Menu conditionné à
  isAssistant, le même drapeau que la garde d'AiController. L'onglet « Ce que demandent
  vos visiteurs » n'est pas dans ce commit : le schéma backend est prêt, l'UI non.

Onboarding self-service
  Screens/Auth/ (mot de passe oublié, définition du mot de passe),
  Screens/Billing/subscription_screen.dart, ai_quota_hint.dart.
  ⚠️ Aucun parcours joué de bout en bout — test-plan.md §18.

Parcours guidés
  progression_mode.dart : 9 booléens sur 3 niveaux remplacés par 3 questions.
  Popups GuidedPath / GuidedStep / QuizQuestion mises à jour en conséquence.

Client API (manager_api_new) — édité À LA MAIN, ne pas relancer la génération
  onboarding_api.dart, authentication_api.dart (+80), instance_dto (champs Guide*),
  guided_step / quiz_question_guided_step (flags morts retirés).
  Le // @dart=2.18 manquant dans onboarding_api.dart cassait les 3 apps Flutter d'un
  coup — corrigé ici.

i18n : ~180 clés par langue (FR/EN/NL) + fichiers générés.
Tests : progression_mode_test, statistics_report_test (le second a attrapé deux
plantages qui seraient sortis au premier clic).

flutter build web . flutter analyze : 68 erreurs, toutes dans les fichiers modèle
orphelins de manager_api_new — dette connue, pas une régression, ces fichiers ne sont
pas dans le graphe de compilation.
2026-08-09 22:14:37 +02:00

1632 lines
37 KiB
Dart

// ignore: unused_import
import 'package:intl/intl.dart' as intl;
import 'app_localizations.dart';
// ignore_for_file: type=lint
/// The translations for English (`en`).
class AppLocalizationsEn extends AppLocalizations {
AppLocalizationsEn([String locale = 'en']) : super(locale);
@override
String get cancel => 'Cancel';
@override
String get save => 'Save';
@override
String get create => 'Create';
@override
String get delete => 'Delete';
@override
String get close => 'Close';
@override
String get edit => 'Edit';
@override
String get actions => 'Actions';
@override
String get status => 'Status';
@override
String get no => 'No';
@override
String get name => 'Name';
@override
String get type => 'Type';
@override
String get date => 'Date';
@override
String get loginSuccess => 'Login successful';
@override
String get loginError => 'An error occurred during login';
@override
String get rememberMe => 'Remember me';
@override
String get connect => 'LOG IN';
@override
String get forgotPasswordLink => 'Forgot your password?';
@override
String get forgotPasswordTitle => 'Forgot password';
@override
String get forgotPasswordDesc =>
'Enter your email and we\'ll send you a link to set a new password.';
@override
String get forgotPasswordSubmit => 'SEND LINK';
@override
String get forgotPasswordSuccess =>
'If this email exists, a reset link has just been sent.';
@override
String get backToLogin => 'Back to login';
@override
String get setPasswordTitle => 'Set your password';
@override
String get setPasswordDesc => 'Choose a password to access your workspace.';
@override
String get setPasswordNewLabel => 'New password';
@override
String get setPasswordSubmit => 'SET PASSWORD';
@override
String get setPasswordSuccess => 'Password set — you can now log in.';
@override
String get setPasswordError => 'This link is invalid or has expired';
@override
String get setPasswordTooShort => 'Password must be at least 8 characters';
@override
String get setPasswordMissingToken => 'Invalid link — no token provided';
@override
String get inviteUserHint =>
'An invitation email will be sent to set the password.';
@override
String get menuSubscription => 'Subscription';
@override
String get subscriptionTitle => 'Subscription';
@override
String get subscriptionTrialActive => 'Free trial in progress';
@override
String subscriptionTrialEndsAt(Object date) {
return 'Your trial ends on $date';
}
@override
String get subscriptionTrialNoDate => 'Your free trial is active.';
@override
String get subscriptionPlanActive => 'Essentiel plan active';
@override
String get subscriptionPlanActiveDesc =>
'Your subscription is active and renews automatically.';
@override
String get subscriptionIncludedTitle => 'What\'s included';
@override
String get subscriptionUpgradeBtn => 'Upgrade to a paid subscription';
@override
String get subscriptionCheckoutError =>
'Could not start checkout, please try again later.';
@override
String get subscriptionAddonsTitle => 'Add-ons';
@override
String get subscriptionAddonsComingSoon =>
'Coming soon: extra AI requests and other options.';
@override
String get menuApplications => 'Applications';
@override
String get menuConfigurations => 'Configurations';
@override
String get menuResources => 'Resources';
@override
String get menuStatistics => 'Statistics';
@override
String get menuGuideIa => 'AI Guide';
@override
String get guideIaSubtitle =>
'Your guide answers visitor questions using your own content. It never answers from anything else.';
@override
String get guideIaUsageTitle => 'This month\'s usage';
@override
String guideIaUsageQuestions(Object count) {
return '$count questions asked';
}
@override
String get guideIaUsageNoQuota => 'No cap set on your plan.';
@override
String get guideIaChannelsTitle => 'Where the guide is available';
@override
String get guideIaChannelsSub =>
'Enabled per channel, from each application\'s settings.';
@override
String get guideIaChannelOn => 'Enabled';
@override
String get guideIaChannelOff => 'Disabled';
@override
String get guideIaIdentityTitle => 'Guide identity';
@override
String get guideIaIdentitySub => 'This is what gives the answers their tone';
@override
String get guideIaNameLabel => 'Guide name';
@override
String get guideIaNameHint => 'The name visitors see and hear. E.g. Leon';
@override
String get guideIaPersonaLabel => 'Personality';
@override
String get guideIaPersonaHint =>
'Describe it the way you would introduce a guide to a new colleague. To get started, pick an example:';
@override
String get guideIaExampleWarden => 'Passionate warden';
@override
String get guideIaExampleWardenText =>
'Your name is Leon, you are the site\'s former warden. You speak plainly and warmly, and you happily slip in an anecdote. Address visitors politely.';
@override
String get guideIaExampleSober => 'Measured mediator';
@override
String get guideIaExampleSoberText =>
'You are a calm, precise cultural mediator. You answer in two or three sentences, without familiarity, citing established facts. If something is uncertain, you say so.';
@override
String get guideIaExampleKids => 'For children';
@override
String get guideIaExampleKidsText =>
'You are an enthusiastic explorer speaking to children aged 7 to 12. Use informal language, ask questions, use simple comparisons and short words. Tell stories.';
@override
String get guideIaFallbackLabel => 'When the guide doesn\'t know';
@override
String get guideIaFallbackHint =>
'The guide picks one at random. With a single sentence it repeats it word for word, and that shows immediately.';
@override
String get guideIaFallbackAdd => 'Add a wording';
@override
String get guideIaFallbackTranslated =>
'Visitors see these sentences: they will be translated into their language, like the rest of your content.';
@override
String get guideIaVoiceTitle => 'Your guide out loud';
@override
String get guideIaVoiceSub =>
'Visitors ask out loud and hear the answer — in the app, or in their connected glasses.';
@override
String get guideIaVoiceFemale => 'Female voice, warm';
@override
String get guideIaVoiceMale => 'Male voice, steady';
@override
String guideIaVoiceWakeword(Object word) {
return 'Wake word: \"$word\"';
}
@override
String guideIaVoiceInfoName(Object word) {
return 'Visitors say \"$word\" to wake the guide, even if it goes by another name. A voice and wake word of your own are available as an option.';
}
@override
String get guideIaVoiceInfoGlasses =>
'Connected glasses work with the mobile app installed on the visitor\'s phone.';
@override
String get guideIaVoiceInfoMultilang =>
'The same voice speaks all your languages: your guide keeps one identity across them.';
@override
String get guideIaSave => 'Save';
@override
String get guideIaSaved => 'Guide saved';
@override
String get guideIaSaveError => 'Saving failed. Please try again.';
@override
String get menuNotifications => 'Notifications';
@override
String get menuUsers => 'Users';
@override
String get menuApiKeys => 'API Keys';
@override
String get noPlansAvailable => 'No plans available. Create a plan first.';
@override
String get noPlan => 'No plan (unlimited)';
@override
String get unlimitedStorage => 'Unlimited storage';
@override
String get unlimitedAI => 'Unlimited AI';
@override
String aiTokensPerMonth(String amount) {
return '$amount AI tokens/month';
}
@override
String get storageLabel => 'Storage';
@override
String get aiThisMonthLabel => 'AI this month';
@override
String get unlimited => 'Unlimited';
@override
String get requestsAbbr => 'req';
@override
String get tokensAbbr => 'tokens';
@override
String get planUpdated => 'Plan updated';
@override
String errorMessage(String error) {
return 'Error: $error';
}
@override
String get switchInstance => 'Switch instance';
@override
String get noInstanceFound => 'No instance found';
@override
String get configurePlan => 'Configure plan';
@override
String get tooltipSwitchInstance => 'Switch instance';
@override
String get tooltipLogout => 'Log out';
@override
String get usersTitle => 'Users';
@override
String get createUserBtn => 'Create user';
@override
String get createUserTitle => 'Create user';
@override
String get editUserTitle => 'Edit user';
@override
String get deleteUserTitle => 'Delete user';
@override
String deleteUserConfirm(String email) {
return 'Delete $email?';
}
@override
String get noUsers => 'No users';
@override
String get email => 'Email';
@override
String get firstName => 'First name';
@override
String get lastName => 'Last name';
@override
String get password => 'Password';
@override
String get role => 'Role';
@override
String get tooltipEdit => 'Edit';
@override
String get tooltipDelete => 'Delete';
@override
String get notificationsTitle => 'Notifications';
@override
String get newMessage => 'New message';
@override
String get messageTitle => 'Title';
@override
String get messageBody => 'Message';
@override
String get schedule => 'Schedule';
@override
String get time => 'Time';
@override
String get send => 'Send';
@override
String get cancelNotification => 'Cancel notification';
@override
String cancelNotificationConfirm(String title) {
return 'Cancel « $title »?';
}
@override
String get allNotifications => 'All';
@override
String get sentNotifications => 'Sent';
@override
String get scheduledNotifications => 'Scheduled';
@override
String get failedNotifications => 'Failed';
@override
String get noNotifications => 'No notifications sent';
@override
String get noNotificationsForFilter => 'No notifications for this filter';
@override
String get topic => 'Topic';
@override
String get tooltipCancelNotification => 'Cancel';
@override
String resultsCount(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count results',
one: '$count result',
);
return '$_temp0';
}
@override
String get apiKeysTitle => 'API Keys';
@override
String get createApiKey => 'Create API key';
@override
String get createKeyBtn => 'Create key';
@override
String get appType => 'Application type';
@override
String get noExpiration => 'No expiration';
@override
String expiresOn(String date) {
return 'Expires on $date';
}
@override
String get choose => 'Choose';
@override
String get removeExpiration => 'Remove expiration';
@override
String get apiKeyCreatedTitle => 'API key created';
@override
String get copyKeyWarning => 'Copy this key now — it won\'t be shown again.';
@override
String get copy => 'Copy';
@override
String get copiedKey => 'I\'ve copied the key';
@override
String get revokeApiKeyTitle => 'Revoke API key';
@override
String revokeApiKeyConfirm(String name) {
return 'Revoke « $name »? Apps using this key will lose access.';
}
@override
String get revoke => 'Revoke';
@override
String get noApiKeys => 'No API keys';
@override
String get createdOn => 'Created on';
@override
String get expiration => 'Expiration';
@override
String get activeKey => 'Active';
@override
String get revokedKey => 'Revoked';
@override
String get tooltipRevoke => 'Revoke';
@override
String get statisticsTitle => 'Statistics';
@override
String get statsLoadError => 'Unable to load statistics';
@override
String get statsNoData => 'No data yet for this period';
@override
String statsNoDataForType(String type) {
return 'No events received for type \"$type\"';
}
@override
String get statsSessions => 'Sessions';
@override
String get statsAvgDuration => 'Avg. duration';
@override
String get statsTopApp => 'Top app';
@override
String get statsTopLang => 'Top language';
@override
String get statsVisitsByDay => 'Visits per day';
@override
String get statsAll => 'All';
@override
String get statsTopSections => 'Top sections';
@override
String get statsApps => 'Apps';
@override
String get statsLanguages => 'Languages';
@override
String get statsTopPOI => 'Top POI';
@override
String get statsPOI => 'POI';
@override
String get statsTaps => 'Taps';
@override
String get statsTopAgenda => 'Top agenda events';
@override
String get statsEvent => 'Event';
@override
String get statsQuiz => 'Quiz';
@override
String get statsSection => 'Section';
@override
String get statsAvgScore => 'Avg. score';
@override
String get statsCompletions => 'Completions';
@override
String get statsGames => 'Games';
@override
String get statsGameType => 'Type';
@override
String get statsArticles => 'Articles read';
@override
String get statsReadings => 'Reads';
@override
String get statsMenuTitle => 'Menu';
@override
String get statsMenuItem => 'Item';
@override
String get statsQrScans => 'QR Scans';
@override
String get statsTotal => 'Total';
@override
String get statsValid => 'Valid';
@override
String get statsInvalid => 'Invalid';
@override
String get statsViews => 'Views';
@override
String get statsAttendanceTitle => 'Attendance';
@override
String statsPeriodRange(String from, String to) {
return 'From $from to $to';
}
@override
String get statsFilterPeriod => 'Period';
@override
String get statsFilterChannel => 'Channel';
@override
String statsPeriodDays(int days) {
return '$days days';
}
@override
String get statsPeriodYear => 'Year';
@override
String get statsChannelMobile => 'Mobile app';
@override
String get statsChannelTablet => 'Kiosk';
@override
String get statsChannelWeb => 'Website';
@override
String get statsChannelVR => 'VR headset';
@override
String get statsChannelVoice => 'Voice guide';
@override
String statsTakeawayUp(String percent) {
return 'Attendance is up $percent % compared to the previous period.';
}
@override
String statsTakeawayDown(String percent) {
return 'Attendance is down $percent % compared to the previous period.';
}
@override
String get statsTakeawayStable =>
'Attendance is stable compared to the previous period.';
@override
String statsTakeawayVolume(String visits, String perDay) {
return '$visits visits over the period, or $perDay a day on average.';
}
@override
String statsTakeawayVoice(String percent) {
return 'The voice guide accounts for $percent % of visits — a strong argument for your funding bodies.';
}
@override
String statsTakeawayChannel(String channel, String percent) {
return 'The « $channel » channel accounts for $percent % of visits.';
}
@override
String statsTakeawayContent(String title, String percent) {
return '« $title » alone accounts for $percent % of all views: it is your front door, keep it up to date first.';
}
@override
String get statsKpiVisits => 'Visits';
@override
String get statsKpiAvgDuration => 'Average duration';
@override
String get statsKpiContentsPerVisit => 'Contents per visit';
@override
String get statsKpiVoiceShare => 'Voice guide share';
@override
String get statsKpiTotalViews => 'Contents viewed';
@override
String get statsVsPrevious => 'vs previous period';
@override
String get statsTrendStable => 'stable';
@override
String statsDurationMinSec(String minutes, String seconds) {
return '$minutes min $seconds s';
}
@override
String statsDurationSec(String seconds) {
return '$seconds s';
}
@override
String get statsVisitsByDaySub => 'Light bands mark the weekends';
@override
String get statsWeekends => 'Saturdays and Sundays';
@override
String statsPeakDay(String date, String visits) {
return 'Peak on $date$visits visits';
}
@override
String get statsTopContents => 'Most viewed contents';
@override
String get statsTopContentsSub => 'Number of views over the period';
@override
String get statsChannels => 'Channels';
@override
String get statsChannelsSub => 'Visits per channel';
@override
String get statsLanguagesSub => 'Visits per language';
@override
String get statsReportTitle => 'Your attendance report';
@override
String get statsReportBody =>
'A document in your own colours, ready to send to your municipality, your board or your funding bodies.';
@override
String get statsReportItemAttendance =>
'Attendance, visit durations and trend';
@override
String get statsReportItemContents => 'Most viewed contents and their trend';
@override
String get statsReportItemChannels =>
'Breakdown per channel, including the voice guide, and per language';
@override
String get statsReportItemAdvanced =>
'Points of interest, quizzes, games and QR scans';
@override
String statsReportGenerated(String date) {
return 'Report generated on $date with MyInfoMate';
}
@override
String get statsReportError => 'The report could not be generated';
@override
String get statsReportDownload => 'Download the PDF';
@override
String get statsAdvancedTitle => 'Advanced statistics';
@override
String get statsAdvancedBody =>
'Detailed statistics (POI, quizzes, games, articles, QR…) are available with the Premium plan.';
@override
String get statsUnavailableTitle => 'Statistics not included';
@override
String get statsUnavailableBody =>
'Your current plan does not include attendance statistics.';
@override
String get noData => 'No data';
@override
String get errorOccurred => 'An error occurred';
@override
String get yes => 'Yes';
@override
String get newConfiguration => 'New configuration';
@override
String get configNameLabel => 'Name:';
@override
String get orText => 'or';
@override
String get importLabel => 'Import';
@override
String get configNameRequired => 'Please specify a name for the new visit';
@override
String get configCreatedSuccess => 'Configuration created successfully';
@override
String configExportSuccess(String path) {
return 'Configuration exported successfully, file is at: $path';
}
@override
String get configExportFailed => 'Configuration export failed';
@override
String get configDeletedSuccess => 'Configuration deleted successfully';
@override
String get configSavedSuccess => 'Configuration saved successfully';
@override
String get configDeleteConfirm =>
'Are you sure you want to delete this configuration?';
@override
String get newSection => 'New section';
@override
String get newSubSection => 'New sub section';
@override
String get sectionNameLabel => 'Name:';
@override
String get sectionTypeLabel => 'Type:';
@override
String get sectionNameRequired => 'Please specify a name for the new section';
@override
String get sectionCreatedSuccess => 'Section created successfully!';
@override
String get sectionDeleteConfirm =>
'Are you sure you want to delete this section?';
@override
String get sectionSavedSuccess => 'Section saved successfully';
@override
String get sectionTranslationSaved =>
'Section translations saved successfully';
@override
String get sectionLoadError => 'An error occurred while loading the section';
@override
String get qrCodeCopied => 'This QR code has been copied to the clipboard';
@override
String get beaconLabel => 'Beacon:';
@override
String get beaconIdLabel => 'Beacon ID:';
@override
String get beaconMustBeNumber => 'This must be a number';
@override
String get identifierLabel => 'Identifier:';
@override
String get displayTitleLabel => 'Display title:';
@override
String get imageLabel => 'Image:';
@override
String get backgroundImageLabel => 'Background image:';
@override
String get questionInputLabel => 'Question:';
@override
String get videoUrlLabel => 'Video URL:';
@override
String get webUrlLabel => 'Website URL:';
@override
String get subSectionUpdatedSuccess => 'Sub section updated successfully';
@override
String get subSectionUpdateError =>
'An error occurred while updating the sub section';
@override
String get subSectionDeletedSuccess => 'Sub section deleted successfully';
@override
String get subSectionDeleteError =>
'An error occurred while deleting the sub section';
@override
String get subSectionOrderUpdatedSuccess =>
'Sub section order updated successfully';
@override
String get subSectionOrderUpdateError =>
'An error occurred while updating the sub section order';
@override
String get subSectionCreatedSuccess => 'Sub section created successfully';
@override
String get subSectionCreateError =>
'An error occurred while creating the sub section';
@override
String get questionsLabel => 'Questions';
@override
String get questionLabel => 'Question';
@override
String get editQuestion => 'Edit question';
@override
String get questionDeleteConfirm =>
'Are you sure you want to delete this question?';
@override
String get questionsLoadError =>
'An error occurred while loading the questions';
@override
String get quizBadScore => 'Bad score';
@override
String get quizMediumScore => 'Medium score';
@override
String get quizGoodScore => 'Good score';
@override
String get quizExcellentScore => 'Excellent score';
@override
String get quizBadScoreMsg => 'Message for a bad score';
@override
String get quizMediumScoreMsg => 'Message for a medium score';
@override
String get quizGoodScoreMsg => 'Message for a good score';
@override
String get quizExcellentScoreMsg => 'Message for an excellent score';
@override
String get questionOrderUpdatedSuccess =>
'Question order updated successfully';
@override
String get questionOrderUpdateError =>
'An error occurred while updating the question order';
@override
String get questionCreatedSuccess => 'Question created successfully';
@override
String get questionCreateError =>
'An error occurred while creating the question';
@override
String get questionUpdatedSuccess => 'Question updated successfully';
@override
String get questionUpdateError =>
'An error occurred while updating the question';
@override
String get questionDeletedSuccess => 'Question deleted successfully';
@override
String get questionDeleteError =>
'An error occurred while deleting the question';
@override
String get translationIncomplete => 'Translation is incomplete';
@override
String get geopointCreatedSuccess => 'Point created successfully';
@override
String get geopointCreateError =>
'An error occurred while creating the point';
@override
String get geopointUpdatedSuccess => 'Point updated successfully';
@override
String get geopointUpdateError =>
'An error occurred while updating the point';
@override
String get geopointDeletedSuccess => 'Point deleted successfully';
@override
String get geopointDeleteError =>
'An error occurred while deleting the point';
@override
String get categoryCreatedSuccess => 'Category created successfully';
@override
String get categoryCreateError =>
'An error occurred while creating the category';
@override
String get categoryUpdatedSuccess => 'Category updated successfully';
@override
String get categoryUpdateError =>
'An error occurred while updating the category';
@override
String get eventCreatedSuccess => 'Event created successfully';
@override
String get eventCreateError => 'An error occurred while creating the event';
@override
String get eventUpdatedSuccess => 'Event updated successfully';
@override
String get eventUpdateError => 'An error occurred while updating the event';
@override
String get eventDeletedSuccess => 'Event deleted successfully';
@override
String get eventDeleteError => 'An error occurred while deleting the event';
@override
String get annotationCreatedSuccess => 'Annotation created successfully';
@override
String get annotationCreateError =>
'An error occurred while creating the annotation';
@override
String get annotationUpdatedSuccess => 'Annotation updated successfully';
@override
String get annotationUpdateError =>
'An error occurred while updating the annotation';
@override
String get programmeBlockCreatedSuccess => 'Block created successfully';
@override
String get programmeBlockCreateError =>
'An error occurred while creating the block';
@override
String get programmeBlockUpdatedSuccess => 'Block updated successfully';
@override
String get programmeBlockUpdateError =>
'An error occurred while updating the block';
@override
String get pathCreatedSuccess => 'Path created successfully';
@override
String get pathCreateError => 'An error occurred while creating the path';
@override
String get pathUpdatedSuccess => 'Path updated successfully';
@override
String get pathUpdateError => 'An error occurred while updating the path';
@override
String get stepCreatedSuccess => 'Step created successfully';
@override
String get stepCreateError => 'An error occurred while creating the step';
@override
String get stepUpdatedSuccess => 'Step updated successfully';
@override
String get stepUpdateError => 'An error occurred while updating the step';
@override
String get agendaEventsLabel => 'Events';
@override
String get agendaEventFallback => 'Event';
@override
String get addEvent => 'Add an event';
@override
String get noEvents => 'No events';
@override
String get noAddress => 'No address';
@override
String get agendaFilterAll => 'All';
@override
String get agendaFilterThisMonth => 'This month';
@override
String get agendaFilterThisYear => 'This year';
@override
String get agendaFilterPast => 'Past';
@override
String get agendaEventDeleteConfirm =>
'Are you sure you want to delete this event?';
@override
String get onlineLabel => 'Online:';
@override
String get mapViewLabel => 'Map view:';
@override
String get mapServiceLabel => 'Map service:';
@override
String get jsonFilesLabel => 'JSON files:';
@override
String get jsonLabel => 'JSON';
@override
String get guidedPathsLabel => 'Guided Paths';
@override
String get addPath => 'Add a path';
@override
String get noPathConfigured => 'No path configured';
@override
String get pathOrderUpdateError => 'Error updating order';
@override
String get pathNoTitle => 'Untitled path';
@override
String get pathDeletedSuccess => 'Path deleted successfully';
@override
String get pathDeleteError => 'Error deleting path';
@override
String get pathsLabel => 'Paths';
@override
String get pointsOfInterestLabel => 'Points of Interest';
@override
String get geopointsLabel => 'Geographic points';
@override
String get searchLabel => 'Search:';
@override
String get geopointsLoadError => 'Error loading geographic points';
@override
String get geopointDeleteConfirm =>
'Are you sure you want to delete this geographic point?';
@override
String get serviceLabel => 'Service:';
@override
String get centerPointLabel => 'Center point:';
@override
String get iconLabel => 'Icon:';
@override
String get listViewLabel => 'List view:';
@override
String get typeLabel => 'Type:';
@override
String get zoomLabel => 'Zoom:';
@override
String get categoriesLabel => 'Categories:';
@override
String get startDateLabel => 'Start date';
@override
String get notDefined => 'Not defined';
@override
String get endDateLabel => 'End date';
@override
String get programmeLabel => 'Programme';
@override
String get addBlock => 'Add a block';
@override
String get blockFallback => 'Block';
@override
String get noBlocks => 'No programme blocks defined';
@override
String get programmeBlockDeletedSuccess => 'Block deleted successfully';
@override
String get programmeBlockDeleteError => 'Error deleting block';
@override
String get baseMapLabel => 'Base map';
@override
String get mapLabel => 'Map:';
@override
String get globalAnnotationsLabel => 'Global annotations';
@override
String get addAnnotation => 'Add an annotation';
@override
String get noAnnotations => 'No global annotations';
@override
String get annotationFallback => 'Annotation';
@override
String get annotationDeletedSuccess => 'Annotation deleted';
@override
String get annotationDeleteError => 'Error deleting';
@override
String get agendaEventCreatedSuccess => 'Event created successfully';
@override
String get agendaEventCreateError =>
'An error occurred while creating the event';
@override
String get agendaEventUpdatedSuccess => 'Event updated successfully';
@override
String get agendaEventUpdateError =>
'An error occurred while updating the event';
@override
String get agendaEventDeletedSuccess => 'Event deleted successfully';
@override
String get agendaEventDeleteError =>
'An error occurred while deleting the event';
@override
String get newResource => 'New resource';
@override
String get resourceCreatedSuccess => 'Resource created successfully';
@override
String get resourceCreateError =>
'An error occurred while creating the resource';
@override
String get resourceUpdatedSuccess => 'Resource updated successfully';
@override
String get resourceNoFileLoaded => 'No file has been loaded';
@override
String get resourceNameRequired => 'Please give the resource a name';
@override
String get resourceTooLarge => 'Error: resource size must be under 1.5MB';
@override
String get resourceInvalidUrl => 'The URL is invalid';
@override
String get resourceUrlRequired => 'Please fill in the URL field';
@override
String get generalInfo => 'General information';
@override
String get mainImageLabel => 'Main image:';
@override
String get loaderLabel => 'Loader:';
@override
String get primaryColorLabel => 'Primary color:';
@override
String get secondaryColorLabel => 'Secondary color:';
@override
String get layoutLabel => 'Layout:';
@override
String get layoutGrid => 'Grid';
@override
String get languagesLabel => 'Languages:';
@override
String get featuredEventLabel => 'Featured event:';
@override
String get chooseEvent => 'Choose an event';
@override
String get previewWebTitle => 'Preview — Web';
@override
String get previewMobileTitle => 'Preview — Mobile';
@override
String get previewDesktop => 'Desktop';
@override
String get previewMobile => 'Mobile';
@override
String get noneOption => 'None';
@override
String get aiAssistantLabel => 'AI assistant:';
@override
String get appUpdatedSuccess => 'Mobile application updated';
@override
String get configActivatedSuccess => 'Configuration activated successfully';
@override
String get configDeactivatedSuccess =>
'Configuration deactivated successfully';
@override
String get configRemoveConfirm =>
'Are you sure you want to remove this configuration from the application?';
@override
String get configRemovedSuccess =>
'Configuration removed from application successfully';
@override
String get configRemoveError =>
'An error occurred while removing the configuration';
@override
String get phoneConfigTitle => 'Configurations per device';
@override
String get addConfig => 'Add a configuration';
@override
String get selectConfigToAdd => 'Select a configuration to add';
@override
String get noItems => 'No items to display';
@override
String get add => 'Add';
@override
String pinCode(String code) {
return 'Pin code: $code';
}
@override
String get tablets => 'Tablets';
@override
String stepsCount(int count) {
return '$count steps';
}
@override
String get displayedDescriptionLabel => 'Displayed description:';
@override
String get displayedContentLabel => 'Displayed content:';
@override
String get displayedNameLabel => 'Display name:';
@override
String get startTimeLabel => 'Start time';
@override
String get noAnnotationConfigured => 'No annotations configured.';
@override
String get newStepTitle => 'New step';
@override
String get editStepTitle => 'Edit step';
@override
String get stepTitleLabel => 'Step title';
@override
String get stepDescriptionLabel => 'Step description';
@override
String get stepLocationLabel => 'Step location:';
@override
String get initiallyHiddenLabel => 'Initially hidden';
@override
String get lockedLabel => 'Locked';
@override
String get durationSecondsLabel => 'Duration (seconds):';
@override
String get triggerGeopointLabel => 'Trigger GeoPoint (ID):';
@override
String get questionsChallengesLabel => 'Questions / Challenges';
@override
String get noQuestionsConfigured => 'No questions configured.';
@override
String get newAgendaEventTitle => 'New event';
@override
String get editAgendaEventTitle => 'Edit event';
@override
String get eventTitleLabel => 'Event title';
@override
String get eventDescriptionLabel => 'Event description';
@override
String get startDateColonLabel => 'Start date:';
@override
String get videoResourceLabel => 'Video:';
@override
String get directVideoLinkLabel => 'Direct video link:';
@override
String get phoneLabel => 'Phone:';
@override
String get locationGeometryLabel => 'Location / Geometry';
@override
String get geometryLabel => 'Geometry:';
@override
String get materialIconLabel => 'Icon (material):';
@override
String get linearLabel => 'Linear:';
@override
String get requiredSuccessLabel => 'Required success:';
@override
String get pathStepsLabel => 'Path steps';
@override
String get noStepConfigured => 'No point/step configured.';
@override
String get stepFallback => 'Step';
@override
String get questionAskedLabel => 'Question asked:';
@override
String get questionTitleLabel => 'Question title';
@override
String get expectedAnswerLabel => 'Expected answer:';
@override
String get expectedAnswerModalLabel => 'Expected answer';
@override
String get validationNote =>
'Validation is done by comparison (case-insensitive).';
@override
String get possibleAnswersLabel => 'Possible answers:';
@override
String get noAnswerDefined => 'No answer defined. Add at least one.';
@override
String get correctAnswer => 'Correct answer ✓';
@override
String get wrongAnswer => 'Wrong answer';
@override
String get answerNote => '✓ = correct answer. Multiple can be correct.';
@override
String get geopointZoneTitle => 'Geographic point / Zone';
@override
String get geometryTypeLabel => 'Geometry (Point/Line/Zone):';
@override
String get phoneModalLabel => 'Phone';
@override
String get categoryLabel => 'Category:';
@override
String get startMessageLabel => 'Start message:';
@override
String get startMessageModalLabel => 'Start message';
@override
String get createCategoryTitle => 'Create category';
@override
String get editCategoryTitle => 'Edit category';
@override
String get categoryIconLabel => 'Category icon:';
@override
String get selectResource => 'Select a resource';
@override
String get createPdfTitle => 'Create PDF';
@override
String get answersLabel => 'Answers';
@override
String get answerLabel => 'Answer';
@override
String get createAnswerTitle => 'Create answer';
@override
String get editAnswerTitle => 'Edit answer';
@override
String get answerValidNote => 'If checked, the answer is valid';
@override
String get selectConfiguration => 'Select a configuration';
@override
String get noConfigFound => 'No configuration found';
@override
String get backgroundColorLabel => 'Background color:';
@override
String get updateTabletBtn => 'Update tablet';
@override
String get kioskUpdatedSuccess => 'Kiosk updated';
@override
String get webViewError =>
'The web page cannot be displayed, the URL is incorrect or empty';
@override
String get download => 'Download';
@override
String get resourceDeleteConfirm =>
'Are you sure you want to delete this resource?';
@override
String get categoriesTitle => 'Categories';
@override
String get endTimeLabel => 'End time';
@override
String get annotationsLabel => 'Annotations';
}