diff --git a/lib/api/api.dart b/lib/api/api.dart index 549ac4f5..d06c5485 100644 --- a/lib/api/api.dart +++ b/lib/api/api.dart @@ -22,11 +22,13 @@ import 'dart:convert'; import 'dart:io'; import 'package:bluecherry_client/api/api_helpers.dart'; +import 'package:bluecherry_client/l10n/generated/app_localizations.dart'; import 'package:bluecherry_client/models/device.dart'; import 'package:bluecherry_client/models/server.dart'; import 'package:bluecherry_client/providers/settings_provider.dart'; import 'package:bluecherry_client/utils/logging.dart'; import 'package:flutter/foundation.dart'; +import 'package:flutter/widgets.dart' show BuildContext; import 'package:http/http.dart' as http; import 'package:xml2json/xml2json.dart'; @@ -47,7 +49,19 @@ enum ServerAdditionResponse { unknown, /// The server took too long to respond. - timeout, + timeout; + + String description(BuildContext context, Server server) { + final loc = AppLocalizations.of(context); + return switch (this) { + ServerAdditionResponse.versionMismatch => loc.serverVersionMismatch, + ServerAdditionResponse.wrongCredentials => loc.serverWrongCredentials, + ServerAdditionResponse.unknown || _ => loc.serverNotAddedErrorDescription( + server.port.toString(), + server.rtspPort.toString(), + ), + }; + } } class API { @@ -262,11 +276,11 @@ class API { try { assert(server.serverUUID != null && server.hasCookies); final response = await client.get( - Uri.https( - '${Uri.encodeComponent(server.login)}:${Uri.encodeComponent(server.password)}@${server.ip}:${server.port}', - '/mobile-app-config.json', - ), - headers: {if (server.cookie != null) API.cookieHeader: server.cookie!}, + Uri.https('${server.ip}:${server.port}', '/mobile-app-config.json'), + headers: { + if (server.cookie != null) API.cookieHeader: server.cookie!, + ...server.headers, + }, ); final body = jsonDecode(response.body); return body['notification_api_endpoint']; diff --git a/lib/api/ptz.dart b/lib/api/ptz.dart index 984e44e1..71182bc3 100644 --- a/lib/api/ptz.dart +++ b/lib/api/ptz.dart @@ -76,39 +76,35 @@ extension PtzApiExtension on API { final server = device.server; - final url = Uri.https( - '${Uri.encodeComponent(server.login)}:${Uri.encodeComponent(server.password)}@${server.ip}:${server.port}', - '/media/ptz.php', - { - 'id': '${device.id}', - 'command': command.name, - - // commands - if (movement == Movement.moveNorth) - 'tilt': - 'u' //up - else if (movement == Movement.moveSouth) - 'tilt': - 'd' //down - else if (movement == Movement.moveWest) - 'pan': - 'l' //left - else if (movement == Movement.moveEast) - 'pan': - 'r' //right - else if (movement == Movement.moveWide) - 'zoom': - 'w' //wide - else if (movement == Movement.moveTele) - 'zoom': 't', //tight - // speeds - if (command == PTZCommand.move) ...{ - if (panSpeed > 0) 'panspeed': '$panSpeed', - if (tiltSpeed > 0) 'tiltspeed': '$tiltSpeed', - if (duration >= -1) 'duration': '$duration', - }, + final url = Uri.https('${server.ip}:${server.port}', '/media/ptz.php', { + 'id': '${device.id}', + 'command': command.name, + + // commands + if (movement == Movement.moveNorth) + 'tilt': + 'u' //up + else if (movement == Movement.moveSouth) + 'tilt': + 'd' //down + else if (movement == Movement.moveWest) + 'pan': + 'l' //left + else if (movement == Movement.moveEast) + 'pan': + 'r' //right + else if (movement == Movement.moveWide) + 'zoom': + 'w' //wide + else if (movement == Movement.moveTele) + 'zoom': 't', //tight + // speeds + if (command == PTZCommand.move) ...{ + if (panSpeed > 0) 'panspeed': '$panSpeed', + if (tiltSpeed > 0) 'tiltspeed': '$tiltSpeed', + if (duration >= -1) 'duration': '$duration', }, - ); + }); debugPrint(url.toString()); @@ -117,6 +113,7 @@ extension PtzApiExtension on API { headers: { 'Content-Type': 'application/x-www-form-urlencoded', if (server.cookie != null) API.cookieHeader: server.cookie!, + ...server.headers, }, ); diff --git a/lib/l10n/generated/app_localizations.dart b/lib/l10n/generated/app_localizations.dart index 28b13749..f82cca90 100644 --- a/lib/l10n/generated/app_localizations.dart +++ b/lib/l10n/generated/app_localizations.dart @@ -64,8 +64,7 @@ import 'app_localizations_pt.dart'; /// be consistent with the languages listed in the AppLocalizations.supportedLocales /// property. abstract class AppLocalizations { - AppLocalizations(String locale) - : localeName = intl.Intl.canonicalizedLocale(locale.toString()); + AppLocalizations(String locale) : localeName = intl.Intl.canonicalizedLocale(locale.toString()); final String localeName; @@ -73,8 +72,7 @@ abstract class AppLocalizations { return Localizations.of(context, AppLocalizations)!; } - static const LocalizationsDelegate delegate = - _AppLocalizationsDelegate(); + static const LocalizationsDelegate delegate = _AppLocalizationsDelegate(); /// A list of this localizations delegate along with the default localizations /// delegates. @@ -86,20 +84,19 @@ abstract class AppLocalizations { /// 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> localizationsDelegates = - >[ - delegate, - GlobalMaterialLocalizations.delegate, - GlobalCupertinoLocalizations.delegate, - GlobalWidgetsLocalizations.delegate, - ]; + static const List> localizationsDelegates = >[ + delegate, + GlobalMaterialLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, + ]; /// A list of this localizations delegate's supported locales. static const List supportedLocales = [ Locale('en'), Locale('fr'), Locale('pl'), - Locale('pt'), + Locale('pt') ]; /// No description provided for @welcome. @@ -970,11 +967,7 @@ abstract class AppLocalizations { /// /// In en, this message translates to: /// **'While attempting to import {layoutName}, we found a device that is connected to a server you are not connected to. Please, connect to the server and try again.\nServer: {server_ip}:{server_port}'** - String failedToImportMessage( - String layoutName, - String server_ip, - int server_port, - ); + String failedToImportMessage(String layoutName, String server_ip, int server_port); /// No description provided for @layoutImportFileCorrupted. /// @@ -2645,8 +2638,7 @@ abstract class AppLocalizations { String get licenses; } -class _AppLocalizationsDelegate - extends LocalizationsDelegate { +class _AppLocalizationsDelegate extends LocalizationsDelegate { const _AppLocalizationsDelegate(); @override @@ -2655,30 +2647,27 @@ class _AppLocalizationsDelegate } @override - bool isSupported(Locale locale) => - ['en', 'fr', 'pl', 'pt'].contains(locale.languageCode); + bool isSupported(Locale locale) => ['en', 'fr', 'pl', 'pt'].contains(locale.languageCode); @override bool shouldReload(_AppLocalizationsDelegate old) => false; } AppLocalizations lookupAppLocalizations(Locale locale) { + + // Lookup logic when only language code is specified. switch (locale.languageCode) { - case 'en': - return AppLocalizationsEn(); - case 'fr': - return AppLocalizationsFr(); - case 'pl': - return AppLocalizationsPl(); - case 'pt': - return AppLocalizationsPt(); + case 'en': return AppLocalizationsEn(); + case 'fr': return AppLocalizationsFr(); + case 'pl': return AppLocalizationsPl(); + case 'pt': return AppLocalizationsPt(); } 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.', + 'that was used.' ); } diff --git a/lib/l10n/generated/app_localizations_en.dart b/lib/l10n/generated/app_localizations_en.dart index 1fed322d..e3cc3235 100644 --- a/lib/l10n/generated/app_localizations_en.dart +++ b/lib/l10n/generated/app_localizations_en.dart @@ -12,15 +12,13 @@ class AppLocalizationsEn extends AppLocalizations { String get welcome => 'Welcome'; @override - String get welcomeDescription => - 'Welcome to the Bluecherry Surveillance DVR!\nLet\'s connect to your DVR server quickly.'; + String get welcomeDescription => 'Welcome to the Bluecherry Surveillance DVR!\nLet\'s connect to your DVR server quickly.'; @override String get configure => 'Configure a DVR Server'; @override - String get configureDescription => - 'Setup a connection to your remote DVR server. You can connect to any number of servers from anywhere in the world.'; + String get configureDescription => 'Setup a connection to your remote DVR server. You can connect to any number of servers from anywhere in the world.'; @override String get hostname => 'Hostname'; @@ -68,12 +66,10 @@ class AppLocalizationsEn extends AppLocalizations { String get connect => 'Connect'; @override - String get connectAutomaticallyAtStartup => - 'Connect automatically at startup'; + String get connectAutomaticallyAtStartup => 'Connect automatically at startup'; @override - String get connectAutomaticallyAtStartupDescription => - 'If enabled, the server will be automatically connected when the app starts.'; + String get connectAutomaticallyAtStartupDescription => 'If enabled, the server will be automatically connected when the app starts.'; @override String get checkingServerCredentials => 'Checking server credentials'; @@ -109,20 +105,16 @@ class AppLocalizationsEn extends AppLocalizations { String get purchase => 'Purchase'; @override - String get tip0 => - 'Cameras are shown on left. You can double-click or drag the camera into the live area to view it.'; + String get tip0 => 'Cameras are shown on left. You can double-click or drag the camera into the live area to view it.'; @override - String get tip1 => - 'Use the buttons above the live view to create, save and switch layouts - even with cameras from multiple servers.'; + String get tip1 => 'Use the buttons above the live view to create, save and switch layouts - even with cameras from multiple servers.'; @override - String get tip2 => - 'Double-click on a server to open its configuration page in a new window, where you can configure cameras and recordings.'; + String get tip2 => 'Double-click on a server to open its configuration page in a new window, where you can configure cameras and recordings.'; @override - String get tip3 => - 'Click the events icon to open the history and watch or save recordings.'; + String get tip3 => 'Click the events icon to open the history and watch or save recordings.'; @override String errorTextField(String field) { @@ -148,19 +140,16 @@ class AppLocalizationsEn extends AppLocalizations { } @override - String get serverVersionMismatch => - 'Tried to add a server with an unsupported version. Please upgrade your server and try again!'; + String get serverVersionMismatch => 'Tried to add a server with an unsupported version. Please upgrade your server and try again!'; @override String get serverVersionMismatchShort => 'Unsupported server version'; @override - String get serverWrongCredentials => - 'The credentials for the server are wrong. Please check the username and password and try again.'; + String get serverWrongCredentials => 'The credentials for the server are wrong. Please check the username and password and try again.'; @override - String get serverWrongCredentialsShort => - 'Wrong credentials. Please check the username and password.'; + String get serverWrongCredentialsShort => 'Wrong credentials. Please check the username and password.'; @override String get noServersAvailable => 'No servers available'; @@ -189,8 +178,7 @@ class AppLocalizationsEn extends AppLocalizations { String get serverSettings => 'Server settings'; @override - String get serverSettingsDescription => - 'Settings that will only be applied to this server. If they are not provided, the values from General Settings will be used. You can change these values later.'; + String get serverSettingsDescription => 'Settings that will only be applied to this server. If they are not provided, the values from General Settings will be used. You can change these values later.'; @override String get editServerSettingsInfo => 'Edit server settings'; @@ -393,8 +381,7 @@ class AppLocalizationsEn extends AppLocalizations { String get about => 'About'; @override - String get versionText => - 'Copyright © 2022, Bluecherry LLC.\nAll rights reserved.'; + String get versionText => 'Copyright © 2022, Bluecherry LLC.\nAll rights reserved.'; @override String get gettingDevices => 'Getting devices'; @@ -406,12 +393,10 @@ class AppLocalizationsEn extends AppLocalizations { String get noEventsLoaded => 'NO EVENTS LOADED'; @override - String get noEventsLoadedTips => - '• Select the cameras you want to see the events\n• Use the calendar to select a specific date or a date range \n• Use the \"Filter\" button to perform the search'; + String get noEventsLoadedTips => '• Select the cameras you want to see the events\n• Use the calendar to select a specific date or a date range \n• Use the \"Filter\" button to perform the search'; @override - String get timelineKeyboardShortcutsTips => - '• Use the space bar to play/pause the timeline\n• Use the left and right arrow keys to move the timeline\n• Use the M key to mute/unmute the timeline\n• Use the mouse wheel to zoom in/out the timeline'; + String get timelineKeyboardShortcutsTips => '• Use the space bar to play/pause the timeline\n• Use the left and right arrow keys to move the timeline\n• Use the M key to mute/unmute the timeline\n• Use the mouse wheel to zoom in/out the timeline'; @override String get invalidResponse => 'Invalid response received from the server'; @@ -498,17 +483,12 @@ class AppLocalizationsEn extends AppLocalizations { String get importLayout => 'Import layout'; @override - String failedToImportMessage( - String layoutName, - String server_ip, - int server_port, - ) { + String failedToImportMessage(String layoutName, String server_ip, int server_port) { return 'While attempting to import $layoutName, we found a device that is connected to a server you are not connected to. Please, connect to the server and try again.\nServer: $server_ip:$server_port'; } @override - String get layoutImportFileCorrupted => - 'The file you attempted to import is corrupted or missing information.'; + String get layoutImportFileCorrupted => 'The file you attempted to import is corrupted or missing information.'; @override String layoutImportFileCorruptedWithMessage(Object message) { @@ -605,16 +585,10 @@ class AppLocalizationsEn extends AppLocalizations { } @override - String get howToDownload => - 'Go to the \"Events History\" tab to download events.'; + String get howToDownload => 'Go to the \"Events History\" tab to download events.'; @override - String downloadTitle( - String event, - String device, - String server, - String date, - ) { + String downloadTitle(String event, String device, String server, String date) { return '$event on $device ($server) at $date'; } @@ -853,8 +827,7 @@ class AppLocalizationsEn extends AppLocalizations { String get setResolution => 'Set resolution'; @override - String get setResolutionDescription => - 'The resolution of the video stream can highly impact the performance of the app. Set the resolution to a lower value to improve performance, or to a higher value to improve quality. You can set the default resolution to every camera in the settings'; + String get setResolutionDescription => 'The resolution of the video stream can highly impact the performance of the app. Set the resolution to a lower value to improve performance, or to a higher value to improve quality. You can set the default resolution to every camera in the settings'; @override String get hd => 'High definition'; @@ -904,8 +877,7 @@ class AppLocalizationsEn extends AppLocalizations { String get automaticDownloadUpdates => 'Automatic download updates'; @override - String get automaticDownloadUpdatesDescription => - 'Be among the first to get the latest updates, fixes and improvements as they roll out.'; + String get automaticDownloadUpdatesDescription => 'Be among the first to get the latest updates, fixes and improvements as they roll out.'; @override String get updateHistory => 'Update history'; @@ -914,8 +886,7 @@ class AppLocalizationsEn extends AppLocalizations { String get showReleaseNotes => 'Show release notes'; @override - String get showReleaseNotesDescription => - 'Display release notes when a new version is installed'; + String get showReleaseNotesDescription => 'Display release notes when a new version is installed'; @override String get newVersionAvailable => 'New version available'; @@ -970,57 +941,49 @@ class AppLocalizationsEn extends AppLocalizations { String get general => 'General'; @override - String get generalSettingsSuggestion => - 'Notifications, Data Usage, Wakelock, etc'; + String get generalSettingsSuggestion => 'Notifications, Data Usage, Wakelock, etc'; @override String get serverAndDevices => 'Servers and Devices'; @override - String get serverAndDevicesSettingsSuggestion => - 'Connect to servers, manage devices, etc'; + String get serverAndDevicesSettingsSuggestion => 'Connect to servers, manage devices, etc'; @override String get eventsAndDownloads => 'Events and Downloads'; @override - String get eventsAndDownloadsSettingsSuggestion => - 'Events history, downloads, etc'; + String get eventsAndDownloadsSettingsSuggestion => 'Events history, downloads, etc'; @override String get application => 'Application'; @override - String get applicationSettingsSuggestion => - 'Appearance, theme, date and time, etc'; + String get applicationSettingsSuggestion => 'Appearance, theme, date and time, etc'; @override String get privacyAndSecurity => 'Privacy and Security'; @override - String get privacyAndSecuritySettingsSuggestion => - 'Data collection, error reporting, etc'; + String get privacyAndSecuritySettingsSuggestion => 'Data collection, error reporting, etc'; @override String get updatesHelpAndPrivacy => 'Updates, Help and Privacy'; @override - String get updatesHelpAndPrivacySettingsSuggestion => - 'Check for updates, update history, privacy policy, etc'; + String get updatesHelpAndPrivacySettingsSuggestion => 'Check for updates, update history, privacy policy, etc'; @override String get advancedOptions => 'Advanced Options'; @override - String get advancedOptionsSettingsSuggestion => - 'Funcionalidades em Beta, Opções de Desenvolvedor, etc'; + String get advancedOptionsSettingsSuggestion => 'Funcionalidades em Beta, Opções de Desenvolvedor, etc'; @override String get cycleTogglePeriod => 'Layout cycle toggle period'; @override - String get cycleTogglePeriodDescription => - 'The interval between layout changes when the cycle mode is enabled.'; + String get cycleTogglePeriodDescription => 'The interval between layout changes when the cycle mode is enabled.'; @override String get notifications => 'Notifications'; @@ -1032,8 +995,7 @@ class AppLocalizationsEn extends AppLocalizations { String get notificationClickBehavior => 'Notification Click Behavior'; @override - String get notificationClickBehaviorDescription => - 'Choose what happens when you click on a notification.'; + String get notificationClickBehaviorDescription => 'Choose what happens when you click on a notification.'; @override String get showEventsScreen => 'Show events history'; @@ -1045,8 +1007,7 @@ class AppLocalizationsEn extends AppLocalizations { String get streamsOnBackground => 'Keep streams playing on background'; @override - String get streamsOnBackgroundDescription => - 'When to keep streams playing when the app is in background'; + String get streamsOnBackgroundDescription => 'When to keep streams playing when the app is in background'; @override String get automatic => 'Automatic'; @@ -1055,16 +1016,13 @@ class AppLocalizationsEn extends AppLocalizations { String get wifiOnly => 'Wifi Only'; @override - String get chooseEveryDownloadsLocation => - 'Choose the location for every download'; + String get chooseEveryDownloadsLocation => 'Choose the location for every download'; @override - String get chooseEveryDownloadsLocationDescription => - 'Whether to choose the location for each download or use the default location. When enabled, you will be prompted to choose the download directory for each download.'; + String get chooseEveryDownloadsLocationDescription => 'Whether to choose the location for each download or use the default location. When enabled, you will be prompted to choose the download directory for each download.'; @override - String get allowCloseWhenDownloading => - 'Allow closing the app when downloading'; + String get allowCloseWhenDownloading => 'Allow closing the app when downloading'; @override String get events => 'Events'; @@ -1079,15 +1037,13 @@ class AppLocalizationsEn extends AppLocalizations { String get differentEventColors => 'Different events by colors'; @override - String get differentEventColorsDescription => - 'Whether to show different colors for events in the timeline. This assists to easily differentiate the events.'; + String get differentEventColorsDescription => 'Whether to show different colors for events in the timeline. This assists to easily differentiate the events.'; @override String get initialTimelinePoint => 'Initial point'; @override - String get initialTimelinePointDescription => - 'The initial point of the timeline.'; + String get initialTimelinePointDescription => 'The initial point of the timeline.'; @override String get beginningInitialPoint => 'Beginning'; @@ -1099,8 +1055,7 @@ class AppLocalizationsEn extends AppLocalizations { String get hourAgoInitialPoint => '1 hour ago'; @override - String get automaticallySkipEmptyPeriods => - 'Automatically skip empty periods'; + String get automaticallySkipEmptyPeriods => 'Automatically skip empty periods'; @override String get appearance => 'Appearance'; @@ -1139,22 +1094,19 @@ class AppLocalizationsEn extends AppLocalizations { String get convertToLocalTime => 'Convert dates to the local timezone'; @override - String get convertToLocalTimeDescription => - 'This will affect the date and time displayed in the app. This is useful when you are in a different timezone than the server. When disabled, the server timezone will be used.'; + String get convertToLocalTimeDescription => 'This will affect the date and time displayed in the app. This is useful when you are in a different timezone than the server. When disabled, the server timezone will be used.'; @override String get allowDataCollection => 'Allow Bluecherry to collect usage data'; @override - String get allowDataCollectionDescription => - 'Allow Bluecherry to collect data to improve the app and provide better services. Data is collected anonymously and does not contain any personal information.'; + String get allowDataCollectionDescription => 'Allow Bluecherry to collect data to improve the app and provide better services. Data is collected anonymously and does not contain any personal information.'; @override String get automaticallyReportErrors => 'Automatically report errors'; @override - String get automaticallyReportErrorsDescription => - 'Automatically send error reports to Bluecherry to help improve the app. Error reports may contain personal information.'; + String get automaticallyReportErrorsDescription => 'Automatically send error reports to Bluecherry to help improve the app. Error reports may contain personal information.'; @override String get privacyPolicy => 'Privacy Policy'; @@ -1169,8 +1121,7 @@ class AppLocalizationsEn extends AppLocalizations { String get matrixedViewMagnification => 'Area Magnification enabled'; @override - String get matrixedViewMagnificationDescription => - 'Magnify a area of the matrix view when selected. This is useful when you have a lot of cameras and want to see a specific area in more detail, or when a multicast stream is provided.'; + String get matrixedViewMagnificationDescription => 'Magnify a area of the matrix view when selected. This is useful when you have a lot of cameras and want to see a specific area in more detail, or when a multicast stream is provided.'; @override String get matrixType => 'Matrix type'; @@ -1182,19 +1133,16 @@ class AppLocalizationsEn extends AppLocalizations { String get softwareMagnification => 'Software Magnification'; @override - String get softwareMagnificationDescription => - 'When enabled, the magnification will not happen in the GPU. This is useful when the hardware magnification is not working properly.'; + String get softwareMagnificationDescription => 'When enabled, the magnification will not happen in the GPU. This is useful when the hardware magnification is not working properly.'; @override - String get softwareMagnificationDescriptionMacOS => - 'When enabled, the magnification will not happen in the GPU. This is useful when the hardware magnification is not working properly. On macOS, this can not be disabled.'; + String get softwareMagnificationDescriptionMacOS => 'When enabled, the magnification will not happen in the GPU. This is useful when the hardware magnification is not working properly. On macOS, this can not be disabled.'; @override String get eventMagnification => 'Event Magnification'; @override - String get eventMagnificationDescription => - 'Magnify the event video when selected. This is useful when you want to see the event in more detail.'; + String get eventMagnificationDescription => 'Magnify the event video when selected. This is useful when you want to see the event in more detail.'; @override String get developerOptions => 'Developer options'; @@ -1209,29 +1157,25 @@ class AppLocalizationsEn extends AppLocalizations { String get importConfigFile => 'Import configuration file'; @override - String get importConfigFileDescription => - 'Import a .bluecherry configuration file that contains streaming information.'; + String get importConfigFileDescription => 'Import a .bluecherry configuration file that contains streaming information.'; @override String get debugInfo => 'Debug info'; @override - String get debugInfoDescription => - 'Display useful information for debugging, such as video metadata and other useful information for debugging purposes.'; + String get debugInfoDescription => 'Display useful information for debugging, such as video metadata and other useful information for debugging purposes.'; @override String get restoreDefaults => 'Restore Defaults'; @override - String get restoreDefaultsDescription => - 'Restore all settings to their default values. This will not affect the servers you have added.'; + String get restoreDefaultsDescription => 'Restore all settings to their default values. This will not affect the servers you have added.'; @override String get areYouSure => 'Are you sure?'; @override - String get areYouSureDescription => - 'This will restore all settings to their default values. This will not affect your servers or any other data.'; + String get areYouSureDescription => 'This will restore all settings to their default values. This will not affect your servers or any other data.'; @override String get miscellaneous => 'Miscellaneous'; @@ -1240,8 +1184,7 @@ class AppLocalizationsEn extends AppLocalizations { String get wakelock => 'Keep screen awake'; @override - String get wakelockDescription => - 'Keep screen awake while watching live streams or recordings.'; + String get wakelockDescription => 'Keep screen awake while watching live streams or recordings.'; @override String get snooze15 => '15 minutes'; @@ -1267,19 +1210,16 @@ class AppLocalizationsEn extends AppLocalizations { } @override - String get connectToServerAutomaticallyAtStartup => - 'Connect automatically at startup'; + String get connectToServerAutomaticallyAtStartup => 'Connect automatically at startup'; @override - String get connectToServerAutomaticallyAtStartupDescription => - 'If enabled, the server will be automatically connected when the app starts. This only applies to the new servers you add.'; + String get connectToServerAutomaticallyAtStartupDescription => 'If enabled, the server will be automatically connected when the app starts. This only applies to the new servers you add.'; @override String get allowUntrustedCertificates => 'Allow untrusted certificates'; @override - String get allowUntrustedCertificatesDescription => - 'Allow connecting to servers with untrusted certificates. This is useful when you are using self-signed certificates or certificates from unknown authorities.'; + String get allowUntrustedCertificatesDescription => 'Allow connecting to servers with untrusted certificates. This is useful when you are using self-signed certificates or certificates from unknown authorities.'; @override String get certificateNotPassed => 'Certificate not passed'; @@ -1288,8 +1228,7 @@ class AppLocalizationsEn extends AppLocalizations { String get addServerTimeout => 'Add server timeout'; @override - String get addServerTimeoutDescription => - 'The time to wait for the server to respond when adding a new server.'; + String get addServerTimeoutDescription => 'The time to wait for the server to respond when adding a new server.'; @override String get streamingSettings => 'Streaming settings'; @@ -1301,8 +1240,7 @@ class AppLocalizationsEn extends AppLocalizations { String get preferredStreamingProtocol => 'Preferred Streaming Protocol'; @override - String get preferredStreamingProtocolDescription => - 'What video streaming protocol will be used. If the server does not support the selected protocol, the app will try to use the next one. It is possible to select a specific protocol for each device in its settings.'; + String get preferredStreamingProtocolDescription => 'What video streaming protocol will be used. If the server does not support the selected protocol, the app will try to use the next one. It is possible to select a specific protocol for each device in its settings.'; @override String get rtspProtocol => 'RTSP Protocol'; @@ -1314,15 +1252,13 @@ class AppLocalizationsEn extends AppLocalizations { String get renderingQuality => 'Rendering quality'; @override - String get renderingQualityDescription => - 'The quality of the video rendering. The higher the quality, the more rendering resources it takes. It is recommended to use high quality when a GPU is installed. When set to automatic, the quality is selected based on the camera resolution.'; + String get renderingQualityDescription => 'The quality of the video rendering. The higher the quality, the more rendering resources it takes. It is recommended to use high quality when a GPU is installed. When set to automatic, the quality is selected based on the camera resolution.'; @override String get cameraViewFit => 'Camera Image Fit'; @override - String get cameraViewFitDescription => - 'The way the video is displayed in the view.'; + String get cameraViewFitDescription => 'The way the video is displayed in the view.'; @override String get contain => 'Contain'; @@ -1337,22 +1273,19 @@ class AppLocalizationsEn extends AppLocalizations { String get streamRefreshPeriod => 'Stream Refresh Period'; @override - String get streamRefreshPeriodDescription => - 'The interval between device refreshes. It ensures the camera video is still valid from time to time.'; + String get streamRefreshPeriodDescription => 'The interval between device refreshes. It ensures the camera video is still valid from time to time.'; @override String get lateStreamBehavior => 'Late stream behavior'; @override - String get lateStreamBehaviorDescription => - 'What to do when a stream is late'; + String get lateStreamBehaviorDescription => 'What to do when a stream is late'; @override String get automaticBehavior => 'Automatic'; @override - String get automaticBehaviorDescription => - 'The app will try to reposition the stream automatically'; + String get automaticBehaviorDescription => 'The app will try to reposition the stream automatically'; @override String get manualBehavior => 'Manual'; @@ -1363,8 +1296,7 @@ class AppLocalizationsEn extends AppLocalizations { } @override - String get neverBehaviorDescription => - 'The app will not try to reposition the stream'; + String get neverBehaviorDescription => 'The app will not try to reposition the stream'; @override String get devicesSettings => 'Devices Settings'; @@ -1373,8 +1305,7 @@ class AppLocalizationsEn extends AppLocalizations { String get listOfflineDevices => 'List Offline Devices'; @override - String get listOfflineDevicesDescriptions => - 'Whether to show offline devices in the devices list.'; + String get listOfflineDevicesDescriptions => 'Whether to show offline devices in the devices list.'; @override String get initialDeviceVolume => 'Initial Camera Volume'; @@ -1383,8 +1314,7 @@ class AppLocalizationsEn extends AppLocalizations { String get runVideoTest => 'Run Video Test'; @override - String get runVideoTestDescription => - 'Run a video test to check the state of video playback.'; + String get runVideoTestDescription => 'Run a video test to check the state of video playback.'; @override String get showCameraName => 'Show Camera Name'; diff --git a/lib/l10n/generated/app_localizations_fr.dart b/lib/l10n/generated/app_localizations_fr.dart index 633ac9d3..a5db55f8 100644 --- a/lib/l10n/generated/app_localizations_fr.dart +++ b/lib/l10n/generated/app_localizations_fr.dart @@ -12,15 +12,13 @@ class AppLocalizationsFr extends AppLocalizations { String get welcome => 'Bienvenue'; @override - String get welcomeDescription => - 'Bienvenue sur le DVR de surveillance Bluecherry !\nConnectons-nous rapidement à votre serveur DVR.'; + String get welcomeDescription => 'Bienvenue sur le DVR de surveillance Bluecherry !\nConnectons-nous rapidement à votre serveur DVR.'; @override String get configure => 'Configurer un serveur DVR'; @override - String get configureDescription => - 'Configurons une connexion à votre serveur DVR distant. Vous pouvez vous connecter à un nombre illimité de serveurs depuis n\'importe où dans le monde.'; + String get configureDescription => 'Configurons une connexion à votre serveur DVR distant. Vous pouvez vous connecter à un nombre illimité de serveurs depuis n\'importe où dans le monde.'; @override String get hostname => 'Nom d\'hôte'; @@ -68,16 +66,13 @@ class AppLocalizationsFr extends AppLocalizations { String get connect => 'Connecter'; @override - String get connectAutomaticallyAtStartup => - 'Connecter automatiquement au démarrage'; + String get connectAutomaticallyAtStartup => 'Connecter automatiquement au démarrage'; @override - String get connectAutomaticallyAtStartupDescription => - 'Lorsque activé, l\'application se connectra automatiquement au serveur à l\'ouverture.'; + String get connectAutomaticallyAtStartupDescription => 'Lorsque activé, l\'application se connectra automatiquement au serveur à l\'ouverture.'; @override - String get checkingServerCredentials => - 'Vérification des informations d\'identification.'; + String get checkingServerCredentials => 'Vérification des informations d\'identification.'; @override String get skip => 'Sauter'; @@ -110,20 +105,16 @@ class AppLocalizationsFr extends AppLocalizations { String get purchase => 'Acheter'; @override - String get tip0 => - 'Les caméras sont listés à gauche. Double-cliquez ou glissez une caméra sur la vue en direct pour la voir.'; + String get tip0 => 'Les caméras sont listés à gauche. Double-cliquez ou glissez une caméra sur la vue en direct pour la voir.'; @override - String get tip1 => - 'Utilisez les boutons au dessus de la vue en direct pour créer, sauvegarder et charger une disposition - même avec des caméras provenant de plusieurs serveurs.'; + String get tip1 => 'Utilisez les boutons au dessus de la vue en direct pour créer, sauvegarder et charger une disposition - même avec des caméras provenant de plusieurs serveurs.'; @override - String get tip2 => - 'Double-cliquez sur un serveur pour ouvrir sa page de configuration dans une nouvelle fenêtre où vous pourrez configurer les caméras et les enregistrements.'; + String get tip2 => 'Double-cliquez sur un serveur pour ouvrir sa page de configuration dans une nouvelle fenêtre où vous pourrez configurer les caméras et les enregistrements.'; @override - String get tip3 => - 'Cliquez sur l\'icône navigateur d\'événements pour ouvrir l\'historique et regarder ou sauvegarder les enregistrements.'; + String get tip3 => 'Cliquez sur l\'icône navigateur d\'événements pour ouvrir l\'historique et regarder ou sauvegarder les enregistrements.'; @override String errorTextField(String field) { @@ -149,19 +140,16 @@ class AppLocalizationsFr extends AppLocalizations { } @override - String get serverVersionMismatch => - 'Vous avez essayé d\'ajouter un serveur d\'une version non supportée. S.V.P. Mettez à jour le serveur et ré-essayez!'; + String get serverVersionMismatch => 'Vous avez essayé d\'ajouter un serveur d\'une version non supportée. S.V.P. Mettez à jour le serveur et ré-essayez!'; @override String get serverVersionMismatchShort => 'Version du serveur non suportée'; @override - String get serverWrongCredentials => - 'Les identifiants pour le serveur sont incorrects. Veuillez vérifier le nom d\'utilisateur et le mot de passe, puis réessayer.'; + String get serverWrongCredentials => 'Les identifiants pour le serveur sont incorrects. Veuillez vérifier le nom d\'utilisateur et le mot de passe, puis réessayer.'; @override - String get serverWrongCredentialsShort => - 'Identifiants incorrects. Veuillez vérifier le nom d\'utilisateur et le mot de passe.'; + String get serverWrongCredentialsShort => 'Identifiants incorrects. Veuillez vérifier le nom d\'utilisateur et le mot de passe.'; @override String get noServersAvailable => 'Aucun serveur disponible'; @@ -170,8 +158,7 @@ class AppLocalizationsFr extends AppLocalizations { String get error => 'Erreur'; @override - String get videoError => - 'Une erreur est survenue lors de la lecture de la vidé.'; + String get videoError => 'Une erreur est survenue lors de la lecture de la vidé.'; @override String copiedToClipboard(String message) { @@ -191,8 +178,7 @@ class AppLocalizationsFr extends AppLocalizations { String get serverSettings => 'Paramètres du serveur'; @override - String get serverSettingsDescription => - 'Les paramètres seront appliqués seulement sur ce serveur. Si elles ne sont pas fournies, les valeurs des paramètres généraux seront utilisées. Vous pouvez modifier ces valeurs ultérieurement.'; + String get serverSettingsDescription => 'Les paramètres seront appliqués seulement sur ce serveur. Si elles ne sont pas fournies, les valeurs des paramètres généraux seront utilisées. Vous pouvez modifier ces valeurs ultérieurement.'; @override String get editServerSettingsInfo => 'Modifier les informations du serveur'; @@ -340,8 +326,7 @@ class AppLocalizationsFr extends AppLocalizations { String get noServersAdded => 'Aucun serveur ajouté'; @override - String get howToAddServer => - 'Aller à la section \"Ajouter serveur\" pout ajouter un serveur.'; + String get howToAddServer => 'Aller à la section \"Ajouter serveur\" pout ajouter un serveur.'; @override String get editServerInfo => 'Modifier les info serveur'; @@ -389,8 +374,7 @@ class AppLocalizationsFr extends AppLocalizations { String get about => 'À propos'; @override - String get versionText => - 'Copyright © 2022, Bluecherry LLC.\nTout droit réservé.'; + String get versionText => 'Copyright © 2022, Bluecherry LLC.\nTout droit réservé.'; @override String get gettingDevices => 'Obtention des appareils...'; @@ -402,12 +386,10 @@ class AppLocalizationsFr extends AppLocalizations { String get noEventsLoaded => 'AUCUN ÉVÈNEMENT CHARGÉ'; @override - String get noEventsLoadedTips => - '• Sélectionnez la caméra dont vous voulez voir les evènements\n• Utilisez le calendrier pour sélectionner une date précise ou une période entre deux dates \n• Utilisez le bouton \"Filtre\" pour effectuer une recherche'; + String get noEventsLoadedTips => '• Sélectionnez la caméra dont vous voulez voir les evènements\n• Utilisez le calendrier pour sélectionner une date précise ou une période entre deux dates \n• Utilisez le bouton \"Filtre\" pour effectuer une recherche'; @override - String get timelineKeyboardShortcutsTips => - '• Utilisez la barre d\'espace pour lire/mettre en pause la ligne du temps\n• Utilisez les flèches gauche et droite pour déplacer la ligne du temps\n• Utilisez la touche M pour activer/désactiver le son de la ligne du temps\n • Utilisez la molette de la souris pour zoomer/dézoomer sur la ligne du temps'; + String get timelineKeyboardShortcutsTips => '• Utilisez la barre d\'espace pour lire/mettre en pause la ligne du temps\n• Utilisez les flèches gauche et droite pour déplacer la ligne du temps\n• Utilisez la touche M pour activer/désactiver le son de la ligne du temps\n • Utilisez la molette de la souris pour zoomer/dézoomer sur la ligne du temps'; @override String get invalidResponse => 'Réponse invalide reçu du serveur'; @@ -494,17 +476,12 @@ class AppLocalizationsFr extends AppLocalizations { String get importLayout => 'Importer la disposition'; @override - String failedToImportMessage( - String layoutName, - String server_ip, - int server_port, - ) { + String failedToImportMessage(String layoutName, String server_ip, int server_port) { return 'En essayant d\'importer $layoutName, nous avons trouvé un appareil qui est connecté à un serveur auquel vous n\'êtes pas connecté. S.V.P. connectez-vous au serveur et réessayez.\nServeur: $server_ip:$server_port'; } @override - String get layoutImportFileCorrupted => - 'Le fichier que vous essayez d\'importer est corrompu ou a une information manquante.'; + String get layoutImportFileCorrupted => 'Le fichier que vous essayez d\'importer est corrompu ou a une information manquante.'; @override String layoutImportFileCorruptedWithMessage(Object message) { @@ -595,16 +572,10 @@ class AppLocalizationsFr extends AppLocalizations { } @override - String get howToDownload => - 'Allez à la vue \"Navigateur d\'évènements\" pour télécharger des évènements.'; + String get howToDownload => 'Allez à la vue \"Navigateur d\'évènements\" pour télécharger des évènements.'; @override - String downloadTitle( - String event, - String device, - String server, - String date, - ) { + String downloadTitle(String event, String device, String server, String date) { return '$event sur $device du serveur $server à $date'; } @@ -634,8 +605,7 @@ class AppLocalizationsFr extends AppLocalizations { } @override - String get noRecords => - 'Cette caméra n\'a aucun enregistrement pour la période actuelle'; + String get noRecords => 'Cette caméra n\'a aucun enregistrement pour la période actuelle'; @override String get filter => 'Filtre'; @@ -844,8 +814,7 @@ class AppLocalizationsFr extends AppLocalizations { String get setResolution => 'Configurer la résolution'; @override - String get setResolutionDescription => - 'La résolution peut impacter grandement la performance de l\'application. Choisissez une plus petite résolution pour améliorer les performances, ou une plus haute pour améliorer la qualité. Vous pouvez choisir la résolution par défaut pour chaque caméra dans les paramètres.'; + String get setResolutionDescription => 'La résolution peut impacter grandement la performance de l\'application. Choisissez une plus petite résolution pour améliorer les performances, ou une plus haute pour améliorer la qualité. Vous pouvez choisir la résolution par défaut pour chaque caméra dans les paramètres.'; @override String get hd => 'Haute définition'; @@ -892,12 +861,10 @@ class AppLocalizationsFr extends AppLocalizations { String get checkingForUpdates => 'Vérification des mises à jour'; @override - String get automaticDownloadUpdates => - 'Téléchargement automatique des mises à jour'; + String get automaticDownloadUpdates => 'Téléchargement automatique des mises à jour'; @override - String get automaticDownloadUpdatesDescription => - 'Faites parti des premiers à recevoir les dernières mises à jour, correctifs et améliorations quand elles sortent.'; + String get automaticDownloadUpdatesDescription => 'Faites parti des premiers à recevoir les dernières mises à jour, correctifs et améliorations quand elles sortent.'; @override String get updateHistory => 'Historique de mises à jour'; @@ -906,8 +873,7 @@ class AppLocalizationsFr extends AppLocalizations { String get showReleaseNotes => 'Voir les notes de versions'; @override - String get showReleaseNotesDescription => - 'Afficher les notes de version lors de l\'installation d\'une nouvelle version'; + String get showReleaseNotesDescription => 'Afficher les notes de version lors de l\'installation d\'une nouvelle version'; @override String get newVersionAvailable => 'Nouvelle version disponible'; @@ -950,8 +916,7 @@ class AppLocalizationsFr extends AppLocalizations { String get taskFetchingEvent => 'Récupération des évènements'; @override - String get taskFetchingEventsPlayback => - 'Récupération de la lecture des évènements'; + String get taskFetchingEventsPlayback => 'Récupération de la lecture des évènements'; @override String get taskDownloadingEvent => 'Téléchargement de l\'évènement'; @@ -963,57 +928,49 @@ class AppLocalizationsFr extends AppLocalizations { String get general => 'Général'; @override - String get generalSettingsSuggestion => - 'Notifications, Utilisation des données, Mise en veille, etc'; + String get generalSettingsSuggestion => 'Notifications, Utilisation des données, Mise en veille, etc'; @override String get serverAndDevices => 'Serveurs et Appareils'; @override - String get serverAndDevicesSettingsSuggestion => - 'Connexions aux serveurs, Gestiond es appareils, etc'; + String get serverAndDevicesSettingsSuggestion => 'Connexions aux serveurs, Gestiond es appareils, etc'; @override String get eventsAndDownloads => 'Évènements et téléchargements'; @override - String get eventsAndDownloadsSettingsSuggestion => - 'Historique d\'évènements, téléchargements, etc'; + String get eventsAndDownloadsSettingsSuggestion => 'Historique d\'évènements, téléchargements, etc'; @override String get application => 'Application'; @override - String get applicationSettingsSuggestion => - 'Apparence, thème, temps et date, etc'; + String get applicationSettingsSuggestion => 'Apparence, thème, temps et date, etc'; @override String get privacyAndSecurity => 'Sécurité et vie Privée'; @override - String get privacyAndSecuritySettingsSuggestion => - 'Collecte de données, rapports d\'erreur, etc'; + String get privacyAndSecuritySettingsSuggestion => 'Collecte de données, rapports d\'erreur, etc'; @override String get updatesHelpAndPrivacy => 'Mises à jour, Aide et Confidentialité.'; @override - String get updatesHelpAndPrivacySettingsSuggestion => - 'Vérifier les mises à jour, historique des mises à jour, politique de confidentialité, etc.'; + String get updatesHelpAndPrivacySettingsSuggestion => 'Vérifier les mises à jour, historique des mises à jour, politique de confidentialité, etc.'; @override String get advancedOptions => 'Options avancées'; @override - String get advancedOptionsSettingsSuggestion => - 'Fonctionalitées en Beta, Options de dévelopeur, etc'; + String get advancedOptionsSettingsSuggestion => 'Fonctionalitées en Beta, Options de dévelopeur, etc'; @override String get cycleTogglePeriod => 'Durée du cycle de basculement'; @override - String get cycleTogglePeriodDescription => - 'Intervalle de temps entre les changements de disposition quand le mode cycle est activé.'; + String get cycleTogglePeriodDescription => 'Intervalle de temps entre les changements de disposition quand le mode cycle est activé.'; @override String get notifications => 'Notifications'; @@ -1022,12 +979,10 @@ class AppLocalizationsFr extends AppLocalizations { String get notificationsEnabled => 'Notifications activées'; @override - String get notificationClickBehavior => - 'Action de clic sur les notifications'; + String get notificationClickBehavior => 'Action de clic sur les notifications'; @override - String get notificationClickBehaviorDescription => - 'Choisir ce qui se passe lorsque vous cliquez sur une notification.'; + String get notificationClickBehaviorDescription => 'Choisir ce qui se passe lorsque vous cliquez sur une notification.'; @override String get showEventsScreen => 'Montrer le navigateur d\'événements'; @@ -1039,8 +994,7 @@ class AppLocalizationsFr extends AppLocalizations { String get streamsOnBackground => 'Garder les flux actif en arrière-plan'; @override - String get streamsOnBackgroundDescription => - 'Garder ou non les flux actif lorsque l\'application est en arrière-plan'; + String get streamsOnBackgroundDescription => 'Garder ou non les flux actif lorsque l\'application est en arrière-plan'; @override String get automatic => 'Automatique'; @@ -1049,16 +1003,13 @@ class AppLocalizationsFr extends AppLocalizations { String get wifiOnly => 'Sur Wifi seulement'; @override - String get chooseEveryDownloadsLocation => - 'Choisir l\'emplacement pour chaque téléchargements'; + String get chooseEveryDownloadsLocation => 'Choisir l\'emplacement pour chaque téléchargements'; @override - String get chooseEveryDownloadsLocationDescription => - 'Choisir l\'emplacement de chaque téléchargements ou utiliser l\'emplacement par défaut. Lorsque activé vous devrez choisir l\'emplacement pour chaque téléchargements.'; + String get chooseEveryDownloadsLocationDescription => 'Choisir l\'emplacement de chaque téléchargements ou utiliser l\'emplacement par défaut. Lorsque activé vous devrez choisir l\'emplacement pour chaque téléchargements.'; @override - String get allowCloseWhenDownloading => - 'Empêcher l\'application de fermer lors d\'un téléchargement'; + String get allowCloseWhenDownloading => 'Empêcher l\'application de fermer lors d\'un téléchargement'; @override String get events => 'Évènements'; @@ -1073,15 +1024,13 @@ class AppLocalizationsFr extends AppLocalizations { String get differentEventColors => 'Couleur différentes par évènements'; @override - String get differentEventColorsDescription => - 'Afficher ou non les évènements différents en couleurs différentes. Cette option aide à diférentier les évènements.'; + String get differentEventColorsDescription => 'Afficher ou non les évènements différents en couleurs différentes. Cette option aide à diférentier les évènements.'; @override String get initialTimelinePoint => 'Point Initial'; @override - String get initialTimelinePointDescription => - 'Point initial de la ligne du temps.'; + String get initialTimelinePointDescription => 'Point initial de la ligne du temps.'; @override String get beginningInitialPoint => 'Commencement'; @@ -1093,8 +1042,7 @@ class AppLocalizationsFr extends AppLocalizations { String get hourAgoInitialPoint => 'Il y a 1 heure'; @override - String get automaticallySkipEmptyPeriods => - 'Automatically skip empty periods'; + String get automaticallySkipEmptyPeriods => 'Automatically skip empty periods'; @override String get appearance => 'Apparence'; @@ -1133,24 +1081,19 @@ class AppLocalizationsFr extends AppLocalizations { String get convertToLocalTime => 'Convertir le temps à l\'heure locale'; @override - String get convertToLocalTimeDescription => - 'Convertir les temps affichés à l\'heure locale. Cette option affecte l\'heure et la date affichée dans l\'application. Cette option est utile si le serveur est situé dans un autre fuseau horaire.'; + String get convertToLocalTimeDescription => 'Convertir les temps affichés à l\'heure locale. Cette option affecte l\'heure et la date affichée dans l\'application. Cette option est utile si le serveur est situé dans un autre fuseau horaire.'; @override - String get allowDataCollection => - 'Permettre à Bluecherry de collecter des données d\'utilisation'; + String get allowDataCollection => 'Permettre à Bluecherry de collecter des données d\'utilisation'; @override - String get allowDataCollectionDescription => - 'Permettre à Bluecherry de collecter des données améliore l\'application et fournit un meilleur service. Les données collectées ne contiennent aucune information personnelle.'; + String get allowDataCollectionDescription => 'Permettre à Bluecherry de collecter des données améliore l\'application et fournit un meilleur service. Les données collectées ne contiennent aucune information personnelle.'; @override - String get automaticallyReportErrors => - 'Signaler automatiquement les erreurs'; + String get automaticallyReportErrors => 'Signaler automatiquement les erreurs'; @override - String get automaticallyReportErrorsDescription => - 'Envoyer automatiquement les rapports d\'erreurs à Bluecherry pour aider à améliorer l\'application. Les rapports d\'erreur peuvent contenir des informations personnelles.'; + String get automaticallyReportErrorsDescription => 'Envoyer automatiquement les rapports d\'erreurs à Bluecherry pour aider à améliorer l\'application. Les rapports d\'erreur peuvent contenir des informations personnelles.'; @override String get privacyPolicy => 'Politique de confidentialité'; @@ -1165,8 +1108,7 @@ class AppLocalizationsFr extends AppLocalizations { String get matrixedViewMagnification => 'Activer la zone d\'agrandissement'; @override - String get matrixedViewMagnificationDescription => - 'Agrandi une zone de la matrice lorsque sélectionné. Cete option est utile lorsque vous avez beaucoup de caméras et souhaitez voir une zone spécifique de façon détaillée, ou quand les flux multiples sont fourni.'; + String get matrixedViewMagnificationDescription => 'Agrandi une zone de la matrice lorsque sélectionné. Cete option est utile lorsque vous avez beaucoup de caméras et souhaitez voir une zone spécifique de façon détaillée, ou quand les flux multiples sont fourni.'; @override String get matrixType => 'Type de matrice'; @@ -1178,19 +1120,16 @@ class AppLocalizationsFr extends AppLocalizations { String get softwareMagnification => 'Agrandissement logiciel'; @override - String get softwareMagnificationDescription => - 'Lorsque cette option est activée, l\'agrandissement ne sera pas effectuée sur le GPU. Cela est utile lorsque la magnification matérielle ne fonctionne pas correctement..'; + String get softwareMagnificationDescription => 'Lorsque cette option est activée, l\'agrandissement ne sera pas effectuée sur le GPU. Cela est utile lorsque la magnification matérielle ne fonctionne pas correctement..'; @override - String get softwareMagnificationDescriptionMacOS => - 'Lorsque cette option est activée, l\'agrandissement ne sera pas effectué sur le GPU. Cela est utile lorsque l\'agrandissement matériel ne fonctionne pas correctement. Sur macOS, cette option ne peut pas être désactivée.'; + String get softwareMagnificationDescriptionMacOS => 'Lorsque cette option est activée, l\'agrandissement ne sera pas effectué sur le GPU. Cela est utile lorsque l\'agrandissement matériel ne fonctionne pas correctement. Sur macOS, cette option ne peut pas être désactivée.'; @override String get eventMagnification => 'Agrandissement des évènements'; @override - String get eventMagnificationDescription => - 'Agrandir la vidéo de l\'événement lorsqu\'elle est sélectionnée. Cette option est utile lorsque vous souhaitez voir l\'événement en plus de détail.'; + String get eventMagnificationDescription => 'Agrandir la vidéo de l\'événement lorsqu\'elle est sélectionnée. Cette option est utile lorsque vous souhaitez voir l\'événement en plus de détail.'; @override String get developerOptions => 'Options de développement'; @@ -1205,29 +1144,25 @@ class AppLocalizationsFr extends AppLocalizations { String get importConfigFile => 'Importer un fichier de configuration'; @override - String get importConfigFileDescription => - 'Importer un fichier de configuration .bluecherry contenant des informations de flux.'; + String get importConfigFileDescription => 'Importer un fichier de configuration .bluecherry contenant des informations de flux.'; @override String get debugInfo => 'Informations de débogage'; @override - String get debugInfoDescription => - 'Affiche les informations utiles pour le débogage, tel que les métadonnées vidéo et autres informations utiles au débogage.'; + String get debugInfoDescription => 'Affiche les informations utiles pour le débogage, tel que les métadonnées vidéo et autres informations utiles au débogage.'; @override String get restoreDefaults => 'Paramètres par défaut'; @override - String get restoreDefaultsDescription => - 'Restaure tous les paramètres à leur valeur par défaut. Cette option n\'affecte pas les serveurs que vous avez ajoutés.'; + String get restoreDefaultsDescription => 'Restaure tous les paramètres à leur valeur par défaut. Cette option n\'affecte pas les serveurs que vous avez ajoutés.'; @override String get areYouSure => 'Êtes-vous certain?'; @override - String get areYouSureDescription => - 'Ceci restaurera tous les paramètres à leur valeur par défaut. Vos serveurs et autres données ne seront aps affectés.'; + String get areYouSureDescription => 'Ceci restaurera tous les paramètres à leur valeur par défaut. Vos serveurs et autres données ne seront aps affectés.'; @override String get miscellaneous => 'Divers'; @@ -1236,8 +1171,7 @@ class AppLocalizationsFr extends AppLocalizations { String get wakelock => 'Garder l\'écran allumé'; @override - String get wakelockDescription => - 'Empêche l\'écran de séteindre lors du visonnement d\'un flux ou d\'un enregistrement'; + String get wakelockDescription => 'Empêche l\'écran de séteindre lors du visonnement d\'un flux ou d\'un enregistrement'; @override String get snooze15 => '15 minutes'; @@ -1263,20 +1197,16 @@ class AppLocalizationsFr extends AppLocalizations { } @override - String get connectToServerAutomaticallyAtStartup => - 'Connecter automatiquement au démarrage'; + String get connectToServerAutomaticallyAtStartup => 'Connecter automatiquement au démarrage'; @override - String get connectToServerAutomaticallyAtStartupDescription => - 'Si activée, la connexion au serveur sera automatique au démarrage de l\'application. Cela ne s\'applique qu\'aux nouveaux serveurs que vous ajoutez.'; + String get connectToServerAutomaticallyAtStartupDescription => 'Si activée, la connexion au serveur sera automatique au démarrage de l\'application. Cela ne s\'applique qu\'aux nouveaux serveurs que vous ajoutez.'; @override - String get allowUntrustedCertificates => - 'Permettre les certificats non fiables'; + String get allowUntrustedCertificates => 'Permettre les certificats non fiables'; @override - String get allowUntrustedCertificatesDescription => - 'Autoriser la connexion à des serveurs avec des certificats non fiables. Cela est utile lorsque vous utilisez des certificats auto-signés ou des certificats provenant d\'autorités inconnues.'; + String get allowUntrustedCertificatesDescription => 'Autoriser la connexion à des serveurs avec des certificats non fiables. Cela est utile lorsque vous utilisez des certificats auto-signés ou des certificats provenant d\'autorités inconnues.'; @override String get certificateNotPassed => 'Certificat non validé'; @@ -1285,8 +1215,7 @@ class AppLocalizationsFr extends AppLocalizations { String get addServerTimeout => 'Add server timeout'; @override - String get addServerTimeoutDescription => - 'The time to wait for the server to respond when adding a new server.'; + String get addServerTimeoutDescription => 'The time to wait for the server to respond when adding a new server.'; @override String get streamingSettings => 'Paramètre de diffusion'; @@ -1298,8 +1227,7 @@ class AppLocalizationsFr extends AppLocalizations { String get preferredStreamingProtocol => 'Protocol de diffusion préféré'; @override - String get preferredStreamingProtocolDescription => - 'Quel protocole de streaming vidéo sera utilisé. Si le serveur ne prend pas en charge le protocole sélectionné, l\'application essaiera d\'utiliser le suivant. Il est possible de sélectionner un protocole spécifique pour chaque appareil dans ses paramètres.'; + String get preferredStreamingProtocolDescription => 'Quel protocole de streaming vidéo sera utilisé. Si le serveur ne prend pas en charge le protocole sélectionné, l\'application essaiera d\'utiliser le suivant. Il est possible de sélectionner un protocole spécifique pour chaque appareil dans ses paramètres.'; @override String get rtspProtocol => 'Protocole RTSP'; @@ -1311,15 +1239,13 @@ class AppLocalizationsFr extends AppLocalizations { String get renderingQuality => 'Qualité du rendu'; @override - String get renderingQualityDescription => - 'Qualité du rendu vidéo. Une qualité plus haute consomme plus de ressources.\nQuand elle est automatique, la qualité est basée sur la résolution de la caméra.'; + String get renderingQualityDescription => 'Qualité du rendu vidéo. Une qualité plus haute consomme plus de ressources.\nQuand elle est automatique, la qualité est basée sur la résolution de la caméra.'; @override String get cameraViewFit => 'Ajustement de la vue caméra'; @override - String get cameraViewFitDescription => - 'La façon dont la vidéo est affichée dans la vue.'; + String get cameraViewFitDescription => 'La façon dont la vidéo est affichée dans la vue.'; @override String get contain => 'Contenir'; @@ -1334,22 +1260,19 @@ class AppLocalizationsFr extends AppLocalizations { String get streamRefreshPeriod => 'Période de rafraîchissement des flux'; @override - String get streamRefreshPeriodDescription => - 'L\'intervalle entre les actualisations de l\'appareil. Cela garantit que la vidéo de la caméra reste valide de temps en temps.'; + String get streamRefreshPeriodDescription => 'L\'intervalle entre les actualisations de l\'appareil. Cela garantit que la vidéo de la caméra reste valide de temps en temps.'; @override String get lateStreamBehavior => 'Comportement du retard de flux'; @override - String get lateStreamBehaviorDescription => - 'Quoi faire lorsque un flux est en retard'; + String get lateStreamBehaviorDescription => 'Quoi faire lorsque un flux est en retard'; @override String get automaticBehavior => 'Automatique'; @override - String get automaticBehaviorDescription => - 'L\'application essaiera de repositionner le flux automatiquement'; + String get automaticBehaviorDescription => 'L\'application essaiera de repositionner le flux automatiquement'; @override String get manualBehavior => 'Manuel'; @@ -1360,8 +1283,7 @@ class AppLocalizationsFr extends AppLocalizations { } @override - String get neverBehaviorDescription => - 'L\'application n\'essaiera pas de repositionner le flux'; + String get neverBehaviorDescription => 'L\'application n\'essaiera pas de repositionner le flux'; @override String get devicesSettings => 'Paramètres d\'appareils'; @@ -1370,8 +1292,7 @@ class AppLocalizationsFr extends AppLocalizations { String get listOfflineDevices => 'Lister les appareils hors ligne'; @override - String get listOfflineDevicesDescriptions => - 'Afficher ou non les appareils hors ligne dans la liste des appareils.'; + String get listOfflineDevicesDescriptions => 'Afficher ou non les appareils hors ligne dans la liste des appareils.'; @override String get initialDeviceVolume => 'Volume initial des appareils'; @@ -1380,8 +1301,7 @@ class AppLocalizationsFr extends AppLocalizations { String get runVideoTest => 'Lancer un test vidéo'; @override - String get runVideoTestDescription => - 'Lancer un test vidéo pour vérifier l\'état de fonctionnement de la lecture.'; + String get runVideoTestDescription => 'Lancer un test vidéo pour vérifier l\'état de fonctionnement de la lecture.'; @override String get showCameraName => 'Montrer le nom de la caméra'; diff --git a/lib/l10n/generated/app_localizations_pl.dart b/lib/l10n/generated/app_localizations_pl.dart index f4607608..88279d73 100644 --- a/lib/l10n/generated/app_localizations_pl.dart +++ b/lib/l10n/generated/app_localizations_pl.dart @@ -12,15 +12,13 @@ class AppLocalizationsPl extends AppLocalizations { String get welcome => 'Witamy'; @override - String get welcomeDescription => - 'Witamy w systemie monitoringu Blueberry!\nPodłącz się do serwera DVR.'; + String get welcomeDescription => 'Witamy w systemie monitoringu Blueberry!\nPodłącz się do serwera DVR.'; @override String get configure => 'Konfiguracja serwera DVR'; @override - String get configureDescription => - 'Ustawienia połączenia ze zdalnym serwerem DVR. You can connect to any number of servers from anywhere in the world.'; + String get configureDescription => 'Ustawienia połączenia ze zdalnym serwerem DVR. You can connect to any number of servers from anywhere in the world.'; @override String get hostname => 'Nazwa hosta'; @@ -68,12 +66,10 @@ class AppLocalizationsPl extends AppLocalizations { String get connect => 'Połącz'; @override - String get connectAutomaticallyAtStartup => - 'Połącz automatycznie przy uruchomieniu'; + String get connectAutomaticallyAtStartup => 'Połącz automatycznie przy uruchomieniu'; @override - String get connectAutomaticallyAtStartupDescription => - 'If enabled, the app will automatically connect to the server when it starts.'; + String get connectAutomaticallyAtStartupDescription => 'If enabled, the app will automatically connect to the server when it starts.'; @override String get checkingServerCredentials => 'Checking server credentials'; @@ -109,20 +105,16 @@ class AppLocalizationsPl extends AppLocalizations { String get purchase => 'Zakup licencji'; @override - String get tip0 => - 'Kamery pokazane są po lewej. You can double-click or drag the camera into the live area to view it.'; + String get tip0 => 'Kamery pokazane są po lewej. You can double-click or drag the camera into the live area to view it.'; @override - String get tip1 => - 'Użyj przycisków powyżej podlgądu na żywo aby utworzyć, zapisać lub przełączyć układy - nawet z kamerami z różnych serwerów.'; + String get tip1 => 'Użyj przycisków powyżej podlgądu na żywo aby utworzyć, zapisać lub przełączyć układy - nawet z kamerami z różnych serwerów.'; @override - String get tip2 => - 'Kliknij podwójnie na serwer aby otworzyć jego konfigurację w nowym oknie, gdzie można skonfigurować kamery i nagrania.'; + String get tip2 => 'Kliknij podwójnie na serwer aby otworzyć jego konfigurację w nowym oknie, gdzie można skonfigurować kamery i nagrania.'; @override - String get tip3 => - 'Kliknij na ikonę zdarzeń aby przeglądać historię lub zapisać nagrania.'; + String get tip3 => 'Kliknij na ikonę zdarzeń aby przeglądać historię lub zapisać nagrania.'; @override String errorTextField(String field) { @@ -148,19 +140,16 @@ class AppLocalizationsPl extends AppLocalizations { } @override - String get serverVersionMismatch => - 'Tried to add a server with an unsupported version. Please upgrade your server and try again!'; + String get serverVersionMismatch => 'Tried to add a server with an unsupported version. Please upgrade your server and try again!'; @override String get serverVersionMismatchShort => 'Unsupported server version'; @override - String get serverWrongCredentials => - 'The credentials for the server are wrong. Please check the username and password and try again.'; + String get serverWrongCredentials => 'The credentials for the server are wrong. Please check the username and password and try again.'; @override - String get serverWrongCredentialsShort => - 'Wrong credentials. Please check the username and password.'; + String get serverWrongCredentialsShort => 'Wrong credentials. Please check the username and password.'; @override String get noServersAvailable => 'Brak dostępnych serwerów'; @@ -189,8 +178,7 @@ class AppLocalizationsPl extends AppLocalizations { String get serverSettings => 'Server settings'; @override - String get serverSettingsDescription => - 'Settings that will only be applied to this server. If they are not provided, the values from General Settings will be used. You can change these values later.'; + String get serverSettingsDescription => 'Settings that will only be applied to this server. If they are not provided, the values from General Settings will be used. You can change these values later.'; @override String get editServerSettingsInfo => 'Edit server settings'; @@ -338,8 +326,7 @@ class AppLocalizationsPl extends AppLocalizations { String get noServersAdded => 'Nie dodano serwerów'; @override - String get howToAddServer => - 'Go to the \"Add Server\" screen to add a server.'; + String get howToAddServer => 'Go to the \"Add Server\" screen to add a server.'; @override String get editServerInfo => 'Modyfikuj informację serwera'; @@ -394,8 +381,7 @@ class AppLocalizationsPl extends AppLocalizations { String get about => 'O programie'; @override - String get versionText => - 'Copyright © 2022, Bluecherry LLC.\nAll rights reserved.'; + String get versionText => 'Copyright © 2022, Bluecherry LLC.\nAll rights reserved.'; @override String get gettingDevices => 'Pobieranie urządzeń...'; @@ -407,12 +393,10 @@ class AppLocalizationsPl extends AppLocalizations { String get noEventsLoaded => 'NIE ZAŁADOWANO ZDARZEŃ'; @override - String get noEventsLoadedTips => - '• Wybież kamery do podglądu zdarzeń\n• Użyj kalnedarza żeby wybrać konkretną datę lub zakres \n• Użyj przycisku \"Filtr\" aby wyszukiwać'; + String get noEventsLoadedTips => '• Wybież kamery do podglądu zdarzeń\n• Użyj kalnedarza żeby wybrać konkretną datę lub zakres \n• Użyj przycisku \"Filtr\" aby wyszukiwać'; @override - String get timelineKeyboardShortcutsTips => - '• Use the space bar to play/pause the timeline\n• Use the left and right arrow keys to move the timeline\n• Use the M key to mute/unmute the timeline\n • Use the mouse wheel to zoom in/out the timeline'; + String get timelineKeyboardShortcutsTips => '• Use the space bar to play/pause the timeline\n• Use the left and right arrow keys to move the timeline\n• Use the M key to mute/unmute the timeline\n • Use the mouse wheel to zoom in/out the timeline'; @override String get invalidResponse => 'Odebrano nieprawidłową odpowiedź z serwera'; @@ -499,17 +483,12 @@ class AppLocalizationsPl extends AppLocalizations { String get importLayout => 'Importuj układ'; @override - String failedToImportMessage( - String layoutName, - String server_ip, - int server_port, - ) { + String failedToImportMessage(String layoutName, String server_ip, int server_port) { return 'Podczas próby importu $layoutName, zostało odnalezione urządzenie podłączone do serwera, z którym nie ma połączenia. Podłącz się do tego serwera i spróbuj ponownie.\nSerwer: $server_ip:$server_port'; } @override - String get layoutImportFileCorrupted => - 'Plik, który próbujesz zaimportować jest uszkodzony lub brakuje informacji.'; + String get layoutImportFileCorrupted => 'Plik, który próbujesz zaimportować jest uszkodzony lub brakuje informacji.'; @override String layoutImportFileCorruptedWithMessage(Object message) { @@ -600,16 +579,10 @@ class AppLocalizationsPl extends AppLocalizations { } @override - String get howToDownload => - 'Przejdź do ekranu \"Historii zdarzeń\" by pobrać zdarzenia.'; + String get howToDownload => 'Przejdź do ekranu \"Historii zdarzeń\" by pobrać zdarzenia.'; @override - String downloadTitle( - String event, - String device, - String server, - String date, - ) { + String downloadTitle(String event, String device, String server, String date) { return '$event na $device serwer $server o $date'; } @@ -848,8 +821,7 @@ class AppLocalizationsPl extends AppLocalizations { String get setResolution => 'Ustaw rozdzielczość'; @override - String get setResolutionDescription => - 'Rozdzielczość strumienia wideo może mieć duży wpływ na wydajność aplikacji. Ustaw niższą rozdzielczość aby przyspieszyć działanie lub wyższą żeby zwiększyć jakość obrazu. Można ustawić rozdzielczość domyślną dla każdej kamery w ustawieniach.'; + String get setResolutionDescription => 'Rozdzielczość strumienia wideo może mieć duży wpływ na wydajność aplikacji. Ustaw niższą rozdzielczość aby przyspieszyć działanie lub wyższą żeby zwiększyć jakość obrazu. Można ustawić rozdzielczość domyślną dla każdej kamery w ustawieniach.'; @override String get hd => 'Wysoka jakość'; @@ -899,8 +871,7 @@ class AppLocalizationsPl extends AppLocalizations { String get automaticDownloadUpdates => 'Pobieraj aktualizacje automatycznie'; @override - String get automaticDownloadUpdatesDescription => - 'Bądź jedną z pierwszych osób, które otrzymają najnowsze aktualizacje, poprawki i ulepszenia w miarę ich wdrażania.'; + String get automaticDownloadUpdatesDescription => 'Bądź jedną z pierwszych osób, które otrzymają najnowsze aktualizacje, poprawki i ulepszenia w miarę ich wdrażania.'; @override String get updateHistory => 'Historia aktualizacji'; @@ -909,8 +880,7 @@ class AppLocalizationsPl extends AppLocalizations { String get showReleaseNotes => 'Show release notes'; @override - String get showReleaseNotesDescription => - 'Display release notes when a new version is installed'; + String get showReleaseNotesDescription => 'Display release notes when a new version is installed'; @override String get newVersionAvailable => 'Dostępna nowa wersja'; @@ -965,57 +935,49 @@ class AppLocalizationsPl extends AppLocalizations { String get general => 'General'; @override - String get generalSettingsSuggestion => - 'Notifications, Data Usage, Wakelock, etc'; + String get generalSettingsSuggestion => 'Notifications, Data Usage, Wakelock, etc'; @override String get serverAndDevices => 'Servers and Devices'; @override - String get serverAndDevicesSettingsSuggestion => - 'Connect to servers, manage devices, etc'; + String get serverAndDevicesSettingsSuggestion => 'Connect to servers, manage devices, etc'; @override String get eventsAndDownloads => 'Events and Downloads'; @override - String get eventsAndDownloadsSettingsSuggestion => - 'Events history, downloads, etc'; + String get eventsAndDownloadsSettingsSuggestion => 'Events history, downloads, etc'; @override String get application => 'Application'; @override - String get applicationSettingsSuggestion => - 'Appearance, theme, date and time, etc'; + String get applicationSettingsSuggestion => 'Appearance, theme, date and time, etc'; @override String get privacyAndSecurity => 'Privacy and Security'; @override - String get privacyAndSecuritySettingsSuggestion => - 'Data collection, error reporting, etc'; + String get privacyAndSecuritySettingsSuggestion => 'Data collection, error reporting, etc'; @override String get updatesHelpAndPrivacy => 'Updates, Help and Privacy'; @override - String get updatesHelpAndPrivacySettingsSuggestion => - 'Check for updates, update history, privacy policy, etc'; + String get updatesHelpAndPrivacySettingsSuggestion => 'Check for updates, update history, privacy policy, etc'; @override String get advancedOptions => 'Advanced Options'; @override - String get advancedOptionsSettingsSuggestion => - 'Funcionalidades em Beta, Opções de Desenvolvedor, etc'; + String get advancedOptionsSettingsSuggestion => 'Funcionalidades em Beta, Opções de Desenvolvedor, etc'; @override String get cycleTogglePeriod => 'Okres cyklicznego przełączania układu'; @override - String get cycleTogglePeriodDescription => - 'The interval between layout changes when the cycle mode is enabled.'; + String get cycleTogglePeriodDescription => 'The interval between layout changes when the cycle mode is enabled.'; @override String get notifications => 'Notifications'; @@ -1024,12 +986,10 @@ class AppLocalizationsPl extends AppLocalizations { String get notificationsEnabled => 'Notifications enabled'; @override - String get notificationClickBehavior => - 'Zachowanie po kliknięciu na powiadomienie'; + String get notificationClickBehavior => 'Zachowanie po kliknięciu na powiadomienie'; @override - String get notificationClickBehaviorDescription => - 'Choose what happens when you click on a notification.'; + String get notificationClickBehaviorDescription => 'Choose what happens when you click on a notification.'; @override String get showEventsScreen => 'Pokaż historię zdarzeń'; @@ -1041,8 +1001,7 @@ class AppLocalizationsPl extends AppLocalizations { String get streamsOnBackground => 'Keep streams playing on background'; @override - String get streamsOnBackgroundDescription => - 'When to keep streams playing when the app is in background'; + String get streamsOnBackgroundDescription => 'When to keep streams playing when the app is in background'; @override String get automatic => 'Automatic'; @@ -1051,16 +1010,13 @@ class AppLocalizationsPl extends AppLocalizations { String get wifiOnly => 'Wifi Only'; @override - String get chooseEveryDownloadsLocation => - 'Choose the location for every download'; + String get chooseEveryDownloadsLocation => 'Choose the location for every download'; @override - String get chooseEveryDownloadsLocationDescription => - 'Whether to choose the location for each download or use the default location. When enabled, you will be prompted to choose the download directory for each download.'; + String get chooseEveryDownloadsLocationDescription => 'Whether to choose the location for each download or use the default location. When enabled, you will be prompted to choose the download directory for each download.'; @override - String get allowCloseWhenDownloading => - 'Block the app from closing when there are ongoing downloads'; + String get allowCloseWhenDownloading => 'Block the app from closing when there are ongoing downloads'; @override String get events => 'Events'; @@ -1075,15 +1031,13 @@ class AppLocalizationsPl extends AppLocalizations { String get differentEventColors => 'Different event colors'; @override - String get differentEventColorsDescription => - 'Whether to show different colors for events in the timeline. This assists to easily differentiate the events.'; + String get differentEventColorsDescription => 'Whether to show different colors for events in the timeline. This assists to easily differentiate the events.'; @override String get initialTimelinePoint => 'Initial point'; @override - String get initialTimelinePointDescription => - 'The initial point of the timeline.'; + String get initialTimelinePointDescription => 'The initial point of the timeline.'; @override String get beginningInitialPoint => 'Beginning'; @@ -1095,8 +1049,7 @@ class AppLocalizationsPl extends AppLocalizations { String get hourAgoInitialPoint => '1 hour ago'; @override - String get automaticallySkipEmptyPeriods => - 'Automatically skip empty periods'; + String get automaticallySkipEmptyPeriods => 'Automatically skip empty periods'; @override String get appearance => 'Appearance'; @@ -1135,22 +1088,19 @@ class AppLocalizationsPl extends AppLocalizations { String get convertToLocalTime => 'Convert dates to the local timezone'; @override - String get convertToLocalTimeDescription => - 'This will affect the date and time displayed in the app. This is useful when you are in a different timezone than the server. When disabled, the server timezone will be used.'; + String get convertToLocalTimeDescription => 'This will affect the date and time displayed in the app. This is useful when you are in a different timezone than the server. When disabled, the server timezone will be used.'; @override String get allowDataCollection => 'Allow Bluecherry to collect usage data'; @override - String get allowDataCollectionDescription => - 'Allow Bluecherry to collect data to improve the app and provide better services. Data is collected anonymously and does not contain any personal information.'; + String get allowDataCollectionDescription => 'Allow Bluecherry to collect data to improve the app and provide better services. Data is collected anonymously and does not contain any personal information.'; @override String get automaticallyReportErrors => 'Automatically report errors'; @override - String get automaticallyReportErrorsDescription => - 'Automatically send error reports to Bluecherry to help improve the app. Error reports may contain personal information.'; + String get automaticallyReportErrorsDescription => 'Automatically send error reports to Bluecherry to help improve the app. Error reports may contain personal information.'; @override String get privacyPolicy => 'Privacy Policy'; @@ -1165,8 +1115,7 @@ class AppLocalizationsPl extends AppLocalizations { String get matrixedViewMagnification => 'Area Magnification enabled'; @override - String get matrixedViewMagnificationDescription => - 'Magnify a area of the matrix view when selected. This is useful when you have a lot of cameras and want to see a specific area in more detail, or when a multicast stream is provided.'; + String get matrixedViewMagnificationDescription => 'Magnify a area of the matrix view when selected. This is useful when you have a lot of cameras and want to see a specific area in more detail, or when a multicast stream is provided.'; @override String get matrixType => 'Matrix type'; @@ -1178,19 +1127,16 @@ class AppLocalizationsPl extends AppLocalizations { String get softwareMagnification => 'Software Magnification'; @override - String get softwareMagnificationDescription => - 'When enabled, the magnification will not happen in the GPU. This is useful when the hardware magnification is not working properly.'; + String get softwareMagnificationDescription => 'When enabled, the magnification will not happen in the GPU. This is useful when the hardware magnification is not working properly.'; @override - String get softwareMagnificationDescriptionMacOS => - 'When enabled, the magnification will not happen in the GPU. This is useful when the hardware magnification is not working properly. On macOS, this can not be disabled.'; + String get softwareMagnificationDescriptionMacOS => 'When enabled, the magnification will not happen in the GPU. This is useful when the hardware magnification is not working properly. On macOS, this can not be disabled.'; @override String get eventMagnification => 'Event Magnification'; @override - String get eventMagnificationDescription => - 'Magnify the event video when selected. This is useful when you want to see the event in more detail.'; + String get eventMagnificationDescription => 'Magnify the event video when selected. This is useful when you want to see the event in more detail.'; @override String get developerOptions => 'Developer options'; @@ -1205,29 +1151,25 @@ class AppLocalizationsPl extends AppLocalizations { String get importConfigFile => 'Import configuration file'; @override - String get importConfigFileDescription => - 'Import a .bluecherry configuration file that contains streaming information.'; + String get importConfigFileDescription => 'Import a .bluecherry configuration file that contains streaming information.'; @override String get debugInfo => 'Debug info'; @override - String get debugInfoDescription => - 'Display useful information for debugging, such as video metadata and other useful information for debugging purposes.'; + String get debugInfoDescription => 'Display useful information for debugging, such as video metadata and other useful information for debugging purposes.'; @override String get restoreDefaults => 'Restore Defaults'; @override - String get restoreDefaultsDescription => - 'Restore all settings to their default values. This will not affect the servers you have added.'; + String get restoreDefaultsDescription => 'Restore all settings to their default values. This will not affect the servers you have added.'; @override String get areYouSure => 'Are you sure?'; @override - String get areYouSureDescription => - 'This will restore all settings to their default values. This will not affect your servers or any other data.'; + String get areYouSureDescription => 'This will restore all settings to their default values. This will not affect your servers or any other data.'; @override String get miscellaneous => 'Różne'; @@ -1236,8 +1178,7 @@ class AppLocalizationsPl extends AppLocalizations { String get wakelock => 'Keep screen on'; @override - String get wakelockDescription => - 'Keep screen on while watching live streams or recordings.'; + String get wakelockDescription => 'Keep screen on while watching live streams or recordings.'; @override String get snooze15 => '15 minut'; @@ -1263,19 +1204,16 @@ class AppLocalizationsPl extends AppLocalizations { } @override - String get connectToServerAutomaticallyAtStartup => - 'Connect automatically at startup'; + String get connectToServerAutomaticallyAtStartup => 'Connect automatically at startup'; @override - String get connectToServerAutomaticallyAtStartupDescription => - 'If enabled, the server will be automatically connected when the app starts. This only applies to the new servers you add.'; + String get connectToServerAutomaticallyAtStartupDescription => 'If enabled, the server will be automatically connected when the app starts. This only applies to the new servers you add.'; @override String get allowUntrustedCertificates => 'Allow untrusted certificates'; @override - String get allowUntrustedCertificatesDescription => - 'Allow connecting to servers with untrusted certificates. This is useful when you are using self-signed certificates or certificates from unknown authorities.'; + String get allowUntrustedCertificatesDescription => 'Allow connecting to servers with untrusted certificates. This is useful when you are using self-signed certificates or certificates from unknown authorities.'; @override String get certificateNotPassed => 'Certificate not passed'; @@ -1284,8 +1222,7 @@ class AppLocalizationsPl extends AppLocalizations { String get addServerTimeout => 'Add server timeout'; @override - String get addServerTimeoutDescription => - 'The time to wait for the server to respond when adding a new server.'; + String get addServerTimeoutDescription => 'The time to wait for the server to respond when adding a new server.'; @override String get streamingSettings => 'Streaming settings'; @@ -1297,8 +1234,7 @@ class AppLocalizationsPl extends AppLocalizations { String get preferredStreamingProtocol => 'Preferred Streaming Protocol'; @override - String get preferredStreamingProtocolDescription => - 'What video streaming protocol will be used. If the server does not support the selected protocol, the app will try to use the next one. It is possible to select a specific protocol for each device in its settings.'; + String get preferredStreamingProtocolDescription => 'What video streaming protocol will be used. If the server does not support the selected protocol, the app will try to use the next one. It is possible to select a specific protocol for each device in its settings.'; @override String get rtspProtocol => 'RTSP Protocol'; @@ -1310,15 +1246,13 @@ class AppLocalizationsPl extends AppLocalizations { String get renderingQuality => 'Rendering quality'; @override - String get renderingQualityDescription => - 'The quality of the video rendering. The higher the quality, the more resources it takes.\nWhen automatic, the quality is selected based on the camera resolution.'; + String get renderingQualityDescription => 'The quality of the video rendering. The higher the quality, the more resources it takes.\nWhen automatic, the quality is selected based on the camera resolution.'; @override String get cameraViewFit => 'Dopasowanie obrazu kamery'; @override - String get cameraViewFitDescription => - 'The way the video is displayed in the view.'; + String get cameraViewFitDescription => 'The way the video is displayed in the view.'; @override String get contain => 'Zawartość'; @@ -1333,22 +1267,19 @@ class AppLocalizationsPl extends AppLocalizations { String get streamRefreshPeriod => 'Stream Refresh Period'; @override - String get streamRefreshPeriodDescription => - 'The interval between device refreshes. It ensures the camera video is still valid from time to time.'; + String get streamRefreshPeriodDescription => 'The interval between device refreshes. It ensures the camera video is still valid from time to time.'; @override String get lateStreamBehavior => 'Late stream behavior'; @override - String get lateStreamBehaviorDescription => - 'What to do when a stream is late'; + String get lateStreamBehaviorDescription => 'What to do when a stream is late'; @override String get automaticBehavior => 'Automatic'; @override - String get automaticBehaviorDescription => - 'The app will try to reposition the stream automatically'; + String get automaticBehaviorDescription => 'The app will try to reposition the stream automatically'; @override String get manualBehavior => 'Manual'; @@ -1359,8 +1290,7 @@ class AppLocalizationsPl extends AppLocalizations { } @override - String get neverBehaviorDescription => - 'The app will not try to reposition the stream'; + String get neverBehaviorDescription => 'The app will not try to reposition the stream'; @override String get devicesSettings => 'Devices Settings'; @@ -1369,8 +1299,7 @@ class AppLocalizationsPl extends AppLocalizations { String get listOfflineDevices => 'List Offline Devices'; @override - String get listOfflineDevicesDescriptions => - 'Whether to show offline devices in the devices list.'; + String get listOfflineDevicesDescriptions => 'Whether to show offline devices in the devices list.'; @override String get initialDeviceVolume => 'Initial Camera Volume'; @@ -1379,8 +1308,7 @@ class AppLocalizationsPl extends AppLocalizations { String get runVideoTest => 'Run Video Test'; @override - String get runVideoTestDescription => - 'Run a video test to check the state of video playback.'; + String get runVideoTestDescription => 'Run a video test to check the state of video playback.'; @override String get showCameraName => 'Show Camera Name'; diff --git a/lib/l10n/generated/app_localizations_pt.dart b/lib/l10n/generated/app_localizations_pt.dart index ed5d4529..e0c19da9 100644 --- a/lib/l10n/generated/app_localizations_pt.dart +++ b/lib/l10n/generated/app_localizations_pt.dart @@ -12,15 +12,13 @@ class AppLocalizationsPt extends AppLocalizations { String get welcome => 'Bem vindo!'; @override - String get welcomeDescription => - 'Seja bem vindo ao Bluecherry Surveillance DVR!\nVamos conectar ao seu servidor DVR em um instante!'; + String get welcomeDescription => 'Seja bem vindo ao Bluecherry Surveillance DVR!\nVamos conectar ao seu servidor DVR em um instante!'; @override String get configure => 'Configure um Servidor DVR'; @override - String get configureDescription => - 'Configure uma conexão com seu servidor DVR remoto. Você pode se conectar a quantos servidores quiser de qualquer lugar do mundo.'; + String get configureDescription => 'Configure uma conexão com seu servidor DVR remoto. Você pode se conectar a quantos servidores quiser de qualquer lugar do mundo.'; @override String get hostname => 'Hostname'; @@ -68,12 +66,10 @@ class AppLocalizationsPt extends AppLocalizations { String get connect => 'Conectar'; @override - String get connectAutomaticallyAtStartup => - 'Conectar automaticamente ao iniciar'; + String get connectAutomaticallyAtStartup => 'Conectar automaticamente ao iniciar'; @override - String get connectAutomaticallyAtStartupDescription => - 'Se ativado, o servidor será conectado automaticamente quando o aplicativo for iniciado.'; + String get connectAutomaticallyAtStartupDescription => 'Se ativado, o servidor será conectado automaticamente quando o aplicativo for iniciado.'; @override String get checkingServerCredentials => 'Verificando credenciais'; @@ -109,20 +105,16 @@ class AppLocalizationsPt extends AppLocalizations { String get purchase => 'Compras'; @override - String get tip0 => - 'Câmeras são mostradas à esquerda. Você pode dar dois cliques ou arrastar a câmera até a visualização para vê-la.'; + String get tip0 => 'Câmeras são mostradas à esquerda. Você pode dar dois cliques ou arrastar a câmera até a visualização para vê-la.'; @override - String get tip1 => - 'Use os botões acima das câmeras para criar, salvar e alterar layouts - mesmo com câmeras de múltiplos servidores.'; + String get tip1 => 'Use os botões acima das câmeras para criar, salvar e alterar layouts - mesmo com câmeras de múltiplos servidores.'; @override - String get tip2 => - 'Dê dois cliques em um servidor para abrir sua página de configuração em uma nova janela, onde você pode configurar câmeras e gravações.'; + String get tip2 => 'Dê dois cliques em um servidor para abrir sua página de configuração em uma nova janela, onde você pode configurar câmeras e gravações.'; @override - String get tip3 => - 'Aperte o ícone de eventos para abrir o histórico e assistir ou baixar as gravações.'; + String get tip3 => 'Aperte o ícone de eventos para abrir o histórico e assistir ou baixar as gravações.'; @override String errorTextField(String field) { @@ -148,19 +140,16 @@ class AppLocalizationsPt extends AppLocalizations { } @override - String get serverVersionMismatch => - 'O versão do servidor não é suportada. Por favor, atualize seu servidor e tente novamente!'; + String get serverVersionMismatch => 'O versão do servidor não é suportada. Por favor, atualize seu servidor e tente novamente!'; @override String get serverVersionMismatchShort => 'Versão do servidor não suportada.'; @override - String get serverWrongCredentials => - 'As credenciais do servidor estão incorretas. Por favor, verifique o nome de usuário e a senha e tente novamente.'; + String get serverWrongCredentials => 'As credenciais do servidor estão incorretas. Por favor, verifique o nome de usuário e a senha e tente novamente.'; @override - String get serverWrongCredentialsShort => - 'Credenciais incorretas. Por favor, verifique o nome de usuário e a senha.'; + String get serverWrongCredentialsShort => 'Credenciais incorretas. Por favor, verifique o nome de usuário e a senha.'; @override String get noServersAvailable => 'Nenhum servidor disponível.'; @@ -189,8 +178,7 @@ class AppLocalizationsPt extends AppLocalizations { String get serverSettings => 'Configurações do servidor'; @override - String get serverSettingsDescription => - 'Configurações que serão aplicadas apenas a este servidor. Se não forem selectionados, os valores de Configurações serão usados. Você pode alterar esses valores posteriormente.'; + String get serverSettingsDescription => 'Configurações que serão aplicadas apenas a este servidor. Se não forem selectionados, os valores de Configurações serão usados. Você pode alterar esses valores posteriormente.'; @override String get editServerSettingsInfo => 'Editar Configurações do servidor'; @@ -204,8 +192,7 @@ class AppLocalizationsPt extends AppLocalizations { String get removeCamera => 'Remover Câmera'; @override - String get removePlayer => - 'Remover todos as câmeras atribuidas a esse player'; + String get removePlayer => 'Remover todos as câmeras atribuidas a esse player'; @override String get replaceCamera => 'Substituir Câmera'; @@ -339,8 +326,7 @@ class AppLocalizationsPt extends AppLocalizations { String get noServersAdded => 'Você ainda não adicionou nenhum servidor :/'; @override - String get howToAddServer => - 'Vá à \"Adicionar Servidor\" para adicionar um servidor.'; + String get howToAddServer => 'Vá à \"Adicionar Servidor\" para adicionar um servidor.'; @override String get editServerInfo => 'Editar informações do servidor'; @@ -395,8 +381,7 @@ class AppLocalizationsPt extends AppLocalizations { String get about => 'Sobre'; @override - String get versionText => - 'Copyright © 2022, Bluecherry LLC.\nTodos os direitos reservados.'; + String get versionText => 'Copyright © 2022, Bluecherry LLC.\nTodos os direitos reservados.'; @override String get gettingDevices => 'Carregando dispositivos...'; @@ -408,12 +393,10 @@ class AppLocalizationsPt extends AppLocalizations { String get noEventsLoaded => 'NENHUM EVENTO CARREGADO'; @override - String get noEventsLoadedTips => - '• Selecione as câmeras cujas você quer ver os eventos\n• Utilize o calendário para selecionar uma data específica ou intervalo de datas \n• Use o botão \"Filtrar\" para pesquisar'; + String get noEventsLoadedTips => '• Selecione as câmeras cujas você quer ver os eventos\n• Utilize o calendário para selecionar uma data específica ou intervalo de datas \n• Use o botão \"Filtrar\" para pesquisar'; @override - String get timelineKeyboardShortcutsTips => - '• Use a barra de espaço para reproduzir/pausar a linha do tempo\n• Use as setas esquerda e direita para mover a linha do tempo\n• Use a tecla M para silenciar/dessilenciar a linha do tempo\n • Use o scroll do mouse para dar zoom na linha do tempo'; + String get timelineKeyboardShortcutsTips => '• Use a barra de espaço para reproduzir/pausar a linha do tempo\n• Use as setas esquerda e direita para mover a linha do tempo\n• Use a tecla M para silenciar/dessilenciar a linha do tempo\n • Use o scroll do mouse para dar zoom na linha do tempo'; @override String get invalidResponse => 'Resposta inválida recebida do servidor'; @@ -500,17 +483,12 @@ class AppLocalizationsPt extends AppLocalizations { String get importLayout => 'Importar layout'; @override - String failedToImportMessage( - String layoutName, - String server_ip, - int server_port, - ) { + String failedToImportMessage(String layoutName, String server_ip, int server_port) { return 'Ao tentar importar $layoutName, achamos um dispositívo que está conectando a um servidor que você não está conectado. Por favor, conecte-se ao servidor e tente novamente.\nServer: $server_ip:$server_port'; } @override - String get layoutImportFileCorrupted => - 'O arquivo que você tentou importar está corrompido ou faltando informações.'; + String get layoutImportFileCorrupted => 'O arquivo que você tentou importar está corrompido ou faltando informações.'; @override String layoutImportFileCorruptedWithMessage(Object message) { @@ -607,16 +585,10 @@ class AppLocalizationsPt extends AppLocalizations { } @override - String get howToDownload => - 'Vá ao \"Histórico de Eventos\" para baixar eventos.'; + String get howToDownload => 'Vá ao \"Histórico de Eventos\" para baixar eventos.'; @override - String downloadTitle( - String event, - String device, - String server, - String date, - ) { + String downloadTitle(String event, String device, String server, String date) { return '$event de $device do servidor $server em $date'; } @@ -855,8 +827,7 @@ class AppLocalizationsPt extends AppLocalizations { String get setResolution => 'Definir resolução'; @override - String get setResolutionDescription => - 'A resolução da renderização do vídeo pode impactar fortemente o desempenho do aplicativo. Defina a resolução para um valor mais baixo para melhorar o desempenho ou para um valor mais alto para melhorar a qualidade. Você pode definir a resolução padrão nas configurações'; + String get setResolutionDescription => 'A resolução da renderização do vídeo pode impactar fortemente o desempenho do aplicativo. Defina a resolução para um valor mais baixo para melhorar o desempenho ou para um valor mais alto para melhorar a qualidade. Você pode definir a resolução padrão nas configurações'; @override String get hd => 'Alta definição'; @@ -906,8 +877,7 @@ class AppLocalizationsPt extends AppLocalizations { String get automaticDownloadUpdates => 'Baixar atualizações automaticamente'; @override - String get automaticDownloadUpdatesDescription => - 'Seja um dos primeiros a receber as atualizações, correções e melhorias mais recentes assim que lançadas.'; + String get automaticDownloadUpdatesDescription => 'Seja um dos primeiros a receber as atualizações, correções e melhorias mais recentes assim que lançadas.'; @override String get updateHistory => 'Histórico de atualizações'; @@ -916,8 +886,7 @@ class AppLocalizationsPt extends AppLocalizations { String get showReleaseNotes => 'Mostrar notas de atualização'; @override - String get showReleaseNotesDescription => - 'Mostrar as notas de atualização quando uma versão for instalada.'; + String get showReleaseNotesDescription => 'Mostrar as notas de atualização quando uma versão for instalada.'; @override String get newVersionAvailable => 'Nova versão disponível!'; @@ -972,22 +941,19 @@ class AppLocalizationsPt extends AppLocalizations { String get general => 'Geral'; @override - String get generalSettingsSuggestion => - 'Notificações, Layouts, Wakelock, etc'; + String get generalSettingsSuggestion => 'Notificações, Layouts, Wakelock, etc'; @override String get serverAndDevices => 'Servidores e Dispositivos'; @override - String get serverAndDevicesSettingsSuggestion => - 'Servidores, Dispositivos, Streaming, etc'; + String get serverAndDevicesSettingsSuggestion => 'Servidores, Dispositivos, Streaming, etc'; @override String get eventsAndDownloads => 'Eventos e Downloads'; @override - String get eventsAndDownloadsSettingsSuggestion => - 'Eventos, Histórico de Eventos, Downloads, etc'; + String get eventsAndDownloadsSettingsSuggestion => 'Eventos, Histórico de Eventos, Downloads, etc'; @override String get application => 'Aplicação'; @@ -999,29 +965,25 @@ class AppLocalizationsPt extends AppLocalizations { String get privacyAndSecurity => 'Privacidade e Segurança'; @override - String get privacyAndSecuritySettingsSuggestion => - 'Coleta de dados, relatórios de erros, etc'; + String get privacyAndSecuritySettingsSuggestion => 'Coleta de dados, relatórios de erros, etc'; @override String get updatesHelpAndPrivacy => 'Atualizações, Ajuda e Privacidade'; @override - String get updatesHelpAndPrivacySettingsSuggestion => - 'Procure por atualizações, histórico de mudanças, política de privacidade, etc'; + String get updatesHelpAndPrivacySettingsSuggestion => 'Procure por atualizações, histórico de mudanças, política de privacidade, etc'; @override String get advancedOptions => 'Opções Avançadas'; @override - String get advancedOptionsSettingsSuggestion => - 'Funcionalidades em Beta, Opções de Desenvolvedor, etc'; + String get advancedOptionsSettingsSuggestion => 'Funcionalidades em Beta, Opções de Desenvolvedor, etc'; @override String get cycleTogglePeriod => 'Duração da alternância de layouts'; @override - String get cycleTogglePeriodDescription => - 'O intervalo entre alterações de layout quando a alternância está ativada.'; + String get cycleTogglePeriodDescription => 'O intervalo entre alterações de layout quando a alternância está ativada.'; @override String get notifications => 'Notificações'; @@ -1033,8 +995,7 @@ class AppLocalizationsPt extends AppLocalizations { String get notificationClickBehavior => 'Ação ao clicar na notificação'; @override - String get notificationClickBehaviorDescription => - 'Escolha o que acontece quando você clica em uma notificação.'; + String get notificationClickBehaviorDescription => 'Escolha o que acontece quando você clica em uma notificação.'; @override String get showEventsScreen => 'Mostar histórico de eventos'; @@ -1046,8 +1007,7 @@ class AppLocalizationsPt extends AppLocalizations { String get streamsOnBackground => 'Manter transmissões em segundo plano'; @override - String get streamsOnBackgroundDescription => - 'Quando manter as transmissões em segundo plano quando o aplicativo estiver em segundo plano'; + String get streamsOnBackgroundDescription => 'Quando manter as transmissões em segundo plano quando o aplicativo estiver em segundo plano'; @override String get automatic => 'Automatico'; @@ -1056,16 +1016,13 @@ class AppLocalizationsPt extends AppLocalizations { String get wifiOnly => 'Somente Wi-Fi'; @override - String get chooseEveryDownloadsLocation => - 'Escolher a localização de cada download'; + String get chooseEveryDownloadsLocation => 'Escolher a localização de cada download'; @override - String get chooseEveryDownloadsLocationDescription => - 'Se você deseja escolher a localização de cada download ou usar a localização padrão. Quando ativado, você será solicitado a escolher a localização de cada download.'; + String get chooseEveryDownloadsLocationDescription => 'Se você deseja escolher a localização de cada download ou usar a localização padrão. Quando ativado, você será solicitado a escolher a localização de cada download.'; @override - String get allowCloseWhenDownloading => - 'Permitir fechar o aplicativo quando houver downloads em andamento'; + String get allowCloseWhenDownloading => 'Permitir fechar o aplicativo quando houver downloads em andamento'; @override String get events => 'Eventos'; @@ -1080,15 +1037,13 @@ class AppLocalizationsPt extends AppLocalizations { String get differentEventColors => 'Diferenciar eventos por cor'; @override - String get differentEventColorsDescription => - 'Se deve mostrar cores diferentes para eventos na linha do tempo. Isso ajuda a diferenciar facilmente os eventos.'; + String get differentEventColorsDescription => 'Se deve mostrar cores diferentes para eventos na linha do tempo. Isso ajuda a diferenciar facilmente os eventos.'; @override String get initialTimelinePoint => 'Ponto inicial'; @override - String get initialTimelinePointDescription => - 'O ponto em que a linha do tempo inicia.'; + String get initialTimelinePointDescription => 'O ponto em que a linha do tempo inicia.'; @override String get beginningInitialPoint => 'Início'; @@ -1100,8 +1055,7 @@ class AppLocalizationsPt extends AppLocalizations { String get hourAgoInitialPoint => '1 hora atrás'; @override - String get automaticallySkipEmptyPeriods => - 'Pular períodos vazios automaticamente'; + String get automaticallySkipEmptyPeriods => 'Pular períodos vazios automaticamente'; @override String get appearance => 'Visualização'; @@ -1140,23 +1094,19 @@ class AppLocalizationsPt extends AppLocalizations { String get convertToLocalTime => 'Converter datas para o fuso-horário local'; @override - String get convertToLocalTimeDescription => - 'Isso afetará a data e a hora exibidas no aplicativo. É útil quando você está em um fuso horário diferente do servidor. Quando desativado, o fuso horário do servidor será usado.'; + String get convertToLocalTimeDescription => 'Isso afetará a data e a hora exibidas no aplicativo. É útil quando você está em um fuso horário diferente do servidor. Quando desativado, o fuso horário do servidor será usado.'; @override - String get allowDataCollection => - 'Permitir que Bluecherry colete dados de uso'; + String get allowDataCollection => 'Permitir que Bluecherry colete dados de uso'; @override - String get allowDataCollectionDescription => - 'Permitir que Bluecherry colete dados para melhorar o aplicativo e fornecer serviços melhores. Os dados são coletados anonimamente e não contêm informações pessoais.'; + String get allowDataCollectionDescription => 'Permitir que Bluecherry colete dados para melhorar o aplicativo e fornecer serviços melhores. Os dados são coletados anonimamente e não contêm informações pessoais.'; @override String get automaticallyReportErrors => 'Relatar erros automaticamente'; @override - String get automaticallyReportErrorsDescription => - 'Enviar automaticamente relatórios de erros para Bluecherry para ajudar a melhorar o aplicativo. Os relatórios de erros podem conter informações pessoais.'; + String get automaticallyReportErrorsDescription => 'Enviar automaticamente relatórios de erros para Bluecherry para ajudar a melhorar o aplicativo. Os relatórios de erros podem conter informações pessoais.'; @override String get privacyPolicy => 'Política de Privacidade'; @@ -1171,8 +1121,7 @@ class AppLocalizationsPt extends AppLocalizations { String get matrixedViewMagnification => 'Ampliação de Área ativada'; @override - String get matrixedViewMagnificationDescription => - 'Ampliar a área da visualização da matriz quando selecionado. Isso é útil quando você tem muitas câmeras e deseja ver uma área específica com mais detalhes, ou quando uma stream multicast é usada.'; + String get matrixedViewMagnificationDescription => 'Ampliar a área da visualização da matriz quando selecionado. Isso é útil quando você tem muitas câmeras e deseja ver uma área específica com mais detalhes, ou quando uma stream multicast é usada.'; @override String get matrixType => 'Tipo de Matrix'; @@ -1184,19 +1133,16 @@ class AppLocalizationsPt extends AppLocalizations { String get softwareMagnification => 'Ampliação de Software'; @override - String get softwareMagnificationDescription => - 'Quando ativado, a ampliação não ocorrerá na GPU. Isso é útil quando a ampliação no hardware não está funcionando corretamente.'; + String get softwareMagnificationDescription => 'Quando ativado, a ampliação não ocorrerá na GPU. Isso é útil quando a ampliação no hardware não está funcionando corretamente.'; @override - String get softwareMagnificationDescriptionMacOS => - 'Quando ativado, a ampliação não ocorrerá na GPU. Isso é útil quando a ampliação no hardware não está funcionando corretamente. No macOS, isso não pode ser desativado.'; + String get softwareMagnificationDescriptionMacOS => 'Quando ativado, a ampliação não ocorrerá na GPU. Isso é útil quando a ampliação no hardware não está funcionando corretamente. No macOS, isso não pode ser desativado.'; @override String get eventMagnification => 'Ampliar Evento'; @override - String get eventMagnificationDescription => - 'Ampliar o vídeo do evento quando selecionado. Isso é útil quando você deseja ver o evento em mais detalhes.'; + String get eventMagnificationDescription => 'Ampliar o vídeo do evento quando selecionado. Isso é útil quando você deseja ver o evento em mais detalhes.'; @override String get developerOptions => 'Opções de Desenvolvedor'; @@ -1211,29 +1157,25 @@ class AppLocalizationsPt extends AppLocalizations { String get importConfigFile => 'Importar arquivo de configuração'; @override - String get importConfigFileDescription => - 'Importar um arquivo .bluecherry que contém informações de streaming.'; + String get importConfigFileDescription => 'Importar um arquivo .bluecherry que contém informações de streaming.'; @override String get debugInfo => 'Informações de Depuração'; @override - String get debugInfoDescription => - 'Exibir informações úteis para depuração, como metadados de vídeo e outras informações úteis para fins de depuração.'; + String get debugInfoDescription => 'Exibir informações úteis para depuração, como metadados de vídeo e outras informações úteis para fins de depuração.'; @override String get restoreDefaults => 'Restaurar Padrões'; @override - String get restoreDefaultsDescription => - 'Restaurar todas as configurações para seus valores padrão. Isso não afetará os servidores que você adicionou.'; + String get restoreDefaultsDescription => 'Restaurar todas as configurações para seus valores padrão. Isso não afetará os servidores que você adicionou.'; @override String get areYouSure => 'Você tem certeza?'; @override - String get areYouSureDescription => - 'Isso restaurará todas as configurações para seus valores padrão. Isso não afetará seus servidores ou quaisquer outros dados.'; + String get areYouSureDescription => 'Isso restaurará todas as configurações para seus valores padrão. Isso não afetará seus servidores ou quaisquer outros dados.'; @override String get miscellaneous => 'Outros'; @@ -1242,8 +1184,7 @@ class AppLocalizationsPt extends AppLocalizations { String get wakelock => 'Manter tela ativa'; @override - String get wakelockDescription => - 'Mantenha a tela ativa enquanto estiver assistindo a transmissões ao vivo ou gravações'; + String get wakelockDescription => 'Mantenha a tela ativa enquanto estiver assistindo a transmissões ao vivo ou gravações'; @override String get snooze15 => '15 minutos'; @@ -1269,20 +1210,16 @@ class AppLocalizationsPt extends AppLocalizations { } @override - String get connectToServerAutomaticallyAtStartup => - 'Conectar automaticamente ao iniciar'; + String get connectToServerAutomaticallyAtStartup => 'Conectar automaticamente ao iniciar'; @override - String get connectToServerAutomaticallyAtStartupDescription => - 'Se ativado, o servidor será conectado automaticamente quando o aplicativo for iniciado. Isso só se aplica aos novos servidores que você adicionar.'; + String get connectToServerAutomaticallyAtStartupDescription => 'Se ativado, o servidor será conectado automaticamente quando o aplicativo for iniciado. Isso só se aplica aos novos servidores que você adicionar.'; @override - String get allowUntrustedCertificates => - 'Permitir certificados não confiáveis'; + String get allowUntrustedCertificates => 'Permitir certificados não confiáveis'; @override - String get allowUntrustedCertificatesDescription => - 'Permitir a conexão a servidores com certificados não confiáveis. Isso é útil quando você está usando certificados autoassinados ou certificados de autoridades desconhecidas.'; + String get allowUntrustedCertificatesDescription => 'Permitir a conexão a servidores com certificados não confiáveis. Isso é útil quando você está usando certificados autoassinados ou certificados de autoridades desconhecidas.'; @override String get certificateNotPassed => 'Certificado não autorizado'; @@ -1291,8 +1228,7 @@ class AppLocalizationsPt extends AppLocalizations { String get addServerTimeout => 'Tempo limite para adicionar servidor'; @override - String get addServerTimeoutDescription => - 'O tempo para esperar a resposta do servidor ao adicionar um novo servidor.'; + String get addServerTimeoutDescription => 'O tempo para esperar a resposta do servidor ao adicionar um novo servidor.'; @override String get streamingSettings => 'Configurações de streaming'; @@ -1304,8 +1240,7 @@ class AppLocalizationsPt extends AppLocalizations { String get preferredStreamingProtocol => 'Protocolo de Streaming Padrão'; @override - String get preferredStreamingProtocolDescription => - 'Qual protocolo de streaming de vídeo será usado. Se o servidor não suportar o protocolo selecionado, o próximo será usado. É possível selecionar um protocolo específico para cada dispositivo em suas configurações.'; + String get preferredStreamingProtocolDescription => 'Qual protocolo de streaming de vídeo será usado. Se o servidor não suportar o protocolo selecionado, o próximo será usado. É possível selecionar um protocolo específico para cada dispositivo em suas configurações.'; @override String get rtspProtocol => 'Protocolo RTSP'; @@ -1317,15 +1252,13 @@ class AppLocalizationsPt extends AppLocalizations { String get renderingQuality => 'Qualidade de renderização'; @override - String get renderingQualityDescription => - 'A qualidade de renderização. Quanto maior a qualidade, mais recursos são usados.\nQuando automatico, a resolução é selecionada baseada na resolução da câmera.'; + String get renderingQualityDescription => 'A qualidade de renderização. Quanto maior a qualidade, mais recursos são usados.\nQuando automatico, a resolução é selecionada baseada na resolução da câmera.'; @override String get cameraViewFit => 'Ajuste de imagem da câmera'; @override - String get cameraViewFitDescription => - 'Como o vídeo é renderizado na visualização.'; + String get cameraViewFitDescription => 'Como o vídeo é renderizado na visualização.'; @override String get contain => 'Limitar'; @@ -1340,22 +1273,19 @@ class AppLocalizationsPt extends AppLocalizations { String get streamRefreshPeriod => 'Intervalo de Atualização do Vídeo'; @override - String get streamRefreshPeriodDescription => - 'O intervalo entre as atualizações das câmeras. Isso garante que o vídeo da câmera ainda seja válido de tempos em tempos.'; + String get streamRefreshPeriodDescription => 'O intervalo entre as atualizações das câmeras. Isso garante que o vídeo da câmera ainda seja válido de tempos em tempos.'; @override String get lateStreamBehavior => 'Transmissão atrasada'; @override - String get lateStreamBehaviorDescription => - 'O que fazer quando a transmissão está atrasada.'; + String get lateStreamBehaviorDescription => 'O que fazer quando a transmissão está atrasada.'; @override String get automaticBehavior => 'Automático'; @override - String get automaticBehaviorDescription => - 'A transmissão será reajustada automaticamente'; + String get automaticBehaviorDescription => 'A transmissão será reajustada automaticamente'; @override String get manualBehavior => 'Manual'; @@ -1375,8 +1305,7 @@ class AppLocalizationsPt extends AppLocalizations { String get listOfflineDevices => 'Listar Dispositivos Offline'; @override - String get listOfflineDevicesDescriptions => - 'Se deve mostrar dispositivos offline na lista de dispositivos.'; + String get listOfflineDevicesDescriptions => 'Se deve mostrar dispositivos offline na lista de dispositivos.'; @override String get initialDeviceVolume => 'Volume Inicial da Câmera'; @@ -1385,8 +1314,7 @@ class AppLocalizationsPt extends AppLocalizations { String get runVideoTest => 'Testar Vídeo'; @override - String get runVideoTestDescription => - 'Teste o vídeo para verificar o estado da reprodução de vídeo.'; + String get runVideoTestDescription => 'Teste o vídeo para verificar o estado da reprodução de vídeo.'; @override String get showCameraName => 'Show Camera Name'; diff --git a/lib/main.dart b/lib/main.dart index 6078d55d..7cb818c7 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -140,7 +140,7 @@ Future main(List args) async { // Request notifications permission for iOS, Android 13+ and Windows. // // permission_handler only supports these platforms - if (kIsWeb || isMobilePlatform || Platform.isWindows) { + if (isMobilePlatform || (isDesktopPlatform && Platform.isWindows)) { () async { if (await Permission.notification.isDenied) { final state = await Permission.notification.request(); diff --git a/lib/providers/server_provider.dart b/lib/providers/server_provider.dart index 78ffea6e..6510d7bb 100644 --- a/lib/providers/server_provider.dart +++ b/lib/providers/server_provider.dart @@ -20,16 +20,22 @@ import 'dart:convert'; import 'package:bluecherry_client/api/api.dart'; +import 'package:bluecherry_client/main.dart' show navigatorKey; import 'package:bluecherry_client/models/server.dart'; import 'package:bluecherry_client/providers/app_provider_interface.dart'; +import 'package:bluecherry_client/providers/home_provider.dart'; import 'package:bluecherry_client/providers/layouts_provider.dart'; import 'package:bluecherry_client/providers/mobile_view_provider.dart'; +import 'package:bluecherry_client/screens/servers/error.dart'; import 'package:bluecherry_client/utils/constants.dart'; +import 'package:bluecherry_client/utils/logging.dart' as logging; import 'package:bluecherry_client/utils/logging.dart'; import 'package:bluecherry_client/utils/methods.dart'; import 'package:bluecherry_client/utils/storage.dart'; import 'package:bluecherry_client/utils/video_player.dart'; import 'package:flutter/foundation.dart'; +import 'package:flutter/widgets.dart'; +import 'package:provider/provider.dart'; class ServersProvider extends UnityProvider { ServersProvider._(); @@ -53,6 +59,9 @@ class ServersProvider extends UnityProvider { @override Future initialize() async { await initializeStorage(kStorageServers); + WidgetsBinding.instance.addPostFrameCallback((_) { + fetchWeb(); + }); refreshDevices(startup: true); } @@ -225,4 +234,86 @@ class ServersProvider extends UnityProvider { servers = serversData.map(Server.fromJson).toList(); super.restore(notifyListeners: notifyListeners); } + + Future<(ServerAdditionResponse, Server)> addServer({ + required String name, + required String ip, + required int port, + required String login, + required String password, + required int rtspPort, + }) async { + final (code, server) = await API.instance.checkServerCredentials( + Server( + name: name, + ip: ip, + port: port, + login: login, + password: password, + devices: [], + rtspPort: rtspPort, + ), + ); + + if (code == ServerAdditionResponse.validated) { + add(server); + } + + return (code, server); + } + + /// Fetches the server from the web query parameters. + /// + /// This does nothing if the app is not running on the web. + Future fetchWeb() async { + if (!kIsWeb) return; + + final base = Uri.base; + final query = base.queryParameters; + debugPrint('Fetching server from web query parameters: $query'); + + final host = query['host']; + final username = query['username'] ?? 'Admin'; + final password = query['password'] ?? 'bluecherry'; + final port = query['port'] ?? '$kDefaultPort'; + final rtspPort = + query['rtsp_port'] ?? query['rtspPort'] ?? '$kDefaultRTSPPort'; + + if (host == null) { + logging.writeLogToFile( + 'Failed to connect to server because host is missing in the query ' + 'parameters', + print: true, + ); + return; + } + + if (int.tryParse(port) == null || int.tryParse(rtspPort) == null) { + logging.writeLogToFile( + 'Failed to connect to server because port or rtspPort is not a valid.', + print: true, + ); + return; + } + + final (code, server) = await addServer( + name: 'Web Server', + ip: host, + port: int.parse(port), + login: username, + password: password, + rtspPort: int.parse(rtspPort), + ); + + final context = navigatorKey.currentContext!; + if (code != ServerAdditionResponse.validated) { + showServerNotAddedErrorDialog( + context: context, + name: server.name, + description: code.description(context, server), + ); + } else { + context.read().setTab(UnityTab.deviceGrid); + } + } } diff --git a/lib/screens/servers/configure_dvr_server.dart b/lib/screens/servers/configure_dvr_server.dart index 7027a85f..3542c7e7 100644 --- a/lib/screens/servers/configure_dvr_server.dart +++ b/lib/screens/servers/configure_dvr_server.dart @@ -429,16 +429,10 @@ class _ConfigureDVRServerScreenState extends State { if (ServersProvider.instance.servers.any((s) { return s.ip == hostname && s.port == port; })) { - showDialog( + showServerNotAddedErrorDialog( context: context, - builder: (context) { - final loc = AppLocalizations.of(context); - - return ServerNotAddedErrorDialog( - name: name, - description: loc.serverAlreadyAdded(name), - ); - }, + name: name, + description: AppLocalizations.of(context).serverAlreadyAdded(name), ); return; } @@ -449,16 +443,13 @@ class _ConfigureDVRServerScreenState extends State { state = _ServerAddState.checkingServerCredentials; }); } - final (code, server) = await API.instance.checkServerCredentials( - Server( - name: name, - ip: hostname, - port: port, - login: usernameController.text.trim(), - password: passwordController.text, - devices: [], - rtspPort: int.tryParse(rtspPortController.text.trim()) ?? port, - ), + final (code, server) = await ServersProvider.instance.addServer( + name: name, + ip: hostname, + port: port, + login: usernameController.text.trim(), + password: passwordController.text, + rtspPort: int.tryParse(rtspPortController.text.trim()) ?? port, ); focusScope.unfocus(); @@ -467,27 +458,15 @@ class _ConfigureDVRServerScreenState extends State { assert(server.serverUUID != null && server.hasCookies); widget.onServerChange(server); state = _ServerAddState.gettingDevices; - await ServersProvider.instance.add(server); widget.onNext(); break; default: state = _ServerAddState.none; if (context.mounted) { - final loc = AppLocalizations.of(context); showServerNotAddedErrorDialog( context: context, name: server.name, - description: switch (code) { - ServerAdditionResponse.versionMismatch => - loc.serverVersionMismatch, - ServerAdditionResponse.wrongCredentials => - loc.serverWrongCredentials, - ServerAdditionResponse.unknown || _ => loc - .serverNotAddedErrorDescription( - server.port.toString(), - server.rtspPort.toString(), - ), - }, + description: code.description(context, server), onRetry: () { Navigator.of(context).maybePop(); if (this.context.mounted) finish(this.context); diff --git a/lib/screens/settings/advanced_options.dart b/lib/screens/settings/advanced_options.dart index c8c16143..dd7a50fb 100644 --- a/lib/screens/settings/advanced_options.dart +++ b/lib/screens/settings/advanced_options.dart @@ -97,29 +97,30 @@ class _AdvancedOptionsSettingsState extends State { ); }, ), - FutureBuilder( - future: getApplicationSupportDirectory(), - builder: (context, snapshot) { - return ListTile( - contentPadding: DesktopSettings.horizontalPadding, - leading: CircleAvatar( - backgroundColor: Colors.transparent, - foregroundColor: theme.iconTheme.color, - child: const Icon(Icons.home), - ), - title: Text(loc.openAppDataDirectory), - subtitle: Text(snapshot.data?.path ?? loc.loading), - trailing: const Icon(Icons.navigate_next), - dense: false, - onTap: - snapshot.data == null - ? null - : () { - launchFileExplorer(snapshot.data!.path); - }, - ); - }, - ), + if (!kIsWeb) + FutureBuilder( + future: getApplicationSupportDirectory(), + builder: (context, snapshot) { + return ListTile( + contentPadding: DesktopSettings.horizontalPadding, + leading: CircleAvatar( + backgroundColor: Colors.transparent, + foregroundColor: theme.iconTheme.color, + child: const Icon(Icons.home), + ), + title: Text(loc.openAppDataDirectory), + subtitle: Text(snapshot.data?.path ?? loc.loading), + trailing: const Icon(Icons.navigate_next), + dense: false, + onTap: + snapshot.data == null + ? null + : () { + launchFileExplorer(snapshot.data!.path); + }, + ); + }, + ), ], ListTile( contentPadding: DesktopSettings.horizontalPadding, diff --git a/lib/utils/logging.dart b/lib/utils/logging.dart index a5df9746..4f4fd18b 100644 --- a/lib/utils/logging.dart +++ b/lib/utils/logging.dart @@ -31,7 +31,7 @@ Future setupLogging() async { Logger.root.onRecord.listen((record) { debugPrint('${record.level.name}: ${record.time}: ${record.message}'); }); - supportDir = await getApplicationSupportDirectory(); + if (!kIsWeb) supportDir = await getApplicationSupportDirectory(); } void handleError(