3120 lines
70 KiB
Dart
3120 lines
70 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 subscriptionManageBtn => 'Manage my subscription';
|
||
|
||
@override
|
||
String get subscriptionManageDesc =>
|
||
'Update your card, view invoices or cancel — on Stripe\'s secure pages.';
|
||
|
||
@override
|
||
String get subscriptionPortalError =>
|
||
'Could not open the billing portal, please try again later.';
|
||
|
||
@override
|
||
String get subscriptionPortalNoCustomer =>
|
||
'This instance has no online subscription. Your billing is handled directly with us.';
|
||
|
||
@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 => 'Media library';
|
||
|
||
@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 =>
|
||
'Click a channel to enable or disable the guide there.';
|
||
|
||
@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: on save, they are translated into your channels\' languages.';
|
||
|
||
@override
|
||
String get guideIaFallbackTranslateError => 'AI translation failed';
|
||
|
||
@override
|
||
String guideIaSavedTranslationFailed(String reason) {
|
||
return 'Saved, but translating the wordings failed: $reason';
|
||
}
|
||
|
||
@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 guideIaTabConfig => 'Configuration';
|
||
|
||
@override
|
||
String get guideIaTabQuestions => 'What your visitors ask';
|
||
|
||
@override
|
||
String get guideIaPreviewTitle => 'Try your guide';
|
||
|
||
@override
|
||
String get guideIaPreviewSub =>
|
||
'Test the tone and the answers without reaching for a phone';
|
||
|
||
@override
|
||
String get guideIaPreviewPlaceholder =>
|
||
'Ask a question, the way a visitor would';
|
||
|
||
@override
|
||
String get guideIaPreviewSources => 'Where does this answer come from?';
|
||
|
||
@override
|
||
String get guideIaPreviewSourcesInfo =>
|
||
'This source indicator only appears on this screen. Your visitors see the answer alone.';
|
||
|
||
@override
|
||
String get guideIaPreviewError =>
|
||
'The guide did not answer. Try again in a moment.';
|
||
|
||
@override
|
||
String get guideIaPreviewUnsaved =>
|
||
'Save your changes before testing them: the preview queries the guide as published.';
|
||
|
||
@override
|
||
String get guideIaKnowledgeTitle => 'What your guide knows';
|
||
|
||
@override
|
||
String get guideIaKnowledgeSub =>
|
||
'Measured on what is actually indexed, not on what is published';
|
||
|
||
@override
|
||
String get guideIaKnowledgeSections => 'Indexed sections';
|
||
|
||
@override
|
||
String get guideIaKnowledgeChunks => 'Content chunks';
|
||
|
||
@override
|
||
String get guideIaKnowledgeLanguages => 'Languages covered';
|
||
|
||
@override
|
||
String get guideIaKnowledgeLastIndexed => 'Last indexed';
|
||
|
||
@override
|
||
String get guideIaKnowledgeHint =>
|
||
'An unpublished section drops out of the guide\'s answers within the minute.';
|
||
|
||
@override
|
||
String guideIaKnowledgeMinutesAgo(Object count) {
|
||
return '$count min ago';
|
||
}
|
||
|
||
@override
|
||
String guideIaKnowledgeHoursAgo(Object count) {
|
||
return '$count h ago';
|
||
}
|
||
|
||
@override
|
||
String guideIaKnowledgeDaysAgo(Object count) {
|
||
return '$count d ago';
|
||
}
|
||
|
||
@override
|
||
String get guideIaKpiQuestions => 'Questions this month';
|
||
|
||
@override
|
||
String get guideIaKpiUnanswered => 'Unanswered';
|
||
|
||
@override
|
||
String get guideIaKpiThemes => 'Themes';
|
||
|
||
@override
|
||
String get guideIaKpiLanguages => 'Languages';
|
||
|
||
@override
|
||
String get guideIaGapTitle => 'What your visitors look for and don\'t find';
|
||
|
||
@override
|
||
String guideIaGapSub(Object count) {
|
||
return '$count questions found no answer in your content. Add it and your guide will answer from the next visit on.';
|
||
}
|
||
|
||
@override
|
||
String get guideIaTopicsTitle => 'Question topics';
|
||
|
||
@override
|
||
String get guideIaQuestionLanguagesTitle => 'Question languages';
|
||
|
||
@override
|
||
String get guideIaInsightsSubCount => 'Number of questions over the period';
|
||
|
||
@override
|
||
String get guideIaCitedTitle => 'Most used content';
|
||
|
||
@override
|
||
String get guideIaCitedSub => 'Sections cited in answers';
|
||
|
||
@override
|
||
String get guideIaInsightsEmpty => 'No questions yet';
|
||
|
||
@override
|
||
String get guideIaInsightsEmptyHint =>
|
||
'As soon as your visitors start asking the guide, their questions will be grouped here by topic — and the ones left unanswered will tell you what to add to your content.';
|
||
|
||
@override
|
||
String get guideIaInsightsPrivacy =>
|
||
'Questions are kept for 90 days, then deleted. Only the topic groupings are kept beyond that. No data identifying a visitor is recorded.';
|
||
|
||
@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 usersInstance => 'Instance';
|
||
|
||
@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 configExportAction => 'Export the configuration';
|
||
|
||
@override
|
||
String get offlineHint => 'Content is downloaded on first launch.';
|
||
|
||
@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 resourceUploadInProgress => 'Upload in progress…';
|
||
|
||
@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 selectResourceHint => 'Click a thumbnail to select and close.';
|
||
|
||
@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';
|
||
|
||
@override
|
||
String get addStep => 'Add a step';
|
||
|
||
@override
|
||
String get addQuestion => 'Add a question';
|
||
|
||
@override
|
||
String get deleteStep => 'Delete step';
|
||
|
||
@override
|
||
String get deleteStepConfirm => 'Delete this step and its questions?';
|
||
|
||
@override
|
||
String get pathPanelTitle => 'The path';
|
||
|
||
@override
|
||
String get pathPanelSubtitle => 'Title, mood, progression';
|
||
|
||
@override
|
||
String get stepSummaryEmpty => 'No content';
|
||
|
||
@override
|
||
String mediaCount(int count) {
|
||
return '$count media';
|
||
}
|
||
|
||
@override
|
||
String questionCount(int count) {
|
||
return '$count question(s)';
|
||
}
|
||
|
||
@override
|
||
String get saveStatusIdle => 'Saved automatically';
|
||
|
||
@override
|
||
String get saveStatusSaving => 'Saving…';
|
||
|
||
@override
|
||
String get saveStatusSaved => 'Saved';
|
||
|
||
@override
|
||
String get saveStatusFailed => 'Could not save';
|
||
|
||
@override
|
||
String get retry => 'Retry';
|
||
|
||
@override
|
||
String get mapProviderMobileOnlyNote =>
|
||
'The map provider and type apply to the mobile and tablet apps. The web app always renders its own map.';
|
||
|
||
@override
|
||
String get menuAudit => 'Activity';
|
||
|
||
@override
|
||
String get auditTitle => 'Activity';
|
||
|
||
@override
|
||
String get auditSubtitle => 'Who changed what, and when';
|
||
|
||
@override
|
||
String get auditFilterInstance => 'Instance';
|
||
|
||
@override
|
||
String get auditFilterEntity => 'Item type';
|
||
|
||
@override
|
||
String get auditFilterUser => 'User';
|
||
|
||
@override
|
||
String get auditFilterFrom => 'From';
|
||
|
||
@override
|
||
String get auditFilterTo => 'To';
|
||
|
||
@override
|
||
String get auditAllInstances => 'All instances';
|
||
|
||
@override
|
||
String get auditAllEntities => 'All types';
|
||
|
||
@override
|
||
String get auditAllUsers => 'All users';
|
||
|
||
@override
|
||
String get auditReset => 'Clear filters';
|
||
|
||
@override
|
||
String get auditColDate => 'Date';
|
||
|
||
@override
|
||
String get auditColInstance => 'Instance';
|
||
|
||
@override
|
||
String get auditColEntity => 'Item';
|
||
|
||
@override
|
||
String get auditColAction => 'Action';
|
||
|
||
@override
|
||
String get auditColUser => 'User';
|
||
|
||
@override
|
||
String get auditColEntityId => 'Identifier';
|
||
|
||
@override
|
||
String get auditActionCreate => 'Created';
|
||
|
||
@override
|
||
String get auditActionUpdate => 'Updated';
|
||
|
||
@override
|
||
String get auditActionDelete => 'Deleted';
|
||
|
||
@override
|
||
String get auditEntitySection => 'Section';
|
||
|
||
@override
|
||
String get auditEntityResource => 'Resource';
|
||
|
||
@override
|
||
String get auditEntityConfiguration => 'Configuration';
|
||
|
||
@override
|
||
String get auditEntityDevice => 'Device';
|
||
|
||
@override
|
||
String get auditEntityUser => 'User';
|
||
|
||
@override
|
||
String get auditEntityInstance => 'Instance';
|
||
|
||
@override
|
||
String get auditEmpty => 'No activity for these filters';
|
||
|
||
@override
|
||
String get auditLoadError => 'The activity log could not be loaded';
|
||
|
||
@override
|
||
String auditRange(int first, int last, int total) {
|
||
return '$first – $last of $total';
|
||
}
|
||
|
||
@override
|
||
String get auditPrevious => 'Previous page';
|
||
|
||
@override
|
||
String get auditNext => 'Next page';
|
||
|
||
@override
|
||
String get auditDetailTitle => 'Change detail';
|
||
|
||
@override
|
||
String get auditDetailField => 'Field';
|
||
|
||
@override
|
||
String get auditDetailBefore => 'Before';
|
||
|
||
@override
|
||
String get auditDetailAfter => 'After';
|
||
|
||
@override
|
||
String get auditDetailNoValues =>
|
||
'The log does not keep the detail of this operation.';
|
||
|
||
@override
|
||
String usersCount(int count, int max) {
|
||
return '$count / $max users';
|
||
}
|
||
|
||
@override
|
||
String usersQuotaReached(int max) {
|
||
return 'Limit of $max users reached';
|
||
}
|
||
|
||
@override
|
||
String get usersQuotaHint => 'Delete a user to invite another one.';
|
||
|
||
@override
|
||
String userCreateError(String message) {
|
||
return 'Creation failed: $message';
|
||
}
|
||
|
||
@override
|
||
String get mediaFacetType => 'TYPE';
|
||
|
||
@override
|
||
String get mediaFacetUsage => 'USAGE';
|
||
|
||
@override
|
||
String get mediaFacetConfiguration => 'CONFIGURATION';
|
||
|
||
@override
|
||
String get mediaFacetAll => 'All';
|
||
|
||
@override
|
||
String get mediaFacetUsed => 'Used';
|
||
|
||
@override
|
||
String get mediaFacetUnused => 'Never used';
|
||
|
||
@override
|
||
String get mediaFacetUnusedTooltip =>
|
||
'An image set on a guided step (the step\'s Image field) is not counted: it is stored there as a URL, not as a reference. Check before deleting.';
|
||
|
||
@override
|
||
String get mediaFacetNoConfiguration => 'None';
|
||
|
||
@override
|
||
String get mediaSearchHint => 'Search a resource…';
|
||
|
||
@override
|
||
String get mediaSort => 'Sort';
|
||
|
||
@override
|
||
String get mediaSortRecent => 'Most recent';
|
||
|
||
@override
|
||
String get mediaSortName => 'Name A→Z';
|
||
|
||
@override
|
||
String get mediaSortSize => 'Largest first';
|
||
|
||
@override
|
||
String get mediaSortUsages => 'Fewest uses first';
|
||
|
||
@override
|
||
String get mediaViewGrid => 'Grid view';
|
||
|
||
@override
|
||
String get mediaViewList => 'List view';
|
||
|
||
@override
|
||
String get mediaGroupByMonth => 'Group by month';
|
||
|
||
@override
|
||
String get mediaUngroupByMonth => 'Stop grouping by month';
|
||
|
||
@override
|
||
String get mediaFilterNoConfiguration => 'No configuration';
|
||
|
||
@override
|
||
String get mediaClearFilters => 'Clear all';
|
||
|
||
@override
|
||
String get mediaEmptyFiltered => 'No resource matches these filters.';
|
||
|
||
@override
|
||
String get mediaEmpty => 'No resource yet.';
|
||
|
||
@override
|
||
String get mediaRemoveCurrent => 'Remove the current resource';
|
||
|
||
@override
|
||
String get mediaFree => 'free';
|
||
|
||
@override
|
||
String get mediaNoDate => 'No date';
|
||
|
||
@override
|
||
String get mediaDetail => 'Details';
|
||
|
||
@override
|
||
String get mediaNoPreview => 'No preview';
|
||
|
||
@override
|
||
String get mediaInformation => 'INFORMATION';
|
||
|
||
@override
|
||
String get mediaDimensions => 'Dimensions';
|
||
|
||
@override
|
||
String get mediaWeight => 'Size';
|
||
|
||
@override
|
||
String get mediaAddedOn => 'Added on';
|
||
|
||
@override
|
||
String get mediaFile => 'File';
|
||
|
||
@override
|
||
String get mediaUsedIn => 'USED IN';
|
||
|
||
@override
|
||
String get mediaNeverUsed => 'Never used. No visitor will ever see it.';
|
||
|
||
@override
|
||
String get mediaReplaceFile => 'Replace file';
|
||
|
||
@override
|
||
String get mediaDeleteBlockedTooltip =>
|
||
'Resource in use: remove it from its content before deleting it';
|
||
|
||
@override
|
||
String get mediaDeleteTooltip => 'Delete permanently';
|
||
|
||
@override
|
||
String get mediaConfigurationNotFound =>
|
||
'The configuration of this content cannot be found';
|
||
|
||
@override
|
||
String get mediaSaveError => 'The resource could not be saved';
|
||
|
||
@override
|
||
String get mediaDeleteRefused =>
|
||
'Resource used by some content: it was not deleted';
|
||
|
||
@override
|
||
String get mediaDeleteError => 'The resource could not be deleted';
|
||
|
||
@override
|
||
String get mediaDeleteSuccess => 'The resource was deleted';
|
||
|
||
@override
|
||
String get mediaFileReplaced => 'File replaced';
|
||
|
||
@override
|
||
String get mediaFileReplaceError => 'The file could not be replaced';
|
||
|
||
@override
|
||
String get mediaCloseTooltip => 'Close the panel';
|
||
|
||
@override
|
||
String mediaUsageCount(int count) {
|
||
String _temp0 = intl.Intl.pluralLogic(
|
||
count,
|
||
locale: localeName,
|
||
other: '$count uses',
|
||
one: '1 use',
|
||
);
|
||
return '$_temp0';
|
||
}
|
||
|
||
@override
|
||
String mediaSelectedCount(int count) {
|
||
String _temp0 = intl.Intl.pluralLogic(
|
||
count,
|
||
locale: localeName,
|
||
other: '$count selected',
|
||
one: '1 selected',
|
||
);
|
||
return '$_temp0';
|
||
}
|
||
|
||
@override
|
||
String mediaSelectedUsedCount(int count) {
|
||
String _temp0 = intl.Intl.pluralLogic(
|
||
count,
|
||
locale: localeName,
|
||
other: '$count in use, cannot be deleted',
|
||
one: '1 in use, cannot be deleted',
|
||
);
|
||
return '$_temp0';
|
||
}
|
||
|
||
@override
|
||
String mediaBulkDeleteConfirm(int count) {
|
||
String _temp0 = intl.Intl.pluralLogic(
|
||
count,
|
||
locale: localeName,
|
||
other: 'Delete $count resources? Resources in use will be kept.',
|
||
one: 'Delete 1 resource? Resources in use will be kept.',
|
||
);
|
||
return '$_temp0';
|
||
}
|
||
|
||
@override
|
||
String mediaBulkDeleteDone(int count) {
|
||
String _temp0 = intl.Intl.pluralLogic(
|
||
count,
|
||
locale: localeName,
|
||
other: '$count resources deleted',
|
||
one: '1 resource deleted',
|
||
);
|
||
return '$_temp0';
|
||
}
|
||
|
||
@override
|
||
String mediaFilterType(String type) {
|
||
return 'Type: $type';
|
||
}
|
||
|
||
@override
|
||
String mediaSizeBytes(String value) {
|
||
return '$value B';
|
||
}
|
||
|
||
@override
|
||
String mediaSizeKilobytes(String value) {
|
||
return '$value KB';
|
||
}
|
||
|
||
@override
|
||
String mediaSizeMegabytes(String value) {
|
||
return '$value MB';
|
||
}
|
||
|
||
@override
|
||
String mediaBulkDeletePartial(int deleted, int refused) {
|
||
return '$deleted deleted, $refused kept because in use';
|
||
}
|
||
|
||
@override
|
||
String get mediaAddTitle => 'Add a resource';
|
||
|
||
@override
|
||
String get mediaDropZone => 'Drop your files here or click to browse';
|
||
|
||
@override
|
||
String get mediaDropFormats => 'JPG, PNG, GIF, MP3, MP4, WEBM, PDF, JSON';
|
||
|
||
@override
|
||
String get mediaOrPasteUrl => 'or paste a URL';
|
||
|
||
@override
|
||
String get mediaUrlHint => 'https://… image, YouTube video or JSON file';
|
||
|
||
@override
|
||
String get mediaUrlInvalid => 'This URL is not valid';
|
||
|
||
@override
|
||
String get mediaUrlAlreadyAdded => 'This URL is already in the list';
|
||
|
||
@override
|
||
String get mediaFileAlreadyAdded => 'This file is already in the list';
|
||
|
||
@override
|
||
String get mediaUnsupportedFormat => 'Unsupported format';
|
||
|
||
@override
|
||
String get mediaOnlineResource => 'Online resource';
|
||
|
||
@override
|
||
String mediaAddCount(int count) {
|
||
String _temp0 = intl.Intl.pluralLogic(
|
||
count,
|
||
locale: localeName,
|
||
other: 'Add $count files',
|
||
one: 'Add 1 file',
|
||
zero: 'Add',
|
||
);
|
||
return '$_temp0';
|
||
}
|
||
|
||
@override
|
||
String mediaSelectedTotal(int count, String size) {
|
||
return '$count file(s) · $size';
|
||
}
|
||
|
||
@override
|
||
String mediaQuotaRemaining(String size) {
|
||
return '$size left of your quota';
|
||
}
|
||
|
||
@override
|
||
String mediaRemoveFile(String name) {
|
||
return 'Remove $name';
|
||
}
|
||
|
||
@override
|
||
String get menuMobile => 'Mobile';
|
||
|
||
@override
|
||
String get menuKiosk => 'Kiosk';
|
||
|
||
@override
|
||
String get menuWeb => 'Web';
|
||
|
||
@override
|
||
String get menuVr => 'VR';
|
||
|
||
@override
|
||
String get noAppConfigured => 'No application configured on this instance';
|
||
|
||
@override
|
||
String get mobileAppNotConfigured => 'Mobile application not configured';
|
||
|
||
@override
|
||
String get kioskAppNotConfigured => 'Kiosk application not configured';
|
||
|
||
@override
|
||
String get vrAppNotConfigured => 'VR application not configured';
|
||
|
||
@override
|
||
String get titleColonLabel => 'Title:';
|
||
|
||
@override
|
||
String get titleModalLabel => 'Title';
|
||
|
||
@override
|
||
String get descriptionColonLabel => 'Description:';
|
||
|
||
@override
|
||
String get descriptionModalLabel => 'Description';
|
||
|
||
@override
|
||
String get nameColonLabel => 'Name:';
|
||
|
||
@override
|
||
String get dateColonLabel => 'Date:';
|
||
|
||
@override
|
||
String get hourLabel => 'Time:';
|
||
|
||
@override
|
||
String get emailColonLabel => 'Email:';
|
||
|
||
@override
|
||
String get siteColonLabel => 'Website:';
|
||
|
||
@override
|
||
String get websiteColonLabel => 'Website:';
|
||
|
||
@override
|
||
String get websiteModalLabel => 'Website';
|
||
|
||
@override
|
||
String get priceColonLabel => 'Price:';
|
||
|
||
@override
|
||
String get priceModalLabel => 'Price';
|
||
|
||
@override
|
||
String get phoneShortLabel => 'Phone:';
|
||
|
||
@override
|
||
String get openingHoursColonLabel => 'Opening hours:';
|
||
|
||
@override
|
||
String get openingHoursModalLabel => 'Opening hours';
|
||
|
||
@override
|
||
String get addressTextLabel => 'Address (text):';
|
||
|
||
@override
|
||
String get mapLocationLabel => 'Location on the map:';
|
||
|
||
@override
|
||
String get youtubeIdLabel => 'YouTube ID:';
|
||
|
||
@override
|
||
String get youtubeUrlLabel => 'YouTube URL:';
|
||
|
||
@override
|
||
String get vimeoUrlLabel => 'Vimeo URL:';
|
||
|
||
@override
|
||
String get youtubeUrlInvalid =>
|
||
'The video cannot be displayed, the URL is incorrect';
|
||
|
||
@override
|
||
String get videoSelected => 'Video selected';
|
||
|
||
@override
|
||
String get selectVideo => 'Select a video';
|
||
|
||
@override
|
||
String get videoPreviewUnavailable => 'Video preview is not available';
|
||
|
||
@override
|
||
String get errorLoadingVideo => 'The video could not be loaded';
|
||
|
||
@override
|
||
String get errorLoadingPdf => 'The PDF could not be loaded';
|
||
|
||
@override
|
||
String get jsonNoPreview => 'JSON file — no preview available';
|
||
|
||
@override
|
||
String get chooseDate => 'Choose a date';
|
||
|
||
@override
|
||
String get endDateColonLabel => 'End date:';
|
||
|
||
@override
|
||
String get audioColonLabel => 'Audio:';
|
||
|
||
@override
|
||
String get audioModalLabel => 'Audio';
|
||
|
||
@override
|
||
String get autoPlayAudioLabel => 'Auto-play audio:';
|
||
|
||
@override
|
||
String get contentModalLabel => 'Content';
|
||
|
||
@override
|
||
String get contentOnTopLabel => 'Content above:';
|
||
|
||
@override
|
||
String get imagesLabel => 'Images';
|
||
|
||
@override
|
||
String get sectionsLabel => 'Sections';
|
||
|
||
@override
|
||
String get offlineLabel => 'Offline:';
|
||
|
||
@override
|
||
String get cityLabel => 'City:';
|
||
|
||
@override
|
||
String get resource => 'Resource';
|
||
|
||
@override
|
||
String get resourceColonLabel => 'Resource:';
|
||
|
||
@override
|
||
String get resourceToDisplayLabel => 'Resource to display:';
|
||
|
||
@override
|
||
String get pdfFilesLabel => 'PDF files';
|
||
|
||
@override
|
||
String get pdfFilesColonLabel => 'PDF files:';
|
||
|
||
@override
|
||
String get pdfFileAndTitleLabel => 'PDF file and title:';
|
||
|
||
@override
|
||
String get pdfFileAndTitleModalLabel => 'PDF file and title';
|
||
|
||
@override
|
||
String get editPdfTitle => 'Edit PDF';
|
||
|
||
@override
|
||
String get newAnnotationTitle => 'New annotation';
|
||
|
||
@override
|
||
String get editAnnotationTitle => 'Edit annotation';
|
||
|
||
@override
|
||
String get annotationLabelColon => 'Label:';
|
||
|
||
@override
|
||
String get annotationLabelModal => 'Annotation label';
|
||
|
||
@override
|
||
String get annotationDeleteConfirm => 'Delete this annotation?';
|
||
|
||
@override
|
||
String get colorHexLabel => 'Color (hex):';
|
||
|
||
@override
|
||
String get newProgrammeBlockTitle => 'New programme block';
|
||
|
||
@override
|
||
String get editProgrammeBlockTitle => 'Edit block';
|
||
|
||
@override
|
||
String get blockTitleModalLabel => 'Block title';
|
||
|
||
@override
|
||
String get blockDescriptionModalLabel => 'Block description';
|
||
|
||
@override
|
||
String get puzzle => 'Puzzle';
|
||
|
||
@override
|
||
String get slidingPuzzle => 'Sliding puzzle';
|
||
|
||
@override
|
||
String get puzzleConfigTitle => 'Puzzle configuration';
|
||
|
||
@override
|
||
String get puzzleImageLabel => 'Puzzle image:';
|
||
|
||
@override
|
||
String get puzzleRowsLabel => 'Rows:';
|
||
|
||
@override
|
||
String get puzzleColsLabel => 'Columns:';
|
||
|
||
@override
|
||
String get puzzleSlidingLabel => 'Sliding puzzle:';
|
||
|
||
@override
|
||
String get endMessageLabel => 'End message:';
|
||
|
||
@override
|
||
String get endMessageModalLabel => 'End message';
|
||
|
||
@override
|
||
String get gameStartMessageModalLabel => 'Game intro message';
|
||
|
||
@override
|
||
String get gameEndMessageModalLabel => 'Game congratulations message';
|
||
|
||
@override
|
||
String get parcoursWhereTitle => 'Where does the trail take place?';
|
||
|
||
@override
|
||
String get parcoursIndoor => 'Indoors';
|
||
|
||
@override
|
||
String get parcoursIndoorDesc =>
|
||
'A sequence of steps in a confined space, without a map or geolocation.';
|
||
|
||
@override
|
||
String get parcoursOutdoor => 'Outdoors';
|
||
|
||
@override
|
||
String get parcoursOutdoorDesc =>
|
||
'The visitor moves around: map and position on every step.';
|
||
|
||
@override
|
||
String get parcoursBaseMapOptional => 'Base map (optional)';
|
||
|
||
@override
|
||
String get noneFeminine => 'None';
|
||
|
||
@override
|
||
String get parcoursNoMapSection =>
|
||
'No Map section in this configuration — create one to be able to reuse it here.';
|
||
|
||
@override
|
||
String get parcoursSaveSectionFirst =>
|
||
'Save the section first to manage its trails.';
|
||
|
||
@override
|
||
String get pathTitleLabel => 'Trail title';
|
||
|
||
@override
|
||
String get pathDescriptionLabel => 'Trail description';
|
||
|
||
@override
|
||
String get pathMoodTitle => 'Mood';
|
||
|
||
@override
|
||
String get pathMoodSub => 'Classic visit or game';
|
||
|
||
@override
|
||
String get pathMoodQuestion => 'Which mood?';
|
||
|
||
@override
|
||
String get pathMoodVisit => 'Visit';
|
||
|
||
@override
|
||
String get pathMoodVisitDesc =>
|
||
'Discovery trail: the visitor moves at their own pace.';
|
||
|
||
@override
|
||
String get pathMoodGame => 'Game';
|
||
|
||
@override
|
||
String get pathMoodGameDesc =>
|
||
'Escape game or treasure hunt: start and end messages, game wording on the steps.';
|
||
|
||
@override
|
||
String get pathOptionsTitle => 'Trail options';
|
||
|
||
@override
|
||
String get pathProgressionQuestion => 'How does the visitor progress?';
|
||
|
||
@override
|
||
String get pathHideNextSteps => 'Hide steps not reached yet';
|
||
|
||
@override
|
||
String get pathHideNextStepsDesc =>
|
||
'The visitor only discovers the next steps as they go.';
|
||
|
||
@override
|
||
String get pathEstimatedDuration => 'Estimated duration';
|
||
|
||
@override
|
||
String get pathPanelIntroSub => 'What the visitor sees before starting.';
|
||
|
||
@override
|
||
String get progressionFree => 'Free';
|
||
|
||
@override
|
||
String get progressionFreeDesc => 'The visitor picks the steps in any order.';
|
||
|
||
@override
|
||
String get progressionOrdered => 'In order';
|
||
|
||
@override
|
||
String get progressionOrderedDesc =>
|
||
'The visitor follows the sequence; they can go back to a step already seen.';
|
||
|
||
@override
|
||
String get progressionStepByStep => 'Step by step';
|
||
|
||
@override
|
||
String get progressionStepByStepDesc =>
|
||
'Each step unlocks by completing the previous one\'s challenge.';
|
||
|
||
@override
|
||
String get stepLocationTitle => 'Location';
|
||
|
||
@override
|
||
String get stepLocationSub => 'Position and geolocated trigger of the step';
|
||
|
||
@override
|
||
String get stepGeoTrigger => 'Geolocated trigger';
|
||
|
||
@override
|
||
String get stepGeoTriggerDesc =>
|
||
'The step unlocks automatically when the visitor enters the zone.';
|
||
|
||
@override
|
||
String get stepRadiusLabel => 'Radius';
|
||
|
||
@override
|
||
String get stepRichContentTitle => 'Rich content';
|
||
|
||
@override
|
||
String get stepRichContentSub =>
|
||
'Audio guide, images and videos shown on the step page';
|
||
|
||
@override
|
||
String get stepGuideAudioLabel => 'Guide audio';
|
||
|
||
@override
|
||
String get mediasColonLabel => 'Media:';
|
||
|
||
@override
|
||
String get stepNoMedia =>
|
||
'No media — click + to add an image, a video or an audio file';
|
||
|
||
@override
|
||
String get stepRiddleSub => 'Riddle to solve in order to progress';
|
||
|
||
@override
|
||
String get stepQuizSub => 'Optional quiz for this step';
|
||
|
||
@override
|
||
String get stepTimerTitle => 'Timer';
|
||
|
||
@override
|
||
String get stepTimerDesc =>
|
||
'Times the answer; once the delay is over, the expiry message is shown.';
|
||
|
||
@override
|
||
String get stepTimerExpiredLabel => 'Expiry message:';
|
||
|
||
@override
|
||
String get stepTimerExpiredModalLabel => 'Timer expiry message';
|
||
|
||
@override
|
||
String get questionValidationTypeLabel => 'Validation type:';
|
||
|
||
@override
|
||
String get questionTypeSimple => 'Simple (expected text)';
|
||
|
||
@override
|
||
String get questionTypeMultipleChoice => 'Multiple choice';
|
||
|
||
@override
|
||
String get questionTypeMultipleChoiceShort => 'MCQ';
|
||
|
||
@override
|
||
String get questionTypePuzzle => 'Puzzle';
|
||
|
||
@override
|
||
String get questionDigicodeHint =>
|
||
'If the expected answer only contains digits, the visitor automatically gets a lock-style keypad instead of the text field. Nothing to configure.';
|
||
|
||
@override
|
||
String get identityTitle => 'Identity';
|
||
|
||
@override
|
||
String get appearanceTitle => 'Appearance';
|
||
|
||
@override
|
||
String get layoutTitle => 'Layout';
|
||
|
||
@override
|
||
String get optionsTitle => 'Options';
|
||
|
||
@override
|
||
String get configurationColonLabel => 'Configuration:';
|
||
|
||
@override
|
||
String get sectionsSpaceLabel => 'Space for sections (%):';
|
||
|
||
@override
|
||
String get roundedPercentLabel => 'Corner rounding percentage (0-50):';
|
||
|
||
@override
|
||
String get sectionImageBackgroundLabel => 'Background for section images:';
|
||
|
||
@override
|
||
String get deviceNameLabel => 'Device name';
|
||
|
||
@override
|
||
String get noTabletPaired => 'No tablet paired';
|
||
|
||
@override
|
||
String get noConfiguration => 'No configuration';
|
||
|
||
@override
|
||
String get chooseAudioFile => 'Choose an audio file';
|
||
|
||
@override
|
||
String get selectMp3File => 'Select an mp3 audio file';
|
||
|
||
@override
|
||
String get selectFile => 'Select a file';
|
||
|
||
@override
|
||
String get filesLabel => 'Files';
|
||
|
||
@override
|
||
String get addOneOrMoreFiles => 'Add one or more files';
|
||
|
||
@override
|
||
String get searchLocationHint => 'Search for a location';
|
||
|
||
@override
|
||
String get selectThisLocation => 'Choose this location';
|
||
|
||
@override
|
||
String get noLocationChosen => 'No location chosen';
|
||
|
||
@override
|
||
String get changeLocation => 'Change location';
|
||
|
||
@override
|
||
String get geometryEditorTitle => 'Geometry editor';
|
||
|
||
@override
|
||
String get newPoint => 'New point';
|
||
|
||
@override
|
||
String get noPointYet => 'No point yet. Create one to get started.';
|
||
|
||
@override
|
||
String get contentsLabel => 'Point contents';
|
||
|
||
@override
|
||
String get practicalInfoLabel => 'Practical information';
|
||
|
||
@override
|
||
String practicalInfoFilled(int filled, int total) {
|
||
return '$filled / $total filled in';
|
||
}
|
||
|
||
@override
|
||
String untitledPoint(int index) {
|
||
return 'Point $index';
|
||
}
|
||
|
||
@override
|
||
String get geometryTypePoint => 'Point';
|
||
|
||
@override
|
||
String get geometryTypeLine => 'Line';
|
||
|
||
@override
|
||
String get geometryTypePolygon => 'Area';
|
||
|
||
@override
|
||
String get geometryClear => 'Clear the shape';
|
||
|
||
@override
|
||
String get geometryExpand => 'Enlarge the map';
|
||
|
||
@override
|
||
String get geometryCollapse => 'Shrink the map';
|
||
|
||
@override
|
||
String get geometryHintPoint =>
|
||
'Tap the map to place the point. Drag the point to move it.';
|
||
|
||
@override
|
||
String get geometryHintLine =>
|
||
'Tap the map to add points to the line. Drag a point to move it.';
|
||
|
||
@override
|
||
String get geometryHintPolygon =>
|
||
'Tap the map to set the polygon vertices. Drag a vertex to move it.';
|
||
|
||
@override
|
||
String get define => 'Define';
|
||
|
||
@override
|
||
String get change => 'Change';
|
||
|
||
@override
|
||
String get validate => 'Confirm';
|
||
|
||
@override
|
||
String get errorLabel => 'Error';
|
||
|
||
@override
|
||
String get noCategory => 'No category';
|
||
|
||
@override
|
||
String get atLeastOneValueRequired => 'At least one value must be selected';
|
||
|
||
@override
|
||
String get selectLanguageHint => 'Please select a language';
|
||
|
||
@override
|
||
String get noTextYet => 'No text yet —';
|
||
|
||
@override
|
||
String get changeTranslations => 'Change translations';
|
||
|
||
@override
|
||
String get changeResources => 'Change resources';
|
||
|
||
@override
|
||
String get translateWithAi => 'Translate with AI';
|
||
|
||
@override
|
||
String get translationApplied => 'Translation applied';
|
||
|
||
@override
|
||
String get noSourceTextToTranslate => 'No source text to translate';
|
||
|
||
@override
|
||
String get aiTranslateError => 'AI translation failed';
|
||
|
||
@override
|
||
String get aiAssistantNotEnabled =>
|
||
'The AI assistant is not enabled for this instance';
|
||
|
||
@override
|
||
String get applyToAllLanguages => 'Apply to all languages';
|
||
|
||
@override
|
||
String get textAppliedToAllLanguages =>
|
||
'The text was applied to all languages';
|
||
|
||
@override
|
||
String get aiQuotaUnlimited => 'AI quota: unlimited';
|
||
|
||
@override
|
||
String get aiQuotaSharedWithGuide => 'Shared with the visitor assistant';
|
||
|
||
@override
|
||
String get identifierColonLabel => 'Identifier:';
|
||
|
||
@override
|
||
String get qrCodeIdentifierTitle => 'QR code / identifier';
|
||
|
||
@override
|
||
String get storageQuotaExceeded => 'Storage quota exceeded';
|
||
|
||
@override
|
||
String get configImportSuccess =>
|
||
'The configuration was imported successfully';
|
||
|
||
@override
|
||
String get configImportError =>
|
||
'An error occurred while importing the configuration';
|
||
|
||
@override
|
||
String get configAlreadyExists =>
|
||
'The configuration already exists in the system';
|
||
|
||
@override
|
||
String get pageNotFound => '404 — This page does not exist';
|
||
|
||
@override
|
||
String get copied => 'Copied!';
|
||
|
||
@override
|
||
String get webAppCreateEmptyResponse => 'Creation failed (empty response)';
|
||
|
||
@override
|
||
String get webAppNotInitialized =>
|
||
'The web application is not initialised yet.';
|
||
|
||
@override
|
||
String get webAppInitialize => 'Initialise the web application';
|
||
|
||
@override
|
||
String get webAppVisitorUrl => 'Visitor URL';
|
||
|
||
@override
|
||
String get webAppPublicApiKey => 'Public API key';
|
||
|
||
@override
|
||
String get webAppContentTitle => 'Web application content';
|
||
|
||
@override
|
||
String get webAppUpdated => 'Web application updated';
|
||
|
||
@override
|
||
String get subscriptionFeatureWebApp =>
|
||
'Web visitor app, opened by QR code — no install needed';
|
||
|
||
@override
|
||
String get subscriptionFeatureUnlimited =>
|
||
'Unlimited content, agenda, maps and sections';
|
||
|
||
@override
|
||
String get subscriptionFeatureMultilang =>
|
||
'Multilingual — your visitors choose their language';
|
||
|
||
@override
|
||
String get subscriptionFeatureBranding =>
|
||
'Your colors and logo, your own address';
|
||
|
||
@override
|
||
String get guideIaCollectionTitle => 'Your visitors\' questions';
|
||
|
||
@override
|
||
String get guideIaCollectionSwitch =>
|
||
'Record the questions asked to the guide';
|
||
|
||
@override
|
||
String get guideIaCollectionOnDesc =>
|
||
'Feeds the \"What your visitors ask\" tab and the report of unanswered questions. Kept for 90 days, then only the groupings by topic remain.';
|
||
|
||
@override
|
||
String get guideIaCollectionOffDesc =>
|
||
'No new question will be recorded. The \"What your visitors ask\" tab will stop filling up. Questions already recorded stay until their automatic deletion after 90 days.';
|
||
|
||
@override
|
||
String get sectionTypeMap => 'Map';
|
||
|
||
@override
|
||
String get sectionTypeSlider => 'Slider';
|
||
|
||
@override
|
||
String get sectionTypeVideo => 'Video';
|
||
|
||
@override
|
||
String get sectionTypeWeb => 'Web';
|
||
|
||
@override
|
||
String get sectionTypeMenu => 'Menu';
|
||
|
||
@override
|
||
String get sectionTypeQuiz => 'Quiz';
|
||
|
||
@override
|
||
String get sectionTypeArticle => 'Article';
|
||
|
||
@override
|
||
String get sectionTypePdf => 'PDF';
|
||
|
||
@override
|
||
String get sectionTypeGame => 'Game';
|
||
|
||
@override
|
||
String get sectionTypeAgenda => 'Agenda';
|
||
|
||
@override
|
||
String get sectionTypeWeather => 'Weather';
|
||
|
||
@override
|
||
String get sectionTypeEvent => 'Event';
|
||
|
||
@override
|
||
String get sectionTypeParcours => 'Trail';
|
||
|
||
@override
|
||
String get sectionTypeDefault => 'Section';
|
||
|
||
@override
|
||
String get sectionTypeDescMap => 'Map with points of interest';
|
||
|
||
@override
|
||
String get sectionTypeDescSlider => 'Series of captioned images';
|
||
|
||
@override
|
||
String get sectionTypeDescVideo => 'YouTube, Vimeo, file';
|
||
|
||
@override
|
||
String get sectionTypeDescWeb => 'Embedded external page';
|
||
|
||
@override
|
||
String get sectionTypeDescMenu => 'Groups sub-sections';
|
||
|
||
@override
|
||
String get sectionTypeDescQuiz => 'Questions and scores';
|
||
|
||
@override
|
||
String get sectionTypeDescArticle => 'Text, images, audio';
|
||
|
||
@override
|
||
String get sectionTypeDescPdf => 'Documents to browse';
|
||
|
||
@override
|
||
String get sectionTypeDescGame => 'Image puzzle';
|
||
|
||
@override
|
||
String get sectionTypeDescAgenda => 'Dated events';
|
||
|
||
@override
|
||
String get sectionTypeDescWeather => 'Forecast for a city';
|
||
|
||
@override
|
||
String get sectionTypeDescEvent => 'Programme and site map';
|
||
|
||
@override
|
||
String get sectionTypeDescParcours => 'Guided steps, riddles';
|
||
|
||
@override
|
||
String get sectionFamilyContent => 'Content';
|
||
|
||
@override
|
||
String get sectionFamilyPlaces => 'Places and movement';
|
||
|
||
@override
|
||
String get sectionFamilyInteractive => 'Interactive';
|
||
|
||
@override
|
||
String get sectionFamilyPractical => 'Practical information';
|
||
|
||
@override
|
||
String get sectionTypeFinalWarning =>
|
||
'The type cannot be changed after creation.';
|
||
|
||
@override
|
||
String get addContentLabel => 'New content';
|
||
|
||
@override
|
||
String get dragToReorder => 'Drag to reorder';
|
||
|
||
@override
|
||
String get gameTypeLabel => 'Game type';
|
||
|
||
@override
|
||
String get puzzlePreviewLabel => 'Grid';
|
||
|
||
@override
|
||
String get puzzleNoImage => 'Pick an image to see the grid.';
|
||
|
||
@override
|
||
String puzzlePieces(int rows, int cols, int count) {
|
||
return '$rows × $cols — $count pieces';
|
||
}
|
||
|
||
@override
|
||
String get quizScoreMessagesLabel => 'Score messages';
|
||
|
||
@override
|
||
String untitledQuestion(int index) {
|
||
return 'Question $index';
|
||
}
|
||
|
||
@override
|
||
String untitledEvent(int index) {
|
||
return 'Event $index';
|
||
}
|
||
|
||
@override
|
||
String untitledFile(int index) {
|
||
return 'File $index';
|
||
}
|
||
|
||
@override
|
||
String untitledContent(int index) {
|
||
return 'Content $index';
|
||
}
|
||
|
||
@override
|
||
String get settingsPaneTitle => 'Settings';
|
||
|
||
@override
|
||
String get distributionPaneTitle => 'Distribution';
|
||
|
||
@override
|
||
String configHeaderSubtitle(String date, int sections, int languages) {
|
||
return 'Created on $date · $sections sections · $languages languages';
|
||
}
|
||
|
||
@override
|
||
String get sectionHiddenBadge => 'Hidden';
|
||
|
||
@override
|
||
String get addSectionTile => 'Add a section';
|
||
|
||
@override
|
||
String get resourceTypeImage => 'Image';
|
||
|
||
@override
|
||
String get resourceTypeImageUrl => 'Image (URL)';
|
||
|
||
@override
|
||
String get resourceTypeVideo => 'Video';
|
||
|
||
@override
|
||
String get resourceTypeVideoUrl => 'Video (URL)';
|
||
|
||
@override
|
||
String get resourceTypeAudio => 'Audio';
|
||
|
||
@override
|
||
String get resourceTypePdf => 'PDF';
|
||
|
||
@override
|
||
String get resourceTypeJson => 'JSON';
|
||
|
||
@override
|
||
String get resourceTypeJsonUrl => 'JSON (URL)';
|
||
|
||
@override
|
||
String get minutesAbbr => 'min';
|
||
|
||
@override
|
||
String get secondsAbbr => 'sec';
|
||
|
||
@override
|
||
String get metersAbbr => 'm';
|
||
|
||
@override
|
||
String planDialogTitle(String name) {
|
||
return 'Plan — $name';
|
||
}
|
||
|
||
@override
|
||
String sectionConfigTitle(String type) {
|
||
return '$type configuration';
|
||
}
|
||
|
||
@override
|
||
String questionNumbered(int index) {
|
||
return 'Question $index';
|
||
}
|
||
|
||
@override
|
||
String selectedCount(int count) {
|
||
return '$count selected';
|
||
}
|
||
|
||
@override
|
||
String translatedLanguagesCount(int done, int total) {
|
||
return '$done / $total languages translated';
|
||
}
|
||
|
||
@override
|
||
String aiQuotaUsed(String used, String quota) {
|
||
return 'AI quota: $used / $quota used this month';
|
||
}
|
||
|
||
@override
|
||
String get webAccessTitle => 'Web access';
|
||
}
|