A route's page shares it as GPX 1.1 (Android's share sheet, else saved where the person chooses): its way a track with elevations, its waypoints and turns as named points. A GPX file comes in from the Routes tab or, on Android, opened with Train or shared to it; it is planned along the paths through its points or kept as drawn, then named and saved as a new route. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2886 lines
81 KiB
Dart
2886 lines
81 KiB
Dart
import 'dart:async';
|
||
|
||
import 'package:flutter/foundation.dart';
|
||
import 'package:flutter/widgets.dart';
|
||
import 'package:flutter_localizations/flutter_localizations.dart';
|
||
import 'package:intl/intl.dart' as intl;
|
||
|
||
import 'app_localizations_de.dart';
|
||
import 'app_localizations_en.dart';
|
||
|
||
// ignore_for_file: type=lint
|
||
|
||
/// Callers can lookup localized strings with an instance of AppLocalizations
|
||
/// returned by `AppLocalizations.of(context)`.
|
||
///
|
||
/// Applications need to include `AppLocalizations.delegate()` in their app's
|
||
/// `localizationDelegates` list, and the locales they support in the app's
|
||
/// `supportedLocales` list. For example:
|
||
///
|
||
/// ```dart
|
||
/// import 'l10n/app_localizations.dart';
|
||
///
|
||
/// return MaterialApp(
|
||
/// localizationsDelegates: AppLocalizations.localizationsDelegates,
|
||
/// supportedLocales: AppLocalizations.supportedLocales,
|
||
/// home: MyApplicationHome(),
|
||
/// );
|
||
/// ```
|
||
///
|
||
/// ## Update pubspec.yaml
|
||
///
|
||
/// Please make sure to update your pubspec.yaml to include the following
|
||
/// packages:
|
||
///
|
||
/// ```yaml
|
||
/// dependencies:
|
||
/// # Internationalization support.
|
||
/// flutter_localizations:
|
||
/// sdk: flutter
|
||
/// intl: any # Use the pinned version from flutter_localizations
|
||
///
|
||
/// # Rest of dependencies
|
||
/// ```
|
||
///
|
||
/// ## iOS Applications
|
||
///
|
||
/// iOS applications define key application metadata, including supported
|
||
/// locales, in an Info.plist file that is built into the application bundle.
|
||
/// To configure the locales supported by your app, you’ll need to edit this
|
||
/// file.
|
||
///
|
||
/// First, open your project’s ios/Runner.xcworkspace Xcode workspace file.
|
||
/// Then, in the Project Navigator, open the Info.plist file under the Runner
|
||
/// project’s Runner folder.
|
||
///
|
||
/// Next, select the Information Property List item, select Add Item from the
|
||
/// Editor menu, then select Localizations from the pop-up menu.
|
||
///
|
||
/// Select and expand the newly-created Localizations item then, for each
|
||
/// locale your application supports, add a new item and select the locale
|
||
/// you wish to add from the pop-up menu in the Value field. This list should
|
||
/// be consistent with the languages listed in the AppLocalizations.supportedLocales
|
||
/// property.
|
||
abstract class AppLocalizations {
|
||
AppLocalizations(String locale)
|
||
: localeName = intl.Intl.canonicalizedLocale(locale.toString());
|
||
|
||
final String localeName;
|
||
|
||
static AppLocalizations of(BuildContext context) {
|
||
return Localizations.of<AppLocalizations>(context, AppLocalizations)!;
|
||
}
|
||
|
||
static const LocalizationsDelegate<AppLocalizations> delegate =
|
||
_AppLocalizationsDelegate();
|
||
|
||
/// A list of this localizations delegate along with the default localizations
|
||
/// delegates.
|
||
///
|
||
/// Returns a list of localizations delegates containing this delegate along with
|
||
/// GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate,
|
||
/// and GlobalWidgetsLocalizations.delegate.
|
||
///
|
||
/// Additional delegates can be added by appending to this list in
|
||
/// MaterialApp. This list does not have to be used at all if a custom list
|
||
/// of delegates is preferred or required.
|
||
static const List<LocalizationsDelegate<dynamic>> localizationsDelegates =
|
||
<LocalizationsDelegate<dynamic>>[
|
||
delegate,
|
||
GlobalMaterialLocalizations.delegate,
|
||
GlobalCupertinoLocalizations.delegate,
|
||
GlobalWidgetsLocalizations.delegate,
|
||
];
|
||
|
||
/// A list of this localizations delegate's supported locales.
|
||
static const List<Locale> supportedLocales = <Locale>[
|
||
Locale('de'),
|
||
Locale('en'),
|
||
Locale('en', 'GB'),
|
||
Locale('en', 'US'),
|
||
];
|
||
|
||
/// The app's name: the window's title, and where halkyon_app's texts name the app.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Halkyon Train'**
|
||
String get appTitle;
|
||
|
||
/// The app's word in its wordmark, under "Halkyon".
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Train'**
|
||
String get launchProduct;
|
||
|
||
/// No description provided for @instanceFirstStartSubtitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Choose the instance to keep your workouts on. Someone runs each one; you can add others later.'**
|
||
String get instanceFirstStartSubtitle;
|
||
|
||
/// No description provided for @homeEmptyTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'No workouts yet'**
|
||
String get homeEmptyTitle;
|
||
|
||
/// No description provided for @homeEmptyHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Workouts recorded on your phone show here.'**
|
||
String get homeEmptyHint;
|
||
|
||
/// No description provided for @accountTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Account'**
|
||
String get accountTitle;
|
||
|
||
/// No description provided for @accountDeleteMessage.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Your account is deleted on the server and on all your devices. This can\'t be undone.'**
|
||
String get accountDeleteMessage;
|
||
|
||
/// No description provided for @aboutTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'About'**
|
||
String get aboutTitle;
|
||
|
||
/// No description provided for @homeRecordHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Record one with the button below.'**
|
||
String get homeRecordHint;
|
||
|
||
/// No description provided for @recordAction.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Record'**
|
||
String get recordAction;
|
||
|
||
/// No description provided for @recordBack.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Back to the recording'**
|
||
String get recordBack;
|
||
|
||
/// No description provided for @recordSheetTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Record a workout'**
|
||
String get recordSheetTitle;
|
||
|
||
/// No description provided for @activityRunning.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Running'**
|
||
String get activityRunning;
|
||
|
||
/// No description provided for @activityWalking.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Walking'**
|
||
String get activityWalking;
|
||
|
||
/// No description provided for @activityHiking.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Hiking'**
|
||
String get activityHiking;
|
||
|
||
/// No description provided for @activityCycling.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Cycling'**
|
||
String get activityCycling;
|
||
|
||
/// No description provided for @activityIndoorRowing.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Rowing indoors'**
|
||
String get activityIndoorRowing;
|
||
|
||
/// No description provided for @activityOther.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Other workout'**
|
||
String get activityOther;
|
||
|
||
/// The switch for auto-pause, as the recording starts.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Pause by itself'**
|
||
String get recordAutoPause;
|
||
|
||
/// No description provided for @recordAutoPauseHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'When you stand still, and going on as you move again'**
|
||
String get recordAutoPauseHint;
|
||
|
||
/// No description provided for @recordStart.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Start'**
|
||
String get recordStart;
|
||
|
||
/// No description provided for @recordPlan.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Plan'**
|
||
String get recordPlan;
|
||
|
||
/// No description provided for @recordNoPlan.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'None'**
|
||
String get recordNoPlan;
|
||
|
||
/// No description provided for @recordingLap.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Lap'**
|
||
String get recordingLap;
|
||
|
||
/// No description provided for @recordingPlanDone.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Plan done'**
|
||
String get recordingPlanDone;
|
||
|
||
/// No description provided for @recordingStepOf.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Step {index} of {count}'**
|
||
String recordingStepOf(int index, int count);
|
||
|
||
/// No description provided for @recordingNextStep.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Next: {step}'**
|
||
String recordingNextStep(String step);
|
||
|
||
/// No description provided for @recordingStepTapLap.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Until you tap Lap'**
|
||
String get recordingStepTapLap;
|
||
|
||
/// No description provided for @recordLocationRefused.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Train needs your location to record this. You can allow it in the system\'s settings.'**
|
||
String get recordLocationRefused;
|
||
|
||
/// No description provided for @recordingWaitingForGps.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Waiting for GPS'**
|
||
String get recordingWaitingForGps;
|
||
|
||
/// Before a fix precise enough: how far off the last one may be.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Waiting for GPS · ±{metres} m'**
|
||
String recordingWaitingForGpsAccuracy(int metres);
|
||
|
||
/// How far off the last fix may be.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'GPS ±{metres} m'**
|
||
String recordingGpsAccuracy(int metres);
|
||
|
||
/// Under the time, lower case: the time moved, pauses left out.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'moving time'**
|
||
String get recordingMovingTime;
|
||
|
||
/// No description provided for @recordingDistance.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'distance'**
|
||
String get recordingDistance;
|
||
|
||
/// No description provided for @recordingPace.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'pace'**
|
||
String get recordingPace;
|
||
|
||
/// No description provided for @recordingSpeed.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'speed'**
|
||
String get recordingSpeed;
|
||
|
||
/// No description provided for @recordingDistanceValue.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{km} km'**
|
||
String recordingDistanceValue(String km);
|
||
|
||
/// Minutes and seconds a kilometre takes.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{pace} /km'**
|
||
String recordingPaceValue(String pace);
|
||
|
||
/// No description provided for @recordingSpeedValue.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{kmh} km/h'**
|
||
String recordingSpeedValue(String kmh);
|
||
|
||
/// Train paused the recording by itself (auto-pause).
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Paused: not moving'**
|
||
String get recordingPausedAuto;
|
||
|
||
/// No description provided for @recordingPausedByHand.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Paused'**
|
||
String get recordingPausedByHand;
|
||
|
||
/// No description provided for @recordingPause.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Pause'**
|
||
String get recordingPause;
|
||
|
||
/// No description provided for @recordingResume.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Resume'**
|
||
String get recordingResume;
|
||
|
||
/// No description provided for @recordingStop.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Stop'**
|
||
String get recordingStop;
|
||
|
||
/// No description provided for @recordingHoldToStop.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Hold Stop to end the workout'**
|
||
String get recordingHoldToStop;
|
||
|
||
/// No description provided for @recordingStoppedTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Save this workout?'**
|
||
String get recordingStoppedTitle;
|
||
|
||
/// No description provided for @recordingSave.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Save'**
|
||
String get recordingSave;
|
||
|
||
/// No description provided for @recordingDiscard.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Discard'**
|
||
String get recordingDiscard;
|
||
|
||
/// No description provided for @recordingDiscardTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Discard this workout?'**
|
||
String get recordingDiscardTitle;
|
||
|
||
/// No description provided for @recordingDiscardMessage.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Its time and track are deleted from this device. This can\'t be undone.'**
|
||
String get recordingDiscardMessage;
|
||
|
||
/// No description provided for @recordingSaveFailed.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'It can\'t be saved on this device, which doesn\'t hold your account\'s keys. It stays here until it can be.'**
|
||
String get recordingSaveFailed;
|
||
|
||
/// No description provided for @recordingCutOffTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'A recording was cut off'**
|
||
String get recordingCutOffTitle;
|
||
|
||
/// A recording found unfinished as the app opened: when it started and its last sample.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'A recording from {start} was cut off. Save it up to {end}, or discard it?'**
|
||
String recordingCutOffMessage(String start, String end);
|
||
|
||
/// The name of the recording's notification channel, in the system's settings.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Recording'**
|
||
String get recordingNotificationChannel;
|
||
|
||
/// The notification's title while paused.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{activity} · paused'**
|
||
String recordingNotificationPaused(String activity);
|
||
|
||
/// A workout's name where the person gave none: the time of day it started (morning 5–12, afternoon 12–17, evening 17–22, night) and its activity, as Strava names them.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{when, select, morning_running{Morning run} morning_walking{Morning walk} morning_hiking{Morning hike} morning_cycling{Morning ride} morning_indoorRowing{Morning row} afternoon_running{Afternoon run} afternoon_walking{Afternoon walk} afternoon_hiking{Afternoon hike} afternoon_cycling{Afternoon ride} afternoon_indoorRowing{Afternoon row} evening_running{Evening run} evening_walking{Evening walk} evening_hiking{Evening hike} evening_cycling{Evening ride} evening_indoorRowing{Evening row} night_running{Night run} night_walking{Night walk} night_hiking{Night hike} night_cycling{Night ride} night_indoorRowing{Night row} other{Workout}}'**
|
||
String workoutName(String when);
|
||
|
||
/// No description provided for @workoutLocked.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Locked workout'**
|
||
String get workoutLocked;
|
||
|
||
/// Under a workout this device can't open (its key is missing here).
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'This device doesn\'t hold the key it\'s sealed with.'**
|
||
String get workoutLockedHint;
|
||
|
||
/// No description provided for @workoutEdit.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Edit'**
|
||
String get workoutEdit;
|
||
|
||
/// No description provided for @workoutEditTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Edit workout'**
|
||
String get workoutEditTitle;
|
||
|
||
/// No description provided for @workoutNameLabel.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Name'**
|
||
String get workoutNameLabel;
|
||
|
||
/// No description provided for @workoutActivityLabel.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Activity'**
|
||
String get workoutActivityLabel;
|
||
|
||
/// No description provided for @workoutNotesLabel.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Notes'**
|
||
String get workoutNotesLabel;
|
||
|
||
/// No description provided for @workoutSave.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Save'**
|
||
String get workoutSave;
|
||
|
||
/// No description provided for @workoutDelete.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Delete'**
|
||
String get workoutDelete;
|
||
|
||
/// No description provided for @workoutDeleteTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Delete this workout?'**
|
||
String get workoutDeleteTitle;
|
||
|
||
/// No description provided for @workoutDeleteMessage.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'It\'s deleted on all your devices.'**
|
||
String get workoutDeleteMessage;
|
||
|
||
/// No description provided for @workoutDeleted.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Workout deleted'**
|
||
String get workoutDeleted;
|
||
|
||
/// No description provided for @workoutMovingTime.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'moving time'**
|
||
String get workoutMovingTime;
|
||
|
||
/// Lower case, under a figure: from start to end, pauses included.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'whole time'**
|
||
String get workoutTotalTime;
|
||
|
||
/// No description provided for @workoutDistance.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'distance'**
|
||
String get workoutDistance;
|
||
|
||
/// No description provided for @workoutPace.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'pace'**
|
||
String get workoutPace;
|
||
|
||
/// No description provided for @workoutSpeed.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'speed'**
|
||
String get workoutSpeed;
|
||
|
||
/// Lower case, under a figure: the elevation gained.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'climbed'**
|
||
String get workoutClimb;
|
||
|
||
/// No description provided for @workoutClimbValue.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{metres} m'**
|
||
String workoutClimbValue(int metres);
|
||
|
||
/// No description provided for @workoutSplits.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Splits'**
|
||
String get workoutSplits;
|
||
|
||
/// No description provided for @workoutSteps.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Steps of {plan}'**
|
||
String workoutSteps(String plan);
|
||
|
||
/// No description provided for @workoutOnTarget.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'On target'**
|
||
String get workoutOnTarget;
|
||
|
||
/// No description provided for @workoutOffTarget.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Off target'**
|
||
String get workoutOffTarget;
|
||
|
||
/// A kilometre's split, its number.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'km {number}'**
|
||
String workoutSplitKm(int number);
|
||
|
||
/// A cycling split of 5 km: where it starts and ends.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{from}–{to} km'**
|
||
String workoutSplitFiveKm(int from, int to);
|
||
|
||
/// No description provided for @workoutPaceChart.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Pace'**
|
||
String get workoutPaceChart;
|
||
|
||
/// No description provided for @workoutSpeedChart.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Speed'**
|
||
String get workoutSpeedChart;
|
||
|
||
/// No description provided for @workoutElevationChart.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Elevation'**
|
||
String get workoutElevationChart;
|
||
|
||
/// Under a workout's map: what the map's source sees.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Map by {name}: it sees your device\'s address and the area shown, not your track.'**
|
||
String workoutMapSource(String name);
|
||
|
||
/// A link to the map source's page about what it keeps.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'What {name} keeps'**
|
||
String workoutMapSourceAbout(String name);
|
||
|
||
/// No description provided for @workoutMapUnavailable.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'The map can\'t be loaded now.'**
|
||
String get workoutMapUnavailable;
|
||
|
||
/// No description provided for @workoutNotFound.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'This workout is gone.'**
|
||
String get workoutNotFound;
|
||
|
||
/// No description provided for @recordHeartRate.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Heart rate'**
|
||
String get recordHeartRate;
|
||
|
||
/// On the Record sheet, under Heart rate, where no strap is chosen.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'No strap'**
|
||
String get recordNoStrap;
|
||
|
||
/// No description provided for @recordHeartLoop.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'From the Polar Loop'**
|
||
String get recordHeartLoop;
|
||
|
||
/// No description provided for @recordHeartStrapThenLoop.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{strap}, the Loop while it is lost'**
|
||
String recordHeartStrapThenLoop(String strap);
|
||
|
||
/// No description provided for @strapSheetTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Heart-rate strap'**
|
||
String get strapSheetTitle;
|
||
|
||
/// No description provided for @strapSearching.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Looking for straps nearby…'**
|
||
String get strapSearching;
|
||
|
||
/// No description provided for @strapSearchingHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Put the strap on: most wake up only once they touch skin.'**
|
||
String get strapSearchingHint;
|
||
|
||
/// Under a strap found: its signal is strong.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'close by'**
|
||
String get strapNear;
|
||
|
||
/// Under a strap found: its signal is weak.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'further off'**
|
||
String get strapFar;
|
||
|
||
/// A strap that sends no name.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Unnamed strap'**
|
||
String get strapUnnamed;
|
||
|
||
/// No description provided for @strapForget.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Forget strap'**
|
||
String get strapForget;
|
||
|
||
/// No description provided for @strapRefused.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Train needs nearby devices to find your strap. You can allow it in the system\'s settings.'**
|
||
String get strapRefused;
|
||
|
||
/// No description provided for @strapBluetoothOff.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Bluetooth is off. Turn it on to look for devices nearby.'**
|
||
String get strapBluetoothOff;
|
||
|
||
/// Under the heart rate, lower case.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'heart rate'**
|
||
String get recordingHeartRate;
|
||
|
||
/// While recording: the strap is out of reach or off; Train keeps asking for it.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Strap lost'**
|
||
String get recordingStrapLost;
|
||
|
||
/// Lower case, under a figure.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'average heart rate'**
|
||
String get workoutAverageHeartRate;
|
||
|
||
/// Lower case, under a figure.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'highest heart rate'**
|
||
String get workoutMaxHeartRate;
|
||
|
||
/// No description provided for @workoutBpmValue.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{bpm} bpm'**
|
||
String workoutBpmValue(int bpm);
|
||
|
||
/// No description provided for @workoutHeartRateChart.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Heart rate'**
|
||
String get workoutHeartRateChart;
|
||
|
||
/// No description provided for @recordRower.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Rowing machine'**
|
||
String get recordRower;
|
||
|
||
/// No description provided for @recordNoRower.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Choose your rowing machine'**
|
||
String get recordNoRower;
|
||
|
||
/// No description provided for @recordRowerRefused.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Train needs nearby devices to record from your rowing machine. You can allow it in the system\'s settings.'**
|
||
String get recordRowerRefused;
|
||
|
||
/// No description provided for @rowerSheetTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Rowing machine'**
|
||
String get rowerSheetTitle;
|
||
|
||
/// No description provided for @rowerSearching.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Looking for rowing machines nearby…'**
|
||
String get rowerSearching;
|
||
|
||
/// No description provided for @rowerSearchingHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Wake the console: most show once you pull or press a button. One another app holds (Christopeit Connect, Kinomap) can\'t be found: close that app first.'**
|
||
String get rowerSearchingHint;
|
||
|
||
/// No description provided for @rowerUnnamed.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Unnamed rowing machine'**
|
||
String get rowerUnnamed;
|
||
|
||
/// No description provided for @rowerForget.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Forget rowing machine'**
|
||
String get rowerForget;
|
||
|
||
/// No description provided for @rowerRefused.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Train needs nearby devices to find your rowing machine. You can allow it in the system\'s settings.'**
|
||
String get rowerRefused;
|
||
|
||
/// While recording a row: the rower isn't connected yet. Another app may hold it.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Looking for the rowing machine'**
|
||
String get recordingRowerConnecting;
|
||
|
||
/// While recording a row: the rower is out of reach or off; Train keeps asking for it.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Rowing machine lost'**
|
||
String get recordingRowerLost;
|
||
|
||
/// Lower case, under a figure: how long 500 m take now.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'split'**
|
||
String get recordingSplit;
|
||
|
||
/// Lower case, under a figure.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'strokes a minute'**
|
||
String get recordingStrokeRate;
|
||
|
||
/// Lower case, under a figure.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'watts'**
|
||
String get recordingWatts;
|
||
|
||
/// Minutes and seconds 500 m take.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{split} /500 m'**
|
||
String workoutSplitValue(String split);
|
||
|
||
/// Lower case, under a figure.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'average split'**
|
||
String get workoutAverageSplit;
|
||
|
||
/// Lower case, under a figure.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'average stroke rate'**
|
||
String get workoutAverageStrokeRate;
|
||
|
||
/// Strokes a minute.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{rate} /min'**
|
||
String workoutStrokeRateValue(String rate);
|
||
|
||
/// Lower case, under a figure.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'average power'**
|
||
String get workoutAveragePower;
|
||
|
||
/// Lower case, under a figure.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'highest power'**
|
||
String get workoutMaxPower;
|
||
|
||
/// No description provided for @workoutWattsValue.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{watts} W'**
|
||
String workoutWattsValue(int watts);
|
||
|
||
/// Lower case, under a figure: how many strokes.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'strokes'**
|
||
String get workoutStrokes;
|
||
|
||
/// A rowing split of 500 m: where it starts and ends.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{from}–{to} m'**
|
||
String workoutSplitMetres(int from, int to);
|
||
|
||
/// No description provided for @workoutSplitChart.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Split'**
|
||
String get workoutSplitChart;
|
||
|
||
/// No description provided for @workoutStrokeRateChart.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Stroke rate'**
|
||
String get workoutStrokeRateChart;
|
||
|
||
/// No description provided for @workoutPowerChart.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Power'**
|
||
String get workoutPowerChart;
|
||
|
||
/// No description provided for @recordAutoPauseRowingHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'When you stop rowing, going on with the next stroke'**
|
||
String get recordAutoPauseRowingHint;
|
||
|
||
/// No description provided for @recordingMetres.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'metres'**
|
||
String get recordingMetres;
|
||
|
||
/// No description provided for @healthTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Health Connect'**
|
||
String get healthTitle;
|
||
|
||
/// Under Health Connect in the account sheet.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Share workouts with other apps on this phone'**
|
||
String get healthHint;
|
||
|
||
/// No description provided for @healthUnavailable.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Health Connect isn\'t on this phone. Android 14 and later have it built in; before 14, it\'s an app of its own.'**
|
||
String get healthUnavailable;
|
||
|
||
/// No description provided for @healthNeedsUpdate.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Update the Health Connect app to use it with Train.'**
|
||
String get healthNeedsUpdate;
|
||
|
||
/// No description provided for @healthWrite.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Write my workouts'**
|
||
String get healthWrite;
|
||
|
||
/// No description provided for @healthWriteHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Every workout on this phone, kept up to date as you edit or delete it'**
|
||
String get healthWriteHint;
|
||
|
||
/// No description provided for @healthTakenBack.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Health Connect took this back. Allow it there to turn it on again.'**
|
||
String get healthTakenBack;
|
||
|
||
/// No description provided for @healthRefused.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Health Connect didn\'t allow it. You can allow it in its settings.'**
|
||
String get healthRefused;
|
||
|
||
/// No description provided for @healthOpenSettings.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Open Health Connect'**
|
||
String get healthOpenSettings;
|
||
|
||
/// No description provided for @healthWhy.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Why Train asks'**
|
||
String get healthWhy;
|
||
|
||
/// No description provided for @healthRationaleTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Train and Health Connect'**
|
||
String get healthRationaleTitle;
|
||
|
||
/// No description provided for @healthRationaleWrite.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Train writes your workouts to Health Connect only once you turn it on: each one with its route, heart rate, speed, power, distance and climb, so that other apps on this phone can use them. A workout edited or deleted in Train is edited or deleted there too.'**
|
||
String get healthRationaleWrite;
|
||
|
||
/// No description provided for @healthRationaleRead.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Train reads other apps\' workouts only once you turn it on, and only from the apps you choose: their heart rate, distance and power come into Train as workouts, sealed with your key before they\'re synced to your instance, which can\'t read them.'**
|
||
String get healthRationaleRead;
|
||
|
||
/// No description provided for @healthRationaleNothingElse.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'What Train reads there is shown to you and nobody else, and isn\'t used for anything else. Turning a switch off, or taking a permission back in Health Connect, stops it.'**
|
||
String get healthRationaleNothingElse;
|
||
|
||
/// No description provided for @healthRead.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Read from other apps'**
|
||
String get healthRead;
|
||
|
||
/// No description provided for @healthReadHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Their workouts come into Train, from the apps you choose below'**
|
||
String get healthReadHint;
|
||
|
||
/// Over the apps that wrote workouts to Health Connect, each with its switch.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Apps'**
|
||
String get healthApps;
|
||
|
||
/// No description provided for @healthAppsEmpty.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'No app has written workouts to Health Connect yet.'**
|
||
String get healthAppsEmpty;
|
||
|
||
/// In the list, after when an imported workout was: the app it came from.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'from {app}'**
|
||
String workoutFromList(String app);
|
||
|
||
/// On an imported workout's page.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'From {app}, through Health Connect'**
|
||
String workoutFrom(String app);
|
||
|
||
/// On an imported workout's page: asks Health Connect for its route.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Bring in the track'**
|
||
String get workoutBringTrack;
|
||
|
||
/// No description provided for @workoutNoTrack.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Health Connect gave no track for it.'**
|
||
String get workoutNoTrack;
|
||
|
||
/// No description provided for @profileTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Your body'**
|
||
String get profileTitle;
|
||
|
||
/// Under Your body in the account sheet.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'What your band and your heart-rate zones work from'**
|
||
String get profileHint;
|
||
|
||
/// No description provided for @profileIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Each figure is optional and sealed with your key, as your workouts are; your instance can\'t read them.'**
|
||
String get profileIntro;
|
||
|
||
/// No description provided for @profileLocked.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Your profile is sealed with a key this device doesn\'t hold.'**
|
||
String get profileLocked;
|
||
|
||
/// No description provided for @profileSex.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Sex'**
|
||
String get profileSex;
|
||
|
||
/// No description provided for @profileSexHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'As Polar\'s formulas take it: the one your body\'s figures follow'**
|
||
String get profileSexHint;
|
||
|
||
/// No description provided for @profileSexFemale.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Female'**
|
||
String get profileSexFemale;
|
||
|
||
/// No description provided for @profileSexMale.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Male'**
|
||
String get profileSexMale;
|
||
|
||
/// No description provided for @profileNotGiven.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Not given'**
|
||
String get profileNotGiven;
|
||
|
||
/// No description provided for @profileBirthDate.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Birth date'**
|
||
String get profileBirthDate;
|
||
|
||
/// No description provided for @profileHeight.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Height'**
|
||
String get profileHeight;
|
||
|
||
/// No description provided for @profileHeightUnit.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'cm'**
|
||
String get profileHeightUnit;
|
||
|
||
/// No description provided for @profileWeight.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Weight'**
|
||
String get profileWeight;
|
||
|
||
/// No description provided for @profileWeightUnit.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'kg'**
|
||
String get profileWeightUnit;
|
||
|
||
/// No description provided for @profileRestingHeartRate.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Resting heart rate'**
|
||
String get profileRestingHeartRate;
|
||
|
||
/// No description provided for @profileMaxHeartRate.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Highest heart rate'**
|
||
String get profileMaxHeartRate;
|
||
|
||
/// No description provided for @profileBpmUnit.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'bpm'**
|
||
String get profileBpmUnit;
|
||
|
||
/// No description provided for @profileVo2Max.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'VO2max'**
|
||
String get profileVo2Max;
|
||
|
||
/// No description provided for @profileVo2MaxUnit.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'ml/kg/min'**
|
||
String get profileVo2MaxUnit;
|
||
|
||
/// No description provided for @profileTrainingBackground.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Training background'**
|
||
String get profileTrainingBackground;
|
||
|
||
/// No description provided for @trainingOccasional.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Occasional'**
|
||
String get trainingOccasional;
|
||
|
||
/// No description provided for @trainingRegular.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Regular'**
|
||
String get trainingRegular;
|
||
|
||
/// No description provided for @trainingFrequent.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Frequent'**
|
||
String get trainingFrequent;
|
||
|
||
/// No description provided for @trainingHeavy.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Heavy'**
|
||
String get trainingHeavy;
|
||
|
||
/// No description provided for @trainingSemiPro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Semi-pro'**
|
||
String get trainingSemiPro;
|
||
|
||
/// No description provided for @trainingPro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Pro'**
|
||
String get trainingPro;
|
||
|
||
/// No description provided for @profileTypicalDay.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Typical day'**
|
||
String get profileTypicalDay;
|
||
|
||
/// No description provided for @typicalDaySitting.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Mostly sitting'**
|
||
String get typicalDaySitting;
|
||
|
||
/// No description provided for @typicalDayStanding.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Mostly standing'**
|
||
String get typicalDayStanding;
|
||
|
||
/// No description provided for @typicalDayMoving.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Mostly moving'**
|
||
String get typicalDayMoving;
|
||
|
||
/// No description provided for @profileSleepGoal.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Sleep goal'**
|
||
String get profileSleepGoal;
|
||
|
||
/// No description provided for @profileSave.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Save'**
|
||
String get profileSave;
|
||
|
||
/// No description provided for @profileSaved.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Saved'**
|
||
String get profileSaved;
|
||
|
||
/// No description provided for @profileInvalid.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Check the figures marked.'**
|
||
String get profileInvalid;
|
||
|
||
/// No description provided for @profileNeeded.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Needed for your band'**
|
||
String get profileNeeded;
|
||
|
||
/// No description provided for @loopTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Polar Loop'**
|
||
String get loopTitle;
|
||
|
||
/// Under Polar Loop in the account sheet.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Your band: its setup, battery and clock'**
|
||
String get loopHint;
|
||
|
||
/// No description provided for @loopNone.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Train sets up a Polar Loop and keeps it itself, without Polar Flow or a Polar account. A band used with Polar Flow needs a factory reset first.'**
|
||
String get loopNone;
|
||
|
||
/// No description provided for @loopSetUp.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Set up a Loop'**
|
||
String get loopSetUp;
|
||
|
||
/// No description provided for @loopSetUpAgain.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Set up again'**
|
||
String get loopSetUpAgain;
|
||
|
||
/// No description provided for @loopLetGo.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Let the band go'**
|
||
String get loopLetGo;
|
||
|
||
/// No description provided for @loopLetGoTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Let the band go?'**
|
||
String get loopLetGoTitle;
|
||
|
||
/// No description provided for @loopLetGoText.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'The band is reset to the factory\'s state, and what it holds that hasn\'t reached Train is lost. Afterwards it can be paired with another phone, or with Polar Flow.'**
|
||
String get loopLetGoText;
|
||
|
||
/// No description provided for @loopLetGoConfirm.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Reset the band'**
|
||
String get loopLetGoConfirm;
|
||
|
||
/// No description provided for @loopConnected.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Connected'**
|
||
String get loopConnected;
|
||
|
||
/// No description provided for @loopLastSeen.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Last seen {when}'**
|
||
String loopLastSeen(String when);
|
||
|
||
/// No description provided for @loopNotInReach.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Not in reach'**
|
||
String get loopNotInReach;
|
||
|
||
/// No description provided for @loopBattery.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Battery {level} %'**
|
||
String loopBattery(int level);
|
||
|
||
/// No description provided for @loopCharging.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Battery {level} %, charging'**
|
||
String loopCharging(int level);
|
||
|
||
/// No description provided for @loopFirmware.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Firmware {version}'**
|
||
String loopFirmware(String version);
|
||
|
||
/// No description provided for @loopFirmwareCheck.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Check for a firmware update'**
|
||
String get loopFirmwareCheck;
|
||
|
||
/// No description provided for @loopFirmwareCurrent.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'The band\'s firmware is up to date.'**
|
||
String get loopFirmwareCurrent;
|
||
|
||
/// No description provided for @loopFirmwareOffered.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Firmware {version} available'**
|
||
String loopFirmwareOffered(String version);
|
||
|
||
/// No description provided for @loopFirmwareViaPolar.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Fetched from Polar directly: Polar learns this phone\'s address (or its VPN\'s), with the band\'s firmware version and hardware code.'**
|
||
String get loopFirmwareViaPolar;
|
||
|
||
/// No description provided for @loopFirmwareViaInstance.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Fetched through your instance: Polar learns the instance\'s address, not this phone\'s, with the band\'s firmware version and hardware code.'**
|
||
String get loopFirmwareViaInstance;
|
||
|
||
/// No description provided for @loopFirmwareErases.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'The update erases the band. Train first keeps what is on it, then sets it up again with your profile.'**
|
||
String get loopFirmwareErases;
|
||
|
||
/// No description provided for @loopFirmwareUpdate.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Update'**
|
||
String get loopFirmwareUpdate;
|
||
|
||
/// No description provided for @loopFirmwareUpdateTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Update the band\'s firmware?'**
|
||
String get loopFirmwareUpdateTitle;
|
||
|
||
/// No description provided for @loopFirmwareUpdateText.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Train first keeps what is on the band, as the update erases it. The band restarts, which takes a few minutes, and Train then sets it up again with your profile. Keep it near the phone until then.'**
|
||
String get loopFirmwareUpdateText;
|
||
|
||
/// No description provided for @loopFirmwareStage.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{stage, select, reading{Keeping what is on the band…} fetching{Fetching the firmware…} preparing{Preparing the band…} writing{Writing the firmware…} finalizing{Finishing the update…} done{Written} restarting{The band restarts…} other{Updating…}}'**
|
||
String loopFirmwareStage(String stage);
|
||
|
||
/// No description provided for @loopFirmwareStageHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Keep the band near the phone, and Train open.'**
|
||
String get loopFirmwareStageHint;
|
||
|
||
/// No description provided for @loopFirmwareUpdated.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Firmware updated; the band is set up again.'**
|
||
String get loopFirmwareUpdated;
|
||
|
||
/// No description provided for @loopFirmwareThroughInstance.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Firmware through your instance'**
|
||
String get loopFirmwareThroughInstance;
|
||
|
||
/// No description provided for @loopFirmwareThroughInstanceHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Polar then learns the instance\'s address rather than this phone\'s. Off, the phone asks Polar directly.'**
|
||
String get loopFirmwareThroughInstanceHint;
|
||
|
||
/// No description provided for @loopProfileChanged.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Your body changed since the band was set up'**
|
||
String get loopProfileChanged;
|
||
|
||
/// No description provided for @loopProfileChangedHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Sending sets the band up again with your figures as they are now.'**
|
||
String get loopProfileChangedHint;
|
||
|
||
/// No description provided for @loopSend.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Send to the band'**
|
||
String get loopSend;
|
||
|
||
/// No description provided for @loopSent.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Sent to the band.'**
|
||
String get loopSent;
|
||
|
||
/// No description provided for @loopFailed.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'The band didn\'t answer. Keep it close, and try again.'**
|
||
String get loopFailed;
|
||
|
||
/// No description provided for @loopSearching.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Looking for Loops nearby'**
|
||
String get loopSearching;
|
||
|
||
/// No description provided for @loopSearchingHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Keep the band close; tap it to wake it up.'**
|
||
String get loopSearchingHint;
|
||
|
||
/// No description provided for @loopRefused.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Train can\'t look for your band without nearby devices. Allow them in Android\'s settings.'**
|
||
String get loopRefused;
|
||
|
||
/// No description provided for @loopUnnamed.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Polar Loop'**
|
||
String get loopUnnamed;
|
||
|
||
/// No description provided for @loopSettingUp.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Setting up the band…'**
|
||
String get loopSettingUp;
|
||
|
||
/// No description provided for @loopSettingUpHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Android may ask you to pair it.'**
|
||
String get loopSettingUpHint;
|
||
|
||
/// No description provided for @loopSetUpDone.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'The band is set up.'**
|
||
String get loopSetUpDone;
|
||
|
||
/// No description provided for @loopFormTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'For your band'**
|
||
String get loopFormTitle;
|
||
|
||
/// No description provided for @loopFormIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Your band needs these. They\'re kept in Your body, sealed with your key. For a resting or highest heart rate or a VO2max you haven\'t given, the band takes Polar\'s defaults, and Your body stays as it is.'**
|
||
String get loopFormIntro;
|
||
|
||
/// No description provided for @loopFormSave.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Set up the band'**
|
||
String get loopFormSave;
|
||
|
||
/// No description provided for @homeWorkouts.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Workouts'**
|
||
String get homeWorkouts;
|
||
|
||
/// No description provided for @homeDays.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Days'**
|
||
String get homeDays;
|
||
|
||
/// No description provided for @homePlans.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Plans'**
|
||
String get homePlans;
|
||
|
||
/// No description provided for @plansNew.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'New plan'**
|
||
String get plansNew;
|
||
|
||
/// No description provided for @plansNewEmpty.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'From nothing'**
|
||
String get plansNewEmpty;
|
||
|
||
/// No description provided for @plansEmptyTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'No plans yet'**
|
||
String get plansEmptyTitle;
|
||
|
||
/// No description provided for @plansEmptyHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'A plan\'s steps lead you through intervals as you record, with a tone, a vibration and a voice at each change. Start from a template, or from nothing.'**
|
||
String get plansEmptyHint;
|
||
|
||
/// No description provided for @planLocked.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'A plan that doesn\'t open here'**
|
||
String get planLocked;
|
||
|
||
/// No description provided for @planTemplateFourByFour.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'4×4 minutes'**
|
||
String get planTemplateFourByFour;
|
||
|
||
/// No description provided for @planTemplateTabata.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Tabata'**
|
||
String get planTemplateTabata;
|
||
|
||
/// No description provided for @planTemplateFourHundreds.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'10×400 m'**
|
||
String get planTemplateFourHundreds;
|
||
|
||
/// No description provided for @planTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Plan'**
|
||
String get planTitle;
|
||
|
||
/// No description provided for @planNewTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'New plan'**
|
||
String get planNewTitle;
|
||
|
||
/// No description provided for @planName.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Name'**
|
||
String get planName;
|
||
|
||
/// No description provided for @planActivity.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'For'**
|
||
String get planActivity;
|
||
|
||
/// No description provided for @planActivityAny.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Any activity'**
|
||
String get planActivityAny;
|
||
|
||
/// No description provided for @planOffTarget.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Tell me when I\'m off target'**
|
||
String get planOffTarget;
|
||
|
||
/// No description provided for @planOffTargetHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'A short cue at most every 30 seconds.'**
|
||
String get planOffTargetHint;
|
||
|
||
/// No description provided for @planSave.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Save'**
|
||
String get planSave;
|
||
|
||
/// No description provided for @planNotSaved.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'The plan wasn\'t saved.'**
|
||
String get planNotSaved;
|
||
|
||
/// No description provided for @planAddStep.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Add a step'**
|
||
String get planAddStep;
|
||
|
||
/// No description provided for @planAddRepeat.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Add a repeat'**
|
||
String get planAddRepeat;
|
||
|
||
/// No description provided for @planRepeat.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{count}×'**
|
||
String planRepeat(int count);
|
||
|
||
/// No description provided for @planFewer.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Fewer rounds'**
|
||
String get planFewer;
|
||
|
||
/// No description provided for @planMore.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'More rounds'**
|
||
String get planMore;
|
||
|
||
/// No description provided for @planBlockMenu.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'More'**
|
||
String get planBlockMenu;
|
||
|
||
/// No description provided for @planMoveUp.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Move up'**
|
||
String get planMoveUp;
|
||
|
||
/// No description provided for @planMoveDown.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Move down'**
|
||
String get planMoveDown;
|
||
|
||
/// No description provided for @planRemove.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Remove'**
|
||
String get planRemove;
|
||
|
||
/// No description provided for @planDelete.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Delete'**
|
||
String get planDelete;
|
||
|
||
/// No description provided for @planDeleteTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Delete this plan?'**
|
||
String get planDeleteTitle;
|
||
|
||
/// No description provided for @planDeleteMessage.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'It\'s deleted on all your devices; workouts recorded with it keep their steps.'**
|
||
String get planDeleteMessage;
|
||
|
||
/// No description provided for @planDeleted.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Plan deleted'**
|
||
String get planDeleted;
|
||
|
||
/// No description provided for @planSteps.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{count, plural, =1{1 step} other{{count} steps}}'**
|
||
String planSteps(int count);
|
||
|
||
/// No description provided for @planSayRound.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{round} of {rounds}'**
|
||
String planSayRound(int round, int rounds);
|
||
|
||
/// No description provided for @planSayMinutes.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{count, plural, =1{1 minute} other{{count} minutes}}'**
|
||
String planSayMinutes(int count);
|
||
|
||
/// No description provided for @planSaySeconds.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{count, plural, =1{1 second} other{{count} seconds}}'**
|
||
String planSaySeconds(int count);
|
||
|
||
/// No description provided for @planSayMetres.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{count, plural, =1{1 metre} other{{count} metres}}'**
|
||
String planSayMetres(int count);
|
||
|
||
/// No description provided for @planSayKilometres.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{km} kilometres'**
|
||
String planSayKilometres(String km);
|
||
|
||
/// No description provided for @planSayUntilLap.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'until you tap Lap'**
|
||
String get planSayUntilLap;
|
||
|
||
/// No description provided for @planSayPace.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{from} to {to} a kilometre'**
|
||
String planSayPace(String from, String to);
|
||
|
||
/// No description provided for @planSaySpeed.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{from} to {to} kilometres an hour'**
|
||
String planSaySpeed(String from, String to);
|
||
|
||
/// No description provided for @planSayHeartRate.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{from} to {to} beats a minute'**
|
||
String planSayHeartRate(String from, String to);
|
||
|
||
/// No description provided for @planSayZone.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'zone {zone}'**
|
||
String planSayZone(int zone);
|
||
|
||
/// No description provided for @planSaySplit.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{from} to {to} per 500 metres'**
|
||
String planSaySplit(String from, String to);
|
||
|
||
/// No description provided for @planSayWatts.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{from} to {to} watts'**
|
||
String planSayWatts(String from, String to);
|
||
|
||
/// No description provided for @planSayStrokeRate.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{from} to {to} strokes a minute'**
|
||
String planSayStrokeRate(String from, String to);
|
||
|
||
/// No description provided for @planSayHarder.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Push a little'**
|
||
String get planSayHarder;
|
||
|
||
/// No description provided for @planSayEasier.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Ease off a little'**
|
||
String get planSayEasier;
|
||
|
||
/// No description provided for @planSayDone.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Plan done'**
|
||
String get planSayDone;
|
||
|
||
/// No description provided for @stepTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Step'**
|
||
String get stepTitle;
|
||
|
||
/// No description provided for @stepKind.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Kind'**
|
||
String get stepKind;
|
||
|
||
/// No description provided for @stepWarmUp.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Warm-up'**
|
||
String get stepWarmUp;
|
||
|
||
/// No description provided for @stepWork.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Work'**
|
||
String get stepWork;
|
||
|
||
/// No description provided for @stepRecovery.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Recovery'**
|
||
String get stepRecovery;
|
||
|
||
/// No description provided for @stepCoolDown.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Cool-down'**
|
||
String get stepCoolDown;
|
||
|
||
/// No description provided for @stepEnds.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Ends'**
|
||
String get stepEnds;
|
||
|
||
/// No description provided for @stepEndTime.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'After a time'**
|
||
String get stepEndTime;
|
||
|
||
/// No description provided for @stepEndDistance.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'After a distance'**
|
||
String get stepEndDistance;
|
||
|
||
/// No description provided for @stepEndLap.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'With a lap tap'**
|
||
String get stepEndLap;
|
||
|
||
/// No description provided for @stepTimeLabel.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Time (min:s)'**
|
||
String get stepTimeLabel;
|
||
|
||
/// No description provided for @stepMetresLabel.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Metres'**
|
||
String get stepMetresLabel;
|
||
|
||
/// No description provided for @stepTarget.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Target'**
|
||
String get stepTarget;
|
||
|
||
/// No description provided for @stepZone.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Zone'**
|
||
String get stepZone;
|
||
|
||
/// No description provided for @stepDone.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Done'**
|
||
String get stepDone;
|
||
|
||
/// No description provided for @stepMinutes.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{minutes} min'**
|
||
String stepMinutes(int minutes);
|
||
|
||
/// No description provided for @stepSeconds.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{seconds} s'**
|
||
String stepSeconds(int seconds);
|
||
|
||
/// No description provided for @stepMinutesSeconds.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{minutes} min {seconds} s'**
|
||
String stepMinutesSeconds(int minutes, int seconds);
|
||
|
||
/// No description provided for @stepMetres.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{metres} m'**
|
||
String stepMetres(int metres);
|
||
|
||
/// No description provided for @stepKilometres.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{km} km'**
|
||
String stepKilometres(String km);
|
||
|
||
/// No description provided for @stepUntilLap.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'until a lap tap'**
|
||
String get stepUntilLap;
|
||
|
||
/// No description provided for @targetNone.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'None'**
|
||
String get targetNone;
|
||
|
||
/// No description provided for @targetFrom.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'From'**
|
||
String get targetFrom;
|
||
|
||
/// No description provided for @targetTo.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'To'**
|
||
String get targetTo;
|
||
|
||
/// No description provided for @targetKindPace.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Pace (per km)'**
|
||
String get targetKindPace;
|
||
|
||
/// No description provided for @targetKindSpeed.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Speed (km/h)'**
|
||
String get targetKindSpeed;
|
||
|
||
/// No description provided for @targetKindHeartRate.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Heart rate (bpm)'**
|
||
String get targetKindHeartRate;
|
||
|
||
/// No description provided for @targetKindHeartZone.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Heart-rate zone'**
|
||
String get targetKindHeartZone;
|
||
|
||
/// No description provided for @targetKindSplit.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Split (per 500 m)'**
|
||
String get targetKindSplit;
|
||
|
||
/// No description provided for @targetKindWatts.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Power (W)'**
|
||
String get targetKindWatts;
|
||
|
||
/// No description provided for @targetKindStrokeRate.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Stroke rate (per min)'**
|
||
String get targetKindStrokeRate;
|
||
|
||
/// No description provided for @targetPace.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{from}–{to} per km'**
|
||
String targetPace(String from, String to);
|
||
|
||
/// No description provided for @targetSpeed.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{from}–{to} km/h'**
|
||
String targetSpeed(String from, String to);
|
||
|
||
/// No description provided for @targetHeartRate.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{from}–{to} bpm'**
|
||
String targetHeartRate(String from, String to);
|
||
|
||
/// No description provided for @targetZone.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Zone {zone}'**
|
||
String targetZone(int zone);
|
||
|
||
/// No description provided for @targetSplit.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{from}–{to} per 500 m'**
|
||
String targetSplit(String from, String to);
|
||
|
||
/// No description provided for @targetWatts.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{from}–{to} W'**
|
||
String targetWatts(String from, String to);
|
||
|
||
/// No description provided for @targetStrokeRate.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{from}–{to} strokes/min'**
|
||
String targetStrokeRate(String from, String to);
|
||
|
||
/// No description provided for @daysEmptyTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'No days yet'**
|
||
String get daysEmptyTitle;
|
||
|
||
/// No description provided for @daysEmptyHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'The days and nights your Polar Loop counts show here.'**
|
||
String get daysEmptyHint;
|
||
|
||
/// No description provided for @daysSteps.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{steps, plural, =1{1 step} other{{steps} steps}}'**
|
||
String daysSteps(int steps);
|
||
|
||
/// No description provided for @daysActive.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{time} active'**
|
||
String daysActive(String time);
|
||
|
||
/// No description provided for @daysAsleep.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{time} asleep'**
|
||
String daysAsleep(String time);
|
||
|
||
/// No description provided for @daysRecharge.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Recharge {level} of 6'**
|
||
String daysRecharge(int level);
|
||
|
||
/// No description provided for @dayHoursMinutes.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{hours} h {minutes} min'**
|
||
String dayHoursMinutes(int hours, int minutes);
|
||
|
||
/// No description provided for @dayMinutes.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{minutes} min'**
|
||
String dayMinutes(int minutes);
|
||
|
||
/// No description provided for @dayCalories.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{calories} kcal'**
|
||
String dayCalories(int calories);
|
||
|
||
/// No description provided for @dayGoal.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{percent} % of the day\'s goal'**
|
||
String dayGoal(int percent);
|
||
|
||
/// No description provided for @dayNothing.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'The band has given nothing for this day yet.'**
|
||
String get dayNothing;
|
||
|
||
/// No description provided for @dayTimes.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'The day\'s time'**
|
||
String get dayTimes;
|
||
|
||
/// No description provided for @dayTimeNonWear.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Not worn'**
|
||
String get dayTimeNonWear;
|
||
|
||
/// No description provided for @dayTimeSleep.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Asleep'**
|
||
String get dayTimeSleep;
|
||
|
||
/// No description provided for @dayTimeSedentary.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Sitting still'**
|
||
String get dayTimeSedentary;
|
||
|
||
/// No description provided for @dayTimeLight.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Light activity'**
|
||
String get dayTimeLight;
|
||
|
||
/// No description provided for @dayTimeModerate.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Moderate activity'**
|
||
String get dayTimeModerate;
|
||
|
||
/// No description provided for @dayTimeVigorous.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Vigorous activity'**
|
||
String get dayTimeVigorous;
|
||
|
||
/// No description provided for @dayHeartRate.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Heart rate'**
|
||
String get dayHeartRate;
|
||
|
||
/// No description provided for @dayBpm.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{bpm} bpm'**
|
||
String dayBpm(int bpm);
|
||
|
||
/// No description provided for @dayNight.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'The night'**
|
||
String get dayNight;
|
||
|
||
/// No description provided for @dayNightSpan.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{from} – {to}'**
|
||
String dayNightSpan(String from, String to);
|
||
|
||
/// No description provided for @daySleepWake.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Awake'**
|
||
String get daySleepWake;
|
||
|
||
/// No description provided for @daySleepRem.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'REM'**
|
||
String get daySleepRem;
|
||
|
||
/// No description provided for @daySleepLight.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Light'**
|
||
String get daySleepLight;
|
||
|
||
/// No description provided for @daySleepDeep.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Deep'**
|
||
String get daySleepDeep;
|
||
|
||
/// No description provided for @dayRatingPoorly.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'You slept poorly'**
|
||
String get dayRatingPoorly;
|
||
|
||
/// No description provided for @dayRatingSomewhatPoorly.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'You slept somewhat poorly'**
|
||
String get dayRatingSomewhatPoorly;
|
||
|
||
/// No description provided for @dayRatingNeither.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'You slept neither poorly nor well'**
|
||
String get dayRatingNeither;
|
||
|
||
/// No description provided for @dayRatingSomewhatWell.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'You slept somewhat well'**
|
||
String get dayRatingSomewhatWell;
|
||
|
||
/// No description provided for @dayRatingWell.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'You slept well'**
|
||
String get dayRatingWell;
|
||
|
||
/// No description provided for @dayRecharge.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Nightly Recharge'**
|
||
String get dayRecharge;
|
||
|
||
/// No description provided for @dayRechargeLevel.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Recovery {level} of 6'**
|
||
String dayRechargeLevel(int level);
|
||
|
||
/// No description provided for @dayAnsStatus.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Autonomic nervous system {value}, from −10 to +10'**
|
||
String dayAnsStatus(String value);
|
||
|
||
/// No description provided for @dayNightHeart.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Heart rate {bpm} bpm, your usual {usual} bpm'**
|
||
String dayNightHeart(int bpm, int usual);
|
||
|
||
/// No description provided for @dayHrv.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Heart rate variability {ms} ms, your usual {usual} ms'**
|
||
String dayHrv(int ms, int usual);
|
||
|
||
/// No description provided for @dayBreathing.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Breathing {rate} a minute'**
|
||
String dayBreathing(String rate);
|
||
|
||
/// No description provided for @daySkin.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Skin temperature'**
|
||
String get daySkin;
|
||
|
||
/// No description provided for @dayCelsius.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{value} °C'**
|
||
String dayCelsius(String value);
|
||
|
||
/// No description provided for @daySkinDeviation.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{value} °C from your usual at night'**
|
||
String daySkinDeviation(String value);
|
||
|
||
/// No description provided for @homeRoutes.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Routes'**
|
||
String get homeRoutes;
|
||
|
||
/// No description provided for @routesNew.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'New route'**
|
||
String get routesNew;
|
||
|
||
/// No description provided for @routesEmptyTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'No routes yet'**
|
||
String get routesEmptyTitle;
|
||
|
||
/// No description provided for @routesEmptyHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Tap the map to set waypoints, and your instance plans the way between them on paths and roads, with its climb and surfaces.'**
|
||
String get routesEmptyHint;
|
||
|
||
/// No description provided for @routeLocked.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'A route that doesn\'t open here'**
|
||
String get routeLocked;
|
||
|
||
/// No description provided for @routeTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Route'**
|
||
String get routeTitle;
|
||
|
||
/// No description provided for @routeNewTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'New route'**
|
||
String get routeNewTitle;
|
||
|
||
/// No description provided for @routeName.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Name'**
|
||
String get routeName;
|
||
|
||
/// No description provided for @routeActivity.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'For'**
|
||
String get routeActivity;
|
||
|
||
/// No description provided for @routeActivityAny.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Any activity'**
|
||
String get routeActivityAny;
|
||
|
||
/// No description provided for @routeProfile.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Planned for'**
|
||
String get routeProfile;
|
||
|
||
/// No description provided for @routeProfileRun.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Running'**
|
||
String get routeProfileRun;
|
||
|
||
/// No description provided for @routeProfileHike.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Hiking'**
|
||
String get routeProfileHike;
|
||
|
||
/// No description provided for @routeProfileRoadBike.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Road bike'**
|
||
String get routeProfileRoadBike;
|
||
|
||
/// No description provided for @routeProfileTrekkingBike.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Trekking bike'**
|
||
String get routeProfileTrekkingBike;
|
||
|
||
/// No description provided for @routeProfileGravel.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Gravel bike'**
|
||
String get routeProfileGravel;
|
||
|
||
/// No description provided for @routeProfileMtb.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Mountain bike'**
|
||
String get routeProfileMtb;
|
||
|
||
/// No description provided for @routeTapHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Tap the map to add a waypoint; hold one and drag it to move it.'**
|
||
String get routeTapHint;
|
||
|
||
/// No description provided for @routeUndo.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Take the last waypoint off'**
|
||
String get routeUndo;
|
||
|
||
/// No description provided for @routePlanning.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Planning…'**
|
||
String get routePlanning;
|
||
|
||
/// No description provided for @routeRefusedInvalid.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'A waypoint too many, or one off the map.'**
|
||
String get routeRefusedInvalid;
|
||
|
||
/// No description provided for @routeRefusedTooOften.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Planned too often: try again in a minute.'**
|
||
String get routeRefusedTooOften;
|
||
|
||
/// No description provided for @routeRefusedNoRoute.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'No way found there: a waypoint may be off the paths, or outside the region your instance plans in.'**
|
||
String get routeRefusedNoRoute;
|
||
|
||
/// No description provided for @routeRefusedUnreachable.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Your instance can\'t be reached to plan the way.'**
|
||
String get routeRefusedUnreachable;
|
||
|
||
/// No description provided for @routeNotOffered.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Your instance doesn\'t plan routes.'**
|
||
String get routeNotOffered;
|
||
|
||
/// No description provided for @routeAscent.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{metres} m up'**
|
||
String routeAscent(int metres);
|
||
|
||
/// No description provided for @routeDescent.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{metres} m down'**
|
||
String routeDescent(int metres);
|
||
|
||
/// A route in the list: its distance and climb.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{distance} · {ascent}'**
|
||
String routeSummary(String distance, String ascent);
|
||
|
||
/// In the Routes tab: a route brought in from a GPX file (ADR 0030, D45).
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Bring in a GPX file'**
|
||
String get routesBringIn;
|
||
|
||
/// No description provided for @routeBringInTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Bring in {name}'**
|
||
String routeBringInTitle(String name);
|
||
|
||
/// No description provided for @routeBringInSnap.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Plan it along the paths'**
|
||
String get routeBringInSnap;
|
||
|
||
/// No description provided for @routeBringInSnapHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Through its points, with the profile you choose; its turns told'**
|
||
String get routeBringInSnapHint;
|
||
|
||
/// No description provided for @routeBringInDrawn.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Keep it as drawn'**
|
||
String get routeBringInDrawn;
|
||
|
||
/// No description provided for @routeBringInDrawnHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Its way as the file has it, no turns told'**
|
||
String get routeBringInDrawnHint;
|
||
|
||
/// No description provided for @routeNotGpx.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'This file holds no route Train can read'**
|
||
String get routeNotGpx;
|
||
|
||
/// No description provided for @routeShareGpx.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Share as GPX'**
|
||
String get routeShareGpx;
|
||
|
||
/// No description provided for @routeSaveGpx.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Save as GPX'**
|
||
String get routeSaveGpx;
|
||
|
||
/// A switch on a saved route: its map kept on this device (ADR 0030, D45).
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Keep the map offline'**
|
||
String get routeOffline;
|
||
|
||
/// No description provided for @routeOfflineOff.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Its map along the way, 2 km either side, on this device for when there\'s no network'**
|
||
String get routeOfflineOff;
|
||
|
||
/// No description provided for @routeOfflineLoading.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Keeping the map: {done} of {total} tiles'**
|
||
String routeOfflineLoading(int done, int total);
|
||
|
||
/// No description provided for @routeOfflineKept.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Kept on this device: {size} MB'**
|
||
String routeOfflineKept(String size);
|
||
|
||
/// No description provided for @routeOfflineMissing.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{missing} of {total} tiles didn\'t come: asked for again when the app next opens online'**
|
||
String routeOfflineMissing(int missing, int total);
|
||
|
||
/// No description provided for @routeOfflineNoMap.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'The map can\'t be reached now: try again online'**
|
||
String get routeOfflineNoMap;
|
||
|
||
/// No description provided for @routeOfflineSaveFirst.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Save the route to keep its map offline'**
|
||
String get routeOfflineSaveFirst;
|
||
|
||
/// No description provided for @routeKeptOffline.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Map kept offline'**
|
||
String get routeKeptOffline;
|
||
|
||
/// No description provided for @routeSurfaces.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Surfaces'**
|
||
String get routeSurfaces;
|
||
|
||
/// No description provided for @surfacePaved.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Paved'**
|
||
String get surfacePaved;
|
||
|
||
/// No description provided for @surfaceCompacted.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Compacted'**
|
||
String get surfaceCompacted;
|
||
|
||
/// No description provided for @surfaceGravel.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Gravel'**
|
||
String get surfaceGravel;
|
||
|
||
/// No description provided for @surfaceNatural.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Natural ground'**
|
||
String get surfaceNatural;
|
||
|
||
/// No description provided for @surfaceUnknown.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Not known'**
|
||
String get surfaceUnknown;
|
||
|
||
/// No description provided for @routeSave.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Save'**
|
||
String get routeSave;
|
||
|
||
/// No description provided for @routeNotSaved.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'The route wasn\'t saved.'**
|
||
String get routeNotSaved;
|
||
|
||
/// No description provided for @routeDelete.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Delete'**
|
||
String get routeDelete;
|
||
|
||
/// No description provided for @routeDeleteTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Delete this route?'**
|
||
String get routeDeleteTitle;
|
||
|
||
/// No description provided for @routeDeleteMessage.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'It\'s deleted on all your devices.'**
|
||
String get routeDeleteMessage;
|
||
|
||
/// No description provided for @routeDeleted.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Route deleted'**
|
||
String get routeDeleted;
|
||
|
||
/// No description provided for @turnStraight.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Go straight on'**
|
||
String get turnStraight;
|
||
|
||
/// No description provided for @turnLeft.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Turn left'**
|
||
String get turnLeft;
|
||
|
||
/// No description provided for @turnSlightLeft.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Bear left'**
|
||
String get turnSlightLeft;
|
||
|
||
/// No description provided for @turnSharpLeft.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Turn sharp left'**
|
||
String get turnSharpLeft;
|
||
|
||
/// No description provided for @turnRight.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Turn right'**
|
||
String get turnRight;
|
||
|
||
/// No description provided for @turnSlightRight.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Bear right'**
|
||
String get turnSlightRight;
|
||
|
||
/// No description provided for @turnSharpRight.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Turn sharp right'**
|
||
String get turnSharpRight;
|
||
|
||
/// No description provided for @turnKeepLeft.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Keep left'**
|
||
String get turnKeepLeft;
|
||
|
||
/// No description provided for @turnKeepRight.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Keep right'**
|
||
String get turnKeepRight;
|
||
|
||
/// No description provided for @turnAround.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Turn around'**
|
||
String get turnAround;
|
||
|
||
/// No description provided for @turnRoundabout.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'At the roundabout, take exit {exit}'**
|
||
String turnRoundabout(int exit);
|
||
|
||
/// No description provided for @turnExitLeft.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Take the exit on the left'**
|
||
String get turnExitLeft;
|
||
|
||
/// No description provided for @turnExitRight.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Take the exit on the right'**
|
||
String get turnExitRight;
|
||
|
||
/// Spoken before a turn while following a route.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'In {metres} metres: {turn}'**
|
||
String routeSayIn(int metres, String turn);
|
||
|
||
/// Spoken off the route; the recorder puts the figures in.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Off the route. It lies {metres} metres {direction}.'**
|
||
String routeSayOff(String metres, String direction);
|
||
|
||
/// No description provided for @routeSayOn.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Back on the route'**
|
||
String get routeSayOn;
|
||
|
||
/// No description provided for @routeSayArrived.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'End of the route'**
|
||
String get routeSayArrived;
|
||
|
||
/// No description provided for @directionNorth.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'to the north'**
|
||
String get directionNorth;
|
||
|
||
/// No description provided for @directionNorthEast.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'to the north-east'**
|
||
String get directionNorthEast;
|
||
|
||
/// No description provided for @directionEast.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'to the east'**
|
||
String get directionEast;
|
||
|
||
/// No description provided for @directionSouthEast.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'to the south-east'**
|
||
String get directionSouthEast;
|
||
|
||
/// No description provided for @directionSouth.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'to the south'**
|
||
String get directionSouth;
|
||
|
||
/// No description provided for @directionSouthWest.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'to the south-west'**
|
||
String get directionSouthWest;
|
||
|
||
/// No description provided for @directionWest.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'to the west'**
|
||
String get directionWest;
|
||
|
||
/// No description provided for @directionNorthWest.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'to the north-west'**
|
||
String get directionNorthWest;
|
||
|
||
/// No description provided for @recordRoute.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Route'**
|
||
String get recordRoute;
|
||
|
||
/// No description provided for @recordNoRoute.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'None'**
|
||
String get recordNoRoute;
|
||
|
||
/// No description provided for @recordingNextTurn.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'In {distance}'**
|
||
String recordingNextTurn(String distance);
|
||
|
||
/// No description provided for @recordingOffRoute.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Off the route: {distance} {direction}'**
|
||
String recordingOffRoute(String distance, String direction);
|
||
|
||
/// No description provided for @recordingRouteEnd.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'End of the route'**
|
||
String get recordingRouteEnd;
|
||
|
||
/// No description provided for @recordingFollowRoute.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Following {name}'**
|
||
String recordingFollowRoute(String name);
|
||
|
||
/// No description provided for @recordingMapHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Swipe for the map'**
|
||
String get recordingMapHint;
|
||
|
||
/// No description provided for @recordingFiguresHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Swipe back for the figures'**
|
||
String get recordingFiguresHint;
|
||
|
||
/// No description provided for @recordingNorthUp.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'North up'**
|
||
String get recordingNorthUp;
|
||
|
||
/// No description provided for @recordingHeadingUp.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Heading up'**
|
||
String get recordingHeadingUp;
|
||
}
|
||
|
||
class _AppLocalizationsDelegate
|
||
extends LocalizationsDelegate<AppLocalizations> {
|
||
const _AppLocalizationsDelegate();
|
||
|
||
@override
|
||
Future<AppLocalizations> load(Locale locale) {
|
||
return SynchronousFuture<AppLocalizations>(lookupAppLocalizations(locale));
|
||
}
|
||
|
||
@override
|
||
bool isSupported(Locale locale) =>
|
||
<String>['de', 'en'].contains(locale.languageCode);
|
||
|
||
@override
|
||
bool shouldReload(_AppLocalizationsDelegate old) => false;
|
||
}
|
||
|
||
AppLocalizations lookupAppLocalizations(Locale locale) {
|
||
// Lookup logic when language+country codes are specified.
|
||
switch (locale.languageCode) {
|
||
case 'en':
|
||
{
|
||
switch (locale.countryCode) {
|
||
case 'GB':
|
||
return AppLocalizationsEnGb();
|
||
case 'US':
|
||
return AppLocalizationsEnUs();
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
|
||
// Lookup logic when only language code is specified.
|
||
switch (locale.languageCode) {
|
||
case 'de':
|
||
return AppLocalizationsDe();
|
||
case 'en':
|
||
return AppLocalizationsEn();
|
||
}
|
||
|
||
throw FlutterError(
|
||
'AppLocalizations.delegate failed to load unsupported locale "$locale". This is likely '
|
||
'an issue with the localizations generation tool. Please file an issue '
|
||
'on GitHub with a reproducible sample app and the gen-l10n configuration '
|
||
'that was used.',
|
||
);
|
||
}
|