mirror of
https://github.com/Xevion/paperless-mobile.git
synced 2025-12-06 15:15:50 -06:00
feat: Migrated strings, and translations to native flutter l10n plugin
This commit is contained in:
8
crowdin.yml
Normal file
8
crowdin.yml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
files: [
|
||||||
|
{
|
||||||
|
"source" : "/lib/l10n/intl_en.arb",
|
||||||
|
"translation" : "/lib/l10n/intl_%two_letters_code%.arb",
|
||||||
|
"type" : "arb",
|
||||||
|
}
|
||||||
|
]
|
||||||
|
# Add your credentials here
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
import 'package:flutter/widgets.dart';
|
import 'package:flutter/widgets.dart';
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
Future<TestingFrameworkVariables> initializeTestingFramework(
|
Future<TestingFrameworkVariables> initializeTestingFramework(
|
||||||
{String languageCode = 'en'}) async {
|
{String languageCode = 'en'}) async {
|
||||||
final binding = IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
final binding = IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
||||||
final translations = await S.load(
|
final translations = await S.delegate.load(
|
||||||
Locale.fromSubtags(
|
Locale.fromSubtags(
|
||||||
languageCode: languageCode,
|
languageCode: languageCode,
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
arb-dir: lib/l10n
|
arb-dir: lib/l10n
|
||||||
template-arb-file: intl_en.arb
|
template-arb-file: intl_en.arb
|
||||||
|
output-dir: lib/generated/l10n
|
||||||
|
output-class: S
|
||||||
output-localization-file: app_localizations.dart
|
output-localization-file: app_localizations.dart
|
||||||
untranslated-messages-file: untranslated_messages.txt
|
synthetic-package: false
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:paperless_mobile/features/settings/model/color_scheme_option.dart';
|
import 'package:paperless_mobile/features/settings/model/color_scheme_option.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
String translateColorSchemeOption(
|
String translateColorSchemeOption(
|
||||||
BuildContext context, ColorSchemeOption option) {
|
BuildContext context, ColorSchemeOption option) {
|
||||||
switch (option) {
|
switch (option) {
|
||||||
case ColorSchemeOption.classic:
|
case ColorSchemeOption.classic:
|
||||||
return S.of(context).classic;
|
return S.of(context)!.classicColorScheme;
|
||||||
case ColorSchemeOption.dynamic:
|
case ColorSchemeOption.dynamic:
|
||||||
return S.of(context).dynamic;
|
return S.of(context)!.dynamicColorScheme;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,76 +1,76 @@
|
|||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:paperless_api/paperless_api.dart';
|
import 'package:paperless_api/paperless_api.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
String translateError(BuildContext context, ErrorCode code) {
|
String translateError(BuildContext context, ErrorCode code) {
|
||||||
switch (code) {
|
switch (code) {
|
||||||
case ErrorCode.unknown:
|
case ErrorCode.unknown:
|
||||||
return S.of(context).anUnknownErrorOccurred;
|
return S.of(context)!.anUnknownErrorOccurred;
|
||||||
case ErrorCode.authenticationFailed:
|
case ErrorCode.authenticationFailed:
|
||||||
return S.of(context).authenticationFailedPleaseTryAgain;
|
return S.of(context)!.authenticationFailedPleaseTryAgain;
|
||||||
case ErrorCode.notAuthenticated:
|
case ErrorCode.notAuthenticated:
|
||||||
return S.of(context).userIsNotAuthenticated;
|
return S.of(context)!.userIsNotAuthenticated;
|
||||||
case ErrorCode.documentUploadFailed:
|
case ErrorCode.documentUploadFailed:
|
||||||
return S.of(context).couldNotUploadDocument;
|
return S.of(context)!.couldNotUploadDocument;
|
||||||
case ErrorCode.documentUpdateFailed:
|
case ErrorCode.documentUpdateFailed:
|
||||||
return S.of(context).couldNotUpdateDocument;
|
return S.of(context)!.couldNotUpdateDocument;
|
||||||
case ErrorCode.documentLoadFailed:
|
case ErrorCode.documentLoadFailed:
|
||||||
return S.of(context).couldNotLoadDocuments;
|
return S.of(context)!.couldNotLoadDocuments;
|
||||||
case ErrorCode.documentDeleteFailed:
|
case ErrorCode.documentDeleteFailed:
|
||||||
return S.of(context).couldNotDeleteDocument;
|
return S.of(context)!.couldNotDeleteDocument;
|
||||||
case ErrorCode.documentPreviewFailed:
|
case ErrorCode.documentPreviewFailed:
|
||||||
return S.of(context).couldNotLoadDocumentPreview;
|
return S.of(context)!.couldNotLoadDocumentPreview;
|
||||||
case ErrorCode.documentAsnQueryFailed:
|
case ErrorCode.documentAsnQueryFailed:
|
||||||
return S.of(context).couldNotAssignArchiveSerialNumber;
|
return S.of(context)!.couldNotAssignArchiveSerialNumber;
|
||||||
case ErrorCode.tagCreateFailed:
|
case ErrorCode.tagCreateFailed:
|
||||||
return S.of(context).couldNotCreateTag;
|
return S.of(context)!.couldNotCreateTag;
|
||||||
case ErrorCode.tagLoadFailed:
|
case ErrorCode.tagLoadFailed:
|
||||||
return S.of(context).couldNotLoadTags;
|
return S.of(context)!.couldNotLoadTags;
|
||||||
case ErrorCode.documentTypeCreateFailed:
|
case ErrorCode.documentTypeCreateFailed:
|
||||||
return S.of(context).couldNotCreateDocument;
|
return S.of(context)!.couldNotCreateDocument;
|
||||||
case ErrorCode.documentTypeLoadFailed:
|
case ErrorCode.documentTypeLoadFailed:
|
||||||
return S.of(context).couldNotLoadDocumentTypes;
|
return S.of(context)!.couldNotLoadDocumentTypes;
|
||||||
case ErrorCode.correspondentCreateFailed:
|
case ErrorCode.correspondentCreateFailed:
|
||||||
return S.of(context).couldNotCreateCorrespondent;
|
return S.of(context)!.couldNotCreateCorrespondent;
|
||||||
case ErrorCode.correspondentLoadFailed:
|
case ErrorCode.correspondentLoadFailed:
|
||||||
return S.of(context).couldNotLoadCorrespondents;
|
return S.of(context)!.couldNotLoadCorrespondents;
|
||||||
case ErrorCode.scanRemoveFailed:
|
case ErrorCode.scanRemoveFailed:
|
||||||
return S.of(context).anErrorOccurredRemovingTheScans;
|
return S.of(context)!.anErrorOccurredRemovingTheScans;
|
||||||
case ErrorCode.invalidClientCertificateConfiguration:
|
case ErrorCode.invalidClientCertificateConfiguration:
|
||||||
return S.of(context).invalidCertificateOrMissingPassphrase;
|
return S.of(context)!.invalidCertificateOrMissingPassphrase;
|
||||||
case ErrorCode.documentBulkActionFailed:
|
case ErrorCode.documentBulkActionFailed:
|
||||||
return S.of(context).couldNotBulkEditDocuments;
|
return S.of(context)!.couldNotBulkEditDocuments;
|
||||||
case ErrorCode.biometricsNotSupported:
|
case ErrorCode.biometricsNotSupported:
|
||||||
return S.of(context).biometricAuthenticationNotSupported;
|
return S.of(context)!.biometricAuthenticationNotSupported;
|
||||||
case ErrorCode.biometricAuthenticationFailed:
|
case ErrorCode.biometricAuthenticationFailed:
|
||||||
return S.of(context).biometricAuthenticationFailed;
|
return S.of(context)!.biometricAuthenticationFailed;
|
||||||
case ErrorCode.deviceOffline:
|
case ErrorCode.deviceOffline:
|
||||||
return S.of(context).youAreCurrentlyOffline;
|
return S.of(context)!.youAreCurrentlyOffline;
|
||||||
case ErrorCode.serverUnreachable:
|
case ErrorCode.serverUnreachable:
|
||||||
return S.of(context).couldNotReachYourPaperlessServer;
|
return S.of(context)!.couldNotReachYourPaperlessServer;
|
||||||
case ErrorCode.similarQueryError:
|
case ErrorCode.similarQueryError:
|
||||||
return S.of(context).couldNotLoadSimilarDocuments;
|
return S.of(context)!.couldNotLoadSimilarDocuments;
|
||||||
case ErrorCode.autocompleteQueryError:
|
case ErrorCode.autocompleteQueryError:
|
||||||
return S.of(context).anErrorOccurredWhileTryingToAutocompleteYourQuery;
|
return S.of(context)!.anErrorOccurredWhileTryingToAutocompleteYourQuery;
|
||||||
case ErrorCode.storagePathLoadFailed:
|
case ErrorCode.storagePathLoadFailed:
|
||||||
return S.of(context).couldNotLoadStoragePaths;
|
return S.of(context)!.couldNotLoadStoragePaths;
|
||||||
case ErrorCode.storagePathCreateFailed:
|
case ErrorCode.storagePathCreateFailed:
|
||||||
return S.of(context).couldNotCreateStoragePath;
|
return S.of(context)!.couldNotCreateStoragePath;
|
||||||
case ErrorCode.loadSavedViewsError:
|
case ErrorCode.loadSavedViewsError:
|
||||||
return S.of(context).couldNotLoadSavedViews;
|
return S.of(context)!.couldNotLoadSavedViews;
|
||||||
case ErrorCode.createSavedViewError:
|
case ErrorCode.createSavedViewError:
|
||||||
return S.of(context).couldNotCreateSavedView;
|
return S.of(context)!.couldNotCreateSavedView;
|
||||||
case ErrorCode.deleteSavedViewError:
|
case ErrorCode.deleteSavedViewError:
|
||||||
return S.of(context).couldNotDeleteSavedView;
|
return S.of(context)!.couldNotDeleteSavedView;
|
||||||
case ErrorCode.requestTimedOut:
|
case ErrorCode.requestTimedOut:
|
||||||
return S.of(context).requestTimedOut;
|
return S.of(context)!.requestTimedOut;
|
||||||
case ErrorCode.unsupportedFileFormat:
|
case ErrorCode.unsupportedFileFormat:
|
||||||
return S.of(context).fileFormatNotSupported;
|
return S.of(context)!.fileFormatNotSupported;
|
||||||
case ErrorCode.missingClientCertificate:
|
case ErrorCode.missingClientCertificate:
|
||||||
return S.of(context).aClientCertificateWasExpectedButNotSent;
|
return S.of(context)!.aClientCertificateWasExpectedButNotSent;
|
||||||
case ErrorCode.suggestionsQueryError:
|
case ErrorCode.suggestionsQueryError:
|
||||||
return S.of(context).couldNotLoadSuggestions;
|
return S.of(context)!.couldNotLoadSuggestions;
|
||||||
case ErrorCode.acknowledgeTasksError:
|
case ErrorCode.acknowledgeTasksError:
|
||||||
return S.of(context).couldNotAcknowledgeTasks;
|
return S.of(context)!.couldNotAcknowledgeTasks;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:paperless_api/paperless_api.dart';
|
import 'package:paperless_api/paperless_api.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
String translateMatchingAlgorithmDescription(
|
String translateMatchingAlgorithmDescription(
|
||||||
BuildContext context,
|
BuildContext context,
|
||||||
@@ -8,17 +8,17 @@ String translateMatchingAlgorithmDescription(
|
|||||||
) {
|
) {
|
||||||
switch (algorithm) {
|
switch (algorithm) {
|
||||||
case MatchingAlgorithm.anyWord:
|
case MatchingAlgorithm.anyWord:
|
||||||
return S.of(context).documentContainsAnyOfTheseWords;
|
return S.of(context)!.documentContainsAnyOfTheseWords;
|
||||||
case MatchingAlgorithm.allWords:
|
case MatchingAlgorithm.allWords:
|
||||||
return S.of(context).documentContainsAllOfTheseWords;
|
return S.of(context)!.documentContainsAllOfTheseWords;
|
||||||
case MatchingAlgorithm.exactMatch:
|
case MatchingAlgorithm.exactMatch:
|
||||||
return S.of(context).documentContainsThisString;
|
return S.of(context)!.documentContainsThisString;
|
||||||
case MatchingAlgorithm.regex:
|
case MatchingAlgorithm.regex:
|
||||||
return S.of(context).documentMatchesThisRegularExpression;
|
return S.of(context)!.documentMatchesThisRegularExpression;
|
||||||
case MatchingAlgorithm.fuzzy:
|
case MatchingAlgorithm.fuzzy:
|
||||||
return S.of(context).documentContainsAWordSimilarToThisWord;
|
return S.of(context)!.documentContainsAWordSimilarToThisWord;
|
||||||
case MatchingAlgorithm.auto:
|
case MatchingAlgorithm.auto:
|
||||||
return S.of(context).learnMatchingAutomatically;
|
return S.of(context)!.learnMatchingAutomatically;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -28,16 +28,16 @@ String translateMatchingAlgorithmName(
|
|||||||
) {
|
) {
|
||||||
switch (algorithm) {
|
switch (algorithm) {
|
||||||
case MatchingAlgorithm.anyWord:
|
case MatchingAlgorithm.anyWord:
|
||||||
return S.of(context).any;
|
return S.of(context)!.any;
|
||||||
case MatchingAlgorithm.allWords:
|
case MatchingAlgorithm.allWords:
|
||||||
return S.of(context).all;
|
return S.of(context)!.all;
|
||||||
case MatchingAlgorithm.exactMatch:
|
case MatchingAlgorithm.exactMatch:
|
||||||
return S.of(context).exact;
|
return S.of(context)!.exact;
|
||||||
case MatchingAlgorithm.regex:
|
case MatchingAlgorithm.regex:
|
||||||
return S.of(context).regularExpression;
|
return S.of(context)!.regularExpression;
|
||||||
case MatchingAlgorithm.fuzzy:
|
case MatchingAlgorithm.fuzzy:
|
||||||
return S.of(context).fuzzy;
|
return S.of(context)!.fuzzy;
|
||||||
case MatchingAlgorithm.auto:
|
case MatchingAlgorithm.auto:
|
||||||
return S.of(context).auto;
|
return S.of(context)!.auto;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,23 +1,23 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:paperless_api/paperless_api.dart';
|
import 'package:paperless_api/paperless_api.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
String translateSortField(BuildContext context, SortField? sortField) {
|
String translateSortField(BuildContext context, SortField? sortField) {
|
||||||
switch (sortField) {
|
switch (sortField) {
|
||||||
case SortField.archiveSerialNumber:
|
case SortField.archiveSerialNumber:
|
||||||
return S.of(context).asn;
|
return S.of(context)!.asn;
|
||||||
case SortField.correspondentName:
|
case SortField.correspondentName:
|
||||||
return S.of(context).correspondent;
|
return S.of(context)!.correspondent;
|
||||||
case SortField.title:
|
case SortField.title:
|
||||||
return S.of(context).title;
|
return S.of(context)!.title;
|
||||||
case SortField.documentType:
|
case SortField.documentType:
|
||||||
return S.of(context).documentType;
|
return S.of(context)!.documentType;
|
||||||
case SortField.created:
|
case SortField.created:
|
||||||
return S.of(context).createdAt;
|
return S.of(context)!.createdAt;
|
||||||
case SortField.added:
|
case SortField.added:
|
||||||
return S.of(context).addedAt;
|
return S.of(context)!.addedAt;
|
||||||
case SortField.modified:
|
case SortField.modified:
|
||||||
return S.of(context).modifiedAt;
|
return S.of(context)!.modifiedAt;
|
||||||
default:
|
default:
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,8 @@
|
|||||||
// import 'package:paperless_mobile/features/settings/bloc/application_settings_state.dart';
|
// import 'package:paperless_mobile/features/settings/bloc/application_settings_state.dart';
|
||||||
// import 'package:paperless_mobile/features/settings/model/view_type.dart';
|
// import 'package:paperless_mobile/features/settings/model/view_type.dart';
|
||||||
// import 'package:paperless_mobile/features/settings/view/settings_page.dart';
|
// import 'package:paperless_mobile/features/settings/view/settings_page.dart';
|
||||||
// import 'package:paperless_mobile/generated/l10n.dart';
|
// import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
// import 'package:url_launcher/link.dart';
|
// import 'package:url_launcher/link.dart';
|
||||||
// import 'package:url_launcher/url_launcher_string.dart';
|
// import 'package:url_launcher/url_launcher_string.dart';
|
||||||
|
|
||||||
@@ -74,7 +75,7 @@
|
|||||||
// padding: EdgeInsets.zero,
|
// padding: EdgeInsets.zero,
|
||||||
// child: ListTile(
|
// child: ListTile(
|
||||||
// leading: const Icon(Icons.bug_report),
|
// leading: const Icon(Icons.bug_report),
|
||||||
// title: Text(S.of(context).reportABug),
|
// title: Text(S.of(context)!.reportABug),
|
||||||
// ),
|
// ),
|
||||||
// );
|
// );
|
||||||
// }
|
// }
|
||||||
@@ -85,7 +86,7 @@
|
|||||||
// value: AppPopupMenuEntries.openSettings,
|
// value: AppPopupMenuEntries.openSettings,
|
||||||
// child: ListTile(
|
// child: ListTile(
|
||||||
// leading: const Icon(Icons.settings_outlined),
|
// leading: const Icon(Icons.settings_outlined),
|
||||||
// title: Text(S.of(context).settings),
|
// title: Text(S.of(context)!.settings),
|
||||||
// ),
|
// ),
|
||||||
// );
|
// );
|
||||||
// }
|
// }
|
||||||
@@ -96,7 +97,7 @@
|
|||||||
// value: AppPopupMenuEntries.openAboutThisAppDialog,
|
// value: AppPopupMenuEntries.openAboutThisAppDialog,
|
||||||
// child: ListTile(
|
// child: ListTile(
|
||||||
// leading: const Icon(Icons.info_outline),
|
// leading: const Icon(Icons.info_outline),
|
||||||
// title: Text(S.of(context).aboutThisApp),
|
// title: Text(S.of(context)!.aboutThisApp),
|
||||||
// ),
|
// ),
|
||||||
// );
|
// );
|
||||||
// }
|
// }
|
||||||
@@ -146,7 +147,7 @@
|
|||||||
// applicationName: 'Paperless Mobile',
|
// applicationName: 'Paperless Mobile',
|
||||||
// applicationVersion: packageInfo.version + '+' + packageInfo.buildNumber,
|
// applicationVersion: packageInfo.version + '+' + packageInfo.buildNumber,
|
||||||
// children: [
|
// children: [
|
||||||
// Text(S.of(context).developedBy('Anton Stubenbord')),
|
// Text(S.of(context)!.developedBy('Anton Stubenbord')),
|
||||||
// Link(
|
// Link(
|
||||||
// uri: Uri.parse('https://github.com/astubenbord/paperless-mobile'),
|
// uri: Uri.parse('https://github.com/astubenbord/paperless-mobile'),
|
||||||
// builder: (context, followLink) => GestureDetector(
|
// builder: (context, followLink) => GestureDetector(
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/src/widgets/framework.dart';
|
import 'package:flutter/src/widgets/framework.dart';
|
||||||
import 'package:flutter/src/widgets/placeholder.dart';
|
import 'package:flutter/src/widgets/placeholder.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class DialogCancelButton extends StatelessWidget {
|
class DialogCancelButton extends StatelessWidget {
|
||||||
final void Function()? onTap;
|
final void Function()? onTap;
|
||||||
@@ -10,7 +10,7 @@ class DialogCancelButton extends StatelessWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return TextButton(
|
return TextButton(
|
||||||
child: Text(S.of(context).cancel),
|
child: Text(S.of(context)!.cancel),
|
||||||
onPressed: onTap ?? () => Navigator.pop(context),
|
onPressed: onTap ?? () => Navigator.pop(context),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import 'package:intl/intl.dart';
|
|||||||
import 'package:paperless_api/paperless_api.dart';
|
import 'package:paperless_api/paperless_api.dart';
|
||||||
import 'package:paperless_mobile/core/widgets/form_builder_fields/extended_date_range_form_field/form_builder_relative_date_range_field.dart';
|
import 'package:paperless_mobile/core/widgets/form_builder_fields/extended_date_range_form_field/form_builder_relative_date_range_field.dart';
|
||||||
import 'package:paperless_mobile/extensions/flutter_extensions.dart';
|
import 'package:paperless_mobile/extensions/flutter_extensions.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class ExtendedDateRangeDialog extends StatefulWidget {
|
class ExtendedDateRangeDialog extends StatefulWidget {
|
||||||
final DateRangeQuery initialValue;
|
final DateRangeQuery initialValue;
|
||||||
@@ -47,7 +47,7 @@ class _ExtendedDateRangeDialogState extends State<ExtendedDateRangeDialog> {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return AlertDialog(
|
return AlertDialog(
|
||||||
insetPadding: const EdgeInsets.all(24.0),
|
insetPadding: const EdgeInsets.all(24.0),
|
||||||
title: Text(S.of(context).selectDateRange),
|
title: Text(S.of(context)!.selectDateRange),
|
||||||
content: FormBuilder(
|
content: FormBuilder(
|
||||||
key: _formKey,
|
key: _formKey,
|
||||||
child: Column(
|
child: Column(
|
||||||
@@ -56,7 +56,7 @@ class _ExtendedDateRangeDialogState extends State<ExtendedDateRangeDialog> {
|
|||||||
children: [
|
children: [
|
||||||
_buildDateRangeQueryTypeSelection(),
|
_buildDateRangeQueryTypeSelection(),
|
||||||
Text(
|
Text(
|
||||||
S.of(context).hintYouCanAlsoSpecifyRelativeValues,
|
S.of(context)!.hintYouCanAlsoSpecifyRelativeValues,
|
||||||
style: Theme.of(context).textTheme.bodySmall,
|
style: Theme.of(context).textTheme.bodySmall,
|
||||||
).paddedOnly(top: 8, bottom: 16),
|
).paddedOnly(top: 8, bottom: 16),
|
||||||
Builder(
|
Builder(
|
||||||
@@ -83,11 +83,11 @@ class _ExtendedDateRangeDialogState extends State<ExtendedDateRangeDialog> {
|
|||||||
),
|
),
|
||||||
actions: [
|
actions: [
|
||||||
TextButton(
|
TextButton(
|
||||||
child: Text(S.of(context).cancel),
|
child: Text(S.of(context)!.cancel),
|
||||||
onPressed: () => Navigator.pop(context),
|
onPressed: () => Navigator.pop(context),
|
||||||
),
|
),
|
||||||
TextButton(
|
TextButton(
|
||||||
child: Text(S.of(context).save),
|
child: Text(S.of(context)!.save),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
_formKey.currentState?.save();
|
_formKey.currentState?.save();
|
||||||
if (_formKey.currentState?.validate() ?? false) {
|
if (_formKey.currentState?.validate() ?? false) {
|
||||||
@@ -110,12 +110,12 @@ class _ExtendedDateRangeDialogState extends State<ExtendedDateRangeDialog> {
|
|||||||
ButtonSegment(
|
ButtonSegment(
|
||||||
value: DateRangeType.absolute,
|
value: DateRangeType.absolute,
|
||||||
enabled: true,
|
enabled: true,
|
||||||
label: Text(S.of(context).absolute),
|
label: Text(S.of(context)!.absolute),
|
||||||
),
|
),
|
||||||
ButtonSegment(
|
ButtonSegment(
|
||||||
value: DateRangeType.relative,
|
value: DateRangeType.relative,
|
||||||
enabled: true,
|
enabled: true,
|
||||||
label: Text(S.of(context).relative),
|
label: Text(S.of(context)!.relative),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
selected: {_selectedDateRangeType},
|
selected: {_selectedDateRangeType},
|
||||||
@@ -133,7 +133,7 @@ class _ExtendedDateRangeDialogState extends State<ExtendedDateRangeDialog> {
|
|||||||
: null,
|
: null,
|
||||||
initialDate: _before?.subtract(const Duration(days: 1)),
|
initialDate: _before?.subtract(const Duration(days: 1)),
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
labelText: S.of(context).after,
|
labelText: S.of(context)!.after,
|
||||||
prefixIcon: const Icon(Icons.date_range),
|
prefixIcon: const Icon(Icons.date_range),
|
||||||
suffixIcon: _after != null
|
suffixIcon: _after != null
|
||||||
? IconButton(
|
? IconButton(
|
||||||
@@ -161,7 +161,7 @@ class _ExtendedDateRangeDialogState extends State<ExtendedDateRangeDialog> {
|
|||||||
: null,
|
: null,
|
||||||
inputType: InputType.date,
|
inputType: InputType.date,
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
labelText: S.of(context).before,
|
labelText: S.of(context)!.before,
|
||||||
prefixIcon: const Icon(Icons.date_range),
|
prefixIcon: const Icon(Icons.date_range),
|
||||||
suffixIcon: _before != null
|
suffixIcon: _before != null
|
||||||
? IconButton(
|
? IconButton(
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import 'package:intl/intl.dart';
|
|||||||
import 'package:paperless_api/paperless_api.dart';
|
import 'package:paperless_api/paperless_api.dart';
|
||||||
import 'package:paperless_mobile/core/widgets/form_builder_fields/extended_date_range_form_field/extended_date_range_dialog.dart';
|
import 'package:paperless_mobile/core/widgets/form_builder_fields/extended_date_range_form_field/extended_date_range_dialog.dart';
|
||||||
import 'package:paperless_mobile/core/widgets/form_builder_fields/extended_date_range_form_field/relative_date_range_picker_helper.dart';
|
import 'package:paperless_mobile/core/widgets/form_builder_fields/extended_date_range_form_field/relative_date_range_picker_helper.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class FormBuilderExtendedDateRangePicker extends StatefulWidget {
|
class FormBuilderExtendedDateRangePicker extends StatefulWidget {
|
||||||
final String name;
|
final String name;
|
||||||
@@ -90,21 +90,21 @@ class _FormBuilderExtendedDateRangePickerState
|
|||||||
return '${df.format(query.after!)} – ${df.format(query.before!)}';
|
return '${df.format(query.after!)} – ${df.format(query.before!)}';
|
||||||
}
|
}
|
||||||
if (query.before != null) {
|
if (query.before != null) {
|
||||||
return '${S.of(context).before} ${df.format(query.before!)}';
|
return '${S.of(context)!.before} ${df.format(query.before!)}';
|
||||||
}
|
}
|
||||||
if (query.after != null) {
|
if (query.after != null) {
|
||||||
return '${S.of(context).after} ${df.format(query.after!)}';
|
return '${S.of(context)!.after} ${df.format(query.after!)}';
|
||||||
}
|
}
|
||||||
} else if (query is RelativeDateRangeQuery) {
|
} else if (query is RelativeDateRangeQuery) {
|
||||||
switch (query.unit) {
|
switch (query.unit) {
|
||||||
case DateRangeUnit.day:
|
case DateRangeUnit.day:
|
||||||
return S.of(context).lastNDays(query.offset);
|
return S.of(context)!.lastNDays(query.offset);
|
||||||
case DateRangeUnit.week:
|
case DateRangeUnit.week:
|
||||||
return S.of(context).lastNWeeks(query.offset);
|
return S.of(context)!.lastNWeeks(query.offset);
|
||||||
case DateRangeUnit.month:
|
case DateRangeUnit.month:
|
||||||
return S.of(context).lastNMonths(query.offset);
|
return S.of(context)!.lastNMonths(query.offset);
|
||||||
case DateRangeUnit.year:
|
case DateRangeUnit.year:
|
||||||
return S.of(context).lastNYears(query.offset);
|
return S.of(context)!.lastNYears(query.offset);
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import 'package:flutter/services.dart';
|
|||||||
import 'package:flutter_form_builder/flutter_form_builder.dart';
|
import 'package:flutter_form_builder/flutter_form_builder.dart';
|
||||||
import 'package:form_builder_validators/form_builder_validators.dart';
|
import 'package:form_builder_validators/form_builder_validators.dart';
|
||||||
import 'package:paperless_api/paperless_api.dart';
|
import 'package:paperless_api/paperless_api.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class FormBuilderRelativeDateRangePicker extends StatefulWidget {
|
class FormBuilderRelativeDateRangePicker extends StatefulWidget {
|
||||||
final String name;
|
final String name;
|
||||||
@@ -46,12 +46,12 @@ class _FormBuilderRelativeDateRangePickerState
|
|||||||
Row(
|
Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
Text(S.of(context).last),
|
Text(S.of(context)!.last),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
width: 80,
|
width: 80,
|
||||||
child: TextFormField(
|
child: TextFormField(
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
labelText: S.of(context).amount,
|
labelText: S.of(context)!.amount,
|
||||||
),
|
),
|
||||||
inputFormatters: [
|
inputFormatters: [
|
||||||
FilteringTextInputFormatter.digitsOnly,
|
FilteringTextInputFormatter.digitsOnly,
|
||||||
@@ -90,7 +90,7 @@ class _FormBuilderRelativeDateRangePickerState
|
|||||||
onChanged: (value) =>
|
onChanged: (value) =>
|
||||||
field.didChange(field.value!.copyWith(unit: value)),
|
field.didChange(field.value!.copyWith(unit: value)),
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
labelText: S.of(context).timeUnit,
|
labelText: S.of(context)!.timeUnit,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -113,13 +113,13 @@ class _FormBuilderRelativeDateRangePickerState
|
|||||||
String _dateRangeUnitToLocalizedString(DateRangeUnit unit, int? count) {
|
String _dateRangeUnitToLocalizedString(DateRangeUnit unit, int? count) {
|
||||||
switch (unit) {
|
switch (unit) {
|
||||||
case DateRangeUnit.day:
|
case DateRangeUnit.day:
|
||||||
return S.of(context).days(count ?? 1);
|
return S.of(context)!.days(count ?? 1);
|
||||||
case DateRangeUnit.week:
|
case DateRangeUnit.week:
|
||||||
return S.of(context).weeks(count ?? 1);
|
return S.of(context)!.weeks(count ?? 1);
|
||||||
case DateRangeUnit.month:
|
case DateRangeUnit.month:
|
||||||
return S.of(context).months(count ?? 1);
|
return S.of(context)!.months(count ?? 1);
|
||||||
case DateRangeUnit.year:
|
case DateRangeUnit.year:
|
||||||
return S.of(context).years(count ?? 1);
|
return S.of(context)!.years(count ?? 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:paperless_api/paperless_api.dart';
|
import 'package:paperless_api/paperless_api.dart';
|
||||||
import 'package:paperless_mobile/core/workarounds/colored_chip.dart';
|
import 'package:paperless_mobile/core/workarounds/colored_chip.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class RelativeDateRangePickerHelper extends StatefulWidget {
|
class RelativeDateRangePickerHelper extends StatefulWidget {
|
||||||
final FormFieldState<DateRangeQuery> field;
|
final FormFieldState<DateRangeQuery> field;
|
||||||
@@ -49,19 +49,19 @@ class _RelativeDateRangePickerHelperState
|
|||||||
|
|
||||||
List<_ExtendedDateRangeQueryOption> get _options => [
|
List<_ExtendedDateRangeQueryOption> get _options => [
|
||||||
_ExtendedDateRangeQueryOption(
|
_ExtendedDateRangeQueryOption(
|
||||||
S.of(context).lastNWeeks(1),
|
S.of(context)!.lastNWeeks(1),
|
||||||
const RelativeDateRangeQuery(1, DateRangeUnit.week),
|
const RelativeDateRangeQuery(1, DateRangeUnit.week),
|
||||||
),
|
),
|
||||||
_ExtendedDateRangeQueryOption(
|
_ExtendedDateRangeQueryOption(
|
||||||
S.of(context).lastNMonths(1),
|
S.of(context)!.lastNMonths(1),
|
||||||
const RelativeDateRangeQuery(1, DateRangeUnit.month),
|
const RelativeDateRangeQuery(1, DateRangeUnit.month),
|
||||||
),
|
),
|
||||||
_ExtendedDateRangeQueryOption(
|
_ExtendedDateRangeQueryOption(
|
||||||
S.of(context).lastNMonths(3),
|
S.of(context)!.lastNMonths(3),
|
||||||
const RelativeDateRangeQuery(3, DateRangeUnit.month),
|
const RelativeDateRangeQuery(3, DateRangeUnit.month),
|
||||||
),
|
),
|
||||||
_ExtendedDateRangeQueryOption(
|
_ExtendedDateRangeQueryOption(
|
||||||
S.of(context).lastNYears(1),
|
S.of(context)!.lastNYears(1),
|
||||||
const RelativeDateRangeQuery(1, DateRangeUnit.year),
|
const RelativeDateRangeQuery(1, DateRangeUnit.year),
|
||||||
),
|
),
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_colorpicker/flutter_colorpicker.dart';
|
import 'package:flutter_colorpicker/flutter_colorpicker.dart';
|
||||||
import 'package:flutter_form_builder/flutter_form_builder.dart';
|
import 'package:flutter_form_builder/flutter_form_builder.dart';
|
||||||
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
extension on Color {
|
extension on Color {
|
||||||
/// String is in the format "aabbcc" or "ffaabbcc" with an optional leading "#".
|
/// String is in the format "aabbcc" or "ffaabbcc" with an optional leading "#".
|
||||||
@@ -213,7 +214,7 @@ class FormBuilderColorPickerFieldState
|
|||||||
final selected = await showDialog<bool>(
|
final selected = await showDialog<bool>(
|
||||||
context: context,
|
context: context,
|
||||||
builder: (BuildContext context) {
|
builder: (BuildContext context) {
|
||||||
final materialLocalizations = MaterialLocalizations.of(context);
|
final materialLocalizations = S.of(context)!;
|
||||||
|
|
||||||
return AlertDialog(
|
return AlertDialog(
|
||||||
// title: null, //const Text('Pick a color!'),
|
// title: null, //const Text('Pick a color!'),
|
||||||
@@ -223,11 +224,11 @@ class FormBuilderColorPickerFieldState
|
|||||||
actions: <Widget>[
|
actions: <Widget>[
|
||||||
TextButton(
|
TextButton(
|
||||||
onPressed: () => Navigator.pop(context, false),
|
onPressed: () => Navigator.pop(context, false),
|
||||||
child: Text(materialLocalizations.cancelButtonLabel),
|
child: Text(materialLocalizations.cancel),
|
||||||
),
|
),
|
||||||
TextButton(
|
TextButton(
|
||||||
onPressed: () => Navigator.pop(context, true),
|
onPressed: () => Navigator.pop(context, true),
|
||||||
child: Text(materialLocalizations.okButtonLabel),
|
child: Text(materialLocalizations.ok),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/widgets.dart';
|
import 'package:flutter/widgets.dart';
|
||||||
import 'package:paperless_mobile/extensions/flutter_extensions.dart';
|
import 'package:paperless_mobile/extensions/flutter_extensions.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class HintCard extends StatelessWidget {
|
class HintCard extends StatelessWidget {
|
||||||
final String hintText;
|
final String hintText;
|
||||||
@@ -52,7 +52,7 @@ class HintCard extends StatelessWidget {
|
|||||||
Align(
|
Align(
|
||||||
alignment: Alignment.bottomRight,
|
alignment: Alignment.bottomRight,
|
||||||
child: TextButton(
|
child: TextButton(
|
||||||
child: Text(S.of(context).gotIt),
|
child: Text(S.of(context)!.gotIt),
|
||||||
onPressed: onHintAcknowledged,
|
onPressed: onHintAcknowledged,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
/// Shows a full screen search page and returns the search result selected by
|
/// Shows a full screen search page and returns the search result selected by
|
||||||
/// the user when the page is closed.
|
/// the user when the page is closed.
|
||||||
@@ -308,7 +309,7 @@ abstract class SearchDelegate<T> {
|
|||||||
/// The hint text that is shown in the search field when it is empty.
|
/// The hint text that is shown in the search field when it is empty.
|
||||||
///
|
///
|
||||||
/// If this value is set to null, the value of
|
/// If this value is set to null, the value of
|
||||||
/// `MaterialLocalizations.of(context).searchFieldLabel` will be used instead.
|
/// `MaterialLocalizationS.of(context)!.searchFieldLabel` will be used instead.
|
||||||
final String? searchFieldLabel;
|
final String? searchFieldLabel;
|
||||||
|
|
||||||
/// The style of the [searchFieldLabel].
|
/// The style of the [searchFieldLabel].
|
||||||
@@ -532,8 +533,8 @@ class _SearchPageState<T> extends State<_SearchPage<T>> {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
assert(debugCheckHasMaterialLocalizations(context));
|
assert(debugCheckHasMaterialLocalizations(context));
|
||||||
final ThemeData theme = widget.delegate.appBarTheme(context);
|
final ThemeData theme = widget.delegate.appBarTheme(context);
|
||||||
final String searchFieldLabel = widget.delegate.searchFieldLabel ??
|
final String searchFieldLabel =
|
||||||
MaterialLocalizations.of(context).searchFieldLabel;
|
widget.delegate.searchFieldLabel ?? S.of(context)!.search;
|
||||||
Widget? body;
|
Widget? body;
|
||||||
switch (widget.delegate._currentBody) {
|
switch (widget.delegate._currentBody) {
|
||||||
case _SearchBody.suggestions:
|
case _SearchBody.suggestions:
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class OfflineBanner extends StatelessWidget with PreferredSizeWidget {
|
class OfflineBanner extends StatelessWidget with PreferredSizeWidget {
|
||||||
const OfflineBanner({super.key});
|
const OfflineBanner({super.key});
|
||||||
@@ -21,7 +21,7 @@ class OfflineBanner extends StatelessWidget with PreferredSizeWidget {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
Text(
|
Text(
|
||||||
S.of(context).youreOffline,
|
S.of(context)!.youreOffline,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Theme.of(context).colorScheme.onErrorContainer,
|
color: Theme.of(context).colorScheme.onErrorContainer,
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class OfflineWidget extends StatelessWidget {
|
class OfflineWidget extends StatelessWidget {
|
||||||
const OfflineWidget({super.key});
|
const OfflineWidget({super.key});
|
||||||
@@ -15,7 +15,7 @@ class OfflineWidget extends StatelessWidget {
|
|||||||
color: Theme.of(context).disabledColor,
|
color: Theme.of(context).disabledColor,
|
||||||
size: (Theme.of(context).iconTheme.size ?? 24) * 3),
|
size: (Theme.of(context).iconTheme.size ?? 24) * 3),
|
||||||
Text(
|
Text(
|
||||||
S.of(context).anInternetConnectionCouldNotBeEstablished,
|
S.of(context)!.anInternetConnectionCouldNotBeEstablished,
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ import 'package:paperless_mobile/core/widgets/paperless_logo.dart';
|
|||||||
import 'package:paperless_mobile/extensions/flutter_extensions.dart';
|
import 'package:paperless_mobile/extensions/flutter_extensions.dart';
|
||||||
import 'package:paperless_mobile/features/settings/cubit/application_settings_cubit.dart';
|
import 'package:paperless_mobile/features/settings/cubit/application_settings_cubit.dart';
|
||||||
import 'package:paperless_mobile/features/settings/view/settings_page.dart';
|
import 'package:paperless_mobile/features/settings/view/settings_page.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
import 'package:url_launcher/link.dart';
|
import 'package:url_launcher/link.dart';
|
||||||
import 'package:url_launcher/url_launcher_string.dart';
|
import 'package:url_launcher/url_launcher_string.dart';
|
||||||
|
|
||||||
@@ -31,14 +32,14 @@ class AppDrawer extends StatelessWidget {
|
|||||||
const Divider(),
|
const Divider(),
|
||||||
ListTile(
|
ListTile(
|
||||||
dense: true,
|
dense: true,
|
||||||
title: Text(S.of(context).aboutThisApp),
|
title: Text(S.of(context)!.aboutThisApp),
|
||||||
leading: const Icon(Icons.info_outline),
|
leading: const Icon(Icons.info_outline),
|
||||||
onTap: () => _showAboutDialog(context),
|
onTap: () => _showAboutDialog(context),
|
||||||
),
|
),
|
||||||
ListTile(
|
ListTile(
|
||||||
dense: true,
|
dense: true,
|
||||||
leading: const Icon(Icons.bug_report_outlined),
|
leading: const Icon(Icons.bug_report_outlined),
|
||||||
title: Text(S.of(context).reportABug),
|
title: Text(S.of(context)!.reportABug),
|
||||||
onTap: () {
|
onTap: () {
|
||||||
launchUrlString(
|
launchUrlString(
|
||||||
'https://github.com/astubenbord/paperless-mobile/issues/new');
|
'https://github.com/astubenbord/paperless-mobile/issues/new');
|
||||||
@@ -48,7 +49,7 @@ class AppDrawer extends StatelessWidget {
|
|||||||
dense: true,
|
dense: true,
|
||||||
leading: const Icon(Icons.settings_outlined),
|
leading: const Icon(Icons.settings_outlined),
|
||||||
title: Text(
|
title: Text(
|
||||||
S.of(context).settings,
|
S.of(context)!.settings,
|
||||||
),
|
),
|
||||||
onTap: () => Navigator.of(context).push(
|
onTap: () => Navigator.of(context).push(
|
||||||
MaterialPageRoute(
|
MaterialPageRoute(
|
||||||
@@ -74,7 +75,7 @@ class AppDrawer extends StatelessWidget {
|
|||||||
applicationName: 'Paperless Mobile',
|
applicationName: 'Paperless Mobile',
|
||||||
applicationVersion: packageInfo.version + '+' + packageInfo.buildNumber,
|
applicationVersion: packageInfo.version + '+' + packageInfo.buildNumber,
|
||||||
children: [
|
children: [
|
||||||
Text(S.of(context).developedBy('Anton Stubenbord')),
|
Text(S.of(context)!.developedBy('Anton Stubenbord')),
|
||||||
Link(
|
Link(
|
||||||
uri: Uri.parse('https://github.com/astubenbord/paperless-mobile'),
|
uri: Uri.parse('https://github.com/astubenbord/paperless-mobile'),
|
||||||
builder: (context, followLink) => GestureDetector(
|
builder: (context, followLink) => GestureDetector(
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import 'package:paperless_mobile/core/global/asset_images.dart';
|
|||||||
import 'package:paperless_mobile/features/settings/view/widgets/biometric_authentication_setting.dart';
|
import 'package:paperless_mobile/features/settings/view/widgets/biometric_authentication_setting.dart';
|
||||||
import 'package:paperless_mobile/features/settings/view/widgets/language_selection_setting.dart';
|
import 'package:paperless_mobile/features/settings/view/widgets/language_selection_setting.dart';
|
||||||
import 'package:paperless_mobile/features/settings/view/widgets/theme_mode_setting.dart';
|
import 'package:paperless_mobile/features/settings/view/widgets/theme_mode_setting.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class ApplicationIntroSlideshow extends StatefulWidget {
|
class ApplicationIntroSlideshow extends StatefulWidget {
|
||||||
const ApplicationIntroSlideshow({super.key});
|
const ApplicationIntroSlideshow({super.key});
|
||||||
@@ -26,8 +26,8 @@ class _ApplicationIntroSlideshowState extends State<ApplicationIntroSlideshow> {
|
|||||||
child: IntroductionScreen(
|
child: IntroductionScreen(
|
||||||
globalBackgroundColor: Theme.of(context).canvasColor,
|
globalBackgroundColor: Theme.of(context).canvasColor,
|
||||||
showDoneButton: true,
|
showDoneButton: true,
|
||||||
next: Text(S.of(context).next),
|
next: Text(S.of(context)!.next),
|
||||||
done: Text(S.of(context).done),
|
done: Text(S.of(context)!.done),
|
||||||
onDone: () => Navigator.pop(context),
|
onDone: () => Navigator.pop(context),
|
||||||
dotsDecorator: DotsDecorator(
|
dotsDecorator: DotsDecorator(
|
||||||
color: Theme.of(context).colorScheme.onBackground,
|
color: Theme.of(context).colorScheme.onBackground,
|
||||||
|
|||||||
@@ -21,7 +21,8 @@ import 'package:paperless_mobile/features/documents/view/widgets/delete_document
|
|||||||
import 'package:paperless_mobile/features/documents/view/widgets/document_preview.dart';
|
import 'package:paperless_mobile/features/documents/view/widgets/document_preview.dart';
|
||||||
import 'package:paperless_mobile/features/similar_documents/cubit/similar_documents_cubit.dart';
|
import 'package:paperless_mobile/features/similar_documents/cubit/similar_documents_cubit.dart';
|
||||||
import 'package:paperless_mobile/features/similar_documents/view/similar_documents_view.dart';
|
import 'package:paperless_mobile/features/similar_documents/view/similar_documents_view.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
import 'package:paperless_mobile/helpers/message_helpers.dart';
|
import 'package:paperless_mobile/helpers/message_helpers.dart';
|
||||||
import 'package:path_provider/path_provider.dart';
|
import 'package:path_provider/path_provider.dart';
|
||||||
import 'package:share_plus/share_plus.dart';
|
import 'package:share_plus/share_plus.dart';
|
||||||
@@ -102,7 +103,7 @@ class _DocumentDetailsPageState extends State<DocumentDetailsPage> {
|
|||||||
tabs: [
|
tabs: [
|
||||||
Tab(
|
Tab(
|
||||||
child: Text(
|
child: Text(
|
||||||
S.of(context).overview,
|
S.of(context)!.overview,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Theme.of(context)
|
color: Theme.of(context)
|
||||||
.colorScheme
|
.colorScheme
|
||||||
@@ -112,7 +113,7 @@ class _DocumentDetailsPageState extends State<DocumentDetailsPage> {
|
|||||||
),
|
),
|
||||||
Tab(
|
Tab(
|
||||||
child: Text(
|
child: Text(
|
||||||
S.of(context).content,
|
S.of(context)!.content,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Theme.of(context)
|
color: Theme.of(context)
|
||||||
.colorScheme
|
.colorScheme
|
||||||
@@ -122,7 +123,7 @@ class _DocumentDetailsPageState extends State<DocumentDetailsPage> {
|
|||||||
),
|
),
|
||||||
Tab(
|
Tab(
|
||||||
child: Text(
|
child: Text(
|
||||||
S.of(context).metaData,
|
S.of(context)!.metaData,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Theme.of(context)
|
color: Theme.of(context)
|
||||||
.colorScheme
|
.colorScheme
|
||||||
@@ -132,7 +133,7 @@ class _DocumentDetailsPageState extends State<DocumentDetailsPage> {
|
|||||||
),
|
),
|
||||||
Tab(
|
Tab(
|
||||||
child: Text(
|
child: Text(
|
||||||
S.of(context).similarDocuments,
|
S.of(context)!.similarDocuments,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Theme.of(context)
|
color: Theme.of(context)
|
||||||
.colorScheme
|
.colorScheme
|
||||||
@@ -198,7 +199,7 @@ class _DocumentDetailsPageState extends State<DocumentDetailsPage> {
|
|||||||
position: b.BadgePosition.topEnd(top: -12, end: -6),
|
position: b.BadgePosition.topEnd(top: -12, end: -6),
|
||||||
showBadge: _filteredSuggestions.hasSuggestions,
|
showBadge: _filteredSuggestions.hasSuggestions,
|
||||||
child: Tooltip(
|
child: Tooltip(
|
||||||
message: S.of(context).editDocumentTooltip,
|
message: S.of(context)!.editDocumentTooltip,
|
||||||
preferBelow: false,
|
preferBelow: false,
|
||||||
verticalOffset: 40,
|
verticalOffset: 40,
|
||||||
child: FloatingActionButton(
|
child: FloatingActionButton(
|
||||||
@@ -231,14 +232,14 @@ class _DocumentDetailsPageState extends State<DocumentDetailsPage> {
|
|||||||
mainAxisAlignment: MainAxisAlignment.start,
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
IconButton(
|
IconButton(
|
||||||
tooltip: S.of(context).deleteDocumentTooltip,
|
tooltip: S.of(context)!.deleteDocumentTooltip,
|
||||||
icon: const Icon(Icons.delete),
|
icon: const Icon(Icons.delete),
|
||||||
onPressed: widget.allowEdit && isConnected
|
onPressed: widget.allowEdit && isConnected
|
||||||
? () => _onDelete(state.document)
|
? () => _onDelete(state.document)
|
||||||
: null,
|
: null,
|
||||||
).paddedSymmetrically(horizontal: 4),
|
).paddedSymmetrically(horizontal: 4),
|
||||||
Tooltip(
|
Tooltip(
|
||||||
message: S.of(context).downloadDocumentTooltip,
|
message: S.of(context)!.downloadDocumentTooltip,
|
||||||
child: DocumentDownloadButton(
|
child: DocumentDownloadButton(
|
||||||
document: state.document,
|
document: state.document,
|
||||||
enabled: isConnected,
|
enabled: isConnected,
|
||||||
@@ -246,18 +247,18 @@ class _DocumentDetailsPageState extends State<DocumentDetailsPage> {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
IconButton(
|
IconButton(
|
||||||
tooltip: S.of(context).previewTooltip,
|
tooltip: S.of(context)!.previewTooltip,
|
||||||
icon: const Icon(Icons.visibility),
|
icon: const Icon(Icons.visibility),
|
||||||
onPressed:
|
onPressed:
|
||||||
isConnected ? () => _onOpen(state.document) : null,
|
isConnected ? () => _onOpen(state.document) : null,
|
||||||
).paddedOnly(right: 4.0),
|
).paddedOnly(right: 4.0),
|
||||||
IconButton(
|
IconButton(
|
||||||
tooltip: S.of(context).openInSystemViewer,
|
tooltip: S.of(context)!.openInSystemViewer,
|
||||||
icon: const Icon(Icons.open_in_new),
|
icon: const Icon(Icons.open_in_new),
|
||||||
onPressed: isConnected ? _onOpenFileInSystemViewer : null,
|
onPressed: isConnected ? _onOpenFileInSystemViewer : null,
|
||||||
).paddedOnly(right: 4.0),
|
).paddedOnly(right: 4.0),
|
||||||
IconButton(
|
IconButton(
|
||||||
tooltip: S.of(context).shareTooltip,
|
tooltip: S.of(context)!.shareTooltip,
|
||||||
icon: const Icon(Icons.share),
|
icon: const Icon(Icons.share),
|
||||||
onPressed: isConnected
|
onPressed: isConnected
|
||||||
? () =>
|
? () =>
|
||||||
@@ -322,13 +323,14 @@ class _DocumentDetailsPageState extends State<DocumentDetailsPage> {
|
|||||||
await context.read<DocumentDetailsCubit>().openDocumentInSystemViewer();
|
await context.read<DocumentDetailsCubit>().openDocumentInSystemViewer();
|
||||||
if (status == ResultType.done) return;
|
if (status == ResultType.done) return;
|
||||||
if (status == ResultType.noAppToOpen) {
|
if (status == ResultType.noAppToOpen) {
|
||||||
showGenericError(context, S.of(context).noAppToDisplayPDFFilesFound);
|
showGenericError(context, S.of(context)!.noAppToDisplayPDFFilesFound);
|
||||||
}
|
}
|
||||||
if (status == ResultType.fileNotFound) {
|
if (status == ResultType.fileNotFound) {
|
||||||
showGenericError(context, translateError(context, ErrorCode.unknown));
|
showGenericError(context, translateError(context, ErrorCode.unknown));
|
||||||
}
|
}
|
||||||
if (status == ResultType.permissionDenied) {
|
if (status == ResultType.permissionDenied) {
|
||||||
showGenericError(context, S.of(context).couldNotOpenFilePermissionDenied);
|
showGenericError(
|
||||||
|
context, S.of(context)!.couldNotOpenFilePermissionDenied);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -342,7 +344,7 @@ class _DocumentDetailsPageState extends State<DocumentDetailsPage> {
|
|||||||
if (delete) {
|
if (delete) {
|
||||||
try {
|
try {
|
||||||
await context.read<DocumentDetailsCubit>().delete(document);
|
await context.read<DocumentDetailsCubit>().delete(document);
|
||||||
showSnackBar(context, S.of(context).documentSuccessfullyDeleted);
|
showSnackBar(context, S.of(context)!.documentSuccessfullyDeleted);
|
||||||
} on PaperlessServerException catch (error, stackTrace) {
|
} on PaperlessServerException catch (error, stackTrace) {
|
||||||
showErrorMessage(context, error, stackTrace);
|
showErrorMessage(context, error, stackTrace);
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import 'package:flutter_bloc/flutter_bloc.dart';
|
|||||||
import 'package:paperless_api/paperless_api.dart';
|
import 'package:paperless_api/paperless_api.dart';
|
||||||
import 'package:paperless_mobile/core/widgets/highlighted_text.dart';
|
import 'package:paperless_mobile/core/widgets/highlighted_text.dart';
|
||||||
import 'package:paperless_mobile/features/document_details/cubit/document_details_cubit.dart';
|
import 'package:paperless_mobile/features/document_details/cubit/document_details_cubit.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class DocumentContentWidget extends StatelessWidget {
|
class DocumentContentWidget extends StatelessWidget {
|
||||||
final bool isFullContentLoaded;
|
final bool isFullContentLoaded;
|
||||||
@@ -38,7 +38,7 @@ class DocumentContentWidget extends StatelessWidget {
|
|||||||
Align(
|
Align(
|
||||||
alignment: Alignment.bottomCenter,
|
alignment: Alignment.bottomCenter,
|
||||||
child: TextButton(
|
child: TextButton(
|
||||||
child: Text(S.of(context).loadFullContent),
|
child: Text(S.of(context)!.loadFullContent),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
context.read<DocumentDetailsCubit>().loadFullContent();
|
context.read<DocumentDetailsCubit>().loadFullContent();
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ import 'package:paperless_api/paperless_api.dart';
|
|||||||
import 'package:paperless_mobile/core/service/file_service.dart';
|
import 'package:paperless_mobile/core/service/file_service.dart';
|
||||||
import 'package:paperless_mobile/extensions/flutter_extensions.dart';
|
import 'package:paperless_mobile/extensions/flutter_extensions.dart';
|
||||||
import 'package:paperless_mobile/features/settings/view/widgets/radio_settings_dialog.dart';
|
import 'package:paperless_mobile/features/settings/view/widgets/radio_settings_dialog.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
import 'package:paperless_mobile/helpers/message_helpers.dart';
|
import 'package:paperless_mobile/helpers/message_helpers.dart';
|
||||||
import 'package:paperless_mobile/helpers/permission_helpers.dart';
|
import 'package:paperless_mobile/helpers/permission_helpers.dart';
|
||||||
import 'package:paperless_mobile/constants.dart';
|
import 'package:paperless_mobile/constants.dart';
|
||||||
@@ -53,15 +54,15 @@ class _DocumentDownloadButtonState extends State<DocumentDownloadButton> {
|
|||||||
final downloadOriginal = await showDialog<bool>(
|
final downloadOriginal = await showDialog<bool>(
|
||||||
context: context,
|
context: context,
|
||||||
builder: (context) => RadioSettingsDialog(
|
builder: (context) => RadioSettingsDialog(
|
||||||
titleText: S.of(context).chooseFiletype,
|
titleText: S.of(context)!.chooseFiletype,
|
||||||
options: [
|
options: [
|
||||||
RadioOption(
|
RadioOption(
|
||||||
value: true,
|
value: true,
|
||||||
label: S.of(context).original +
|
label: S.of(context)!.original +
|
||||||
" (${meta.originalMimeType.split("/").last})"),
|
" (${meta.originalMimeType.split("/").last})"),
|
||||||
RadioOption(
|
RadioOption(
|
||||||
value: false,
|
value: false,
|
||||||
label: S.of(context).archivedPdf,
|
label: S.of(context)!.archivedPdf,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
initialValue: false,
|
initialValue: false,
|
||||||
@@ -91,7 +92,7 @@ class _DocumentDownloadButtonState extends State<DocumentDownloadButton> {
|
|||||||
createdFile.createSync(recursive: true);
|
createdFile.createSync(recursive: true);
|
||||||
createdFile.writeAsBytesSync(bytes);
|
createdFile.writeAsBytesSync(bytes);
|
||||||
debugPrint("Downloaded file to $filePath");
|
debugPrint("Downloaded file to $filePath");
|
||||||
showSnackBar(context, S.of(context).documentSuccessfullyDownloaded);
|
showSnackBar(context, S.of(context)!.documentSuccessfullyDownloaded);
|
||||||
} on PaperlessServerException catch (error, stackTrace) {
|
} on PaperlessServerException catch (error, stackTrace) {
|
||||||
showErrorMessage(context, error, stackTrace);
|
showErrorMessage(context, error, stackTrace);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|||||||
@@ -7,7 +7,8 @@ import 'package:paperless_mobile/core/widgets/offline_widget.dart';
|
|||||||
import 'package:paperless_mobile/extensions/flutter_extensions.dart';
|
import 'package:paperless_mobile/extensions/flutter_extensions.dart';
|
||||||
import 'package:paperless_mobile/features/document_details/cubit/document_details_cubit.dart';
|
import 'package:paperless_mobile/features/document_details/cubit/document_details_cubit.dart';
|
||||||
import 'package:paperless_mobile/features/document_details/view/widgets/details_item.dart';
|
import 'package:paperless_mobile/features/document_details/view/widgets/details_item.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
import 'package:paperless_mobile/helpers/format_helpers.dart';
|
import 'package:paperless_mobile/helpers/format_helpers.dart';
|
||||||
import 'package:paperless_mobile/helpers/message_helpers.dart';
|
import 'package:paperless_mobile/helpers/message_helpers.dart';
|
||||||
|
|
||||||
@@ -44,39 +45,40 @@ class DocumentMetaDataWidget extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
children: [
|
children: [
|
||||||
DetailsItem(
|
DetailsItem(
|
||||||
label: S.of(context).archiveSerialNumber,
|
label: S.of(context)!.archiveSerialNumber,
|
||||||
content: document.archiveSerialNumber != null
|
content: document.archiveSerialNumber != null
|
||||||
? Text(document.archiveSerialNumber.toString())
|
? Text(document.archiveSerialNumber.toString())
|
||||||
: TextButton.icon(
|
: TextButton.icon(
|
||||||
icon: const Icon(Icons.archive_outlined),
|
icon: const Icon(Icons.archive_outlined),
|
||||||
label: Text(S.of(context).AssignAsn),
|
label: Text(S.of(context)!.assignAsn),
|
||||||
onPressed: connectivity.isConnected
|
onPressed: connectivity.isConnected
|
||||||
? () => _assignAsn(context)
|
? () => _assignAsn(context)
|
||||||
: null,
|
: null,
|
||||||
),
|
),
|
||||||
).paddedOnly(bottom: itemSpacing),
|
).paddedOnly(bottom: itemSpacing),
|
||||||
DetailsItem.text(DateFormat().format(document.modified),
|
DetailsItem.text(DateFormat().format(document.modified),
|
||||||
label: S.of(context).modifiedAt, context: context)
|
label: S.of(context)!.modifiedAt, context: context)
|
||||||
.paddedOnly(bottom: itemSpacing),
|
.paddedOnly(bottom: itemSpacing),
|
||||||
DetailsItem.text(DateFormat().format(document.added),
|
DetailsItem.text(DateFormat().format(document.added),
|
||||||
label: S.of(context).addedAt, context: context)
|
label: S.of(context)!.addedAt, context: context)
|
||||||
.paddedOnly(bottom: itemSpacing),
|
.paddedOnly(bottom: itemSpacing),
|
||||||
DetailsItem.text(
|
DetailsItem.text(
|
||||||
meta.mediaFilename,
|
meta.mediaFilename,
|
||||||
context: context,
|
context: context,
|
||||||
label: S.of(context).mediaFilename,
|
label: S.of(context)!.mediaFilename,
|
||||||
).paddedOnly(bottom: itemSpacing),
|
).paddedOnly(bottom: itemSpacing),
|
||||||
DetailsItem.text(
|
DetailsItem.text(
|
||||||
meta.originalChecksum,
|
meta.originalChecksum,
|
||||||
context: context,
|
context: context,
|
||||||
label: S.of(context).originalMD5Checksum,
|
label: S.of(context)!.originalMD5Checksum,
|
||||||
).paddedOnly(bottom: itemSpacing),
|
).paddedOnly(bottom: itemSpacing),
|
||||||
DetailsItem.text(formatBytes(meta.originalSize, 2),
|
DetailsItem.text(formatBytes(meta.originalSize, 2),
|
||||||
label: S.of(context).originalFileSize, context: context)
|
label: S.of(context)!.originalFileSize,
|
||||||
|
context: context)
|
||||||
.paddedOnly(bottom: itemSpacing),
|
.paddedOnly(bottom: itemSpacing),
|
||||||
DetailsItem.text(
|
DetailsItem.text(
|
||||||
meta.originalMimeType,
|
meta.originalMimeType,
|
||||||
label: S.of(context).originalMIMEType,
|
label: S.of(context)!.originalMIMEType,
|
||||||
context: context,
|
context: context,
|
||||||
).paddedOnly(bottom: itemSpacing),
|
).paddedOnly(bottom: itemSpacing),
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import 'package:paperless_mobile/features/document_details/view/widgets/details_
|
|||||||
import 'package:paperless_mobile/features/labels/storage_path/view/widgets/storage_path_widget.dart';
|
import 'package:paperless_mobile/features/labels/storage_path/view/widgets/storage_path_widget.dart';
|
||||||
import 'package:paperless_mobile/features/labels/tags/view/widgets/tags_widget.dart';
|
import 'package:paperless_mobile/features/labels/tags/view/widgets/tags_widget.dart';
|
||||||
import 'package:paperless_mobile/features/labels/view/widgets/label_text.dart';
|
import 'package:paperless_mobile/features/labels/view/widgets/label_text.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class DocumentOverviewWidget extends StatelessWidget {
|
class DocumentOverviewWidget extends StatelessWidget {
|
||||||
final DocumentModel document;
|
final DocumentModel document;
|
||||||
@@ -29,7 +29,7 @@ class DocumentOverviewWidget extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
children: [
|
children: [
|
||||||
DetailsItem(
|
DetailsItem(
|
||||||
label: S.of(context).title,
|
label: S.of(context)!.title,
|
||||||
content: HighlightedText(
|
content: HighlightedText(
|
||||||
text: document.title,
|
text: document.title,
|
||||||
highlights: queryString?.split(" ") ?? [],
|
highlights: queryString?.split(" ") ?? [],
|
||||||
@@ -39,12 +39,12 @@ class DocumentOverviewWidget extends StatelessWidget {
|
|||||||
DetailsItem.text(
|
DetailsItem.text(
|
||||||
DateFormat.yMMMMd().format(document.created),
|
DateFormat.yMMMMd().format(document.created),
|
||||||
context: context,
|
context: context,
|
||||||
label: S.of(context).createdAt,
|
label: S.of(context)!.createdAt,
|
||||||
).paddedOnly(bottom: itemSpacing),
|
).paddedOnly(bottom: itemSpacing),
|
||||||
Visibility(
|
Visibility(
|
||||||
visible: document.documentType != null,
|
visible: document.documentType != null,
|
||||||
child: DetailsItem(
|
child: DetailsItem(
|
||||||
label: S.of(context).documentType,
|
label: S.of(context)!.documentType,
|
||||||
content: LabelText<DocumentType>(
|
content: LabelText<DocumentType>(
|
||||||
style: Theme.of(context).textTheme.bodyLarge,
|
style: Theme.of(context).textTheme.bodyLarge,
|
||||||
id: document.documentType,
|
id: document.documentType,
|
||||||
@@ -54,7 +54,7 @@ class DocumentOverviewWidget extends StatelessWidget {
|
|||||||
Visibility(
|
Visibility(
|
||||||
visible: document.correspondent != null,
|
visible: document.correspondent != null,
|
||||||
child: DetailsItem(
|
child: DetailsItem(
|
||||||
label: S.of(context).correspondent,
|
label: S.of(context)!.correspondent,
|
||||||
content: LabelText<Correspondent>(
|
content: LabelText<Correspondent>(
|
||||||
style: Theme.of(context).textTheme.bodyLarge,
|
style: Theme.of(context).textTheme.bodyLarge,
|
||||||
id: document.correspondent,
|
id: document.correspondent,
|
||||||
@@ -64,7 +64,7 @@ class DocumentOverviewWidget extends StatelessWidget {
|
|||||||
Visibility(
|
Visibility(
|
||||||
visible: document.storagePath != null,
|
visible: document.storagePath != null,
|
||||||
child: DetailsItem(
|
child: DetailsItem(
|
||||||
label: S.of(context).storagePath,
|
label: S.of(context)!.storagePath,
|
||||||
content: StoragePathWidget(
|
content: StoragePathWidget(
|
||||||
pathId: document.storagePath,
|
pathId: document.storagePath,
|
||||||
),
|
),
|
||||||
@@ -73,7 +73,7 @@ class DocumentOverviewWidget extends StatelessWidget {
|
|||||||
Visibility(
|
Visibility(
|
||||||
visible: document.tags.isNotEmpty,
|
visible: document.tags.isNotEmpty,
|
||||||
child: DetailsItem(
|
child: DetailsItem(
|
||||||
label: S.of(context).tags,
|
label: S.of(context)!.tags,
|
||||||
content: Padding(
|
content: Padding(
|
||||||
padding: const EdgeInsets.only(top: 8.0),
|
padding: const EdgeInsets.only(top: 8.0),
|
||||||
child: TagsWidget(
|
child: TagsWidget(
|
||||||
|
|||||||
@@ -16,7 +16,8 @@ import 'package:paperless_mobile/features/edit_label/view/impl/add_document_type
|
|||||||
import 'package:paperless_mobile/features/edit_label/view/impl/add_storage_path_page.dart';
|
import 'package:paperless_mobile/features/edit_label/view/impl/add_storage_path_page.dart';
|
||||||
import 'package:paperless_mobile/features/labels/tags/view/widgets/tags_form_field.dart';
|
import 'package:paperless_mobile/features/labels/tags/view/widgets/tags_form_field.dart';
|
||||||
import 'package:paperless_mobile/features/labels/view/widgets/label_form_field.dart';
|
import 'package:paperless_mobile/features/labels/view/widgets/label_form_field.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
import 'package:paperless_mobile/helpers/message_helpers.dart';
|
import 'package:paperless_mobile/helpers/message_helpers.dart';
|
||||||
|
|
||||||
class DocumentEditPage extends StatefulWidget {
|
class DocumentEditPage extends StatefulWidget {
|
||||||
@@ -59,10 +60,10 @@ class _DocumentEditPageState extends State<DocumentEditPage> {
|
|||||||
floatingActionButton: FloatingActionButton.extended(
|
floatingActionButton: FloatingActionButton.extended(
|
||||||
onPressed: () => _onSubmit(state.document),
|
onPressed: () => _onSubmit(state.document),
|
||||||
icon: const Icon(Icons.save),
|
icon: const Icon(Icons.save),
|
||||||
label: Text(S.of(context).saveChanges),
|
label: Text(S.of(context)!.saveChanges),
|
||||||
),
|
),
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: Text(S.of(context).editDocument),
|
title: Text(S.of(context)!.editDocument),
|
||||||
bottom: _isSubmitLoading
|
bottom: _isSubmitLoading
|
||||||
? const PreferredSize(
|
? const PreferredSize(
|
||||||
preferredSize: Size.fromHeight(4),
|
preferredSize: Size.fromHeight(4),
|
||||||
@@ -159,7 +160,7 @@ class _DocumentEditPageState extends State<DocumentEditPage> {
|
|||||||
create: (context) => context.read<LabelRepository<StoragePath>>(),
|
create: (context) => context.read<LabelRepository<StoragePath>>(),
|
||||||
child: AddStoragePathPage(initalValue: initialValue),
|
child: AddStoragePathPage(initalValue: initialValue),
|
||||||
),
|
),
|
||||||
textFieldLabel: S.of(context).storagePath,
|
textFieldLabel: S.of(context)!.storagePath,
|
||||||
labelOptions: options,
|
labelOptions: options,
|
||||||
initialValue: IdQueryParameter.fromId(initialId),
|
initialValue: IdQueryParameter.fromId(initialId),
|
||||||
name: fkStoragePath,
|
name: fkStoragePath,
|
||||||
@@ -180,7 +181,7 @@ class _DocumentEditPageState extends State<DocumentEditPage> {
|
|||||||
create: (context) => context.read<LabelRepository<Correspondent>>(),
|
create: (context) => context.read<LabelRepository<Correspondent>>(),
|
||||||
child: AddCorrespondentPage(initialName: initialValue),
|
child: AddCorrespondentPage(initialName: initialValue),
|
||||||
),
|
),
|
||||||
textFieldLabel: S.of(context).correspondent,
|
textFieldLabel: S.of(context)!.correspondent,
|
||||||
labelOptions: options,
|
labelOptions: options,
|
||||||
initialValue: IdQueryParameter.fromId(initialId),
|
initialValue: IdQueryParameter.fromId(initialId),
|
||||||
name: fkCorrespondent,
|
name: fkCorrespondent,
|
||||||
@@ -214,7 +215,7 @@ class _DocumentEditPageState extends State<DocumentEditPage> {
|
|||||||
initialName: currentInput,
|
initialName: currentInput,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
textFieldLabel: S.of(context).documentType,
|
textFieldLabel: S.of(context)!.documentType,
|
||||||
initialValue: IdQueryParameter.fromId(initialId),
|
initialValue: IdQueryParameter.fromId(initialId),
|
||||||
labelOptions: options,
|
labelOptions: options,
|
||||||
name: fkDocumentType,
|
name: fkDocumentType,
|
||||||
@@ -249,7 +250,7 @@ class _DocumentEditPageState extends State<DocumentEditPage> {
|
|||||||
});
|
});
|
||||||
try {
|
try {
|
||||||
await context.read<DocumentEditCubit>().updateDocument(mergedDocument);
|
await context.read<DocumentEditCubit>().updateDocument(mergedDocument);
|
||||||
showSnackBar(context, S.of(context).documentSuccessfullyUpdated);
|
showSnackBar(context, S.of(context)!.documentSuccessfullyUpdated);
|
||||||
} on PaperlessServerException catch (error, stackTrace) {
|
} on PaperlessServerException catch (error, stackTrace) {
|
||||||
showErrorMessage(context, error, stackTrace);
|
showErrorMessage(context, error, stackTrace);
|
||||||
} finally {
|
} finally {
|
||||||
@@ -266,7 +267,7 @@ class _DocumentEditPageState extends State<DocumentEditPage> {
|
|||||||
name: fkTitle,
|
name: fkTitle,
|
||||||
validator: FormBuilderValidators.required(),
|
validator: FormBuilderValidators.required(),
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
label: Text(S.of(context).title),
|
label: Text(S.of(context)!.title),
|
||||||
),
|
),
|
||||||
initialValue: initialTitle,
|
initialValue: initialTitle,
|
||||||
);
|
);
|
||||||
@@ -281,7 +282,7 @@ class _DocumentEditPageState extends State<DocumentEditPage> {
|
|||||||
name: fkCreatedDate,
|
name: fkCreatedDate,
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
prefixIcon: const Icon(Icons.calendar_month_outlined),
|
prefixIcon: const Icon(Icons.calendar_month_outlined),
|
||||||
label: Text(S.of(context).createdAt),
|
label: Text(S.of(context)!.createdAt),
|
||||||
),
|
),
|
||||||
initialValue: initialCreatedAtDate,
|
initialValue: initialCreatedAtDate,
|
||||||
format: DateFormat.yMMMMd(),
|
format: DateFormat.yMMMMd(),
|
||||||
@@ -311,7 +312,7 @@ class _DocumentEditPageState extends State<DocumentEditPage> {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
S.of(context).suggestions,
|
S.of(context)!.suggestions,
|
||||||
style: Theme.of(context).textTheme.bodySmall,
|
style: Theme.of(context).textTheme.bodySmall,
|
||||||
),
|
),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
|
|||||||
@@ -23,7 +23,8 @@ import 'package:paperless_mobile/features/document_scan/cubit/document_scanner_c
|
|||||||
import 'package:paperless_mobile/features/document_scan/view/widgets/scanned_image_item.dart';
|
import 'package:paperless_mobile/features/document_scan/view/widgets/scanned_image_item.dart';
|
||||||
import 'package:paperless_mobile/features/search_app_bar/view/search_app_bar.dart';
|
import 'package:paperless_mobile/features/search_app_bar/view/search_app_bar.dart';
|
||||||
import 'package:paperless_mobile/features/tasks/cubit/task_status_cubit.dart';
|
import 'package:paperless_mobile/features/tasks/cubit/task_status_cubit.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
import 'package:paperless_mobile/helpers/file_helpers.dart';
|
import 'package:paperless_mobile/helpers/file_helpers.dart';
|
||||||
import 'package:paperless_mobile/helpers/message_helpers.dart';
|
import 'package:paperless_mobile/helpers/message_helpers.dart';
|
||||||
import 'package:paperless_mobile/helpers/permission_helpers.dart';
|
import 'package:paperless_mobile/helpers/permission_helpers.dart';
|
||||||
@@ -72,7 +73,7 @@ class _ScannerPageState extends State<ScannerPage>
|
|||||||
state.isEmpty ? const NeverScrollableScrollPhysics() : null,
|
state.isEmpty ? const NeverScrollableScrollPhysics() : null,
|
||||||
slivers: [
|
slivers: [
|
||||||
SearchAppBar(
|
SearchAppBar(
|
||||||
hintText: S.of(context).searchDocuments,
|
hintText: S.of(context)!.searchDocuments,
|
||||||
onOpenSearch: showDocumentSearchPage,
|
onOpenSearch: showDocumentSearchPage,
|
||||||
bottom: PreferredSize(
|
bottom: PreferredSize(
|
||||||
child: _buildActions(connectedState.isConnected),
|
child: _buildActions(connectedState.isConnected),
|
||||||
@@ -97,7 +98,7 @@ class _ScannerPageState extends State<ScannerPage>
|
|||||||
floatHeaderSlivers: false,
|
floatHeaderSlivers: false,
|
||||||
headerSliverBuilder: (context, innerBoxIsScrolled) => [
|
headerSliverBuilder: (context, innerBoxIsScrolled) => [
|
||||||
SearchAppBar(
|
SearchAppBar(
|
||||||
hintText: S.of(context).searchDocuments,
|
hintText: S.of(context)!.searchDocuments,
|
||||||
onOpenSearch: showDocumentSearchPage,
|
onOpenSearch: showDocumentSearchPage,
|
||||||
bottom: PreferredSize(
|
bottom: PreferredSize(
|
||||||
child: _buildActions(connectedState.isConnected),
|
child: _buildActions(connectedState.isConnected),
|
||||||
@@ -134,7 +135,7 @@ class _ScannerPageState extends State<ScannerPage>
|
|||||||
BlocBuilder<DocumentScannerCubit, List<File>>(
|
BlocBuilder<DocumentScannerCubit, List<File>>(
|
||||||
builder: (context, state) {
|
builder: (context, state) {
|
||||||
return TextButton.icon(
|
return TextButton.icon(
|
||||||
label: Text(S.of(context).previewScan),
|
label: Text(S.of(context)!.previewScan),
|
||||||
onPressed: state.isNotEmpty
|
onPressed: state.isNotEmpty
|
||||||
? () => Navigator.of(context).push(
|
? () => Navigator.of(context).push(
|
||||||
MaterialPageRoute(
|
MaterialPageRoute(
|
||||||
@@ -154,7 +155,7 @@ class _ScannerPageState extends State<ScannerPage>
|
|||||||
BlocBuilder<DocumentScannerCubit, List<File>>(
|
BlocBuilder<DocumentScannerCubit, List<File>>(
|
||||||
builder: (context, state) {
|
builder: (context, state) {
|
||||||
return TextButton.icon(
|
return TextButton.icon(
|
||||||
label: Text(S.of(context).clearAll),
|
label: Text(S.of(context)!.clearAll),
|
||||||
onPressed: state.isEmpty ? null : () => _reset(context),
|
onPressed: state.isEmpty ? null : () => _reset(context),
|
||||||
icon: const Icon(Icons.delete_sweep_outlined),
|
icon: const Icon(Icons.delete_sweep_outlined),
|
||||||
);
|
);
|
||||||
@@ -163,7 +164,7 @@ class _ScannerPageState extends State<ScannerPage>
|
|||||||
BlocBuilder<DocumentScannerCubit, List<File>>(
|
BlocBuilder<DocumentScannerCubit, List<File>>(
|
||||||
builder: (context, state) {
|
builder: (context, state) {
|
||||||
return TextButton.icon(
|
return TextButton.icon(
|
||||||
label: Text(S.of(context).upload),
|
label: Text(S.of(context)!.upload),
|
||||||
onPressed: state.isEmpty || !isConnected
|
onPressed: state.isEmpty || !isConnected
|
||||||
? null
|
? null
|
||||||
: () => _onPrepareDocumentUpload(context),
|
: () => _onPrepareDocumentUpload(context),
|
||||||
@@ -247,16 +248,16 @@ class _ScannerPageState extends State<ScannerPage>
|
|||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
S.of(context).noDocumentsScannedYet,
|
S.of(context)!.noDocumentsScannedYet,
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
),
|
),
|
||||||
TextButton(
|
TextButton(
|
||||||
child: Text(S.of(context).scanADocument),
|
child: Text(S.of(context)!.scanADocument),
|
||||||
onPressed: () => _openDocumentScanner(context),
|
onPressed: () => _openDocumentScanner(context),
|
||||||
),
|
),
|
||||||
Text(S.of(context).or),
|
Text(S.of(context)!.or),
|
||||||
TextButton(
|
TextButton(
|
||||||
child: Text(S.of(context).uploadADocumentFromThisDevice),
|
child: Text(S.of(context)!.uploadADocumentFromThisDevice),
|
||||||
onPressed: isConnected ? _onUploadFromFilesystem : null,
|
onPressed: isConnected ? _onUploadFromFilesystem : null,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
import 'package:photo_view/photo_view.dart';
|
import 'package:photo_view/photo_view.dart';
|
||||||
|
|
||||||
typedef DeleteCallback = void Function();
|
typedef DeleteCallback = void Function();
|
||||||
@@ -112,7 +113,7 @@ class _ScannedImageItemState extends State<ScannedImageItem> {
|
|||||||
builder: (context) => Scaffold(
|
builder: (context) => Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: Text(
|
title: Text(
|
||||||
"${S.of(context).scan} ${widget.index + 1}/${widget.totalNumberOfFiles}"),
|
"${S.of(context)!.scan} ${widget.index + 1}/${widget.totalNumberOfFiles}"),
|
||||||
),
|
),
|
||||||
body: PhotoView(imageProvider: FileImage(widget.file)),
|
body: PhotoView(imageProvider: FileImage(widget.file)),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -7,7 +7,8 @@ import 'package:paperless_mobile/extensions/flutter_extensions.dart';
|
|||||||
import 'package:paperless_mobile/features/document_search/cubit/document_search_cubit.dart';
|
import 'package:paperless_mobile/features/document_search/cubit/document_search_cubit.dart';
|
||||||
import 'package:paperless_mobile/features/document_search/view/remove_history_entry_dialog.dart';
|
import 'package:paperless_mobile/features/document_search/view/remove_history_entry_dialog.dart';
|
||||||
import 'package:paperless_mobile/features/documents/view/widgets/adaptive_documents_view.dart';
|
import 'package:paperless_mobile/features/documents/view/widgets/adaptive_documents_view.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
import 'package:paperless_mobile/routes/document_details_route.dart';
|
import 'package:paperless_mobile/routes/document_details_route.dart';
|
||||||
import 'dart:math' as math;
|
import 'dart:math' as math;
|
||||||
|
|
||||||
@@ -60,7 +61,7 @@ class _DocumentSearchPageState extends State<DocumentSearchPage> {
|
|||||||
hintStyle: theme.textTheme.bodyLarge?.apply(
|
hintStyle: theme.textTheme.bodyLarge?.apply(
|
||||||
color: theme.colorScheme.onSurfaceVariant,
|
color: theme.colorScheme.onSurfaceVariant,
|
||||||
),
|
),
|
||||||
hintText: S.of(context).searchDocuments,
|
hintText: S.of(context)!.searchDocuments,
|
||||||
border: InputBorder.none,
|
border: InputBorder.none,
|
||||||
),
|
),
|
||||||
controller: _queryController,
|
controller: _queryController,
|
||||||
@@ -181,7 +182,7 @@ class _DocumentSearchPageState extends State<DocumentSearchPage> {
|
|||||||
|
|
||||||
Widget _buildResultsView(DocumentSearchState state) {
|
Widget _buildResultsView(DocumentSearchState state) {
|
||||||
final header = Text(
|
final header = Text(
|
||||||
S.of(context).results,
|
S.of(context)!.results,
|
||||||
style: Theme.of(context).textTheme.labelSmall,
|
style: Theme.of(context).textTheme.labelSmall,
|
||||||
).padded();
|
).padded();
|
||||||
return CustomScrollView(
|
return CustomScrollView(
|
||||||
@@ -190,7 +191,7 @@ class _DocumentSearchPageState extends State<DocumentSearchPage> {
|
|||||||
if (state.hasLoaded && !state.isLoading && state.documents.isEmpty)
|
if (state.hasLoaded && !state.isLoading && state.documents.isEmpty)
|
||||||
SliverToBoxAdapter(
|
SliverToBoxAdapter(
|
||||||
child: Center(
|
child: Center(
|
||||||
child: Text(S.of(context).noMatchesFound),
|
child: Text(S.of(context)!.noMatchesFound),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:paperless_mobile/core/widgets/dialog_utils/dialog_cancel_button.dart';
|
import 'package:paperless_mobile/core/widgets/dialog_utils/dialog_cancel_button.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class RemoveHistoryEntryDialog extends StatelessWidget {
|
class RemoveHistoryEntryDialog extends StatelessWidget {
|
||||||
final String entry;
|
final String entry;
|
||||||
@@ -10,11 +10,11 @@ class RemoveHistoryEntryDialog extends StatelessWidget {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return AlertDialog(
|
return AlertDialog(
|
||||||
title: Text(entry),
|
title: Text(entry),
|
||||||
content: Text(S.of(context).removeQueryFromSearchHistory),
|
content: Text(S.of(context)!.removeQueryFromSearchHistory),
|
||||||
actions: [
|
actions: [
|
||||||
const DialogCancelButton(),
|
const DialogCancelButton(),
|
||||||
TextButton(
|
TextButton(
|
||||||
child: Text(S.of(context).remove),
|
child: Text(S.of(context)!.remove),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
Navigator.pop(context, true);
|
Navigator.pop(context, true);
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ import 'package:paperless_mobile/features/edit_label/view/impl/add_correspondent
|
|||||||
import 'package:paperless_mobile/features/edit_label/view/impl/add_document_type_page.dart';
|
import 'package:paperless_mobile/features/edit_label/view/impl/add_document_type_page.dart';
|
||||||
import 'package:paperless_mobile/features/labels/tags/view/widgets/tags_form_field.dart';
|
import 'package:paperless_mobile/features/labels/tags/view/widgets/tags_form_field.dart';
|
||||||
import 'package:paperless_mobile/features/labels/view/widgets/label_form_field.dart';
|
import 'package:paperless_mobile/features/labels/view/widgets/label_form_field.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
import 'package:paperless_mobile/helpers/message_helpers.dart';
|
import 'package:paperless_mobile/helpers/message_helpers.dart';
|
||||||
|
|
||||||
class DocumentUploadPreparationPage extends StatefulWidget {
|
class DocumentUploadPreparationPage extends StatefulWidget {
|
||||||
@@ -62,7 +63,7 @@ class _DocumentUploadPreparationPageState
|
|||||||
return Scaffold(
|
return Scaffold(
|
||||||
resizeToAvoidBottomInset: true,
|
resizeToAvoidBottomInset: true,
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: Text(S.of(context).prepareDocument),
|
title: Text(S.of(context)!.prepareDocument),
|
||||||
bottom: _isUploadLoading
|
bottom: _isUploadLoading
|
||||||
? const PreferredSize(
|
? const PreferredSize(
|
||||||
child: LinearProgressIndicator(),
|
child: LinearProgressIndicator(),
|
||||||
@@ -73,7 +74,7 @@ class _DocumentUploadPreparationPageState
|
|||||||
visible: MediaQuery.of(context).viewInsets.bottom == 0,
|
visible: MediaQuery.of(context).viewInsets.bottom == 0,
|
||||||
child: FloatingActionButton.extended(
|
child: FloatingActionButton.extended(
|
||||||
onPressed: _onSubmit,
|
onPressed: _onSubmit,
|
||||||
label: Text(S.of(context).upload),
|
label: Text(S.of(context)!.upload),
|
||||||
icon: const Icon(Icons.upload),
|
icon: const Icon(Icons.upload),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -91,7 +92,7 @@ class _DocumentUploadPreparationPageState
|
|||||||
widget.title ?? "scan_${fileNameDateFormat.format(_now)}",
|
widget.title ?? "scan_${fileNameDateFormat.format(_now)}",
|
||||||
validator: FormBuilderValidators.required(),
|
validator: FormBuilderValidators.required(),
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
labelText: S.of(context).title,
|
labelText: S.of(context)!.title,
|
||||||
suffixIcon: IconButton(
|
suffixIcon: IconButton(
|
||||||
icon: const Icon(Icons.close),
|
icon: const Icon(Icons.close),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
@@ -121,7 +122,7 @@ class _DocumentUploadPreparationPageState
|
|||||||
enabled: !_syncTitleAndFilename,
|
enabled: !_syncTitleAndFilename,
|
||||||
name: fkFileName,
|
name: fkFileName,
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
labelText: S.of(context).fileName,
|
labelText: S.of(context)!.fileName,
|
||||||
suffixText: widget.fileExtension,
|
suffixText: widget.fileExtension,
|
||||||
suffixIcon: IconButton(
|
suffixIcon: IconButton(
|
||||||
icon: const Icon(Icons.clear),
|
icon: const Icon(Icons.clear),
|
||||||
@@ -151,7 +152,7 @@ class _DocumentUploadPreparationPageState
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
title: Text(
|
title: Text(
|
||||||
S.of(context).synchronizeTitleAndFilename,
|
S.of(context)!.synchronizeTitleAndFilename,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
// Created at
|
// Created at
|
||||||
@@ -166,7 +167,7 @@ class _DocumentUploadPreparationPageState
|
|||||||
},
|
},
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
prefixIcon: const Icon(Icons.calendar_month_outlined),
|
prefixIcon: const Icon(Icons.calendar_month_outlined),
|
||||||
labelText: S.of(context).createdAt + " *",
|
labelText: S.of(context)!.createdAt + " *",
|
||||||
suffixIcon: _showDatePickerDeleteIcon
|
suffixIcon: _showDatePickerDeleteIcon
|
||||||
? IconButton(
|
? IconButton(
|
||||||
icon: const Icon(Icons.close),
|
icon: const Icon(Icons.close),
|
||||||
@@ -189,7 +190,7 @@ class _DocumentUploadPreparationPageState
|
|||||||
context.read<LabelRepository<Correspondent>>(),
|
context.read<LabelRepository<Correspondent>>(),
|
||||||
child: AddCorrespondentPage(initialName: initialName),
|
child: AddCorrespondentPage(initialName: initialName),
|
||||||
),
|
),
|
||||||
textFieldLabel: S.of(context).correspondent + " *",
|
textFieldLabel: S.of(context)!.correspondent + " *",
|
||||||
name: DocumentModel.correspondentKey,
|
name: DocumentModel.correspondentKey,
|
||||||
labelOptions: state.correspondents,
|
labelOptions: state.correspondents,
|
||||||
prefixIcon: const Icon(Icons.person_outline),
|
prefixIcon: const Icon(Icons.person_outline),
|
||||||
@@ -204,7 +205,7 @@ class _DocumentUploadPreparationPageState
|
|||||||
context.read<LabelRepository<DocumentType>>(),
|
context.read<LabelRepository<DocumentType>>(),
|
||||||
child: AddDocumentTypePage(initialName: initialName),
|
child: AddDocumentTypePage(initialName: initialName),
|
||||||
),
|
),
|
||||||
textFieldLabel: S.of(context).documentType + " *",
|
textFieldLabel: S.of(context)!.documentType + " *",
|
||||||
name: DocumentModel.documentTypeKey,
|
name: DocumentModel.documentTypeKey,
|
||||||
labelOptions: state.documentTypes,
|
labelOptions: state.documentTypes,
|
||||||
prefixIcon: const Icon(Icons.description_outlined),
|
prefixIcon: const Icon(Icons.description_outlined),
|
||||||
@@ -218,7 +219,7 @@ class _DocumentUploadPreparationPageState
|
|||||||
//Label: "Tags" + " *",
|
//Label: "Tags" + " *",
|
||||||
),
|
),
|
||||||
Text(
|
Text(
|
||||||
"* " + S.of(context).uploadInferValuesHint,
|
"* " + S.of(context)!.uploadInferValuesHint,
|
||||||
style: Theme.of(context).textTheme.bodySmall,
|
style: Theme.of(context).textTheme.bodySmall,
|
||||||
),
|
),
|
||||||
SizedBox(height: 300),
|
SizedBox(height: 300),
|
||||||
@@ -258,7 +259,7 @@ class _DocumentUploadPreparationPageState
|
|||||||
createdAt: createdAt,
|
createdAt: createdAt,
|
||||||
);
|
);
|
||||||
showSnackBar(
|
showSnackBar(
|
||||||
context, S.of(context).documentSuccessfullyUploadedProcessing);
|
context, S.of(context)!.documentSuccessfullyUploadedProcessing);
|
||||||
Navigator.pop(context, taskId);
|
Navigator.pop(context, taskId);
|
||||||
} on PaperlessServerException catch (error, stackTrace) {
|
} on PaperlessServerException catch (error, stackTrace) {
|
||||||
showErrorMessage(context, error, stackTrace);
|
showErrorMessage(context, error, stackTrace);
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
import 'package:pdfx/pdfx.dart';
|
import 'package:pdfx/pdfx.dart';
|
||||||
|
|
||||||
class DocumentView extends StatefulWidget {
|
class DocumentView extends StatefulWidget {
|
||||||
@@ -32,7 +33,7 @@ class _DocumentViewState extends State<DocumentView> {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: Text(S.of(context).preview),
|
title: Text(S.of(context)!.preview),
|
||||||
),
|
),
|
||||||
body: PdfView(
|
body: PdfView(
|
||||||
builders: PdfViewBuilders<DefaultBuilderOptions>(
|
builders: PdfViewBuilders<DefaultBuilderOptions>(
|
||||||
|
|||||||
@@ -20,7 +20,8 @@ import 'package:paperless_mobile/features/saved_view/view/add_saved_view_page.da
|
|||||||
import 'package:paperless_mobile/features/saved_view/view/saved_view_list.dart';
|
import 'package:paperless_mobile/features/saved_view/view/saved_view_list.dart';
|
||||||
import 'package:paperless_mobile/features/search_app_bar/view/search_app_bar.dart';
|
import 'package:paperless_mobile/features/search_app_bar/view/search_app_bar.dart';
|
||||||
import 'package:paperless_mobile/features/tasks/cubit/task_status_cubit.dart';
|
import 'package:paperless_mobile/features/tasks/cubit/task_status_cubit.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
import 'package:paperless_mobile/helpers/message_helpers.dart';
|
import 'package:paperless_mobile/helpers/message_helpers.dart';
|
||||||
import 'package:paperless_mobile/routes/document_details_route.dart';
|
import 'package:paperless_mobile/routes/document_details_route.dart';
|
||||||
|
|
||||||
@@ -112,9 +113,9 @@ class _DocumentsPageState extends State<DocumentsPage>
|
|||||||
listener: (context, state) {
|
listener: (context, state) {
|
||||||
showSnackBar(
|
showSnackBar(
|
||||||
context,
|
context,
|
||||||
S.of(context).newDocumentAvailable,
|
S.of(context)!.newDocumentAvailable,
|
||||||
action: SnackBarActionConfig(
|
action: SnackBarActionConfig(
|
||||||
label: S.of(context).reload,
|
label: S.of(context)!.reload,
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
context.read<TaskStatusCubit>().acknowledgeCurrentTask();
|
context.read<TaskStatusCubit>().acknowledgeCurrentTask();
|
||||||
context.read<DocumentsCubit>().reload();
|
context.read<DocumentsCubit>().reload();
|
||||||
@@ -200,7 +201,7 @@ class _DocumentsPageState extends State<DocumentsPage>
|
|||||||
.resetSelection(),
|
.resetSelection(),
|
||||||
),
|
),
|
||||||
title: Text(
|
title: Text(
|
||||||
"${state.selection.length} ${S.of(context).countSelected}",
|
"${state.selection.length} ${S.of(context)!.countSelected}",
|
||||||
),
|
),
|
||||||
actions: [
|
actions: [
|
||||||
IconButton(
|
IconButton(
|
||||||
@@ -211,13 +212,13 @@ class _DocumentsPageState extends State<DocumentsPage>
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
return SearchAppBar(
|
return SearchAppBar(
|
||||||
hintText: S.of(context).searchDocuments,
|
hintText: S.of(context)!.searchDocuments,
|
||||||
onOpenSearch: showDocumentSearchPage,
|
onOpenSearch: showDocumentSearchPage,
|
||||||
bottom: TabBar(
|
bottom: TabBar(
|
||||||
controller: _tabController,
|
controller: _tabController,
|
||||||
tabs: [
|
tabs: [
|
||||||
Tab(text: S.of(context).documents),
|
Tab(text: S.of(context)!.documents),
|
||||||
Tab(text: S.of(context).views),
|
Tab(text: S.of(context)!.views),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
@@ -293,7 +294,7 @@ class _DocumentsPageState extends State<DocumentsPage>
|
|||||||
_nestedScrollViewKey.currentState?.outerController.jumpTo(0);
|
_nestedScrollViewKey.currentState?.outerController.jumpTo(0);
|
||||||
},
|
},
|
||||||
label: Text(
|
label: Text(
|
||||||
S.of(context).scrollToTop,
|
S.of(context)!.scrollToTop,
|
||||||
style: DefaultTextStyle.of(context).style.apply(
|
style: DefaultTextStyle.of(context).style.apply(
|
||||||
color: Theme.of(context).colorScheme.onPrimary,
|
color: Theme.of(context).colorScheme.onPrimary,
|
||||||
),
|
),
|
||||||
@@ -408,7 +409,7 @@ class _DocumentsPageState extends State<DocumentsPage>
|
|||||||
.bulkDelete(documentsState.selection);
|
.bulkDelete(documentsState.selection);
|
||||||
showSnackBar(
|
showSnackBar(
|
||||||
context,
|
context,
|
||||||
S.of(context).documentsSuccessfullyDeleted,
|
S.of(context)!.documentsSuccessfullyDeleted,
|
||||||
);
|
);
|
||||||
context.read<DocumentsCubit>().resetSelection();
|
context.read<DocumentsCubit>().resetSelection();
|
||||||
} on PaperlessServerException catch (error, stackTrace) {
|
} on PaperlessServerException catch (error, stackTrace) {
|
||||||
|
|||||||
@@ -220,7 +220,7 @@ class DefaultAdaptiveDocumentsView extends AdaptiveDocumentsView {
|
|||||||
|
|
||||||
Widget _buildListView() {
|
Widget _buildListView() {
|
||||||
if (showLoadingPlaceholder) {
|
if (showLoadingPlaceholder) {
|
||||||
return DocumentsListLoadingWidget();
|
return const DocumentsListLoadingWidget();
|
||||||
}
|
}
|
||||||
|
|
||||||
return ListView.builder(
|
return ListView.builder(
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:paperless_api/paperless_api.dart';
|
import 'package:paperless_api/paperless_api.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class DeleteDocumentConfirmationDialog extends StatelessWidget {
|
class DeleteDocumentConfirmationDialog extends StatelessWidget {
|
||||||
final DocumentModel document;
|
final DocumentModel document;
|
||||||
@@ -9,12 +9,12 @@ class DeleteDocumentConfirmationDialog extends StatelessWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return AlertDialog(
|
return AlertDialog(
|
||||||
title: Text(S.of(context).confirmDeletion),
|
title: Text(S.of(context)!.confirmDeletion),
|
||||||
content: Column(
|
content: Column(
|
||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
S.of(context).areYouSureYouWantToDeleteTheFollowingDocuments(1),
|
S.of(context)!.areYouSureYouWantToDeleteTheFollowingDocuments(1),
|
||||||
),
|
),
|
||||||
const SizedBox(height: 16),
|
const SizedBox(height: 16),
|
||||||
Text(
|
Text(
|
||||||
@@ -26,13 +26,13 @@ class DeleteDocumentConfirmationDialog extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
const SizedBox(height: 16),
|
const SizedBox(height: 16),
|
||||||
Text(S.of(context).thisActionIsIrreversibleDoYouWishToProceedAnyway),
|
Text(S.of(context)!.thisActionIsIrreversibleDoYouWishToProceedAnyway),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
actions: [
|
actions: [
|
||||||
TextButton(
|
TextButton(
|
||||||
onPressed: () => Navigator.pop(context, false),
|
onPressed: () => Navigator.pop(context, false),
|
||||||
child: Text(S.of(context).cancel),
|
child: Text(S.of(context)!.cancel),
|
||||||
),
|
),
|
||||||
TextButton(
|
TextButton(
|
||||||
style: ButtonStyle(
|
style: ButtonStyle(
|
||||||
@@ -42,7 +42,7 @@ class DeleteDocumentConfirmationDialog extends StatelessWidget {
|
|||||||
onPressed: () {
|
onPressed: () {
|
||||||
Navigator.pop(context, true);
|
Navigator.pop(context, true);
|
||||||
},
|
},
|
||||||
child: Text(S.of(context).delete),
|
child: Text(S.of(context)!.delete),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import 'package:paperless_api/paperless_api.dart';
|
|||||||
import 'package:paperless_mobile/core/widgets/empty_state.dart';
|
import 'package:paperless_mobile/core/widgets/empty_state.dart';
|
||||||
import 'package:paperless_mobile/extensions/flutter_extensions.dart';
|
import 'package:paperless_mobile/extensions/flutter_extensions.dart';
|
||||||
import 'package:paperless_mobile/features/paged_document_view/cubit/paged_documents_state.dart';
|
import 'package:paperless_mobile/features/paged_document_view/cubit/paged_documents_state.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class DocumentsEmptyState extends StatelessWidget {
|
class DocumentsEmptyState extends StatelessWidget {
|
||||||
final DocumentPagingState state;
|
final DocumentPagingState state;
|
||||||
@@ -18,13 +18,13 @@ class DocumentsEmptyState extends StatelessWidget {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Center(
|
return Center(
|
||||||
child: EmptyState(
|
child: EmptyState(
|
||||||
title: S.of(context).oops,
|
title: S.of(context)!.oops,
|
||||||
subtitle: S.of(context).thereSeemsToBeNothingHere,
|
subtitle: S.of(context)!.thereSeemsToBeNothingHere,
|
||||||
bottomChild: state.filter != DocumentFilter.initial && onReset != null
|
bottomChild: state.filter != DocumentFilter.initial && onReset != null
|
||||||
? TextButton(
|
? TextButton(
|
||||||
onPressed: onReset,
|
onPressed: onReset,
|
||||||
child: Text(
|
child: Text(
|
||||||
S.of(context).resetFilter,
|
S.of(context)!.resetFilter,
|
||||||
),
|
),
|
||||||
).padded()
|
).padded()
|
||||||
: null,
|
: null,
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ class DocumentsListLoadingWidget extends StatelessWidget {
|
|||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
return ListView.builder(
|
return ListView.builder(
|
||||||
|
padding: EdgeInsets.zero,
|
||||||
physics: const NeverScrollableScrollPhysics(),
|
physics: const NeverScrollableScrollPhysics(),
|
||||||
itemBuilder: (context, index) => _buildFakeListItem(context),
|
itemBuilder: (context, index) => _buildFakeListItem(context),
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import 'package:paperless_mobile/core/widgets/form_builder_fields/extended_date_
|
|||||||
import 'package:paperless_mobile/features/labels/cubit/label_cubit.dart';
|
import 'package:paperless_mobile/features/labels/cubit/label_cubit.dart';
|
||||||
import 'package:paperless_mobile/features/labels/tags/view/widgets/tags_form_field.dart';
|
import 'package:paperless_mobile/features/labels/tags/view/widgets/tags_form_field.dart';
|
||||||
import 'package:paperless_mobile/features/labels/view/widgets/label_form_field.dart';
|
import 'package:paperless_mobile/features/labels/view/widgets/label_form_field.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
import 'text_query_form_field.dart';
|
import 'text_query_form_field.dart';
|
||||||
|
|
||||||
@@ -96,14 +96,14 @@ class _DocumentFilterFormState extends State<DocumentFilterForm> {
|
|||||||
Align(
|
Align(
|
||||||
alignment: Alignment.centerLeft,
|
alignment: Alignment.centerLeft,
|
||||||
child: Text(
|
child: Text(
|
||||||
S.of(context).advanced,
|
S.of(context)!.advanced,
|
||||||
style: Theme.of(context).textTheme.bodySmall,
|
style: Theme.of(context).textTheme.bodySmall,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
FormBuilderExtendedDateRangePicker(
|
FormBuilderExtendedDateRangePicker(
|
||||||
name: DocumentFilterForm.fkCreatedAt,
|
name: DocumentFilterForm.fkCreatedAt,
|
||||||
initialValue: widget.initialFilter.created,
|
initialValue: widget.initialFilter.created,
|
||||||
labelText: S.of(context).createdAt,
|
labelText: S.of(context)!.createdAt,
|
||||||
onChanged: (_) {
|
onChanged: (_) {
|
||||||
_checkQueryConstraints();
|
_checkQueryConstraints();
|
||||||
},
|
},
|
||||||
@@ -111,7 +111,7 @@ class _DocumentFilterFormState extends State<DocumentFilterForm> {
|
|||||||
FormBuilderExtendedDateRangePicker(
|
FormBuilderExtendedDateRangePicker(
|
||||||
name: DocumentFilterForm.fkAddedAt,
|
name: DocumentFilterForm.fkAddedAt,
|
||||||
initialValue: widget.initialFilter.added,
|
initialValue: widget.initialFilter.added,
|
||||||
labelText: S.of(context).addedAt,
|
labelText: S.of(context)!.addedAt,
|
||||||
onChanged: (_) {
|
onChanged: (_) {
|
||||||
_checkQueryConstraints();
|
_checkQueryConstraints();
|
||||||
},
|
},
|
||||||
@@ -151,7 +151,7 @@ class _DocumentFilterFormState extends State<DocumentFilterForm> {
|
|||||||
formBuilderState: widget.formKey.currentState,
|
formBuilderState: widget.formKey.currentState,
|
||||||
name: DocumentFilterForm.fkDocumentType,
|
name: DocumentFilterForm.fkDocumentType,
|
||||||
labelOptions: state.labels,
|
labelOptions: state.labels,
|
||||||
textFieldLabel: S.of(context).documentType,
|
textFieldLabel: S.of(context)!.documentType,
|
||||||
initialValue: widget.initialFilter.documentType,
|
initialValue: widget.initialFilter.documentType,
|
||||||
prefixIcon: const Icon(Icons.description_outlined),
|
prefixIcon: const Icon(Icons.description_outlined),
|
||||||
);
|
);
|
||||||
@@ -166,7 +166,7 @@ class _DocumentFilterFormState extends State<DocumentFilterForm> {
|
|||||||
formBuilderState: widget.formKey.currentState,
|
formBuilderState: widget.formKey.currentState,
|
||||||
name: DocumentFilterForm.fkCorrespondent,
|
name: DocumentFilterForm.fkCorrespondent,
|
||||||
labelOptions: state.labels,
|
labelOptions: state.labels,
|
||||||
textFieldLabel: S.of(context).correspondent,
|
textFieldLabel: S.of(context)!.correspondent,
|
||||||
initialValue: widget.initialFilter.correspondent,
|
initialValue: widget.initialFilter.correspondent,
|
||||||
prefixIcon: const Icon(Icons.person_outline),
|
prefixIcon: const Icon(Icons.person_outline),
|
||||||
);
|
);
|
||||||
@@ -181,7 +181,7 @@ class _DocumentFilterFormState extends State<DocumentFilterForm> {
|
|||||||
formBuilderState: widget.formKey.currentState,
|
formBuilderState: widget.formKey.currentState,
|
||||||
name: DocumentFilterForm.fkStoragePath,
|
name: DocumentFilterForm.fkStoragePath,
|
||||||
labelOptions: state.labels,
|
labelOptions: state.labels,
|
||||||
textFieldLabel: S.of(context).storagePath,
|
textFieldLabel: S.of(context)!.storagePath,
|
||||||
initialValue: widget.initialFilter.storagePath,
|
initialValue: widget.initialFilter.storagePath,
|
||||||
prefixIcon: const Icon(Icons.folder_outlined),
|
prefixIcon: const Icon(Icons.folder_outlined),
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import 'package:flutter_form_builder/flutter_form_builder.dart';
|
|||||||
import 'package:paperless_api/paperless_api.dart';
|
import 'package:paperless_api/paperless_api.dart';
|
||||||
import 'package:paperless_mobile/features/documents/view/pages/documents_page.dart';
|
import 'package:paperless_mobile/features/documents/view/pages/documents_page.dart';
|
||||||
import 'package:paperless_mobile/features/documents/view/widgets/search/document_filter_form.dart';
|
import 'package:paperless_mobile/features/documents/view/widgets/search/document_filter_form.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
enum DateRangeSelection { before, after }
|
enum DateRangeSelection { before, after }
|
||||||
|
|
||||||
@@ -74,7 +74,7 @@ class _DocumentFilterPanelState extends State<DocumentFilterPanel> {
|
|||||||
visible: MediaQuery.of(context).viewInsets.bottom == 0,
|
visible: MediaQuery.of(context).viewInsets.bottom == 0,
|
||||||
child: FloatingActionButton.extended(
|
child: FloatingActionButton.extended(
|
||||||
icon: const Icon(Icons.done),
|
icon: const Icon(Icons.done),
|
||||||
label: Text(S.of(context).apply),
|
label: Text(S.of(context)!.apply),
|
||||||
onPressed: _onApplyFilter,
|
onPressed: _onApplyFilter,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -85,7 +85,7 @@ class _DocumentFilterPanelState extends State<DocumentFilterPanel> {
|
|||||||
TextButton.icon(
|
TextButton.icon(
|
||||||
onPressed: _resetFilter,
|
onPressed: _resetFilter,
|
||||||
icon: const Icon(Icons.refresh),
|
icon: const Icon(Icons.refresh),
|
||||||
label: Text(S.of(context).reset),
|
label: Text(S.of(context)!.reset),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@@ -133,7 +133,7 @@ class _DocumentFilterPanelState extends State<DocumentFilterPanel> {
|
|||||||
),
|
),
|
||||||
Padding(
|
Padding(
|
||||||
padding: EdgeInsets.only(left: _heightAnimationValue * 48),
|
padding: EdgeInsets.only(left: _heightAnimationValue * 48),
|
||||||
child: Text(S.of(context).filterDocuments),
|
child: Text(S.of(context)!.filterDocuments),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import 'package:paperless_api/paperless_api.dart';
|
|||||||
import 'package:paperless_mobile/core/translation/sort_field_localization_mapper.dart';
|
import 'package:paperless_mobile/core/translation/sort_field_localization_mapper.dart';
|
||||||
import 'package:paperless_mobile/extensions/flutter_extensions.dart';
|
import 'package:paperless_mobile/extensions/flutter_extensions.dart';
|
||||||
import 'package:paperless_mobile/features/labels/cubit/label_cubit.dart';
|
import 'package:paperless_mobile/features/labels/cubit/label_cubit.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class SortFieldSelectionBottomSheet extends StatefulWidget {
|
class SortFieldSelectionBottomSheet extends StatefulWidget {
|
||||||
final SortOrder initialSortOrder;
|
final SortOrder initialSortOrder;
|
||||||
@@ -48,12 +48,12 @@ class _SortFieldSelectionBottomSheetState
|
|||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
S.of(context).orderBy,
|
S.of(context)!.orderBy,
|
||||||
style: Theme.of(context).textTheme.bodySmall,
|
style: Theme.of(context).textTheme.bodySmall,
|
||||||
textAlign: TextAlign.start,
|
textAlign: TextAlign.start,
|
||||||
),
|
),
|
||||||
TextButton(
|
TextButton(
|
||||||
child: Text(S.of(context).apply),
|
child: Text(S.of(context)!.apply),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
widget.onSubmit(
|
widget.onSubmit(
|
||||||
_currentSortField,
|
_currentSortField,
|
||||||
@@ -105,12 +105,12 @@ class _SortFieldSelectionBottomSheetState
|
|||||||
ButtonSegment(
|
ButtonSegment(
|
||||||
icon: const FaIcon(FontAwesomeIcons.arrowDownAZ),
|
icon: const FaIcon(FontAwesomeIcons.arrowDownAZ),
|
||||||
value: SortOrder.descending,
|
value: SortOrder.descending,
|
||||||
label: Text(S.of(context).descending),
|
label: Text(S.of(context)!.descending),
|
||||||
),
|
),
|
||||||
ButtonSegment(
|
ButtonSegment(
|
||||||
icon: const FaIcon(FontAwesomeIcons.arrowUpZA),
|
icon: const FaIcon(FontAwesomeIcons.arrowUpZA),
|
||||||
value: SortOrder.ascending,
|
value: SortOrder.ascending,
|
||||||
label: Text(S.of(context).ascending),
|
label: Text(S.of(context)!.ascending),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
emptySelectionAllowed: false,
|
emptySelectionAllowed: false,
|
||||||
|
|||||||
@@ -3,7 +3,8 @@ import 'package:flutter_form_builder/flutter_form_builder.dart';
|
|||||||
import 'package:paperless_api/paperless_api.dart';
|
import 'package:paperless_api/paperless_api.dart';
|
||||||
import 'package:paperless_mobile/core/widgets/form_builder_fields/form_builder_type_ahead.dart';
|
import 'package:paperless_mobile/core/widgets/form_builder_fields/form_builder_type_ahead.dart';
|
||||||
import 'package:paperless_mobile/features/documents/cubit/documents_cubit.dart';
|
import 'package:paperless_mobile/features/documents/cubit/documents_cubit.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
class TextQueryFormField extends StatelessWidget {
|
class TextQueryFormField extends StatelessWidget {
|
||||||
@@ -63,19 +64,19 @@ class TextQueryFormField extends StatelessWidget {
|
|||||||
itemBuilder: (context) => [
|
itemBuilder: (context) => [
|
||||||
PopupMenuItem(
|
PopupMenuItem(
|
||||||
child: ListTile(
|
child: ListTile(
|
||||||
title: Text(S.of(context).titleAndContent),
|
title: Text(S.of(context)!.titleAndContent),
|
||||||
),
|
),
|
||||||
value: QueryType.titleAndContent,
|
value: QueryType.titleAndContent,
|
||||||
),
|
),
|
||||||
PopupMenuItem(
|
PopupMenuItem(
|
||||||
child: ListTile(
|
child: ListTile(
|
||||||
title: Text(S.of(context).title),
|
title: Text(S.of(context)!.title),
|
||||||
),
|
),
|
||||||
value: QueryType.title,
|
value: QueryType.title,
|
||||||
),
|
),
|
||||||
PopupMenuItem(
|
PopupMenuItem(
|
||||||
child: ListTile(
|
child: ListTile(
|
||||||
title: Text(S.of(context).extended),
|
title: Text(S.of(context)!.extended),
|
||||||
),
|
),
|
||||||
value: QueryType.extended,
|
value: QueryType.extended,
|
||||||
),
|
),
|
||||||
@@ -89,11 +90,11 @@ class TextQueryFormField extends StatelessWidget {
|
|||||||
String _buildLabelText(BuildContext context, QueryType queryType) {
|
String _buildLabelText(BuildContext context, QueryType queryType) {
|
||||||
switch (queryType) {
|
switch (queryType) {
|
||||||
case QueryType.title:
|
case QueryType.title:
|
||||||
return S.of(context).title;
|
return S.of(context)!.title;
|
||||||
case QueryType.titleAndContent:
|
case QueryType.titleAndContent:
|
||||||
return S.of(context).titleAndContent;
|
return S.of(context)!.titleAndContent;
|
||||||
case QueryType.extended:
|
case QueryType.extended:
|
||||||
return S.of(context).extended;
|
return S.of(context)!.extended;
|
||||||
default:
|
default:
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:paperless_api/paperless_api.dart';
|
import 'package:paperless_api/paperless_api.dart';
|
||||||
import 'package:paperless_mobile/features/documents/cubit/documents_cubit.dart';
|
import 'package:paperless_mobile/features/documents/cubit/documents_cubit.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class BulkDeleteConfirmationDialog extends StatelessWidget {
|
class BulkDeleteConfirmationDialog extends StatelessWidget {
|
||||||
final DocumentsState state;
|
final DocumentsState state;
|
||||||
@@ -14,24 +14,24 @@ class BulkDeleteConfirmationDialog extends StatelessWidget {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
assert(state.selection.isNotEmpty);
|
assert(state.selection.isNotEmpty);
|
||||||
return AlertDialog(
|
return AlertDialog(
|
||||||
title: Text(S.of(context).confirmDeletion),
|
title: Text(S.of(context)!.confirmDeletion),
|
||||||
content: Column(
|
content: Column(
|
||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
S.of(context).areYouSureYouWantToDeleteTheFollowingDocuments(
|
S.of(context)!.areYouSureYouWantToDeleteTheFollowingDocuments(
|
||||||
state.selection.length),
|
state.selection.length),
|
||||||
),
|
),
|
||||||
const SizedBox(height: 16),
|
const SizedBox(height: 16),
|
||||||
...state.selection.map(_buildBulletPoint).toList(),
|
...state.selection.map(_buildBulletPoint).toList(),
|
||||||
const SizedBox(height: 16),
|
const SizedBox(height: 16),
|
||||||
Text(S.of(context).thisActionIsIrreversibleDoYouWishToProceedAnyway),
|
Text(S.of(context)!.thisActionIsIrreversibleDoYouWishToProceedAnyway),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
actions: [
|
actions: [
|
||||||
TextButton(
|
TextButton(
|
||||||
onPressed: () => Navigator.pop(context, false),
|
onPressed: () => Navigator.pop(context, false),
|
||||||
child: Text(S.of(context).cancel),
|
child: Text(S.of(context)!.cancel),
|
||||||
),
|
),
|
||||||
TextButton(
|
TextButton(
|
||||||
style: ButtonStyle(
|
style: ButtonStyle(
|
||||||
@@ -41,7 +41,7 @@ class BulkDeleteConfirmationDialog extends StatelessWidget {
|
|||||||
onPressed: () {
|
onPressed: () {
|
||||||
Navigator.pop(context, true);
|
Navigator.pop(context, true);
|
||||||
},
|
},
|
||||||
child: Text(S.of(context).delete),
|
child: Text(S.of(context)!.delete),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:paperless_api/paperless_api.dart';
|
import 'package:paperless_api/paperless_api.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class ConfirmDeleteSavedViewDialog extends StatelessWidget {
|
class ConfirmDeleteSavedViewDialog extends StatelessWidget {
|
||||||
const ConfirmDeleteSavedViewDialog({
|
const ConfirmDeleteSavedViewDialog({
|
||||||
@@ -14,18 +14,18 @@ class ConfirmDeleteSavedViewDialog extends StatelessWidget {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return AlertDialog(
|
return AlertDialog(
|
||||||
title: Text(
|
title: Text(
|
||||||
S.of(context).deleteView + view.name + "?",
|
S.of(context)!.deleteView + view.name + "?",
|
||||||
softWrap: true,
|
softWrap: true,
|
||||||
),
|
),
|
||||||
content: Text(S.of(context).doYouReallyWantToDeleteThisView),
|
content: Text(S.of(context)!.doYouReallyWantToDeleteThisView),
|
||||||
actions: [
|
actions: [
|
||||||
TextButton(
|
TextButton(
|
||||||
child: Text(S.of(context).cancel),
|
child: Text(S.of(context)!.cancel),
|
||||||
onPressed: () => Navigator.pop(context, false),
|
onPressed: () => Navigator.pop(context, false),
|
||||||
),
|
),
|
||||||
TextButton(
|
TextButton(
|
||||||
child: Text(
|
child: Text(
|
||||||
S.of(context).delete,
|
S.of(context)!.delete,
|
||||||
style: TextStyle(color: Theme.of(context).colorScheme.error),
|
style: TextStyle(color: Theme.of(context).colorScheme.error),
|
||||||
),
|
),
|
||||||
onPressed: () => Navigator.pop(context, true),
|
onPressed: () => Navigator.pop(context, true),
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:paperless_mobile/features/settings/model/view_type.dart';
|
import 'package:paperless_mobile/features/settings/model/view_type.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
/// Meant to be used with blocbuilder.
|
/// Meant to be used with blocbuilder.
|
||||||
class ViewTypeSelectionWidget extends StatelessWidget {
|
class ViewTypeSelectionWidget extends StatelessWidget {
|
||||||
@@ -34,19 +34,19 @@ class ViewTypeSelectionWidget extends StatelessWidget {
|
|||||||
_buildViewTypeOption(
|
_buildViewTypeOption(
|
||||||
context,
|
context,
|
||||||
type: ViewType.list,
|
type: ViewType.list,
|
||||||
label: S.of(context).list,
|
label: S.of(context)!.list,
|
||||||
icon: Icons.list,
|
icon: Icons.list,
|
||||||
),
|
),
|
||||||
_buildViewTypeOption(
|
_buildViewTypeOption(
|
||||||
context,
|
context,
|
||||||
type: ViewType.grid,
|
type: ViewType.grid,
|
||||||
label: S.of(context).grid,
|
label: S.of(context)!.grid,
|
||||||
icon: Icons.grid_view_rounded,
|
icon: Icons.grid_view_rounded,
|
||||||
),
|
),
|
||||||
_buildViewTypeOption(
|
_buildViewTypeOption(
|
||||||
context,
|
context,
|
||||||
type: ViewType.detailed,
|
type: ViewType.detailed,
|
||||||
label: S.of(context).detailed,
|
label: S.of(context)!.detailed,
|
||||||
icon: Icons.article_outlined,
|
icon: Icons.article_outlined,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import 'package:paperless_mobile/core/repository/label_repository.dart';
|
|||||||
import 'package:paperless_mobile/core/repository/state/indexed_repository_state.dart';
|
import 'package:paperless_mobile/core/repository/state/indexed_repository_state.dart';
|
||||||
import 'package:paperless_mobile/features/edit_label/cubit/edit_label_cubit.dart';
|
import 'package:paperless_mobile/features/edit_label/cubit/edit_label_cubit.dart';
|
||||||
import 'package:paperless_mobile/features/edit_label/view/label_form.dart';
|
import 'package:paperless_mobile/features/edit_label/view/label_form.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class AddLabelPage<T extends Label> extends StatelessWidget {
|
class AddLabelPage<T extends Label> extends StatelessWidget {
|
||||||
final String? initialName;
|
final String? initialName;
|
||||||
@@ -62,7 +62,7 @@ class AddLabelFormWidget<T extends Label> extends StatelessWidget {
|
|||||||
fromJsonT: fromJsonT,
|
fromJsonT: fromJsonT,
|
||||||
submitButtonConfig: SubmitButtonConfig<T>(
|
submitButtonConfig: SubmitButtonConfig<T>(
|
||||||
icon: const Icon(Icons.add),
|
icon: const Icon(Icons.add),
|
||||||
label: Text(S.of(context).create),
|
label: Text(S.of(context)!.create),
|
||||||
onSubmit: context.read<EditLabelCubit<T>>().create,
|
onSubmit: context.read<EditLabelCubit<T>>().create,
|
||||||
),
|
),
|
||||||
additionalFields: additionalFields,
|
additionalFields: additionalFields,
|
||||||
|
|||||||
@@ -8,7 +8,8 @@ import 'package:paperless_mobile/core/repository/label_repository.dart';
|
|||||||
import 'package:paperless_mobile/core/repository/state/indexed_repository_state.dart';
|
import 'package:paperless_mobile/core/repository/state/indexed_repository_state.dart';
|
||||||
import 'package:paperless_mobile/features/edit_label/cubit/edit_label_cubit.dart';
|
import 'package:paperless_mobile/features/edit_label/cubit/edit_label_cubit.dart';
|
||||||
import 'package:paperless_mobile/features/edit_label/view/label_form.dart';
|
import 'package:paperless_mobile/features/edit_label/view/label_form.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
import 'package:paperless_mobile/helpers/message_helpers.dart';
|
import 'package:paperless_mobile/helpers/message_helpers.dart';
|
||||||
import 'package:paperless_mobile/constants.dart';
|
import 'package:paperless_mobile/constants.dart';
|
||||||
|
|
||||||
@@ -55,7 +56,7 @@ class EditLabelForm<T extends Label> extends StatelessWidget {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: Text(S.of(context).edit),
|
title: Text(S.of(context)!.edit),
|
||||||
actions: [
|
actions: [
|
||||||
IconButton(
|
IconButton(
|
||||||
onPressed: () => _onDelete(context),
|
onPressed: () => _onDelete(context),
|
||||||
@@ -68,7 +69,7 @@ class EditLabelForm<T extends Label> extends StatelessWidget {
|
|||||||
fromJsonT: fromJsonT,
|
fromJsonT: fromJsonT,
|
||||||
submitButtonConfig: SubmitButtonConfig<T>(
|
submitButtonConfig: SubmitButtonConfig<T>(
|
||||||
icon: const Icon(Icons.save),
|
icon: const Icon(Icons.save),
|
||||||
label: Text(S.of(context).saveChanges),
|
label: Text(S.of(context)!.saveChanges),
|
||||||
onSubmit: context.read<EditLabelCubit<T>>().update,
|
onSubmit: context.read<EditLabelCubit<T>>().update,
|
||||||
),
|
),
|
||||||
additionalFields: additionalFields,
|
additionalFields: additionalFields,
|
||||||
@@ -81,21 +82,21 @@ class EditLabelForm<T extends Label> extends StatelessWidget {
|
|||||||
final shouldDelete = await showDialog<bool>(
|
final shouldDelete = await showDialog<bool>(
|
||||||
context: context,
|
context: context,
|
||||||
builder: (context) => AlertDialog(
|
builder: (context) => AlertDialog(
|
||||||
title: Text(S.of(context).confirmDeletion),
|
title: Text(S.of(context)!.confirmDeletion),
|
||||||
content: Text(
|
content: Text(
|
||||||
S.of(context).deleteLabelWarningText,
|
S.of(context)!.deleteLabelWarningText,
|
||||||
),
|
),
|
||||||
actions: [
|
actions: [
|
||||||
TextButton(
|
TextButton(
|
||||||
onPressed: () => Navigator.pop(context, false),
|
onPressed: () => Navigator.pop(context, false),
|
||||||
child: Text(S.of(context).cancel),
|
child: Text(S.of(context)!.cancel),
|
||||||
),
|
),
|
||||||
TextButton(
|
TextButton(
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
Navigator.pop(context, true);
|
Navigator.pop(context, true);
|
||||||
},
|
},
|
||||||
child: Text(
|
child: Text(
|
||||||
S.of(context).delete,
|
S.of(context)!.delete,
|
||||||
style:
|
style:
|
||||||
TextStyle(color: Theme.of(context).colorScheme.error),
|
TextStyle(color: Theme.of(context).colorScheme.error),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import 'package:paperless_mobile/core/repository/label_repository.dart';
|
|||||||
import 'package:paperless_mobile/core/repository/state/impl/correspondent_repository_state.dart';
|
import 'package:paperless_mobile/core/repository/state/impl/correspondent_repository_state.dart';
|
||||||
import 'package:paperless_mobile/features/edit_label/cubit/edit_label_cubit.dart';
|
import 'package:paperless_mobile/features/edit_label/cubit/edit_label_cubit.dart';
|
||||||
import 'package:paperless_mobile/features/edit_label/view/add_label_page.dart';
|
import 'package:paperless_mobile/features/edit_label/view/add_label_page.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class AddCorrespondentPage extends StatelessWidget {
|
class AddCorrespondentPage extends StatelessWidget {
|
||||||
final String? initialName;
|
final String? initialName;
|
||||||
@@ -18,7 +18,7 @@ class AddCorrespondentPage extends StatelessWidget {
|
|||||||
context.read<LabelRepository<Correspondent>>(),
|
context.read<LabelRepository<Correspondent>>(),
|
||||||
),
|
),
|
||||||
child: AddLabelPage<Correspondent>(
|
child: AddLabelPage<Correspondent>(
|
||||||
pageTitle: Text(S.of(context).addCorrespondent),
|
pageTitle: Text(S.of(context)!.addCorrespondent),
|
||||||
fromJsonT: Correspondent.fromJson,
|
fromJsonT: Correspondent.fromJson,
|
||||||
initialName: initialName,
|
initialName: initialName,
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import 'package:paperless_mobile/core/repository/label_repository.dart';
|
|||||||
import 'package:paperless_mobile/core/repository/state/impl/document_type_repository_state.dart';
|
import 'package:paperless_mobile/core/repository/state/impl/document_type_repository_state.dart';
|
||||||
import 'package:paperless_mobile/features/edit_label/cubit/edit_label_cubit.dart';
|
import 'package:paperless_mobile/features/edit_label/cubit/edit_label_cubit.dart';
|
||||||
import 'package:paperless_mobile/features/edit_label/view/add_label_page.dart';
|
import 'package:paperless_mobile/features/edit_label/view/add_label_page.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class AddDocumentTypePage extends StatelessWidget {
|
class AddDocumentTypePage extends StatelessWidget {
|
||||||
final String? initialName;
|
final String? initialName;
|
||||||
@@ -21,7 +21,7 @@ class AddDocumentTypePage extends StatelessWidget {
|
|||||||
context.read<LabelRepository<DocumentType>>(),
|
context.read<LabelRepository<DocumentType>>(),
|
||||||
),
|
),
|
||||||
child: AddLabelPage<DocumentType>(
|
child: AddLabelPage<DocumentType>(
|
||||||
pageTitle: Text(S.of(context).addDocumentType),
|
pageTitle: Text(S.of(context)!.addDocumentType),
|
||||||
fromJsonT: DocumentType.fromJson,
|
fromJsonT: DocumentType.fromJson,
|
||||||
initialName: initialName,
|
initialName: initialName,
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import 'package:paperless_mobile/core/repository/state/impl/storage_path_reposit
|
|||||||
import 'package:paperless_mobile/features/edit_label/cubit/edit_label_cubit.dart';
|
import 'package:paperless_mobile/features/edit_label/cubit/edit_label_cubit.dart';
|
||||||
import 'package:paperless_mobile/features/edit_label/view/add_label_page.dart';
|
import 'package:paperless_mobile/features/edit_label/view/add_label_page.dart';
|
||||||
import 'package:paperless_mobile/features/labels/storage_path/view/widgets/storage_path_autofill_form_builder_field.dart';
|
import 'package:paperless_mobile/features/labels/storage_path/view/widgets/storage_path_autofill_form_builder_field.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class AddStoragePathPage extends StatelessWidget {
|
class AddStoragePathPage extends StatelessWidget {
|
||||||
final String? initalValue;
|
final String? initalValue;
|
||||||
@@ -19,7 +19,7 @@ class AddStoragePathPage extends StatelessWidget {
|
|||||||
context.read<LabelRepository<StoragePath>>(),
|
context.read<LabelRepository<StoragePath>>(),
|
||||||
),
|
),
|
||||||
child: AddLabelPage<StoragePath>(
|
child: AddLabelPage<StoragePath>(
|
||||||
pageTitle: Text(S.of(context).addStoragePath),
|
pageTitle: Text(S.of(context)!.addStoragePath),
|
||||||
fromJsonT: StoragePath.fromJson,
|
fromJsonT: StoragePath.fromJson,
|
||||||
initialName: initalValue,
|
initialName: initalValue,
|
||||||
additionalFields: const [
|
additionalFields: const [
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import 'package:paperless_mobile/core/repository/state/impl/tag_repository_state
|
|||||||
import 'package:paperless_mobile/core/widgets/form_builder_fields/form_builder_color_picker.dart';
|
import 'package:paperless_mobile/core/widgets/form_builder_fields/form_builder_color_picker.dart';
|
||||||
import 'package:paperless_mobile/features/edit_label/cubit/edit_label_cubit.dart';
|
import 'package:paperless_mobile/features/edit_label/cubit/edit_label_cubit.dart';
|
||||||
import 'package:paperless_mobile/features/edit_label/view/add_label_page.dart';
|
import 'package:paperless_mobile/features/edit_label/view/add_label_page.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class AddTagPage extends StatelessWidget {
|
class AddTagPage extends StatelessWidget {
|
||||||
final String? initialValue;
|
final String? initialValue;
|
||||||
@@ -22,7 +22,7 @@ class AddTagPage extends StatelessWidget {
|
|||||||
context.read<LabelRepository<Tag>>(),
|
context.read<LabelRepository<Tag>>(),
|
||||||
),
|
),
|
||||||
child: AddLabelPage<Tag>(
|
child: AddLabelPage<Tag>(
|
||||||
pageTitle: Text(S.of(context).addTag),
|
pageTitle: Text(S.of(context)!.addTag),
|
||||||
fromJsonT: Tag.fromJson,
|
fromJsonT: Tag.fromJson,
|
||||||
initialName: initialValue,
|
initialName: initialValue,
|
||||||
additionalFields: [
|
additionalFields: [
|
||||||
@@ -30,7 +30,7 @@ class AddTagPage extends StatelessWidget {
|
|||||||
name: Tag.colorKey,
|
name: Tag.colorKey,
|
||||||
valueTransformer: (color) => "#${color?.value.toRadixString(16)}",
|
valueTransformer: (color) => "#${color?.value.toRadixString(16)}",
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
label: Text(S.of(context).color),
|
label: Text(S.of(context)!.color),
|
||||||
),
|
),
|
||||||
colorPickerType: ColorPickerType.materialPicker,
|
colorPickerType: ColorPickerType.materialPicker,
|
||||||
initialValue: Color((Random().nextDouble() * 0xFFFFFF).toInt())
|
initialValue: Color((Random().nextDouble() * 0xFFFFFF).toInt())
|
||||||
@@ -38,7 +38,7 @@ class AddTagPage extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
FormBuilderCheckbox(
|
FormBuilderCheckbox(
|
||||||
name: Tag.isInboxTagKey,
|
name: Tag.isInboxTagKey,
|
||||||
title: Text(S.of(context).inboxTag),
|
title: Text(S.of(context)!.inboxTag),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import 'package:paperless_mobile/core/repository/state/impl/tag_repository_state
|
|||||||
import 'package:paperless_mobile/core/widgets/form_builder_fields/form_builder_color_picker.dart';
|
import 'package:paperless_mobile/core/widgets/form_builder_fields/form_builder_color_picker.dart';
|
||||||
import 'package:paperless_mobile/features/edit_label/cubit/edit_label_cubit.dart';
|
import 'package:paperless_mobile/features/edit_label/cubit/edit_label_cubit.dart';
|
||||||
import 'package:paperless_mobile/features/edit_label/view/edit_label_page.dart';
|
import 'package:paperless_mobile/features/edit_label/view/edit_label_page.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class EditTagPage extends StatelessWidget {
|
class EditTagPage extends StatelessWidget {
|
||||||
final Tag tag;
|
final Tag tag;
|
||||||
@@ -28,14 +28,14 @@ class EditTagPage extends StatelessWidget {
|
|||||||
initialValue: tag.color,
|
initialValue: tag.color,
|
||||||
name: Tag.colorKey,
|
name: Tag.colorKey,
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
label: Text(S.of(context).color),
|
label: Text(S.of(context)!.color),
|
||||||
),
|
),
|
||||||
colorPickerType: ColorPickerType.blockPicker,
|
colorPickerType: ColorPickerType.blockPicker,
|
||||||
),
|
),
|
||||||
FormBuilderCheckbox(
|
FormBuilderCheckbox(
|
||||||
initialValue: tag.isInboxTag,
|
initialValue: tag.isInboxTag,
|
||||||
name: Tag.isInboxTagKey,
|
name: Tag.isInboxTagKey,
|
||||||
title: Text(S.of(context).inboxTag),
|
title: Text(S.of(context)!.inboxTag),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ import 'package:paperless_api/paperless_api.dart';
|
|||||||
import 'package:paperless_mobile/core/translation/matching_algorithm_localization_mapper.dart';
|
import 'package:paperless_mobile/core/translation/matching_algorithm_localization_mapper.dart';
|
||||||
import 'package:paperless_mobile/core/type/types.dart';
|
import 'package:paperless_mobile/core/type/types.dart';
|
||||||
import 'package:paperless_mobile/extensions/flutter_extensions.dart';
|
import 'package:paperless_mobile/extensions/flutter_extensions.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
import 'package:paperless_mobile/helpers/message_helpers.dart';
|
import 'package:paperless_mobile/helpers/message_helpers.dart';
|
||||||
import 'package:paperless_mobile/constants.dart';
|
import 'package:paperless_mobile/constants.dart';
|
||||||
|
|
||||||
@@ -75,7 +76,7 @@ class _LabelFormState<T extends Label> extends State<LabelForm<T>> {
|
|||||||
FormBuilderTextField(
|
FormBuilderTextField(
|
||||||
name: Label.nameKey,
|
name: Label.nameKey,
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
labelText: S.of(context).name,
|
labelText: S.of(context)!.name,
|
||||||
errorText: _errors[Label.nameKey],
|
errorText: _errors[Label.nameKey],
|
||||||
),
|
),
|
||||||
validator: FormBuilderValidators.required(),
|
validator: FormBuilderValidators.required(),
|
||||||
@@ -88,7 +89,7 @@ class _LabelFormState<T extends Label> extends State<LabelForm<T>> {
|
|||||||
MatchingAlgorithm.defaultValue)
|
MatchingAlgorithm.defaultValue)
|
||||||
.value,
|
.value,
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
labelText: S.of(context).matchingAlgorithm,
|
labelText: S.of(context)!.matchingAlgorithm,
|
||||||
errorText: _errors[Label.matchingAlgorithmKey],
|
errorText: _errors[Label.matchingAlgorithmKey],
|
||||||
),
|
),
|
||||||
onChanged: (val) {
|
onChanged: (val) {
|
||||||
@@ -112,7 +113,7 @@ class _LabelFormState<T extends Label> extends State<LabelForm<T>> {
|
|||||||
FormBuilderTextField(
|
FormBuilderTextField(
|
||||||
name: Label.matchKey,
|
name: Label.matchKey,
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
labelText: S.of(context).match,
|
labelText: S.of(context)!.match,
|
||||||
errorText: _errors[Label.matchKey],
|
errorText: _errors[Label.matchKey],
|
||||||
),
|
),
|
||||||
initialValue: widget.initialValue?.match,
|
initialValue: widget.initialValue?.match,
|
||||||
@@ -121,7 +122,7 @@ class _LabelFormState<T extends Label> extends State<LabelForm<T>> {
|
|||||||
FormBuilderCheckbox(
|
FormBuilderCheckbox(
|
||||||
name: Label.isInsensitiveKey,
|
name: Label.isInsensitiveKey,
|
||||||
initialValue: widget.initialValue?.isInsensitive ?? true,
|
initialValue: widget.initialValue?.isInsensitive ?? true,
|
||||||
title: Text(S.of(context).caseIrrelevant),
|
title: Text(S.of(context)!.caseIrrelevant),
|
||||||
),
|
),
|
||||||
...widget.additionalFields,
|
...widget.additionalFields,
|
||||||
].padded(),
|
].padded(),
|
||||||
|
|||||||
@@ -28,7 +28,8 @@ import 'package:paperless_mobile/features/notifications/services/local_notificat
|
|||||||
import 'package:paperless_mobile/features/saved_view/cubit/saved_view_cubit.dart';
|
import 'package:paperless_mobile/features/saved_view/cubit/saved_view_cubit.dart';
|
||||||
import 'package:paperless_mobile/features/sharing/share_intent_queue.dart';
|
import 'package:paperless_mobile/features/sharing/share_intent_queue.dart';
|
||||||
import 'package:paperless_mobile/features/tasks/cubit/task_status_cubit.dart';
|
import 'package:paperless_mobile/features/tasks/cubit/task_status_cubit.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
import 'package:paperless_mobile/helpers/file_helpers.dart';
|
import 'package:paperless_mobile/helpers/file_helpers.dart';
|
||||||
import 'package:paperless_mobile/helpers/message_helpers.dart';
|
import 'package:paperless_mobile/helpers/message_helpers.dart';
|
||||||
import 'package:path/path.dart' as p;
|
import 'package:path/path.dart' as p;
|
||||||
@@ -177,13 +178,13 @@ class _HomePageState extends State<HomePage> with WidgetsBindingObserver {
|
|||||||
false;
|
false;
|
||||||
if (success) {
|
if (success) {
|
||||||
await Fluttertoast.showToast(
|
await Fluttertoast.showToast(
|
||||||
msg: S.of(context).documentSuccessfullyUploadedProcessing,
|
msg: S.of(context)!.documentSuccessfullyUploadedProcessing,
|
||||||
);
|
);
|
||||||
SystemNavigator.pop();
|
SystemNavigator.pop();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Fluttertoast.showToast(
|
Fluttertoast.showToast(
|
||||||
msg: S.of(context).couldNotAccessReceivedFile,
|
msg: S.of(context)!.couldNotAccessReceivedFile,
|
||||||
toastLength: Toast.LENGTH_LONG,
|
toastLength: Toast.LENGTH_LONG,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -198,7 +199,7 @@ class _HomePageState extends State<HomePage> with WidgetsBindingObserver {
|
|||||||
Icons.description,
|
Icons.description,
|
||||||
color: Theme.of(context).colorScheme.primary,
|
color: Theme.of(context).colorScheme.primary,
|
||||||
),
|
),
|
||||||
label: S.of(context).documents,
|
label: S.of(context)!.documents,
|
||||||
),
|
),
|
||||||
RouteDescription(
|
RouteDescription(
|
||||||
icon: const Icon(Icons.document_scanner_outlined),
|
icon: const Icon(Icons.document_scanner_outlined),
|
||||||
@@ -206,7 +207,7 @@ class _HomePageState extends State<HomePage> with WidgetsBindingObserver {
|
|||||||
Icons.document_scanner,
|
Icons.document_scanner,
|
||||||
color: Theme.of(context).colorScheme.primary,
|
color: Theme.of(context).colorScheme.primary,
|
||||||
),
|
),
|
||||||
label: S.of(context).scanner,
|
label: S.of(context)!.scanner,
|
||||||
),
|
),
|
||||||
RouteDescription(
|
RouteDescription(
|
||||||
icon: const Icon(Icons.sell_outlined),
|
icon: const Icon(Icons.sell_outlined),
|
||||||
@@ -214,7 +215,7 @@ class _HomePageState extends State<HomePage> with WidgetsBindingObserver {
|
|||||||
Icons.sell,
|
Icons.sell,
|
||||||
color: Theme.of(context).colorScheme.primary,
|
color: Theme.of(context).colorScheme.primary,
|
||||||
),
|
),
|
||||||
label: S.of(context).labels,
|
label: S.of(context)!.labels,
|
||||||
),
|
),
|
||||||
RouteDescription(
|
RouteDescription(
|
||||||
icon: const Icon(Icons.inbox_outlined),
|
icon: const Icon(Icons.inbox_outlined),
|
||||||
@@ -222,7 +223,7 @@ class _HomePageState extends State<HomePage> with WidgetsBindingObserver {
|
|||||||
Icons.inbox,
|
Icons.inbox,
|
||||||
color: Theme.of(context).colorScheme.primary,
|
color: Theme.of(context).colorScheme.primary,
|
||||||
),
|
),
|
||||||
label: S.of(context).inbox,
|
label: S.of(context)!.inbox,
|
||||||
badgeBuilder: (icon) => BlocBuilder<InboxCubit, InboxState>(
|
badgeBuilder: (icon) => BlocBuilder<InboxCubit, InboxState>(
|
||||||
bloc: _inboxCubit,
|
bloc: _inboxCubit,
|
||||||
builder: (context, state) {
|
builder: (context, state) {
|
||||||
|
|||||||
@@ -6,7 +6,8 @@ import 'package:paperless_mobile/core/repository/saved_view_repository.dart';
|
|||||||
import 'package:paperless_mobile/extensions/flutter_extensions.dart';
|
import 'package:paperless_mobile/extensions/flutter_extensions.dart';
|
||||||
import 'package:paperless_mobile/features/login/cubit/authentication_cubit.dart';
|
import 'package:paperless_mobile/features/login/cubit/authentication_cubit.dart';
|
||||||
import 'package:paperless_mobile/features/settings/cubit/application_settings_cubit.dart';
|
import 'package:paperless_mobile/features/settings/cubit/application_settings_cubit.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
class VerifyIdentityPage extends StatelessWidget {
|
class VerifyIdentityPage extends StatelessWidget {
|
||||||
@@ -19,12 +20,12 @@ class VerifyIdentityPage extends StatelessWidget {
|
|||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
elevation: 0,
|
elevation: 0,
|
||||||
backgroundColor: Theme.of(context).colorScheme.background,
|
backgroundColor: Theme.of(context).colorScheme.background,
|
||||||
title: Text(S.of(context).verifyYourIdentity),
|
title: Text(S.of(context)!.verifyYourIdentity),
|
||||||
),
|
),
|
||||||
body: Column(
|
body: Column(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
Text(S.of(context).useTheConfiguredBiometricFactorToAuthenticate)
|
Text(S.of(context)!.useTheConfiguredBiometricFactorToAuthenticate)
|
||||||
.paddedSymmetrically(horizontal: 16),
|
.paddedSymmetrically(horizontal: 16),
|
||||||
const Icon(
|
const Icon(
|
||||||
Icons.fingerprint,
|
Icons.fingerprint,
|
||||||
@@ -39,7 +40,7 @@ class VerifyIdentityPage extends StatelessWidget {
|
|||||||
TextButton(
|
TextButton(
|
||||||
onPressed: () => _logout(context),
|
onPressed: () => _logout(context),
|
||||||
child: Text(
|
child: Text(
|
||||||
S.of(context).disconnect,
|
S.of(context)!.disconnect,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Theme.of(context).colorScheme.error,
|
color: Theme.of(context).colorScheme.error,
|
||||||
),
|
),
|
||||||
@@ -52,7 +53,7 @@ class VerifyIdentityPage extends StatelessWidget {
|
|||||||
.read<ApplicationSettingsCubit>()
|
.read<ApplicationSettingsCubit>()
|
||||||
.state
|
.state
|
||||||
.isLocalAuthenticationEnabled),
|
.isLocalAuthenticationEnabled),
|
||||||
child: Text(S.of(context).verifyIdentity),
|
child: Text(S.of(context)!.verifyIdentity),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
).padded(16),
|
).padded(16),
|
||||||
|
|||||||
@@ -14,7 +14,8 @@ import 'package:paperless_mobile/features/inbox/view/widgets/inbox_empty_widget.
|
|||||||
import 'package:paperless_mobile/features/inbox/view/widgets/inbox_item.dart';
|
import 'package:paperless_mobile/features/inbox/view/widgets/inbox_item.dart';
|
||||||
import 'package:paperless_mobile/features/paged_document_view/view/document_paging_view_mixin.dart';
|
import 'package:paperless_mobile/features/paged_document_view/view/document_paging_view_mixin.dart';
|
||||||
import 'package:paperless_mobile/features/search_app_bar/view/search_app_bar.dart';
|
import 'package:paperless_mobile/features/search_app_bar/view/search_app_bar.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
import 'package:paperless_mobile/helpers/message_helpers.dart';
|
import 'package:paperless_mobile/helpers/message_helpers.dart';
|
||||||
|
|
||||||
class InboxPage extends StatefulWidget {
|
class InboxPage extends StatefulWidget {
|
||||||
@@ -52,7 +53,7 @@ class _InboxPageState extends State<InboxPage>
|
|||||||
return const SizedBox.shrink();
|
return const SizedBox.shrink();
|
||||||
}
|
}
|
||||||
return FloatingActionButton.extended(
|
return FloatingActionButton.extended(
|
||||||
label: Text(S.of(context).allSeen),
|
label: Text(S.of(context)!.allSeen),
|
||||||
icon: const Icon(Icons.done_all),
|
icon: const Icon(Icons.done_all),
|
||||||
onPressed: state.hasLoaded && state.documents.isNotEmpty
|
onPressed: state.hasLoaded && state.documents.isNotEmpty
|
||||||
? () => _onMarkAllAsSeen(
|
? () => _onMarkAllAsSeen(
|
||||||
@@ -128,7 +129,7 @@ class _InboxPageState extends State<InboxPage>
|
|||||||
controller: pagingScrollController,
|
controller: pagingScrollController,
|
||||||
slivers: [
|
slivers: [
|
||||||
SearchAppBar(
|
SearchAppBar(
|
||||||
hintText: S.of(context).searchDocuments,
|
hintText: S.of(context)!.searchDocuments,
|
||||||
onOpenSearch: showDocumentSearchPage,
|
onOpenSearch: showDocumentSearchPage,
|
||||||
),
|
),
|
||||||
if (state.documents.isEmpty)
|
if (state.documents.isEmpty)
|
||||||
@@ -150,7 +151,7 @@ class _InboxPageState extends State<InboxPage>
|
|||||||
child: HintCard(
|
child: HintCard(
|
||||||
show: !state.isHintAcknowledged,
|
show: !state.isHintAcknowledged,
|
||||||
hintText:
|
hintText:
|
||||||
S.of(context).swipeLeftToMarkADocumentAsSeen,
|
S.of(context)!.swipeLeftToMarkADocumentAsSeen,
|
||||||
onHintAcknowledged: () =>
|
onHintAcknowledged: () =>
|
||||||
context.read<InboxCubit>().acknowledgeHint(),
|
context.read<InboxCubit>().acknowledgeHint(),
|
||||||
),
|
),
|
||||||
@@ -178,7 +179,7 @@ class _InboxPageState extends State<InboxPage>
|
|||||||
color: Theme.of(context).colorScheme.primary,
|
color: Theme.of(context).colorScheme.primary,
|
||||||
).padded(),
|
).padded(),
|
||||||
Text(
|
Text(
|
||||||
S.of(context).markAsSeen,
|
S.of(context)!.markAsSeen,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Theme.of(context).colorScheme.primary,
|
color: Theme.of(context).colorScheme.primary,
|
||||||
),
|
),
|
||||||
@@ -198,19 +199,19 @@ class _InboxPageState extends State<InboxPage>
|
|||||||
final isActionConfirmed = await showDialog(
|
final isActionConfirmed = await showDialog(
|
||||||
context: context,
|
context: context,
|
||||||
builder: (context) => AlertDialog(
|
builder: (context) => AlertDialog(
|
||||||
title: Text(S.of(context).markAllAsSeen),
|
title: Text(S.of(context)!.markAllAsSeen),
|
||||||
content: Text(
|
content: Text(
|
||||||
S.of(context).areYouSureYouWantToMarkAllDocumentsAsSeen,
|
S.of(context)!.areYouSureYouWantToMarkAllDocumentsAsSeen,
|
||||||
),
|
),
|
||||||
actions: [
|
actions: [
|
||||||
TextButton(
|
TextButton(
|
||||||
onPressed: () => Navigator.of(context).pop(false),
|
onPressed: () => Navigator.of(context).pop(false),
|
||||||
child: Text(S.of(context).cancel),
|
child: Text(S.of(context)!.cancel),
|
||||||
),
|
),
|
||||||
TextButton(
|
TextButton(
|
||||||
onPressed: () => Navigator.of(context).pop(true),
|
onPressed: () => Navigator.of(context).pop(true),
|
||||||
child: Text(
|
child: Text(
|
||||||
S.of(context).ok,
|
S.of(context)!.ok,
|
||||||
style: TextStyle(color: Theme.of(context).colorScheme.error),
|
style: TextStyle(color: Theme.of(context).colorScheme.error),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -228,9 +229,9 @@ class _InboxPageState extends State<InboxPage>
|
|||||||
final removedTags = await context.read<InboxCubit>().removeFromInbox(doc);
|
final removedTags = await context.read<InboxCubit>().removeFromInbox(doc);
|
||||||
showSnackBar(
|
showSnackBar(
|
||||||
context,
|
context,
|
||||||
S.of(context).removeDocumentFromInbox,
|
S.of(context)!.removeDocumentFromInbox,
|
||||||
action: SnackBarActionConfig(
|
action: SnackBarActionConfig(
|
||||||
label: S.of(context).undo,
|
label: S.of(context)!.undo,
|
||||||
onPressed: () => _onUndoMarkAsSeen(doc, removedTags),
|
onPressed: () => _onUndoMarkAsSeen(doc, removedTags),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
@@ -267,10 +268,10 @@ class _InboxPageState extends State<InboxPage>
|
|||||||
documents,
|
documents,
|
||||||
(doc) {
|
(doc) {
|
||||||
if (doc.added.isToday) {
|
if (doc.added.isToday) {
|
||||||
return S.of(context).today;
|
return S.of(context)!.today;
|
||||||
}
|
}
|
||||||
if (doc.added.isYesterday) {
|
if (doc.added.isYesterday) {
|
||||||
return S.of(context).yesterday;
|
return S.of(context)!.yesterday;
|
||||||
}
|
}
|
||||||
return DateFormat.yMMMMd().format(doc.added);
|
return DateFormat.yMMMMd().format(doc.added);
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:paperless_mobile/features/inbox/cubit/inbox_cubit.dart';
|
import 'package:paperless_mobile/features/inbox/cubit/inbox_cubit.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class InboxEmptyWidget extends StatelessWidget {
|
class InboxEmptyWidget extends StatelessWidget {
|
||||||
const InboxEmptyWidget({
|
const InboxEmptyWidget({
|
||||||
@@ -23,11 +23,11 @@ class InboxEmptyWidget extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
Text(S.of(context).youDoNotHaveUnseenDocuments),
|
Text(S.of(context)!.youDoNotHaveUnseenDocuments),
|
||||||
TextButton(
|
TextButton(
|
||||||
onPressed: () =>
|
onPressed: () =>
|
||||||
_emptyStateRefreshIndicatorKey.currentState?.show(),
|
_emptyStateRefreshIndicatorKey.currentState?.show(),
|
||||||
child: Text(S.of(context).refresh),
|
child: Text(S.of(context)!.refresh),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -8,7 +8,8 @@ import 'package:paperless_mobile/features/documents/view/widgets/document_previe
|
|||||||
import 'package:paperless_mobile/features/inbox/cubit/inbox_cubit.dart';
|
import 'package:paperless_mobile/features/inbox/cubit/inbox_cubit.dart';
|
||||||
import 'package:paperless_mobile/features/labels/tags/view/widgets/tags_widget.dart';
|
import 'package:paperless_mobile/features/labels/tags/view/widgets/tags_widget.dart';
|
||||||
import 'package:paperless_mobile/features/labels/view/widgets/label_text.dart';
|
import 'package:paperless_mobile/features/labels/view/widgets/label_text.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
import 'package:paperless_mobile/routes/document_details_route.dart';
|
import 'package:paperless_mobile/routes/document_details_route.dart';
|
||||||
|
|
||||||
class InboxItem extends StatefulWidget {
|
class InboxItem extends StatefulWidget {
|
||||||
@@ -99,7 +100,7 @@ class _InboxItemState extends State<InboxItem> {
|
|||||||
child: ActionChip(
|
child: ActionChip(
|
||||||
avatar: const Icon(Icons.delete_outline),
|
avatar: const Icon(Icons.delete_outline),
|
||||||
shape: chipShape,
|
shape: chipShape,
|
||||||
label: Text(S.of(context).deleteDocument),
|
label: Text(S.of(context)!.deleteDocument),
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
final shouldDelete = await showDialog<bool>(
|
final shouldDelete = await showDialog<bool>(
|
||||||
context: context,
|
context: context,
|
||||||
@@ -147,7 +148,7 @@ class _InboxItemState extends State<InboxItem> {
|
|||||||
maxWidth: 50,
|
maxWidth: 50,
|
||||||
),
|
),
|
||||||
child: Text(
|
child: Text(
|
||||||
S.of(context).quickAction,
|
S.of(context)!.quickAction,
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
maxLines: 3,
|
maxLines: 3,
|
||||||
style: Theme.of(context).textTheme.labelSmall,
|
style: Theme.of(context).textTheme.labelSmall,
|
||||||
@@ -190,9 +191,9 @@ class _InboxItemState extends State<InboxItem> {
|
|||||||
shape: chipShape,
|
shape: chipShape,
|
||||||
label: hasAsn
|
label: hasAsn
|
||||||
? Text(
|
? Text(
|
||||||
'${S.of(context).asn} #${widget.document.archiveSerialNumber}',
|
'${S.of(context)!.asn} #${widget.document.archiveSerialNumber}',
|
||||||
)
|
)
|
||||||
: Text(S.of(context).assignASN),
|
: Text(S.of(context)!.assignAsn),
|
||||||
onPressed: !hasAsn
|
onPressed: !hasAsn
|
||||||
? () {
|
? () {
|
||||||
setState(() {
|
setState(() {
|
||||||
@@ -352,7 +353,7 @@ class _InboxItemState extends State<InboxItem> {
|
|||||||
// avatar: const Icon(Icons.calendar_today_outlined),
|
// avatar: const Icon(Icons.calendar_today_outlined),
|
||||||
// shape: chipShape,
|
// shape: chipShape,
|
||||||
// label: Text(
|
// label: Text(
|
||||||
// "${S.of(context).createdAt}: ${DateFormat.yMd().format(e)}",
|
// "${S.of(context)!.createdAt}: ${DateFormat.yMd().format(e)}",
|
||||||
// ),
|
// ),
|
||||||
// onPressed: () => context
|
// onPressed: () => context
|
||||||
// .read<InboxCubit>()
|
// .read<InboxCubit>()
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_form_builder/flutter_form_builder.dart';
|
import 'package:flutter_form_builder/flutter_form_builder.dart';
|
||||||
import 'package:form_builder_validators/form_builder_validators.dart';
|
import 'package:form_builder_validators/form_builder_validators.dart';
|
||||||
import 'package:paperless_mobile/core/workarounds/colored_chip.dart';
|
import 'package:paperless_mobile/core/workarounds/colored_chip.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class StoragePathAutofillFormBuilderField extends StatefulWidget {
|
class StoragePathAutofillFormBuilderField extends StatefulWidget {
|
||||||
final String name;
|
final String name;
|
||||||
@@ -48,7 +48,7 @@ class _StoragePathAutofillFormBuilderFieldState
|
|||||||
controller: _textEditingController,
|
controller: _textEditingController,
|
||||||
validator: FormBuilderValidators.required(), //TODO: INTL
|
validator: FormBuilderValidators.required(), //TODO: INTL
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
label: Text(S.of(context).storagePath),
|
label: Text(S.of(context)!.storagePath),
|
||||||
suffixIcon: _showClearIcon
|
suffixIcon: _showClearIcon
|
||||||
? IconButton(
|
? IconButton(
|
||||||
icon: const Icon(Icons.clear),
|
icon: const Icon(Icons.clear),
|
||||||
@@ -69,65 +69,65 @@ class _StoragePathAutofillFormBuilderFieldState
|
|||||||
runSpacing: 4.0,
|
runSpacing: 4.0,
|
||||||
children: [
|
children: [
|
||||||
InputChip(
|
InputChip(
|
||||||
label: Text(S.of(context).archiveSerialNumber),
|
label: Text(S.of(context)!.archiveSerialNumber),
|
||||||
onPressed: () => _addParameterToInput("{asn}", field),
|
onPressed: () => _addParameterToInput("{asn}", field),
|
||||||
),
|
),
|
||||||
InputChip(
|
InputChip(
|
||||||
label: Text(S.of(context).correspondent),
|
label: Text(S.of(context)!.correspondent),
|
||||||
onPressed: () =>
|
onPressed: () =>
|
||||||
_addParameterToInput("{correspondent}", field),
|
_addParameterToInput("{correspondent}", field),
|
||||||
),
|
),
|
||||||
InputChip(
|
InputChip(
|
||||||
label: Text(S.of(context).documentType),
|
label: Text(S.of(context)!.documentType),
|
||||||
onPressed: () =>
|
onPressed: () =>
|
||||||
_addParameterToInput("{document_type}", field),
|
_addParameterToInput("{document_type}", field),
|
||||||
),
|
),
|
||||||
InputChip(
|
InputChip(
|
||||||
label: Text(S.of(context).tags),
|
label: Text(S.of(context)!.tags),
|
||||||
onPressed: () => _addParameterToInput("{tag_list}", field),
|
onPressed: () => _addParameterToInput("{tag_list}", field),
|
||||||
),
|
),
|
||||||
InputChip(
|
InputChip(
|
||||||
label: Text(S.of(context).title),
|
label: Text(S.of(context)!.title),
|
||||||
onPressed: () => _addParameterToInput("{title}", field),
|
onPressed: () => _addParameterToInput("{title}", field),
|
||||||
),
|
),
|
||||||
InputChip(
|
InputChip(
|
||||||
label: Text(S.of(context).createdAt),
|
label: Text(S.of(context)!.createdAt),
|
||||||
onPressed: () => _addParameterToInput("{created}", field),
|
onPressed: () => _addParameterToInput("{created}", field),
|
||||||
),
|
),
|
||||||
InputChip(
|
InputChip(
|
||||||
label: Text(S.of(context).createdAt +
|
label: Text(S.of(context)!.createdAt +
|
||||||
" (${S.of(context).storagePathYear})"),
|
" (${S.of(context)!.storagePathYear})"),
|
||||||
onPressed: () =>
|
onPressed: () =>
|
||||||
_addParameterToInput("{created_year}", field),
|
_addParameterToInput("{created_year}", field),
|
||||||
),
|
),
|
||||||
InputChip(
|
InputChip(
|
||||||
label: Text(S.of(context).createdAt +
|
label: Text(S.of(context)!.createdAt +
|
||||||
" (${S.of(context).storagePathMonth})"),
|
" (${S.of(context)!.storagePathMonth})"),
|
||||||
onPressed: () =>
|
onPressed: () =>
|
||||||
_addParameterToInput("{created_month}", field),
|
_addParameterToInput("{created_month}", field),
|
||||||
),
|
),
|
||||||
InputChip(
|
InputChip(
|
||||||
label: Text(S.of(context).createdAt +
|
label: Text(S.of(context)!.createdAt +
|
||||||
" (${S.of(context).storagePathDay})"),
|
" (${S.of(context)!.storagePathDay})"),
|
||||||
onPressed: () => _addParameterToInput("{created_day}", field),
|
onPressed: () => _addParameterToInput("{created_day}", field),
|
||||||
),
|
),
|
||||||
InputChip(
|
InputChip(
|
||||||
label: Text(S.of(context).createdAt),
|
label: Text(S.of(context)!.createdAt),
|
||||||
onPressed: () => _addParameterToInput("{added}", field),
|
onPressed: () => _addParameterToInput("{added}", field),
|
||||||
),
|
),
|
||||||
InputChip(
|
InputChip(
|
||||||
label: Text(S.of(context).createdAt +
|
label: Text(S.of(context)!.createdAt +
|
||||||
" (${S.of(context).storagePathYear})"),
|
" (${S.of(context)!.storagePathYear})"),
|
||||||
onPressed: () => _addParameterToInput("{added_year}", field),
|
onPressed: () => _addParameterToInput("{added_year}", field),
|
||||||
),
|
),
|
||||||
InputChip(
|
InputChip(
|
||||||
label: Text(S.of(context).createdAt +
|
label: Text(S.of(context)!.createdAt +
|
||||||
" (${S.of(context).storagePathMonth})"),
|
" (${S.of(context)!.storagePathMonth})"),
|
||||||
onPressed: () => _addParameterToInput("{added_month}", field),
|
onPressed: () => _addParameterToInput("{added_month}", field),
|
||||||
),
|
),
|
||||||
InputChip(
|
InputChip(
|
||||||
label: Text(S.of(context).createdAt +
|
label: Text(S.of(context)!.createdAt +
|
||||||
" (${S.of(context).storagePathDay})"),
|
" (${S.of(context)!.storagePathDay})"),
|
||||||
onPressed: () => _addParameterToInput("{added_day}", field),
|
onPressed: () => _addParameterToInput("{added_day}", field),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import 'package:paperless_mobile/core/repository/state/impl/tag_repository_state
|
|||||||
import 'package:paperless_mobile/core/workarounds/colored_chip.dart';
|
import 'package:paperless_mobile/core/workarounds/colored_chip.dart';
|
||||||
import 'package:paperless_mobile/extensions/flutter_extensions.dart';
|
import 'package:paperless_mobile/extensions/flutter_extensions.dart';
|
||||||
import 'package:paperless_mobile/features/edit_label/view/impl/add_tag_page.dart';
|
import 'package:paperless_mobile/features/edit_label/view/impl/add_tag_page.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class TagFormField extends StatefulWidget {
|
class TagFormField extends StatefulWidget {
|
||||||
final TagsQuery? initialValue;
|
final TagsQuery? initialValue;
|
||||||
@@ -94,8 +94,8 @@ class _TagFormFieldState extends State<TagFormField> {
|
|||||||
Icons.label_outline,
|
Icons.label_outline,
|
||||||
),
|
),
|
||||||
suffixIcon: _buildSuffixIcon(context, field),
|
suffixIcon: _buildSuffixIcon(context, field),
|
||||||
labelText: S.of(context).tags,
|
labelText: S.of(context)!.tags,
|
||||||
hintText: S.of(context).filterTags,
|
hintText: S.of(context)!.filterTags,
|
||||||
),
|
),
|
||||||
controller: _textEditingController,
|
controller: _textEditingController,
|
||||||
),
|
),
|
||||||
@@ -138,10 +138,10 @@ class _TagFormFieldState extends State<TagFormField> {
|
|||||||
late String? title;
|
late String? title;
|
||||||
switch (data) {
|
switch (data) {
|
||||||
case _onlyNotAssignedId:
|
case _onlyNotAssignedId:
|
||||||
title = S.of(context).notAssigned;
|
title = S.of(context)!.notAssigned;
|
||||||
break;
|
break;
|
||||||
case _anyAssignedId:
|
case _anyAssignedId:
|
||||||
title = S.of(context).anyAssigned;
|
title = S.of(context)!.anyAssigned;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
title = widget.selectableOptions[data]?.name;
|
title = widget.selectableOptions[data]?.name;
|
||||||
@@ -270,7 +270,7 @@ class _TagFormFieldState extends State<TagFormField> {
|
|||||||
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
|
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
|
||||||
side: BorderSide.none,
|
side: BorderSide.none,
|
||||||
label: Text(
|
label: Text(
|
||||||
S.of(context).notAssigned,
|
S.of(context)!.notAssigned,
|
||||||
),
|
),
|
||||||
backgroundColor:
|
backgroundColor:
|
||||||
Theme.of(context).colorScheme.onSurface.withOpacity(0.12),
|
Theme.of(context).colorScheme.onSurface.withOpacity(0.12),
|
||||||
@@ -323,7 +323,7 @@ class _TagFormFieldState extends State<TagFormField> {
|
|||||||
padding: const EdgeInsets.all(4),
|
padding: const EdgeInsets.all(4),
|
||||||
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
|
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
|
||||||
side: BorderSide.none,
|
side: BorderSide.none,
|
||||||
label: Text(S.of(context).anyAssigned),
|
label: Text(S.of(context)!.anyAssigned),
|
||||||
backgroundColor:
|
backgroundColor:
|
||||||
Theme.of(context).colorScheme.onSurfaceVariant.withOpacity(0.12),
|
Theme.of(context).colorScheme.onSurfaceVariant.withOpacity(0.12),
|
||||||
onDeleted: () => field.didChange(const IdsTagsQuery()),
|
onDeleted: () => field.didChange(const IdsTagsQuery()),
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ import 'package:paperless_mobile/features/edit_label/view/impl/edit_tag_page.dar
|
|||||||
import 'package:paperless_mobile/features/labels/cubit/label_cubit.dart';
|
import 'package:paperless_mobile/features/labels/cubit/label_cubit.dart';
|
||||||
import 'package:paperless_mobile/features/labels/view/widgets/label_tab_view.dart';
|
import 'package:paperless_mobile/features/labels/view/widgets/label_tab_view.dart';
|
||||||
import 'package:paperless_mobile/features/search_app_bar/view/search_app_bar.dart';
|
import 'package:paperless_mobile/features/search_app_bar/view/search_app_bar.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class LabelsPage extends StatefulWidget {
|
class LabelsPage extends StatefulWidget {
|
||||||
const LabelsPage({Key? key}) : super(key: key);
|
const LabelsPage({Key? key}) : super(key: key);
|
||||||
@@ -72,7 +72,7 @@ class _LabelsPageState extends State<LabelsPage>
|
|||||||
context,
|
context,
|
||||||
),
|
),
|
||||||
sliver: SearchAppBar(
|
sliver: SearchAppBar(
|
||||||
hintText: S.of(context).searchDocuments,
|
hintText: S.of(context)!.searchDocuments,
|
||||||
onOpenSearch: showDocumentSearchPage,
|
onOpenSearch: showDocumentSearchPage,
|
||||||
bottom: TabBar(
|
bottom: TabBar(
|
||||||
controller: _tabController,
|
controller: _tabController,
|
||||||
@@ -161,9 +161,9 @@ class _LabelsPageState extends State<LabelsPage>
|
|||||||
),
|
),
|
||||||
onEdit: _openEditCorrespondentPage,
|
onEdit: _openEditCorrespondentPage,
|
||||||
emptyStateActionButtonLabel:
|
emptyStateActionButtonLabel:
|
||||||
S.of(context).addNewCorrespondent,
|
S.of(context)!.addNewCorrespondent,
|
||||||
emptyStateDescription:
|
emptyStateDescription:
|
||||||
S.of(context).noCorrespondentsSetUp,
|
S.of(context)!.noCorrespondentsSetUp,
|
||||||
onAddNew: _openAddCorrespondentPage,
|
onAddNew: _openAddCorrespondentPage,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
@@ -186,9 +186,9 @@ class _LabelsPageState extends State<LabelsPage>
|
|||||||
),
|
),
|
||||||
onEdit: _openEditDocumentTypePage,
|
onEdit: _openEditDocumentTypePage,
|
||||||
emptyStateActionButtonLabel:
|
emptyStateActionButtonLabel:
|
||||||
S.of(context).addNewDocumentType,
|
S.of(context)!.addNewDocumentType,
|
||||||
emptyStateDescription:
|
emptyStateDescription:
|
||||||
S.of(context).noDocumentTypesSetUp,
|
S.of(context)!.noDocumentTypesSetUp,
|
||||||
onAddNew: _openAddDocumentTypePage,
|
onAddNew: _openAddDocumentTypePage,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
@@ -219,9 +219,9 @@ class _LabelsPageState extends State<LabelsPage>
|
|||||||
: null,
|
: null,
|
||||||
),
|
),
|
||||||
emptyStateActionButtonLabel:
|
emptyStateActionButtonLabel:
|
||||||
S.of(context).addNewTag,
|
S.of(context)!.addNewTag,
|
||||||
emptyStateDescription:
|
emptyStateDescription:
|
||||||
S.of(context).noTagsSetUp,
|
S.of(context)!.noTagsSetUp,
|
||||||
onAddNew: _openAddTagPage,
|
onAddNew: _openAddTagPage,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
@@ -245,9 +245,9 @@ class _LabelsPageState extends State<LabelsPage>
|
|||||||
),
|
),
|
||||||
contentBuilder: (path) => Text(path.path),
|
contentBuilder: (path) => Text(path.path),
|
||||||
emptyStateActionButtonLabel:
|
emptyStateActionButtonLabel:
|
||||||
S.of(context).addNewStoragePath,
|
S.of(context)!.addNewStoragePath,
|
||||||
emptyStateDescription:
|
emptyStateDescription:
|
||||||
S.of(context).noStoragePathsSetUp,
|
S.of(context)!.noStoragePathsSetUp,
|
||||||
onAddNew: _openAddStoragePathPage,
|
onAddNew: _openAddStoragePathPage,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import 'package:flutter_form_builder/flutter_form_builder.dart';
|
|||||||
import 'package:flutter_typeahead/flutter_typeahead.dart';
|
import 'package:flutter_typeahead/flutter_typeahead.dart';
|
||||||
import 'package:paperless_api/paperless_api.dart';
|
import 'package:paperless_api/paperless_api.dart';
|
||||||
import 'package:paperless_mobile/core/widgets/form_builder_fields/form_builder_type_ahead.dart';
|
import 'package:paperless_mobile/core/widgets/form_builder_fields/form_builder_type_ahead.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Form field allowing to select labels (i.e. correspondent, documentType)
|
/// Form field allowing to select labels (i.e. correspondent, documentType)
|
||||||
@@ -79,7 +79,7 @@ class _LabelFormFieldState<T extends Label> extends State<LabelFormField<T>> {
|
|||||||
noItemsFoundBuilder: (context) => Padding(
|
noItemsFoundBuilder: (context) => Padding(
|
||||||
padding: const EdgeInsets.symmetric(vertical: 8),
|
padding: const EdgeInsets.symmetric(vertical: 8),
|
||||||
child: Text(
|
child: Text(
|
||||||
S.of(context).noItemsFound,
|
S.of(context)!.noItemsFound,
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
style:
|
style:
|
||||||
TextStyle(color: Theme.of(context).disabledColor, fontSize: 18.0),
|
TextStyle(color: Theme.of(context).disabledColor, fontSize: 18.0),
|
||||||
@@ -97,7 +97,8 @@ class _LabelFormFieldState<T extends Label> extends State<LabelFormField<T>> {
|
|||||||
),
|
),
|
||||||
itemBuilder: (context, suggestion) => ListTile(
|
itemBuilder: (context, suggestion) => ListTile(
|
||||||
title: Text(
|
title: Text(
|
||||||
widget.labelOptions[suggestion.id]?.name ?? S.of(context).notAssigned,
|
widget.labelOptions[suggestion.id]?.name ??
|
||||||
|
S.of(context)!.notAssigned,
|
||||||
maxLines: 1,
|
maxLines: 1,
|
||||||
overflow: TextOverflow.ellipsis,
|
overflow: TextOverflow.ellipsis,
|
||||||
),
|
),
|
||||||
@@ -141,7 +142,7 @@ class _LabelFormFieldState<T extends Label> extends State<LabelFormField<T>> {
|
|||||||
),
|
),
|
||||||
selectionToTextTransformer: (suggestion) {
|
selectionToTextTransformer: (suggestion) {
|
||||||
if (suggestion == const IdQueryParameter.notAssigned()) {
|
if (suggestion == const IdQueryParameter.notAssigned()) {
|
||||||
return S.of(context).notAssigned;
|
return S.of(context)!.notAssigned;
|
||||||
}
|
}
|
||||||
return widget.labelOptions[suggestion.id]?.name ?? "";
|
return widget.labelOptions[suggestion.id]?.name ?? "";
|
||||||
},
|
},
|
||||||
@@ -194,11 +195,11 @@ class _LabelFormFieldState<T extends Label> extends State<LabelFormField<T>> {
|
|||||||
|
|
||||||
String _getLocalizedHint(BuildContext context) {
|
String _getLocalizedHint(BuildContext context) {
|
||||||
if (T == Correspondent) {
|
if (T == Correspondent) {
|
||||||
return S.of(context).startTyping;
|
return S.of(context)!.startTyping;
|
||||||
} else if (T == DocumentType) {
|
} else if (T == DocumentType) {
|
||||||
return S.of(context).startTyping;
|
return S.of(context)!.startTyping;
|
||||||
} else {
|
} else {
|
||||||
return S.of(context).filterTags;
|
return S.of(context)!.filterTags;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ import 'package:paperless_mobile/features/documents/view/widgets/adaptive_docume
|
|||||||
import 'package:paperless_mobile/features/documents/view/widgets/selection/view_type_selection_widget.dart';
|
import 'package:paperless_mobile/features/documents/view/widgets/selection/view_type_selection_widget.dart';
|
||||||
import 'package:paperless_mobile/features/linked_documents/cubit/linked_documents_cubit.dart';
|
import 'package:paperless_mobile/features/linked_documents/cubit/linked_documents_cubit.dart';
|
||||||
import 'package:paperless_mobile/features/paged_document_view/view/document_paging_view_mixin.dart';
|
import 'package:paperless_mobile/features/paged_document_view/view/document_paging_view_mixin.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
import 'package:paperless_mobile/routes/document_details_route.dart';
|
import 'package:paperless_mobile/routes/document_details_route.dart';
|
||||||
|
|
||||||
class LinkedDocumentsPage extends StatefulWidget {
|
class LinkedDocumentsPage extends StatefulWidget {
|
||||||
@@ -24,7 +25,7 @@ class _LinkedDocumentsPageState extends State<LinkedDocumentsPage>
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: Text(S.of(context).linkedDocuments),
|
title: Text(S.of(context)!.linkedDocuments),
|
||||||
actions: [
|
actions: [
|
||||||
BlocBuilder<LinkedDocumentsCubit, LinkedDocumentsState>(
|
BlocBuilder<LinkedDocumentsCubit, LinkedDocumentsState>(
|
||||||
builder: (context, state) {
|
builder: (context, state) {
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_form_builder/flutter_form_builder.dart';
|
import 'package:flutter_form_builder/flutter_form_builder.dart';
|
||||||
import 'package:paperless_mobile/extensions/flutter_extensions.dart';
|
import 'package:paperless_mobile/extensions/flutter_extensions.dart';
|
||||||
import 'package:paperless_mobile/features/login/model/client_certificate.dart';
|
import 'package:paperless_mobile/features/login/model/client_certificate.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
import 'package:paperless_mobile/constants.dart';
|
import 'package:paperless_mobile/constants.dart';
|
||||||
import 'package:permission_handler/permission_handler.dart';
|
import 'package:permission_handler/permission_handler.dart';
|
||||||
|
|
||||||
@@ -40,7 +41,7 @@ class _ClientCertificateFormFieldState
|
|||||||
}
|
}
|
||||||
assert(_selectedFile != null);
|
assert(_selectedFile != null);
|
||||||
if (_selectedFile?.path.split(".").last != 'pfx') {
|
if (_selectedFile?.path.split(".").last != 'pfx') {
|
||||||
return S.of(context).invalidCertificateFormat;
|
return S.of(context)!.invalidCertificateFormat;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
},
|
},
|
||||||
@@ -50,8 +51,8 @@ class _ClientCertificateFormFieldState
|
|||||||
return Theme(
|
return Theme(
|
||||||
data: theme,
|
data: theme,
|
||||||
child: ExpansionTile(
|
child: ExpansionTile(
|
||||||
title: Text(S.of(context).clientcertificate),
|
title: Text(S.of(context)!.clientcertificate),
|
||||||
subtitle: Text(S.of(context).configureMutualTLSAuthentication),
|
subtitle: Text(S.of(context)!.configureMutualTLSAuthentication),
|
||||||
children: [
|
children: [
|
||||||
InputDecorator(
|
InputDecorator(
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
@@ -67,7 +68,7 @@ class _ClientCertificateFormFieldState
|
|||||||
children: [
|
children: [
|
||||||
ElevatedButton(
|
ElevatedButton(
|
||||||
onPressed: () => _onSelectFile(field),
|
onPressed: () => _onSelectFile(field),
|
||||||
child: Text(S.of(context).select),
|
child: Text(S.of(context)!.select),
|
||||||
),
|
),
|
||||||
_buildSelectedFileText(field).paddedOnly(left: 8),
|
_buildSelectedFileText(field).paddedOnly(left: 8),
|
||||||
],
|
],
|
||||||
@@ -85,7 +86,7 @@ class _ClientCertificateFormFieldState
|
|||||||
// ListTile(
|
// ListTile(
|
||||||
// leading: ElevatedButton(
|
// leading: ElevatedButton(
|
||||||
// onPressed: () => _onSelectFile(field),
|
// onPressed: () => _onSelectFile(field),
|
||||||
// child: Text(S.of(context).select),
|
// child: Text(S.of(context)!.select),
|
||||||
// ),
|
// ),
|
||||||
// title: _buildSelectedFileText(field),
|
// title: _buildSelectedFileText(field),
|
||||||
// trailing: AbsorbPointer(
|
// trailing: AbsorbPointer(
|
||||||
@@ -108,7 +109,7 @@ class _ClientCertificateFormFieldState
|
|||||||
onChanged: (value) => field.didChange(
|
onChanged: (value) => field.didChange(
|
||||||
field.value?.copyWith(passphrase: value),
|
field.value?.copyWith(passphrase: value),
|
||||||
),
|
),
|
||||||
label: S.of(context).passphrase,
|
label: S.of(context)!.passphrase,
|
||||||
).padded(),
|
).padded(),
|
||||||
] else
|
] else
|
||||||
...[]
|
...[]
|
||||||
@@ -143,7 +144,7 @@ class _ClientCertificateFormFieldState
|
|||||||
if (field.value == null) {
|
if (field.value == null) {
|
||||||
assert(_selectedFile == null);
|
assert(_selectedFile == null);
|
||||||
return Text(
|
return Text(
|
||||||
S.of(context).selectFile,
|
S.of(context)!.selectFile,
|
||||||
style: Theme.of(context).textTheme.labelMedium?.apply(
|
style: Theme.of(context).textTheme.labelMedium?.apply(
|
||||||
color: Theme.of(context).hintColor,
|
color: Theme.of(context).hintColor,
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import 'dart:developer';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_form_builder/flutter_form_builder.dart';
|
import 'package:flutter_form_builder/flutter_form_builder.dart';
|
||||||
import 'package:form_builder_validators/form_builder_validators.dart';
|
import 'package:form_builder_validators/form_builder_validators.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class ServerAddressFormField extends StatefulWidget {
|
class ServerAddressFormField extends StatefulWidget {
|
||||||
static const String fkServerAddress = "serverAddress";
|
static const String fkServerAddress = "serverAddress";
|
||||||
@@ -44,16 +44,16 @@ class _ServerAddressFormFieldState extends State<ServerAddressFormField> {
|
|||||||
autovalidateMode: AutovalidateMode.onUserInteraction,
|
autovalidateMode: AutovalidateMode.onUserInteraction,
|
||||||
validator: FormBuilderValidators.compose([
|
validator: FormBuilderValidators.compose([
|
||||||
FormBuilderValidators.required(
|
FormBuilderValidators.required(
|
||||||
errorText: S.of(context).serverAddressMustNotBeEmpty,
|
errorText: S.of(context)!.serverAddressMustNotBeEmpty,
|
||||||
),
|
),
|
||||||
FormBuilderValidators.match(
|
FormBuilderValidators.match(
|
||||||
r"https?://.*",
|
r"https?://.*",
|
||||||
errorText: S.of(context).serverAddressMustIncludeAScheme,
|
errorText: S.of(context)!.serverAddressMustIncludeAScheme,
|
||||||
)
|
)
|
||||||
]),
|
]),
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
hintText: "http://192.168.1.50:8000",
|
hintText: "http://192.168.1.50:8000",
|
||||||
labelText: S.of(context).serverAddress,
|
labelText: S.of(context)!.serverAddress,
|
||||||
suffixIcon: _canClear
|
suffixIcon: _canClear
|
||||||
? IconButton(
|
? IconButton(
|
||||||
icon: const Icon(Icons.clear),
|
icon: const Icon(Icons.clear),
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import 'package:form_builder_validators/form_builder_validators.dart';
|
|||||||
import 'package:paperless_mobile/extensions/flutter_extensions.dart';
|
import 'package:paperless_mobile/extensions/flutter_extensions.dart';
|
||||||
import 'package:paperless_mobile/features/login/model/user_credentials.model.dart';
|
import 'package:paperless_mobile/features/login/model/user_credentials.model.dart';
|
||||||
import 'package:paperless_mobile/features/login/view/widgets/form_fields/obscured_input_text_form_field.dart';
|
import 'package:paperless_mobile/features/login/view/widgets/form_fields/obscured_input_text_form_field.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class UserCredentialsFormField extends StatefulWidget {
|
class UserCredentialsFormField extends StatefulWidget {
|
||||||
static const fkCredentials = 'credentials';
|
static const fkCredentials = 'credentials';
|
||||||
@@ -37,22 +37,22 @@ class _UserCredentialsFormFieldState extends State<UserCredentialsFormField> {
|
|||||||
UserCredentials(username: username),
|
UserCredentials(username: username),
|
||||||
),
|
),
|
||||||
validator: FormBuilderValidators.required(
|
validator: FormBuilderValidators.required(
|
||||||
errorText: S.of(context).usernameMustNotBeEmpty,
|
errorText: S.of(context)!.usernameMustNotBeEmpty,
|
||||||
),
|
),
|
||||||
autofillHints: const [AutofillHints.username],
|
autofillHints: const [AutofillHints.username],
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
label: Text(S.of(context).username),
|
label: Text(S.of(context)!.username),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
ObscuredInputTextFormField(
|
ObscuredInputTextFormField(
|
||||||
key: const ValueKey('login-password'),
|
key: const ValueKey('login-password'),
|
||||||
label: S.of(context).password,
|
label: S.of(context)!.password,
|
||||||
onChanged: (password) => field.didChange(
|
onChanged: (password) => field.didChange(
|
||||||
field.value?.copyWith(password: password) ??
|
field.value?.copyWith(password: password) ??
|
||||||
UserCredentials(password: password),
|
UserCredentials(password: password),
|
||||||
),
|
),
|
||||||
validator: FormBuilderValidators.required(
|
validator: FormBuilderValidators.required(
|
||||||
errorText: S.of(context).passwordMustNotBeEmpty,
|
errorText: S.of(context)!.passwordMustNotBeEmpty,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
].map((child) => child.padded()).toList(),
|
].map((child) => child.padded()).toList(),
|
||||||
@@ -73,11 +73,11 @@ class _UserCredentialsFormFieldState extends State<UserCredentialsFormField> {
|
|||||||
FocusScope.of(context).requestFocus(_focusNodes[fkPassword]);
|
FocusScope.of(context).requestFocus(_focusNodes[fkPassword]);
|
||||||
},
|
},
|
||||||
validator: FormBuilderValidators.required(
|
validator: FormBuilderValidators.required(
|
||||||
errorText: S.of(context).usernameMustNotBeEmpty,
|
errorText: S.of(context)!.usernameMustNotBeEmpty,
|
||||||
),
|
),
|
||||||
autofillHints: const [AutofillHints.username],
|
autofillHints: const [AutofillHints.username],
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
labelText: S.of(context).username,
|
labelText: S.of(context)!.username,
|
||||||
),
|
),
|
||||||
).padded(),
|
).padded(),
|
||||||
FormBuilderTextField(
|
FormBuilderTextField(
|
||||||
@@ -88,11 +88,11 @@ class _UserCredentialsFormFieldState extends State<UserCredentialsFormField> {
|
|||||||
},
|
},
|
||||||
autofillHints: const [AutofillHints.password],
|
autofillHints: const [AutofillHints.password],
|
||||||
validator: FormBuilderValidators.required(
|
validator: FormBuilderValidators.required(
|
||||||
errorText: S.of(context).passwordMustNotBeEmpty,
|
errorText: S.of(context)!.passwordMustNotBeEmpty,
|
||||||
),
|
),
|
||||||
obscureText: true,
|
obscureText: true,
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
labelText: S.of(context).password,
|
labelText: S.of(context)!.password,
|
||||||
),
|
),
|
||||||
).padded(),
|
).padded(),
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -6,7 +6,8 @@ import 'package:paperless_mobile/extensions/flutter_extensions.dart';
|
|||||||
import 'package:paperless_mobile/features/login/model/reachability_status.dart';
|
import 'package:paperless_mobile/features/login/model/reachability_status.dart';
|
||||||
import 'package:paperless_mobile/features/login/view/widgets/form_fields/client_certificate_form_field.dart';
|
import 'package:paperless_mobile/features/login/view/widgets/form_fields/client_certificate_form_field.dart';
|
||||||
import 'package:paperless_mobile/features/login/view/widgets/form_fields/server_address_form_field.dart';
|
import 'package:paperless_mobile/features/login/view/widgets/form_fields/server_address_form_field.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
class ServerConnectionPage extends StatefulWidget {
|
class ServerConnectionPage extends StatefulWidget {
|
||||||
@@ -32,7 +33,7 @@ class _ServerConnectionPageState extends State<ServerConnectionPage> {
|
|||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
toolbarHeight: kToolbarHeight - 4,
|
toolbarHeight: kToolbarHeight - 4,
|
||||||
title: Text(S.of(context).connectToPaperless),
|
title: Text(S.of(context)!.connectToPaperless),
|
||||||
bottom: PreferredSize(
|
bottom: PreferredSize(
|
||||||
child: _isCheckingConnection
|
child: _isCheckingConnection
|
||||||
? const LinearProgressIndicator()
|
? const LinearProgressIndicator()
|
||||||
@@ -65,7 +66,7 @@ class _ServerConnectionPageState extends State<ServerConnectionPage> {
|
|||||||
onPressed: _updateReachability,
|
onPressed: _updateReachability,
|
||||||
),
|
),
|
||||||
FilledButton(
|
FilledButton(
|
||||||
child: Text(S.of(context).continueLabel),
|
child: Text(S.of(context)!.continueLabel),
|
||||||
onPressed: _reachabilityStatus == ReachabilityStatus.reachable
|
onPressed: _reachabilityStatus == ReachabilityStatus.reachable
|
||||||
? widget.onContinue
|
? widget.onContinue
|
||||||
: null,
|
: null,
|
||||||
@@ -108,37 +109,37 @@ class _ServerConnectionPageState extends State<ServerConnectionPage> {
|
|||||||
case ReachabilityStatus.reachable:
|
case ReachabilityStatus.reachable:
|
||||||
return _buildIconText(
|
return _buildIconText(
|
||||||
Icons.done,
|
Icons.done,
|
||||||
S.of(context).connectionSuccessfulylEstablished,
|
S.of(context)!.connectionSuccessfulylEstablished,
|
||||||
Colors.green,
|
Colors.green,
|
||||||
);
|
);
|
||||||
case ReachabilityStatus.notReachable:
|
case ReachabilityStatus.notReachable:
|
||||||
return _buildIconText(
|
return _buildIconText(
|
||||||
Icons.close,
|
Icons.close,
|
||||||
S.of(context).couldNotEstablishConnectionToTheServer,
|
S.of(context)!.couldNotEstablishConnectionToTheServer,
|
||||||
errorColor,
|
errorColor,
|
||||||
);
|
);
|
||||||
case ReachabilityStatus.unknownHost:
|
case ReachabilityStatus.unknownHost:
|
||||||
return _buildIconText(
|
return _buildIconText(
|
||||||
Icons.close,
|
Icons.close,
|
||||||
S.of(context).hostCouldNotBeResolved,
|
S.of(context)!.hostCouldNotBeResolved,
|
||||||
errorColor,
|
errorColor,
|
||||||
);
|
);
|
||||||
case ReachabilityStatus.missingClientCertificate:
|
case ReachabilityStatus.missingClientCertificate:
|
||||||
return _buildIconText(
|
return _buildIconText(
|
||||||
Icons.close,
|
Icons.close,
|
||||||
S.of(context).loginPageReachabilityMissingClientCertificateText,
|
S.of(context)!.loginPageReachabilityMissingClientCertificateText,
|
||||||
errorColor,
|
errorColor,
|
||||||
);
|
);
|
||||||
case ReachabilityStatus.invalidClientCertificateConfiguration:
|
case ReachabilityStatus.invalidClientCertificateConfiguration:
|
||||||
return _buildIconText(
|
return _buildIconText(
|
||||||
Icons.close,
|
Icons.close,
|
||||||
S.of(context).incorrectOrMissingCertificatePassphrase,
|
S.of(context)!.incorrectOrMissingCertificatePassphrase,
|
||||||
errorColor,
|
errorColor,
|
||||||
);
|
);
|
||||||
case ReachabilityStatus.connectionTimeout:
|
case ReachabilityStatus.connectionTimeout:
|
||||||
return _buildIconText(
|
return _buildIconText(
|
||||||
Icons.close,
|
Icons.close,
|
||||||
S.of(context).connectionTimedOut,
|
S.of(context)!.connectionTimedOut,
|
||||||
errorColor,
|
errorColor,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import 'package:flutter_form_builder/flutter_form_builder.dart';
|
|||||||
import 'package:paperless_mobile/extensions/flutter_extensions.dart';
|
import 'package:paperless_mobile/extensions/flutter_extensions.dart';
|
||||||
import 'package:paperless_mobile/features/login/view/widgets/form_fields/server_address_form_field.dart';
|
import 'package:paperless_mobile/features/login/view/widgets/form_fields/server_address_form_field.dart';
|
||||||
import 'package:paperless_mobile/features/login/view/widgets/form_fields/user_credentials_form_field.dart';
|
import 'package:paperless_mobile/features/login/view/widgets/form_fields/user_credentials_form_field.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class ServerLoginPage extends StatefulWidget {
|
class ServerLoginPage extends StatefulWidget {
|
||||||
final Future<void> Function() onDone;
|
final Future<void> Function() onDone;
|
||||||
@@ -29,7 +29,7 @@ class _ServerLoginPageState extends State<ServerLoginPage> {
|
|||||||
'';
|
'';
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: Text(S.of(context).loginPageSignInTitle),
|
title: Text(S.of(context)!.loginPageSignInTitle),
|
||||||
bottom: _isLoginLoading
|
bottom: _isLoginLoading
|
||||||
? const PreferredSize(
|
? const PreferredSize(
|
||||||
preferredSize: Size.fromHeight(4.0),
|
preferredSize: Size.fromHeight(4.0),
|
||||||
@@ -39,7 +39,7 @@ class _ServerLoginPageState extends State<ServerLoginPage> {
|
|||||||
),
|
),
|
||||||
body: ListView(
|
body: ListView(
|
||||||
children: [
|
children: [
|
||||||
Text(S.of(context).signInToServer(serverAddress)).padded(),
|
Text(S.of(context)!.signInToServer(serverAddress)).padded(),
|
||||||
const UserCredentialsFormField(),
|
const UserCredentialsFormField(),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@@ -53,7 +53,7 @@ class _ServerLoginPageState extends State<ServerLoginPage> {
|
|||||||
await widget.onDone();
|
await widget.onDone();
|
||||||
setState(() => _isLoginLoading = false);
|
setState(() => _isLoginLoading = false);
|
||||||
},
|
},
|
||||||
child: Text(S.of(context).signIn),
|
child: Text(S.of(context)!.signIn),
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import 'package:form_builder_validators/form_builder_validators.dart';
|
|||||||
import 'package:paperless_api/paperless_api.dart';
|
import 'package:paperless_api/paperless_api.dart';
|
||||||
import 'package:paperless_mobile/extensions/flutter_extensions.dart';
|
import 'package:paperless_mobile/extensions/flutter_extensions.dart';
|
||||||
import 'package:paperless_mobile/features/documents/view/widgets/search/document_filter_form.dart';
|
import 'package:paperless_mobile/features/documents/view/widgets/search/document_filter_form.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class AddSavedViewPage extends StatefulWidget {
|
class AddSavedViewPage extends StatefulWidget {
|
||||||
final DocumentFilter currentFilter;
|
final DocumentFilter currentFilter;
|
||||||
@@ -25,12 +25,12 @@ class _AddSavedViewPageState extends State<AddSavedViewPage> {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: Text(S.of(context).newView),
|
title: Text(S.of(context)!.newView),
|
||||||
),
|
),
|
||||||
floatingActionButton: FloatingActionButton.extended(
|
floatingActionButton: FloatingActionButton.extended(
|
||||||
icon: const Icon(Icons.add),
|
icon: const Icon(Icons.add),
|
||||||
onPressed: () => _onCreate(context),
|
onPressed: () => _onCreate(context),
|
||||||
label: Text(S.of(context).create),
|
label: Text(S.of(context)!.create),
|
||||||
),
|
),
|
||||||
body: Padding(
|
body: Padding(
|
||||||
padding: const EdgeInsets.all(8.0),
|
padding: const EdgeInsets.all(8.0),
|
||||||
@@ -46,18 +46,18 @@ class _AddSavedViewPageState extends State<AddSavedViewPage> {
|
|||||||
name: _AddSavedViewPageState.fkName,
|
name: _AddSavedViewPageState.fkName,
|
||||||
validator: FormBuilderValidators.required(),
|
validator: FormBuilderValidators.required(),
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
label: Text(S.of(context).name),
|
label: Text(S.of(context)!.name),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
FormBuilderCheckbox(
|
FormBuilderCheckbox(
|
||||||
name: _AddSavedViewPageState.fkShowOnDashboard,
|
name: _AddSavedViewPageState.fkShowOnDashboard,
|
||||||
initialValue: false,
|
initialValue: false,
|
||||||
title: Text(S.of(context).showOnDashboard),
|
title: Text(S.of(context)!.showOnDashboard),
|
||||||
),
|
),
|
||||||
FormBuilderCheckbox(
|
FormBuilderCheckbox(
|
||||||
name: _AddSavedViewPageState.fkShowInSidebar,
|
name: _AddSavedViewPageState.fkShowInSidebar,
|
||||||
initialValue: false,
|
initialValue: false,
|
||||||
title: Text(S.of(context).showInSidebar),
|
title: Text(S.of(context)!.showInSidebar),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@@ -94,18 +94,18 @@ class _AddSavedViewPageState extends State<AddSavedViewPage> {
|
|||||||
name: fkName,
|
name: fkName,
|
||||||
validator: FormBuilderValidators.required(),
|
validator: FormBuilderValidators.required(),
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
label: Text(S.of(context).name),
|
label: Text(S.of(context)!.name),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
FormBuilderCheckbox(
|
FormBuilderCheckbox(
|
||||||
name: fkShowOnDashboard,
|
name: fkShowOnDashboard,
|
||||||
initialValue: false,
|
initialValue: false,
|
||||||
title: Text(S.of(context).showOnDashboard),
|
title: Text(S.of(context)!.showOnDashboard),
|
||||||
),
|
),
|
||||||
FormBuilderCheckbox(
|
FormBuilderCheckbox(
|
||||||
name: fkShowInSidebar,
|
name: fkShowInSidebar,
|
||||||
initialValue: false,
|
initialValue: false,
|
||||||
title: Text(S.of(context).showInSidebar),
|
title: Text(S.of(context)!.showInSidebar),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import 'package:paperless_mobile/core/widgets/hint_card.dart';
|
|||||||
import 'package:paperless_mobile/features/saved_view/cubit/saved_view_cubit.dart';
|
import 'package:paperless_mobile/features/saved_view/cubit/saved_view_cubit.dart';
|
||||||
import 'package:paperless_mobile/features/saved_view_details/cubit/saved_view_details_cubit.dart';
|
import 'package:paperless_mobile/features/saved_view_details/cubit/saved_view_details_cubit.dart';
|
||||||
import 'package:paperless_mobile/features/saved_view_details/view/saved_view_details_page.dart';
|
import 'package:paperless_mobile/features/saved_view_details/view/saved_view_details_page.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class SavedViewList extends StatelessWidget {
|
class SavedViewList extends StatelessWidget {
|
||||||
const SavedViewList({super.key});
|
const SavedViewList({super.key});
|
||||||
@@ -21,7 +21,7 @@ class SavedViewList extends StatelessWidget {
|
|||||||
return SliverToBoxAdapter(
|
return SliverToBoxAdapter(
|
||||||
child: HintCard(
|
child: HintCard(
|
||||||
hintText:
|
hintText:
|
||||||
S.of(context).createViewsToQuicklyFilterYourDocuments,
|
S.of(context)!.createViewsToQuicklyFilterYourDocuments,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -33,7 +33,7 @@ class SavedViewList extends StatelessWidget {
|
|||||||
enabled: connectivity.isConnected,
|
enabled: connectivity.isConnected,
|
||||||
title: Text(view.name),
|
title: Text(view.name),
|
||||||
subtitle: Text(
|
subtitle: Text(
|
||||||
S.of(context).nFiltersSet(view.filterRules.length),
|
S.of(context)!.nFiltersSet(view.filterRules.length),
|
||||||
),
|
),
|
||||||
onTap: () {
|
onTap: () {
|
||||||
Navigator.of(context).push(
|
Navigator.of(context).push(
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import 'package:hydrated_bloc/hydrated_bloc.dart';
|
|||||||
import 'package:json_annotation/json_annotation.dart';
|
import 'package:json_annotation/json_annotation.dart';
|
||||||
import 'package:paperless_mobile/features/login/services/authentication_service.dart';
|
import 'package:paperless_mobile/features/login/services/authentication_service.dart';
|
||||||
import 'package:paperless_mobile/features/settings/model/color_scheme_option.dart';
|
import 'package:paperless_mobile/features/settings/model/color_scheme_option.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
part 'application_settings_cubit.g.dart';
|
part 'application_settings_cubit.g.dart';
|
||||||
part 'application_settings_state.dart';
|
part 'application_settings_state.dart';
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ class ApplicationSettingsState {
|
|||||||
|
|
||||||
static String get _defaultPreferredLocaleSubtag {
|
static String get _defaultPreferredLocaleSubtag {
|
||||||
String preferredLocale = Platform.localeName.split("_").first;
|
String preferredLocale = Platform.localeName.split("_").first;
|
||||||
if (!S.delegate.supportedLocales
|
if (!S.supportedLocales
|
||||||
.any((locale) => locale.languageCode == preferredLocale)) {
|
.any((locale) => locale.languageCode == preferredLocale)) {
|
||||||
preferredLocale = 'en';
|
preferredLocale = 'en';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,8 @@ import 'package:paperless_mobile/core/widgets/hint_card.dart';
|
|||||||
import 'package:paperless_mobile/extensions/flutter_extensions.dart';
|
import 'package:paperless_mobile/extensions/flutter_extensions.dart';
|
||||||
import 'package:paperless_mobile/features/login/cubit/authentication_cubit.dart';
|
import 'package:paperless_mobile/features/login/cubit/authentication_cubit.dart';
|
||||||
import 'package:paperless_mobile/features/settings/cubit/application_settings_cubit.dart';
|
import 'package:paperless_mobile/features/settings/cubit/application_settings_cubit.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
import 'package:paperless_mobile/helpers/message_helpers.dart';
|
import 'package:paperless_mobile/helpers/message_helpers.dart';
|
||||||
|
|
||||||
class AccountSettingsDialog extends StatelessWidget {
|
class AccountSettingsDialog extends StatelessWidget {
|
||||||
@@ -24,7 +25,7 @@ class AccountSettingsDialog extends StatelessWidget {
|
|||||||
title: Row(
|
title: Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
Text(S.of(context).account),
|
Text(S.of(context)!.account),
|
||||||
const CloseButton(),
|
const CloseButton(),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@@ -49,7 +50,7 @@ class AccountSettingsDialog extends StatelessWidget {
|
|||||||
ListTile(
|
ListTile(
|
||||||
dense: true,
|
dense: true,
|
||||||
leading: const Icon(Icons.person_add_rounded),
|
leading: const Icon(Icons.person_add_rounded),
|
||||||
title: Text(S.of(context).addAnotherAccount),
|
title: Text(S.of(context)!.addAnotherAccount),
|
||||||
onTap: () {},
|
onTap: () {},
|
||||||
),
|
),
|
||||||
const Divider(),
|
const Divider(),
|
||||||
@@ -60,7 +61,7 @@ class AccountSettingsDialog extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
child: Text(
|
child: Text(
|
||||||
S.of(context).disconnect,
|
S.of(context)!.disconnect,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Theme.of(context).colorScheme.onError,
|
color: Theme.of(context).colorScheme.onError,
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:paperless_mobile/features/settings/view/widgets/color_scheme_option_setting.dart';
|
import 'package:paperless_mobile/features/settings/view/widgets/color_scheme_option_setting.dart';
|
||||||
import 'package:paperless_mobile/features/settings/view/widgets/language_selection_setting.dart';
|
import 'package:paperless_mobile/features/settings/view/widgets/language_selection_setting.dart';
|
||||||
import 'package:paperless_mobile/features/settings/view/widgets/theme_mode_setting.dart';
|
import 'package:paperless_mobile/features/settings/view/widgets/theme_mode_setting.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
import 'package:paperless_mobile/constants.dart';
|
import 'package:paperless_mobile/constants.dart';
|
||||||
|
|
||||||
class ApplicationSettingsPage extends StatelessWidget {
|
class ApplicationSettingsPage extends StatelessWidget {
|
||||||
@@ -15,7 +16,7 @@ class ApplicationSettingsPage extends StatelessWidget {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: Text(S.of(context).applicationSettings),
|
title: Text(S.of(context)!.applicationSettings),
|
||||||
),
|
),
|
||||||
body: ListView(
|
body: ListView(
|
||||||
children: const [
|
children: const [
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:paperless_mobile/features/settings/view/widgets/biometric_authentication_setting.dart';
|
import 'package:paperless_mobile/features/settings/view/widgets/biometric_authentication_setting.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class SecuritySettingsPage extends StatelessWidget {
|
class SecuritySettingsPage extends StatelessWidget {
|
||||||
const SecuritySettingsPage({super.key});
|
const SecuritySettingsPage({super.key});
|
||||||
@@ -8,7 +8,7 @@ class SecuritySettingsPage extends StatelessWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(title: Text(S.of(context).security)),
|
appBar: AppBar(title: Text(S.of(context)!.security)),
|
||||||
body: ListView(
|
body: ListView(
|
||||||
children: const [
|
children: const [
|
||||||
BiometricAuthenticationSetting(),
|
BiometricAuthenticationSetting(),
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:paperless_mobile/features/settings/view/widgets/clear_storage_settings.dart';
|
import 'package:paperless_mobile/features/settings/view/widgets/clear_storage_settings.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class StorageSettingsPage extends StatelessWidget {
|
class StorageSettingsPage extends StatelessWidget {
|
||||||
const StorageSettingsPage({super.key});
|
const StorageSettingsPage({super.key});
|
||||||
@@ -9,7 +9,7 @@ class StorageSettingsPage extends StatelessWidget {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: Text(S.of(context).storage),
|
title: Text(S.of(context)!.storage),
|
||||||
),
|
),
|
||||||
body: ListView(
|
body: ListView(
|
||||||
children: const [
|
children: const [
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import 'package:paperless_mobile/core/bloc/paperless_server_information_state.da
|
|||||||
import 'package:paperless_mobile/features/settings/cubit/application_settings_cubit.dart';
|
import 'package:paperless_mobile/features/settings/cubit/application_settings_cubit.dart';
|
||||||
import 'package:paperless_mobile/features/settings/view/pages/application_settings_page.dart';
|
import 'package:paperless_mobile/features/settings/view/pages/application_settings_page.dart';
|
||||||
import 'package:paperless_mobile/features/settings/view/pages/security_settings_page.dart';
|
import 'package:paperless_mobile/features/settings/view/pages/security_settings_page.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class SettingsPage extends StatelessWidget {
|
class SettingsPage extends StatelessWidget {
|
||||||
const SettingsPage({super.key});
|
const SettingsPage({super.key});
|
||||||
@@ -14,7 +14,7 @@ class SettingsPage extends StatelessWidget {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: Text(S.of(context).settings),
|
title: Text(S.of(context)!.settings),
|
||||||
),
|
),
|
||||||
bottomNavigationBar: BlocBuilder<PaperlessServerInformationCubit,
|
bottomNavigationBar: BlocBuilder<PaperlessServerInformationCubit,
|
||||||
PaperlessServerInformationState>(
|
PaperlessServerInformationState>(
|
||||||
@@ -22,13 +22,13 @@ class SettingsPage extends StatelessWidget {
|
|||||||
final info = state.information!;
|
final info = state.information!;
|
||||||
return ListTile(
|
return ListTile(
|
||||||
title: Text(
|
title: Text(
|
||||||
S.of(context).loggedInAs(info.username ?? 'unknown') +
|
S.of(context)!.loggedInAs(info.username ?? 'unknown') +
|
||||||
"@${info.host}",
|
"@${info.host}",
|
||||||
style: Theme.of(context).textTheme.labelSmall,
|
style: Theme.of(context).textTheme.labelSmall,
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
),
|
),
|
||||||
subtitle: Text(
|
subtitle: Text(
|
||||||
S.of(context).paperlessServerVersion +
|
S.of(context)!.paperlessServerVersion +
|
||||||
' ' +
|
' ' +
|
||||||
info.version.toString() +
|
info.version.toString() +
|
||||||
' (API v${info.apiVersion})',
|
' (API v${info.apiVersion})',
|
||||||
@@ -42,21 +42,21 @@ class SettingsPage extends StatelessWidget {
|
|||||||
children: [
|
children: [
|
||||||
ListTile(
|
ListTile(
|
||||||
// leading: const Icon(Icons.style_outlined),
|
// leading: const Icon(Icons.style_outlined),
|
||||||
title: Text(S.of(context).applicationSettings),
|
title: Text(S.of(context)!.applicationSettings),
|
||||||
subtitle: Text(S.of(context).languageAndVisualAppearance),
|
subtitle: Text(S.of(context)!.languageAndVisualAppearance),
|
||||||
onTap: () => _goto(const ApplicationSettingsPage(), context),
|
onTap: () => _goto(const ApplicationSettingsPage(), context),
|
||||||
),
|
),
|
||||||
ListTile(
|
ListTile(
|
||||||
// leading: const Icon(Icons.security_outlined),
|
// leading: const Icon(Icons.security_outlined),
|
||||||
title: Text(S.of(context).security),
|
title: Text(S.of(context)!.security),
|
||||||
subtitle: Text(S.of(context).biometricAuthentication),
|
subtitle: Text(S.of(context)!.biometricAuthentication),
|
||||||
onTap: () => _goto(const SecuritySettingsPage(), context),
|
onTap: () => _goto(const SecuritySettingsPage(), context),
|
||||||
),
|
),
|
||||||
// ListTile(
|
// ListTile(
|
||||||
// // leading: const Icon(Icons.storage_outlined),
|
// // leading: const Icon(Icons.storage_outlined),
|
||||||
// title: Text(S.of(context).storage),
|
// title: Text(S.of(context)!.storage),
|
||||||
// subtitle:
|
// subtitle:
|
||||||
// Text(S.of(context).mangeFilesAndStorageSpace),
|
// Text(S.of(context)!.mangeFilesAndStorageSpace),
|
||||||
// onTap: () => _goto(const StorageSettingsPage(), context),
|
// onTap: () => _goto(const StorageSettingsPage(), context),
|
||||||
// ),
|
// ),
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:paperless_mobile/features/settings/cubit/application_settings_cubit.dart';
|
import 'package:paperless_mobile/features/settings/cubit/application_settings_cubit.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class BiometricAuthenticationSetting extends StatelessWidget {
|
class BiometricAuthenticationSetting extends StatelessWidget {
|
||||||
const BiometricAuthenticationSetting({super.key});
|
const BiometricAuthenticationSetting({super.key});
|
||||||
@@ -12,11 +12,11 @@ class BiometricAuthenticationSetting extends StatelessWidget {
|
|||||||
builder: (context, settings) {
|
builder: (context, settings) {
|
||||||
return SwitchListTile(
|
return SwitchListTile(
|
||||||
value: settings.isLocalAuthenticationEnabled,
|
value: settings.isLocalAuthenticationEnabled,
|
||||||
title: Text(S.of(context).biometricAuthentication),
|
title: Text(S.of(context)!.biometricAuthentication),
|
||||||
subtitle: Text(S.of(context).authenticateOnAppStart),
|
subtitle: Text(S.of(context)!.authenticateOnAppStart),
|
||||||
onChanged: (val) async {
|
onChanged: (val) async {
|
||||||
final String localizedReason =
|
final String localizedReason =
|
||||||
S.of(context).authenticateToToggleBiometricAuthentication(
|
S.of(context)!.authenticateToToggleBiometricAuthentication(
|
||||||
val ? 'enable' : 'disable',
|
val ? 'enable' : 'disable',
|
||||||
);
|
);
|
||||||
await context
|
await context
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import 'package:paperless_mobile/core/widgets/hint_card.dart';
|
|||||||
import 'package:paperless_mobile/features/settings/cubit/application_settings_cubit.dart';
|
import 'package:paperless_mobile/features/settings/cubit/application_settings_cubit.dart';
|
||||||
import 'package:paperless_mobile/features/settings/model/color_scheme_option.dart';
|
import 'package:paperless_mobile/features/settings/model/color_scheme_option.dart';
|
||||||
import 'package:paperless_mobile/features/settings/view/widgets/radio_settings_dialog.dart';
|
import 'package:paperless_mobile/features/settings/view/widgets/radio_settings_dialog.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class ColorSchemeOptionSetting extends StatelessWidget {
|
class ColorSchemeOptionSetting extends StatelessWidget {
|
||||||
const ColorSchemeOptionSetting({super.key});
|
const ColorSchemeOptionSetting({super.key});
|
||||||
@@ -18,7 +18,7 @@ class ColorSchemeOptionSetting extends StatelessWidget {
|
|||||||
return BlocBuilder<ApplicationSettingsCubit, ApplicationSettingsState>(
|
return BlocBuilder<ApplicationSettingsCubit, ApplicationSettingsState>(
|
||||||
builder: (context, settings) {
|
builder: (context, settings) {
|
||||||
return ListTile(
|
return ListTile(
|
||||||
title: Text(S.of(context).colors),
|
title: Text(S.of(context)!.colors),
|
||||||
subtitle: Text(
|
subtitle: Text(
|
||||||
translateColorSchemeOption(
|
translateColorSchemeOption(
|
||||||
context,
|
context,
|
||||||
@@ -28,8 +28,8 @@ class ColorSchemeOptionSetting extends StatelessWidget {
|
|||||||
onTap: () => showDialog(
|
onTap: () => showDialog(
|
||||||
context: context,
|
context: context,
|
||||||
builder: (_) => RadioSettingsDialog<ColorSchemeOption>(
|
builder: (_) => RadioSettingsDialog<ColorSchemeOption>(
|
||||||
titleText: S.of(context).colors,
|
titleText: S.of(context)!.colors,
|
||||||
descriptionText: S.of(context).colorSchemeHint,
|
descriptionText: S.of(context)!.colorSchemeHint,
|
||||||
options: [
|
options: [
|
||||||
RadioOption(
|
RadioOption(
|
||||||
value: ColorSchemeOption.classic,
|
value: ColorSchemeOption.classic,
|
||||||
@@ -46,7 +46,7 @@ class ColorSchemeOptionSetting extends StatelessWidget {
|
|||||||
],
|
],
|
||||||
footer: _isBelowAndroid12()
|
footer: _isBelowAndroid12()
|
||||||
? HintCard(
|
? HintCard(
|
||||||
hintText: S.of(context).colorSchemeNotSupportedWarning,
|
hintText: S.of(context)!.colorSchemeNotSupportedWarning,
|
||||||
hintIcon: Icons.warning_amber,
|
hintIcon: Icons.warning_amber,
|
||||||
)
|
)
|
||||||
: null,
|
: null,
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:paperless_mobile/features/settings/cubit/application_settings_cubit.dart';
|
import 'package:paperless_mobile/features/settings/cubit/application_settings_cubit.dart';
|
||||||
import 'package:paperless_mobile/features/settings/view/widgets/radio_settings_dialog.dart';
|
import 'package:paperless_mobile/features/settings/view/widgets/radio_settings_dialog.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class LanguageSelectionSetting extends StatefulWidget {
|
class LanguageSelectionSetting extends StatefulWidget {
|
||||||
const LanguageSelectionSetting({super.key});
|
const LanguageSelectionSetting({super.key});
|
||||||
@@ -25,7 +25,7 @@ class _LanguageSelectionSettingState extends State<LanguageSelectionSetting> {
|
|||||||
return BlocBuilder<ApplicationSettingsCubit, ApplicationSettingsState>(
|
return BlocBuilder<ApplicationSettingsCubit, ApplicationSettingsState>(
|
||||||
builder: (context, settings) {
|
builder: (context, settings) {
|
||||||
return ListTile(
|
return ListTile(
|
||||||
title: Text(S.of(context).language),
|
title: Text(S.of(context)!.language),
|
||||||
subtitle: Text(_languageOptions[settings.preferredLocaleSubtag]!),
|
subtitle: Text(_languageOptions[settings.preferredLocaleSubtag]!),
|
||||||
onTap: () => showDialog<String>(
|
onTap: () => showDialog<String>(
|
||||||
context: context,
|
context: context,
|
||||||
@@ -33,7 +33,7 @@ class _LanguageSelectionSettingState extends State<LanguageSelectionSetting> {
|
|||||||
footer: const Text(
|
footer: const Text(
|
||||||
"* Work in progress, not fully translated yet. Some words may be displayed in English!",
|
"* Work in progress, not fully translated yet. Some words may be displayed in English!",
|
||||||
),
|
),
|
||||||
titleText: S.of(context).language,
|
titleText: S.of(context)!.language,
|
||||||
options: [
|
options: [
|
||||||
RadioOption(
|
RadioOption(
|
||||||
value: 'en',
|
value: 'en',
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class RadioSettingsDialog<T> extends StatefulWidget {
|
class RadioSettingsDialog<T> extends StatefulWidget {
|
||||||
final List<RadioOption<T>> options;
|
final List<RadioOption<T>> options;
|
||||||
@@ -41,11 +41,11 @@ class _RadioSettingsDialogState<T> extends State<RadioSettingsDialog<T>> {
|
|||||||
widget.confirmButton ??
|
widget.confirmButton ??
|
||||||
TextButton(
|
TextButton(
|
||||||
onPressed: () => Navigator.pop(context),
|
onPressed: () => Navigator.pop(context),
|
||||||
child: Text(S.of(context).cancel)),
|
child: Text(S.of(context)!.cancel)),
|
||||||
widget.confirmButton ??
|
widget.confirmButton ??
|
||||||
TextButton(
|
TextButton(
|
||||||
onPressed: () => Navigator.pop(context, _groupValue),
|
onPressed: () => Navigator.pop(context, _groupValue),
|
||||||
child: Text(S.of(context).ok)),
|
child: Text(S.of(context)!.ok)),
|
||||||
],
|
],
|
||||||
title: widget.titleText != null ? Text(widget.titleText!) : null,
|
title: widget.titleText != null ? Text(widget.titleText!) : null,
|
||||||
content: Column(
|
content: Column(
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:paperless_mobile/features/settings/cubit/application_settings_cubit.dart';
|
import 'package:paperless_mobile/features/settings/cubit/application_settings_cubit.dart';
|
||||||
import 'package:paperless_mobile/features/settings/view/widgets/radio_settings_dialog.dart';
|
import 'package:paperless_mobile/features/settings/view/widgets/radio_settings_dialog.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class ThemeModeSetting extends StatelessWidget {
|
class ThemeModeSetting extends StatelessWidget {
|
||||||
const ThemeModeSetting({super.key});
|
const ThemeModeSetting({super.key});
|
||||||
@@ -12,13 +12,13 @@ class ThemeModeSetting extends StatelessWidget {
|
|||||||
return BlocBuilder<ApplicationSettingsCubit, ApplicationSettingsState>(
|
return BlocBuilder<ApplicationSettingsCubit, ApplicationSettingsState>(
|
||||||
builder: (context, settings) {
|
builder: (context, settings) {
|
||||||
return ListTile(
|
return ListTile(
|
||||||
title: Text(S.of(context).appearance),
|
title: Text(S.of(context)!.appearance),
|
||||||
subtitle: Text(_mapThemeModeToLocalizedString(
|
subtitle: Text(_mapThemeModeToLocalizedString(
|
||||||
settings.preferredThemeMode, context)),
|
settings.preferredThemeMode, context)),
|
||||||
onTap: () => showDialog<ThemeMode>(
|
onTap: () => showDialog<ThemeMode>(
|
||||||
context: context,
|
context: context,
|
||||||
builder: (_) => RadioSettingsDialog<ThemeMode>(
|
builder: (_) => RadioSettingsDialog<ThemeMode>(
|
||||||
titleText: S.of(context).appearance,
|
titleText: S.of(context)!.appearance,
|
||||||
initialValue: context
|
initialValue: context
|
||||||
.read<ApplicationSettingsCubit>()
|
.read<ApplicationSettingsCubit>()
|
||||||
.state
|
.state
|
||||||
@@ -26,15 +26,15 @@ class ThemeModeSetting extends StatelessWidget {
|
|||||||
options: [
|
options: [
|
||||||
RadioOption(
|
RadioOption(
|
||||||
value: ThemeMode.system,
|
value: ThemeMode.system,
|
||||||
label: S.of(context).systemTheme,
|
label: S.of(context)!.systemTheme,
|
||||||
),
|
),
|
||||||
RadioOption(
|
RadioOption(
|
||||||
value: ThemeMode.light,
|
value: ThemeMode.light,
|
||||||
label: S.of(context).lightTheme,
|
label: S.of(context)!.lightTheme,
|
||||||
),
|
),
|
||||||
RadioOption(
|
RadioOption(
|
||||||
value: ThemeMode.dark,
|
value: ThemeMode.dark,
|
||||||
label: S.of(context).darkTheme,
|
label: S.of(context)!.darkTheme,
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@@ -51,11 +51,11 @@ class ThemeModeSetting extends StatelessWidget {
|
|||||||
String _mapThemeModeToLocalizedString(ThemeMode theme, BuildContext context) {
|
String _mapThemeModeToLocalizedString(ThemeMode theme, BuildContext context) {
|
||||||
switch (theme) {
|
switch (theme) {
|
||||||
case ThemeMode.system:
|
case ThemeMode.system:
|
||||||
return S.of(context).system;
|
return S.of(context)!.system;
|
||||||
case ThemeMode.light:
|
case ThemeMode.light:
|
||||||
return S.of(context).light;
|
return S.of(context)!.light;
|
||||||
case ThemeMode.dark:
|
case ThemeMode.dark:
|
||||||
return S.of(context).dark;
|
return S.of(context)!.dark;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:paperless_api/paperless_api.dart';
|
import 'package:paperless_api/paperless_api.dart';
|
||||||
import 'package:paperless_mobile/core/service/github_issue_service.dart';
|
import 'package:paperless_mobile/core/service/github_issue_service.dart';
|
||||||
import 'package:paperless_mobile/core/translation/error_code_localization_mapper.dart';
|
import 'package:paperless_mobile/core/translation/error_code_localization_mapper.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class SnackBarActionConfig {
|
class SnackBarActionConfig {
|
||||||
final String label;
|
final String label;
|
||||||
@@ -68,7 +68,7 @@ void showGenericError(
|
|||||||
context,
|
context,
|
||||||
error.toString(),
|
error.toString(),
|
||||||
action: SnackBarActionConfig(
|
action: SnackBarActionConfig(
|
||||||
label: S.of(context).report,
|
label: S.of(context)!.report,
|
||||||
onPressed: () => GithubIssueService.createIssueFromError(
|
onPressed: () => GithubIssueService.createIssueFromError(
|
||||||
context,
|
context,
|
||||||
stackTrace: stackTrace,
|
stackTrace: stackTrace,
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
{
|
{
|
||||||
"@@locale": "cs",
|
|
||||||
"developedBy": "Vyvíjí {name}",
|
"developedBy": "Vyvíjí {name}",
|
||||||
"@developedBy": {
|
"@developedBy": {
|
||||||
"placeholders": {
|
"placeholders": {
|
||||||
@@ -11,29 +10,51 @@
|
|||||||
"account": "Účet",
|
"account": "Účet",
|
||||||
"@account": {},
|
"@account": {},
|
||||||
"addCorrespondent": "Nový korespondent",
|
"addCorrespondent": "Nový korespondent",
|
||||||
"@addCorrespondent": {},
|
"@addCorrespondent": {
|
||||||
|
"description": "Title when adding a new correspondent"
|
||||||
|
},
|
||||||
"addDocumentType": "Nový typ dokumentu",
|
"addDocumentType": "Nový typ dokumentu",
|
||||||
"@addDocumentType": {},
|
"@addDocumentType": {
|
||||||
|
"description": "Title when adding a new document type"
|
||||||
|
},
|
||||||
"addStoragePath": "Nová cesta úložiště",
|
"addStoragePath": "Nová cesta úložiště",
|
||||||
"@addStoragePath": {},
|
"@addStoragePath": {
|
||||||
|
"description": "Title when adding a new storage path"
|
||||||
|
},
|
||||||
"addTag": "Nový tag",
|
"addTag": "Nový tag",
|
||||||
"@addTag": {},
|
"@addTag": {
|
||||||
|
"description": "Title when adding a new tag"
|
||||||
|
},
|
||||||
"aboutThisApp": "O aplikaci",
|
"aboutThisApp": "O aplikaci",
|
||||||
"@aboutThisApp": {},
|
"@aboutThisApp": {
|
||||||
"loggedInAs": "Přihlášeno jako ",
|
"description": "Label for about this app tile displayed in the drawer"
|
||||||
"@loggedInAs": {},
|
},
|
||||||
|
"loggedInAs": "Přihlášeno jako {name}",
|
||||||
|
"@loggedInAs": {
|
||||||
|
"placeholders": {
|
||||||
|
"name": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
"disconnect": "Odpojit",
|
"disconnect": "Odpojit",
|
||||||
"@disconnect": {},
|
"@disconnect": {
|
||||||
|
"description": "Logout button label"
|
||||||
|
},
|
||||||
"reportABug": "Nahlásit chybu",
|
"reportABug": "Nahlásit chybu",
|
||||||
"@reportABug": {},
|
"@reportABug": {},
|
||||||
"settings": "Nastavení",
|
"settings": "Nastavení",
|
||||||
"@settings": {},
|
"@settings": {},
|
||||||
"authenticateOnAppStart": "Přihlášení při spuštění aplikace",
|
"authenticateOnAppStart": "Přihlášení při spuštění aplikace",
|
||||||
"@authenticateOnAppStart": {},
|
"@authenticateOnAppStart": {
|
||||||
|
"description": "Description of the biometric authentication settings tile"
|
||||||
|
},
|
||||||
"biometricAuthentication": "Zapnout biometrické ověření",
|
"biometricAuthentication": "Zapnout biometrické ověření",
|
||||||
"@biometricAuthentication": {},
|
"@biometricAuthentication": {},
|
||||||
"authenticateToToggleBiometricAuthentication": "{mode, select, enable{Pro zapnutí biometrického ověřování je třeba se přihlásit.} disable{Pro vypnutí biometrického ověřování je třeba se přihlásit.}}",
|
"authenticateToToggleBiometricAuthentication": "{mode, select, enable{Pro zapnutí biometrického ověřování je třeba se přihlásit} disable{Pro vypnutí biometrického ověřování je třeba se přihlásit} other{}}",
|
||||||
"@authenticateToToggleBiometricAuthentication": {},
|
"@authenticateToToggleBiometricAuthentication": {
|
||||||
|
"placeholders": {
|
||||||
|
"mode": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
"documents": "Dokumenty",
|
"documents": "Dokumenty",
|
||||||
"@documents": {},
|
"@documents": {},
|
||||||
"inbox": "Inbox",
|
"inbox": "Inbox",
|
||||||
@@ -42,10 +63,6 @@
|
|||||||
"@labels": {},
|
"@labels": {},
|
||||||
"scanner": "Skener",
|
"scanner": "Skener",
|
||||||
"@scanner": {},
|
"@scanner": {},
|
||||||
"classic": "Klasicky",
|
|
||||||
"@classic": {},
|
|
||||||
"dynamic": "Dynamicky",
|
|
||||||
"@dynamic": {},
|
|
||||||
"startTyping": "Začni psát...",
|
"startTyping": "Začni psát...",
|
||||||
"@startTyping": {},
|
"@startTyping": {},
|
||||||
"doYouReallyWantToDeleteThisView": "Opravdu chceš tento náhled smazat?",
|
"doYouReallyWantToDeleteThisView": "Opravdu chceš tento náhled smazat?",
|
||||||
@@ -64,14 +81,20 @@
|
|||||||
"@createdAt": {},
|
"@createdAt": {},
|
||||||
"documentSuccessfullyDeleted": "Dokument byl úspěšně smazán.",
|
"documentSuccessfullyDeleted": "Dokument byl úspěšně smazán.",
|
||||||
"@documentSuccessfullyDeleted": {},
|
"@documentSuccessfullyDeleted": {},
|
||||||
"AssignAsn": "Přiřadit",
|
"assignAsn": "Assign ASN",
|
||||||
"@AssignAsn": {},
|
"@assignAsn": {},
|
||||||
"deleteDocumentTooltip": "Smazat",
|
"deleteDocumentTooltip": "Smazat",
|
||||||
"@deleteDocumentTooltip": {},
|
"@deleteDocumentTooltip": {
|
||||||
|
"description": "Tooltip shown for the delete button on details page"
|
||||||
|
},
|
||||||
"downloadDocumentTooltip": "Stáhnout",
|
"downloadDocumentTooltip": "Stáhnout",
|
||||||
"@downloadDocumentTooltip": {},
|
"@downloadDocumentTooltip": {
|
||||||
|
"description": "Tooltip shown for the download button on details page"
|
||||||
|
},
|
||||||
"editDocumentTooltip": "Upravit",
|
"editDocumentTooltip": "Upravit",
|
||||||
"@editDocumentTooltip": {},
|
"@editDocumentTooltip": {
|
||||||
|
"description": "Tooltip shown for the edit button on details page"
|
||||||
|
},
|
||||||
"loadFullContent": "Načíst celý obsah",
|
"loadFullContent": "Načíst celý obsah",
|
||||||
"@loadFullContent": {},
|
"@loadFullContent": {},
|
||||||
"noAppToDisplayPDFFilesFound": "Aplikace pro otevírání PDF souborů nenalezena.",
|
"noAppToDisplayPDFFilesFound": "Aplikace pro otevírání PDF souborů nenalezena.",
|
||||||
@@ -81,25 +104,41 @@
|
|||||||
"couldNotOpenFilePermissionDenied": "Soubor nelze otevřít: přístup zamítnut.",
|
"couldNotOpenFilePermissionDenied": "Soubor nelze otevřít: přístup zamítnut.",
|
||||||
"@couldNotOpenFilePermissionDenied": {},
|
"@couldNotOpenFilePermissionDenied": {},
|
||||||
"previewTooltip": "Náhled",
|
"previewTooltip": "Náhled",
|
||||||
"@previewTooltip": {},
|
"@previewTooltip": {
|
||||||
|
"description": "Tooltip shown for the preview button on details page"
|
||||||
|
},
|
||||||
"shareTooltip": "Sdílet",
|
"shareTooltip": "Sdílet",
|
||||||
"@shareTooltip": {},
|
"@shareTooltip": {
|
||||||
|
"description": "Tooltip shown for the share button on details page"
|
||||||
|
},
|
||||||
"similarDocuments": "Podobné dokumenty",
|
"similarDocuments": "Podobné dokumenty",
|
||||||
"@similarDocuments": {},
|
"@similarDocuments": {
|
||||||
|
"description": "Label shown in the tabbar on details page"
|
||||||
|
},
|
||||||
"content": "Obsah",
|
"content": "Obsah",
|
||||||
"@content": {},
|
"@content": {
|
||||||
|
"description": "Label shown in the tabbar on details page"
|
||||||
|
},
|
||||||
"metaData": "Metadata",
|
"metaData": "Metadata",
|
||||||
"@metaData": {},
|
"@metaData": {
|
||||||
|
"description": "Label shown in the tabbar on details page"
|
||||||
|
},
|
||||||
"overview": "Přehled",
|
"overview": "Přehled",
|
||||||
"@overview": {},
|
"@overview": {
|
||||||
|
"description": "Label shown in the tabbar on details page"
|
||||||
|
},
|
||||||
"documentType": "Typ dokumentu",
|
"documentType": "Typ dokumentu",
|
||||||
"@documentType": {},
|
"@documentType": {},
|
||||||
"archivedPdf": "Archived (pdf)",
|
"archivedPdf": "Archived (pdf)",
|
||||||
"@archivedPdf": {},
|
"@archivedPdf": {
|
||||||
|
"description": "Option to chose when downloading a document"
|
||||||
|
},
|
||||||
"chooseFiletype": "Choose filetype",
|
"chooseFiletype": "Choose filetype",
|
||||||
"@chooseFiletype": {},
|
"@chooseFiletype": {},
|
||||||
"original": "Original",
|
"original": "Original",
|
||||||
"@original": {},
|
"@original": {
|
||||||
|
"description": "Option to chose when downloading a document"
|
||||||
|
},
|
||||||
"documentSuccessfullyDownloaded": "Dokument úspěšně stažen.",
|
"documentSuccessfullyDownloaded": "Dokument úspěšně stažen.",
|
||||||
"@documentSuccessfullyDownloaded": {},
|
"@documentSuccessfullyDownloaded": {},
|
||||||
"suggestions": "Návrhy:",
|
"suggestions": "Návrhy:",
|
||||||
@@ -119,7 +158,9 @@
|
|||||||
"reset": "Zrušit",
|
"reset": "Zrušit",
|
||||||
"@reset": {},
|
"@reset": {},
|
||||||
"filterDocuments": "Filtrovat dokumenty",
|
"filterDocuments": "Filtrovat dokumenty",
|
||||||
"@filterDocuments": {},
|
"@filterDocuments": {
|
||||||
|
"description": "Title of the document filter"
|
||||||
|
},
|
||||||
"originalMD5Checksum": "MD5 součet originálu",
|
"originalMD5Checksum": "MD5 součet originálu",
|
||||||
"@originalMD5Checksum": {},
|
"@originalMD5Checksum": {},
|
||||||
"mediaFilename": "Jméno souboru média",
|
"mediaFilename": "Jméno souboru média",
|
||||||
@@ -131,23 +172,33 @@
|
|||||||
"modifiedAt": "Pozměněno",
|
"modifiedAt": "Pozměněno",
|
||||||
"@modifiedAt": {},
|
"@modifiedAt": {},
|
||||||
"preview": "Náhled",
|
"preview": "Náhled",
|
||||||
"@preview": {},
|
"@preview": {
|
||||||
|
"description": "Title of the document preview page"
|
||||||
|
},
|
||||||
"scanADocument": "Oskenovat dokument",
|
"scanADocument": "Oskenovat dokument",
|
||||||
"@scanADocument": {},
|
"@scanADocument": {},
|
||||||
"noDocumentsScannedYet": "Zatím nebyly naskenovány žádné dokumenty.",
|
"noDocumentsScannedYet": "Zatím nebyly naskenovány žádné dokumenty.",
|
||||||
"@noDocumentsScannedYet": {},
|
"@noDocumentsScannedYet": {},
|
||||||
"or": "nebo",
|
"or": "nebo",
|
||||||
"@or": {},
|
"@or": {
|
||||||
|
"description": "Used on the scanner page between both main actions when no scans have been captured."
|
||||||
|
},
|
||||||
"deleteAllScans": "Smazat všechny skeny",
|
"deleteAllScans": "Smazat všechny skeny",
|
||||||
"@deleteAllScans": {},
|
"@deleteAllScans": {},
|
||||||
"uploadADocumentFromThisDevice": "Nahrát jeden dokument z tohoto zařízení",
|
"uploadADocumentFromThisDevice": "Nahrát jeden dokument z tohoto zařízení",
|
||||||
"@uploadADocumentFromThisDevice": {},
|
"@uploadADocumentFromThisDevice": {
|
||||||
|
"description": "Button label on scanner page"
|
||||||
|
},
|
||||||
"noMatchesFound": "Žádné shody.",
|
"noMatchesFound": "Žádné shody.",
|
||||||
"@noMatchesFound": {},
|
"@noMatchesFound": {
|
||||||
|
"description": "Displayed when no documents were found in the document search."
|
||||||
|
},
|
||||||
"removeFromSearchHistory": "Odstranit z historie vyhledávání?",
|
"removeFromSearchHistory": "Odstranit z historie vyhledávání?",
|
||||||
"@removeFromSearchHistory": {},
|
"@removeFromSearchHistory": {},
|
||||||
"results": "Výsledky",
|
"results": "Výsledky",
|
||||||
"@results": {},
|
"@results": {
|
||||||
|
"description": "Label displayed above search results in document search."
|
||||||
|
},
|
||||||
"searchDocuments": "Prohledat dokumenty",
|
"searchDocuments": "Prohledat dokumenty",
|
||||||
"@searchDocuments": {},
|
"@searchDocuments": {},
|
||||||
"resetFilter": "Zrušit",
|
"resetFilter": "Zrušit",
|
||||||
@@ -176,10 +227,19 @@
|
|||||||
"@thisActionIsIrreversibleDoYouWishToProceedAnyway": {},
|
"@thisActionIsIrreversibleDoYouWishToProceedAnyway": {},
|
||||||
"confirmDeletion": "Potvrdit smazání",
|
"confirmDeletion": "Potvrdit smazání",
|
||||||
"@confirmDeletion": {},
|
"@confirmDeletion": {},
|
||||||
"areYouSureYouWantToDeleteTheFollowingDocuments": "Jste si jisti že chcete smazat následující dokumenty?",
|
"areYouSureYouWantToDeleteTheFollowingDocuments": "{count, plural, one{Jste si jisti že chcete smazat následující dokument?} other{Jste si jisti že chcete smazat následující dokumenty?}}",
|
||||||
"@areYouSureYouWantToDeleteTheFollowingDocuments": {},
|
"@areYouSureYouWantToDeleteTheFollowingDocuments": {
|
||||||
|
"placeholders": {
|
||||||
|
"count": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
"countSelected": "{count} vybrány",
|
"countSelected": "{count} vybrány",
|
||||||
"@countSelected": {},
|
"@countSelected": {
|
||||||
|
"description": "Displayed in the appbar when at least one document is selected.",
|
||||||
|
"placeholders": {
|
||||||
|
"count": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
"storagePath": "Cesta k úložišti",
|
"storagePath": "Cesta k úložišti",
|
||||||
"@storagePath": {},
|
"@storagePath": {},
|
||||||
"prepareDocument": "Připravit dokument",
|
"prepareDocument": "Připravit dokument",
|
||||||
@@ -271,7 +331,9 @@
|
|||||||
"absolute": "Absolutní",
|
"absolute": "Absolutní",
|
||||||
"@absolute": {},
|
"@absolute": {},
|
||||||
"hintYouCanAlsoSpecifyRelativeValues": "Tip: Kromě konkrétního data lze také specifikovat relativní časovou odchylku k aktuálnímu datu.",
|
"hintYouCanAlsoSpecifyRelativeValues": "Tip: Kromě konkrétního data lze také specifikovat relativní časovou odchylku k aktuálnímu datu.",
|
||||||
"@hintYouCanAlsoSpecifyRelativeValues": {},
|
"@hintYouCanAlsoSpecifyRelativeValues": {
|
||||||
|
"description": "Displayed in the extended date range picker"
|
||||||
|
},
|
||||||
"amount": "Počet",
|
"amount": "Počet",
|
||||||
"@amount": {},
|
"@amount": {},
|
||||||
"relative": "Relativní",
|
"relative": "Relativní",
|
||||||
@@ -358,10 +420,10 @@
|
|||||||
"@upload": {},
|
"@upload": {},
|
||||||
"youreOffline": "Jste offline.",
|
"youreOffline": "Jste offline.",
|
||||||
"@youreOffline": {},
|
"@youreOffline": {},
|
||||||
"assignASN": "Přiřadit ASČ",
|
|
||||||
"@assignASN": {},
|
|
||||||
"deleteDocument": "Smazat dokument",
|
"deleteDocument": "Smazat dokument",
|
||||||
"@deleteDocument": {},
|
"@deleteDocument": {
|
||||||
|
"description": "Used as an action label on each inbox item"
|
||||||
|
},
|
||||||
"removeDocumentFromInbox": "Dokument odstraněn z inboxu.",
|
"removeDocumentFromInbox": "Dokument odstraněn z inboxu.",
|
||||||
"@removeDocumentFromInbox": {},
|
"@removeDocumentFromInbox": {},
|
||||||
"areYouSureYouWantToMarkAllDocumentsAsSeen": "Opravdu chcete označit všechny dokumenty jako shlédnuté? Toto provede hromadnou úpravu a odstraní inbox tag u všech dokumentů.\nToto je nevratná akce! Opravdu chcete pokračovat?",
|
"areYouSureYouWantToMarkAllDocumentsAsSeen": "Opravdu chcete označit všechny dokumenty jako shlédnuté? Toto provede hromadnou úpravu a odstraní inbox tag u všech dokumentů.\nToto je nevratná akce! Opravdu chcete pokračovat?",
|
||||||
@@ -385,7 +447,11 @@
|
|||||||
"undo": "Vrátit",
|
"undo": "Vrátit",
|
||||||
"@undo": {},
|
"@undo": {},
|
||||||
"nUnseen": "{count} neshlédnuté",
|
"nUnseen": "{count} neshlédnuté",
|
||||||
"@nUnseen": {},
|
"@nUnseen": {
|
||||||
|
"placeholders": {
|
||||||
|
"count": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
"swipeLeftToMarkADocumentAsSeen": "Tip: Potáhnutím doleva označit dokument jako shlédnutý a odstranit všechny inbox tagy.",
|
"swipeLeftToMarkADocumentAsSeen": "Tip: Potáhnutím doleva označit dokument jako shlédnutý a odstranit všechny inbox tagy.",
|
||||||
"@swipeLeftToMarkADocumentAsSeen": {},
|
"@swipeLeftToMarkADocumentAsSeen": {},
|
||||||
"yesterday": "Včera",
|
"yesterday": "Včera",
|
||||||
@@ -514,8 +580,8 @@
|
|||||||
"@done": {},
|
"@done": {},
|
||||||
"next": "Další",
|
"next": "Další",
|
||||||
"@next": {},
|
"@next": {},
|
||||||
"receiveSharedFilePermissionDeniedMessage": "Přístup k obdrženému souboru zamítnut. Než budeš sdílet, zkus nejdříve otevřít aplikaci.",
|
"couldNotAccessReceivedFile": "Could not access the received file. Please try to open the app before sharing.",
|
||||||
"@receiveSharedFilePermissionDeniedMessage": {},
|
"@couldNotAccessReceivedFile": {},
|
||||||
"newView": "Nový náhled",
|
"newView": "Nový náhled",
|
||||||
"@newView": {},
|
"@newView": {},
|
||||||
"createsASavedViewBasedOnTheCurrentFilterCriteria": "Vytvoří nový náhled na základě aktuálních pravidel filtru.",
|
"createsASavedViewBasedOnTheCurrentFilterCriteria": "Vytvoří nový náhled na základě aktuálních pravidel filtru.",
|
||||||
@@ -607,5 +673,9 @@
|
|||||||
"list": "List",
|
"list": "List",
|
||||||
"@list": {},
|
"@list": {},
|
||||||
"remove": "Remove",
|
"remove": "Remove",
|
||||||
"removeQueryFromSearchHistory": "Remove query from search history?"
|
"removeQueryFromSearchHistory": "Remove query from search history?",
|
||||||
|
"dynamicColorScheme": "Dynamicky",
|
||||||
|
"@dynamicColorScheme": {},
|
||||||
|
"classicColorScheme": "Klasicky",
|
||||||
|
"@classicColorScheme": {}
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
{
|
{
|
||||||
"@@locale": "de",
|
|
||||||
"developedBy": "Entwickelt von {name}",
|
"developedBy": "Entwickelt von {name}",
|
||||||
"@developedBy": {
|
"@developedBy": {
|
||||||
"placeholders": {
|
"placeholders": {
|
||||||
@@ -11,28 +10,46 @@
|
|||||||
"account": "Account",
|
"account": "Account",
|
||||||
"@account": {},
|
"@account": {},
|
||||||
"addCorrespondent": "Neuer Korrespondent",
|
"addCorrespondent": "Neuer Korrespondent",
|
||||||
"@addCorrespondent": {},
|
"@addCorrespondent": {
|
||||||
|
"description": "Title when adding a new correspondent"
|
||||||
|
},
|
||||||
"addDocumentType": "Neuer Dokumenttyp",
|
"addDocumentType": "Neuer Dokumenttyp",
|
||||||
"@addDocumentType": {},
|
"@addDocumentType": {
|
||||||
|
"description": "Title when adding a new document type"
|
||||||
|
},
|
||||||
"addStoragePath": "Neuer Speicherpfad",
|
"addStoragePath": "Neuer Speicherpfad",
|
||||||
"@addStoragePath": {},
|
"@addStoragePath": {
|
||||||
|
"description": "Title when adding a new storage path"
|
||||||
|
},
|
||||||
"addTag": "Neuer Tag",
|
"addTag": "Neuer Tag",
|
||||||
"@addTag": {},
|
"@addTag": {
|
||||||
|
"description": "Title when adding a new tag"
|
||||||
|
},
|
||||||
"aboutThisApp": "Über diese App",
|
"aboutThisApp": "Über diese App",
|
||||||
"@aboutThisApp": {},
|
"@aboutThisApp": {
|
||||||
"loggedInAs": "Eingeloggt als ",
|
"description": "Label for about this app tile displayed in the drawer"
|
||||||
"@loggedInAs": {},
|
},
|
||||||
|
"loggedInAs": "Eingeloggt als {name}",
|
||||||
|
"@loggedInAs": {
|
||||||
|
"placeholders": {
|
||||||
|
"name": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
"disconnect": "Verbindung trennen",
|
"disconnect": "Verbindung trennen",
|
||||||
"@disconnect": {},
|
"@disconnect": {
|
||||||
|
"description": "Logout button label"
|
||||||
|
},
|
||||||
"reportABug": "Einen Fehler melden",
|
"reportABug": "Einen Fehler melden",
|
||||||
"@reportABug": {},
|
"@reportABug": {},
|
||||||
"settings": "Einstellungen",
|
"settings": "Einstellungen",
|
||||||
"@settings": {},
|
"@settings": {},
|
||||||
"authenticateOnAppStart": "Authentifizierung beim Start der Anwendung",
|
"authenticateOnAppStart": "Authentifizierung beim Start der Anwendung",
|
||||||
"@authenticateOnAppStart": {},
|
"@authenticateOnAppStart": {
|
||||||
|
"description": "Description of the biometric authentication settings tile"
|
||||||
|
},
|
||||||
"biometricAuthentication": "Biometrische Authentifizierung aktivieren",
|
"biometricAuthentication": "Biometrische Authentifizierung aktivieren",
|
||||||
"@biometricAuthentication": {},
|
"@biometricAuthentication": {},
|
||||||
"authenticateToToggleBiometricAuthentication": "{mode, select, enable{Authentifizieren, um die biometrische Authentifizierung zu aktivieren.} disable{Authentifizieren, um die biometrische Authentifizierung zu deaktivieren.}}",
|
"authenticateToToggleBiometricAuthentication": "{mode, select, enable{Authentifizieren, um die biometrische Authentifizierung zu aktivieren} disable{Authentifizieren, um die biometrische Authentifizierung zu deaktivieren} other{}}",
|
||||||
"@authenticateToToggleBiometricAuthentication": {
|
"@authenticateToToggleBiometricAuthentication": {
|
||||||
"placeholders": {
|
"placeholders": {
|
||||||
"mode": {}
|
"mode": {}
|
||||||
@@ -46,10 +63,6 @@
|
|||||||
"@labels": {},
|
"@labels": {},
|
||||||
"scanner": "Scanner",
|
"scanner": "Scanner",
|
||||||
"@scanner": {},
|
"@scanner": {},
|
||||||
"classic": "Klassisch",
|
|
||||||
"@classic": {},
|
|
||||||
"dynamic": "Dynamisch",
|
|
||||||
"@dynamic": {},
|
|
||||||
"startTyping": "Beginne zu tippen...",
|
"startTyping": "Beginne zu tippen...",
|
||||||
"@startTyping": {},
|
"@startTyping": {},
|
||||||
"doYouReallyWantToDeleteThisView": "Möchtest Du diese Ansicht wirklich löschen?",
|
"doYouReallyWantToDeleteThisView": "Möchtest Du diese Ansicht wirklich löschen?",
|
||||||
@@ -68,14 +81,20 @@
|
|||||||
"@createdAt": {},
|
"@createdAt": {},
|
||||||
"documentSuccessfullyDeleted": "Das Dokument wurde erfolgreich gelöscht.",
|
"documentSuccessfullyDeleted": "Das Dokument wurde erfolgreich gelöscht.",
|
||||||
"@documentSuccessfullyDeleted": {},
|
"@documentSuccessfullyDeleted": {},
|
||||||
"AssignAsn": "Zuweisen",
|
"assignAsn": "ASN zuweisen",
|
||||||
"@AssignAsn": {},
|
"@assignAsn": {},
|
||||||
"deleteDocumentTooltip": "Löschen",
|
"deleteDocumentTooltip": "Löschen",
|
||||||
"@deleteDocumentTooltip": {},
|
"@deleteDocumentTooltip": {
|
||||||
|
"description": "Tooltip shown for the delete button on details page"
|
||||||
|
},
|
||||||
"downloadDocumentTooltip": "Herunterladen",
|
"downloadDocumentTooltip": "Herunterladen",
|
||||||
"@downloadDocumentTooltip": {},
|
"@downloadDocumentTooltip": {
|
||||||
|
"description": "Tooltip shown for the download button on details page"
|
||||||
|
},
|
||||||
"editDocumentTooltip": "Bearbeiten",
|
"editDocumentTooltip": "Bearbeiten",
|
||||||
"@editDocumentTooltip": {},
|
"@editDocumentTooltip": {
|
||||||
|
"description": "Tooltip shown for the edit button on details page"
|
||||||
|
},
|
||||||
"loadFullContent": "Lade gesamten Inhalt",
|
"loadFullContent": "Lade gesamten Inhalt",
|
||||||
"@loadFullContent": {},
|
"@loadFullContent": {},
|
||||||
"noAppToDisplayPDFFilesFound": "Es wurde keine App zum Anzeigen von PDF Dateien gefunden!",
|
"noAppToDisplayPDFFilesFound": "Es wurde keine App zum Anzeigen von PDF Dateien gefunden!",
|
||||||
@@ -85,25 +104,41 @@
|
|||||||
"couldNotOpenFilePermissionDenied": "Datei konnte nicht geöffnet werden: Zugriff verweigert.",
|
"couldNotOpenFilePermissionDenied": "Datei konnte nicht geöffnet werden: Zugriff verweigert.",
|
||||||
"@couldNotOpenFilePermissionDenied": {},
|
"@couldNotOpenFilePermissionDenied": {},
|
||||||
"previewTooltip": "Vorschau",
|
"previewTooltip": "Vorschau",
|
||||||
"@previewTooltip": {},
|
"@previewTooltip": {
|
||||||
|
"description": "Tooltip shown for the preview button on details page"
|
||||||
|
},
|
||||||
"shareTooltip": "Teilen",
|
"shareTooltip": "Teilen",
|
||||||
"@shareTooltip": {},
|
"@shareTooltip": {
|
||||||
|
"description": "Tooltip shown for the share button on details page"
|
||||||
|
},
|
||||||
"similarDocuments": "Similar Documents",
|
"similarDocuments": "Similar Documents",
|
||||||
"@similarDocuments": {},
|
"@similarDocuments": {
|
||||||
|
"description": "Label shown in the tabbar on details page"
|
||||||
|
},
|
||||||
"content": "Inhalt",
|
"content": "Inhalt",
|
||||||
"@content": {},
|
"@content": {
|
||||||
|
"description": "Label shown in the tabbar on details page"
|
||||||
|
},
|
||||||
"metaData": "Metadaten",
|
"metaData": "Metadaten",
|
||||||
"@metaData": {},
|
"@metaData": {
|
||||||
|
"description": "Label shown in the tabbar on details page"
|
||||||
|
},
|
||||||
"overview": "Übersicht",
|
"overview": "Übersicht",
|
||||||
"@overview": {},
|
"@overview": {
|
||||||
|
"description": "Label shown in the tabbar on details page"
|
||||||
|
},
|
||||||
"documentType": "Dokumenttyp",
|
"documentType": "Dokumenttyp",
|
||||||
"@documentType": {},
|
"@documentType": {},
|
||||||
"archivedPdf": "Archiviert (pdf)",
|
"archivedPdf": "Archiviert (pdf)",
|
||||||
"@archivedPdf": {},
|
"@archivedPdf": {
|
||||||
|
"description": "Option to chose when downloading a document"
|
||||||
|
},
|
||||||
"chooseFiletype": "Wähle Dateityp",
|
"chooseFiletype": "Wähle Dateityp",
|
||||||
"@chooseFiletype": {},
|
"@chooseFiletype": {},
|
||||||
"original": "Original",
|
"original": "Original",
|
||||||
"@original": {},
|
"@original": {
|
||||||
|
"description": "Option to chose when downloading a document"
|
||||||
|
},
|
||||||
"documentSuccessfullyDownloaded": "Dokument erfolgreich heruntergeladen.",
|
"documentSuccessfullyDownloaded": "Dokument erfolgreich heruntergeladen.",
|
||||||
"@documentSuccessfullyDownloaded": {},
|
"@documentSuccessfullyDownloaded": {},
|
||||||
"suggestions": "Vorschläge: ",
|
"suggestions": "Vorschläge: ",
|
||||||
@@ -123,7 +158,9 @@
|
|||||||
"reset": "Zurücksetzen",
|
"reset": "Zurücksetzen",
|
||||||
"@reset": {},
|
"@reset": {},
|
||||||
"filterDocuments": "Dokumente filtern",
|
"filterDocuments": "Dokumente filtern",
|
||||||
"@filterDocuments": {},
|
"@filterDocuments": {
|
||||||
|
"description": "Title of the document filter"
|
||||||
|
},
|
||||||
"originalMD5Checksum": "MD5-Prüfsumme Original",
|
"originalMD5Checksum": "MD5-Prüfsumme Original",
|
||||||
"@originalMD5Checksum": {},
|
"@originalMD5Checksum": {},
|
||||||
"mediaFilename": "Media-Dateiname",
|
"mediaFilename": "Media-Dateiname",
|
||||||
@@ -135,23 +172,33 @@
|
|||||||
"modifiedAt": "Geändert am",
|
"modifiedAt": "Geändert am",
|
||||||
"@modifiedAt": {},
|
"@modifiedAt": {},
|
||||||
"preview": "Vorschau",
|
"preview": "Vorschau",
|
||||||
"@preview": {},
|
"@preview": {
|
||||||
|
"description": "Title of the document preview page"
|
||||||
|
},
|
||||||
"scanADocument": "Scanne ein Dokument",
|
"scanADocument": "Scanne ein Dokument",
|
||||||
"@scanADocument": {},
|
"@scanADocument": {},
|
||||||
"noDocumentsScannedYet": "Es wurden noch keine Dokumente gescannt.",
|
"noDocumentsScannedYet": "Es wurden noch keine Dokumente gescannt.",
|
||||||
"@noDocumentsScannedYet": {},
|
"@noDocumentsScannedYet": {},
|
||||||
"or": "oder",
|
"or": "oder",
|
||||||
"@or": {},
|
"@or": {
|
||||||
|
"description": "Used on the scanner page between both main actions when no scans have been captured."
|
||||||
|
},
|
||||||
"deleteAllScans": "Alle scans löschen",
|
"deleteAllScans": "Alle scans löschen",
|
||||||
"@deleteAllScans": {},
|
"@deleteAllScans": {},
|
||||||
"uploadADocumentFromThisDevice": "Lade ein Dokument von diesem Gerät hoch",
|
"uploadADocumentFromThisDevice": "Lade ein Dokument von diesem Gerät hoch",
|
||||||
"@uploadADocumentFromThisDevice": {},
|
"@uploadADocumentFromThisDevice": {
|
||||||
|
"description": "Button label on scanner page"
|
||||||
|
},
|
||||||
"noMatchesFound": "Keine Treffer.",
|
"noMatchesFound": "Keine Treffer.",
|
||||||
"@noMatchesFound": {},
|
"@noMatchesFound": {
|
||||||
|
"description": "Displayed when no documents were found in the document search."
|
||||||
|
},
|
||||||
"removeFromSearchHistory": "Aus dem Suchverlauf entfernen?",
|
"removeFromSearchHistory": "Aus dem Suchverlauf entfernen?",
|
||||||
"@removeFromSearchHistory": {},
|
"@removeFromSearchHistory": {},
|
||||||
"results": "Ergebnisse",
|
"results": "Ergebnisse",
|
||||||
"@results": {},
|
"@results": {
|
||||||
|
"description": "Label displayed above search results in document search."
|
||||||
|
},
|
||||||
"searchDocuments": "Durchsuche Dokumente",
|
"searchDocuments": "Durchsuche Dokumente",
|
||||||
"@searchDocuments": {},
|
"@searchDocuments": {},
|
||||||
"resetFilter": "Filter zurücksetzen",
|
"resetFilter": "Filter zurücksetzen",
|
||||||
@@ -180,10 +227,19 @@
|
|||||||
"@thisActionIsIrreversibleDoYouWishToProceedAnyway": {},
|
"@thisActionIsIrreversibleDoYouWishToProceedAnyway": {},
|
||||||
"confirmDeletion": "Löschen bestätigen",
|
"confirmDeletion": "Löschen bestätigen",
|
||||||
"@confirmDeletion": {},
|
"@confirmDeletion": {},
|
||||||
"areYouSureYouWantToDeleteTheFollowingDocuments": "Bist Du sicher, dass Du folgende Dokumente löschen möchtest?",
|
"areYouSureYouWantToDeleteTheFollowingDocuments": "{count, plural, one{Bist Du sicher, dass Du folgendes Dokument löschen möchtest?} other{Bist Du sicher, dass Du folgende Dokumente löschen möchtest?}}",
|
||||||
"@areYouSureYouWantToDeleteTheFollowingDocuments": {},
|
"@areYouSureYouWantToDeleteTheFollowingDocuments": {
|
||||||
|
"placeholders": {
|
||||||
|
"count": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
"countSelected": "{count} ausgewählt",
|
"countSelected": "{count} ausgewählt",
|
||||||
"@countSelected": {},
|
"@countSelected": {
|
||||||
|
"description": "Displayed in the appbar when at least one document is selected.",
|
||||||
|
"placeholders": {
|
||||||
|
"count": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
"storagePath": "Speicherpfad",
|
"storagePath": "Speicherpfad",
|
||||||
"@storagePath": {},
|
"@storagePath": {},
|
||||||
"prepareDocument": "Dokument vorbereiten",
|
"prepareDocument": "Dokument vorbereiten",
|
||||||
@@ -275,7 +331,9 @@
|
|||||||
"absolute": "Absolut",
|
"absolute": "Absolut",
|
||||||
"@absolute": {},
|
"@absolute": {},
|
||||||
"hintYouCanAlsoSpecifyRelativeValues": "Hinweis: Neben konkreten Daten kannst du den Zeitraum auch über eine relative Zeitspanne einschränken.",
|
"hintYouCanAlsoSpecifyRelativeValues": "Hinweis: Neben konkreten Daten kannst du den Zeitraum auch über eine relative Zeitspanne einschränken.",
|
||||||
"@hintYouCanAlsoSpecifyRelativeValues": {},
|
"@hintYouCanAlsoSpecifyRelativeValues": {
|
||||||
|
"description": "Displayed in the extended date range picker"
|
||||||
|
},
|
||||||
"amount": "Anzahl",
|
"amount": "Anzahl",
|
||||||
"@amount": {},
|
"@amount": {},
|
||||||
"relative": "Relativ",
|
"relative": "Relativ",
|
||||||
@@ -362,10 +420,10 @@
|
|||||||
"@upload": {},
|
"@upload": {},
|
||||||
"youreOffline": "Du bist offline.",
|
"youreOffline": "Du bist offline.",
|
||||||
"@youreOffline": {},
|
"@youreOffline": {},
|
||||||
"assignASN": "ASN zuweisen",
|
|
||||||
"@assignASN": {},
|
|
||||||
"deleteDocument": "Dokument löschen",
|
"deleteDocument": "Dokument löschen",
|
||||||
"@deleteDocument": {},
|
"@deleteDocument": {
|
||||||
|
"description": "Used as an action label on each inbox item"
|
||||||
|
},
|
||||||
"removeDocumentFromInbox": "Dokument aus Posteingang entfernt.",
|
"removeDocumentFromInbox": "Dokument aus Posteingang entfernt.",
|
||||||
"@removeDocumentFromInbox": {},
|
"@removeDocumentFromInbox": {},
|
||||||
"areYouSureYouWantToMarkAllDocumentsAsSeen": "Bist Du sicher, dass Du alle Dokumente als gesehen markieren möchtest? Dadurch wird eine Massenbearbeitung durchgeführt, bei der alle Posteingangs-Tags von den Dokumenten entfernt werden. Diese Aktion kann nicht rückgängig gemacht werden! Möchtest Du trotzdem fortfahren?",
|
"areYouSureYouWantToMarkAllDocumentsAsSeen": "Bist Du sicher, dass Du alle Dokumente als gesehen markieren möchtest? Dadurch wird eine Massenbearbeitung durchgeführt, bei der alle Posteingangs-Tags von den Dokumenten entfernt werden. Diese Aktion kann nicht rückgängig gemacht werden! Möchtest Du trotzdem fortfahren?",
|
||||||
@@ -389,7 +447,11 @@
|
|||||||
"undo": "Undo",
|
"undo": "Undo",
|
||||||
"@undo": {},
|
"@undo": {},
|
||||||
"nUnseen": "{count} ungesehen",
|
"nUnseen": "{count} ungesehen",
|
||||||
"@nUnseen": {},
|
"@nUnseen": {
|
||||||
|
"placeholders": {
|
||||||
|
"count": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
"swipeLeftToMarkADocumentAsSeen": "Tipp: Wische nach links um ein Dokument als gesehen zu markieren und alle Posteingangs-Tags von diesem Dokument zu entfernen.",
|
"swipeLeftToMarkADocumentAsSeen": "Tipp: Wische nach links um ein Dokument als gesehen zu markieren und alle Posteingangs-Tags von diesem Dokument zu entfernen.",
|
||||||
"@swipeLeftToMarkADocumentAsSeen": {},
|
"@swipeLeftToMarkADocumentAsSeen": {},
|
||||||
"yesterday": "Gestern",
|
"yesterday": "Gestern",
|
||||||
@@ -611,5 +673,9 @@
|
|||||||
"list": "Liste",
|
"list": "Liste",
|
||||||
"@list": {},
|
"@list": {},
|
||||||
"remove": "Remove",
|
"remove": "Remove",
|
||||||
"removeQueryFromSearchHistory": "Remove query from search history?"
|
"removeQueryFromSearchHistory": "Remove query from search history?",
|
||||||
|
"dynamicColorScheme": "Dynamisch",
|
||||||
|
"@dynamicColorScheme": {},
|
||||||
|
"classicColorScheme": "Klassisch",
|
||||||
|
"@classicColorScheme": {}
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
{
|
{
|
||||||
"@@locale": "en",
|
|
||||||
"developedBy": "Developed by {name}",
|
"developedBy": "Developed by {name}",
|
||||||
"@developedBy": {
|
"@developedBy": {
|
||||||
"placeholders": {
|
"placeholders": {
|
||||||
@@ -50,7 +49,7 @@
|
|||||||
},
|
},
|
||||||
"biometricAuthentication": "Biometric authentication",
|
"biometricAuthentication": "Biometric authentication",
|
||||||
"@biometricAuthentication": {},
|
"@biometricAuthentication": {},
|
||||||
"authenticateToToggleBiometricAuthentication": "{mode, select, enable{Authenticate enable biometric authentication} disable{Authenticate to disable biometric authentication}}",
|
"authenticateToToggleBiometricAuthentication": "{mode, select, enable{Authenticate enable biometric authentication} disable{Authenticate to disable biometric authentication} other{}}",
|
||||||
"@authenticateToToggleBiometricAuthentication": {
|
"@authenticateToToggleBiometricAuthentication": {
|
||||||
"placeholders": {
|
"placeholders": {
|
||||||
"mode": {}
|
"mode": {}
|
||||||
@@ -64,10 +63,6 @@
|
|||||||
"@labels": {},
|
"@labels": {},
|
||||||
"scanner": "Scanner",
|
"scanner": "Scanner",
|
||||||
"@scanner": {},
|
"@scanner": {},
|
||||||
"classic": "Classic",
|
|
||||||
"@classic": {},
|
|
||||||
"dynamic": "Dynamic",
|
|
||||||
"@dynamic": {},
|
|
||||||
"startTyping": "Start typing...",
|
"startTyping": "Start typing...",
|
||||||
"@startTyping": {},
|
"@startTyping": {},
|
||||||
"doYouReallyWantToDeleteThisView": "Do you really want to delete this view?",
|
"doYouReallyWantToDeleteThisView": "Do you really want to delete this view?",
|
||||||
@@ -86,8 +81,8 @@
|
|||||||
"@createdAt": {},
|
"@createdAt": {},
|
||||||
"documentSuccessfullyDeleted": "Document successfully deleted.",
|
"documentSuccessfullyDeleted": "Document successfully deleted.",
|
||||||
"@documentSuccessfullyDeleted": {},
|
"@documentSuccessfullyDeleted": {},
|
||||||
"AssignAsn": "Assign ASN",
|
"assignAsn": "Assign ASN",
|
||||||
"@AssignAsn": {},
|
"@assignAsn": {},
|
||||||
"deleteDocumentTooltip": "Delete",
|
"deleteDocumentTooltip": "Delete",
|
||||||
"@deleteDocumentTooltip": {
|
"@deleteDocumentTooltip": {
|
||||||
"description": "Tooltip shown for the delete button on details page"
|
"description": "Tooltip shown for the delete button on details page"
|
||||||
@@ -425,8 +420,6 @@
|
|||||||
"@upload": {},
|
"@upload": {},
|
||||||
"youreOffline": "You're offline.",
|
"youreOffline": "You're offline.",
|
||||||
"@youreOffline": {},
|
"@youreOffline": {},
|
||||||
"assignASN": "Assign ASN",
|
|
||||||
"@assignASN": {},
|
|
||||||
"deleteDocument": "Delete document",
|
"deleteDocument": "Delete document",
|
||||||
"@deleteDocument": {
|
"@deleteDocument": {
|
||||||
"description": "Used as an action label on each inbox item"
|
"description": "Used as an action label on each inbox item"
|
||||||
@@ -680,5 +673,9 @@
|
|||||||
"list": "List",
|
"list": "List",
|
||||||
"@list": {},
|
"@list": {},
|
||||||
"remove": "Remove",
|
"remove": "Remove",
|
||||||
"removeQueryFromSearchHistory": "Remove query from search history?"
|
"removeQueryFromSearchHistory": "Remove query from search history?",
|
||||||
|
"dynamicColorScheme": "Dynamic",
|
||||||
|
"@dynamicColorScheme": {},
|
||||||
|
"classicColorScheme": "Classic",
|
||||||
|
"@classicColorScheme": {}
|
||||||
}
|
}
|
||||||
681
lib/l10n/intl_fr.arb
Normal file
681
lib/l10n/intl_fr.arb
Normal file
@@ -0,0 +1,681 @@
|
|||||||
|
{
|
||||||
|
"developedBy": "Developed by {name}",
|
||||||
|
"@developedBy": {
|
||||||
|
"placeholders": {
|
||||||
|
"name": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"addAnotherAccount": "Add another account",
|
||||||
|
"@addAnotherAccount": {},
|
||||||
|
"account": "Account",
|
||||||
|
"@account": {},
|
||||||
|
"addCorrespondent": "New Correspondent",
|
||||||
|
"@addCorrespondent": {
|
||||||
|
"description": "Title when adding a new correspondent"
|
||||||
|
},
|
||||||
|
"addDocumentType": "New Document Type",
|
||||||
|
"@addDocumentType": {
|
||||||
|
"description": "Title when adding a new document type"
|
||||||
|
},
|
||||||
|
"addStoragePath": "New Storage Path",
|
||||||
|
"@addStoragePath": {
|
||||||
|
"description": "Title when adding a new storage path"
|
||||||
|
},
|
||||||
|
"addTag": "New Tag",
|
||||||
|
"@addTag": {
|
||||||
|
"description": "Title when adding a new tag"
|
||||||
|
},
|
||||||
|
"aboutThisApp": "About this app",
|
||||||
|
"@aboutThisApp": {
|
||||||
|
"description": "Label for about this app tile displayed in the drawer"
|
||||||
|
},
|
||||||
|
"loggedInAs": "Logged in as {name}",
|
||||||
|
"@loggedInAs": {
|
||||||
|
"placeholders": {
|
||||||
|
"name": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"disconnect": "Disconnect",
|
||||||
|
"@disconnect": {
|
||||||
|
"description": "Logout button label"
|
||||||
|
},
|
||||||
|
"reportABug": "Report a Bug",
|
||||||
|
"@reportABug": {},
|
||||||
|
"settings": "Settings",
|
||||||
|
"@settings": {},
|
||||||
|
"authenticateOnAppStart": "Authenticate on app start",
|
||||||
|
"@authenticateOnAppStart": {
|
||||||
|
"description": "Description of the biometric authentication settings tile"
|
||||||
|
},
|
||||||
|
"biometricAuthentication": "Biometric authentication",
|
||||||
|
"@biometricAuthentication": {},
|
||||||
|
"authenticateToToggleBiometricAuthentication": "{mode, select, enable{Authenticate enable biometric authentication} disable{Authenticate to disable biometric authentication} other{}}",
|
||||||
|
"@authenticateToToggleBiometricAuthentication": {
|
||||||
|
"placeholders": {
|
||||||
|
"mode": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"documents": "Documents",
|
||||||
|
"@documents": {},
|
||||||
|
"inbox": "Inbox",
|
||||||
|
"@inbox": {},
|
||||||
|
"labels": "Labels",
|
||||||
|
"@labels": {},
|
||||||
|
"scanner": "Scanner",
|
||||||
|
"@scanner": {},
|
||||||
|
"startTyping": "Start typing...",
|
||||||
|
"@startTyping": {},
|
||||||
|
"doYouReallyWantToDeleteThisView": "Do you really want to delete this view?",
|
||||||
|
"@doYouReallyWantToDeleteThisView": {},
|
||||||
|
"deleteView": "Delete view ",
|
||||||
|
"@deleteView": {},
|
||||||
|
"addedAt": "Added at",
|
||||||
|
"@addedAt": {},
|
||||||
|
"archiveSerialNumber": "Archive Serial Number",
|
||||||
|
"@archiveSerialNumber": {},
|
||||||
|
"asn": "ASN",
|
||||||
|
"@asn": {},
|
||||||
|
"correspondent": "Correspondent",
|
||||||
|
"@correspondent": {},
|
||||||
|
"createdAt": "Created at",
|
||||||
|
"@createdAt": {},
|
||||||
|
"documentSuccessfullyDeleted": "Document successfully deleted.",
|
||||||
|
"@documentSuccessfullyDeleted": {},
|
||||||
|
"assignAsn": "Assign ASN",
|
||||||
|
"@assignAsn": {},
|
||||||
|
"deleteDocumentTooltip": "Delete",
|
||||||
|
"@deleteDocumentTooltip": {
|
||||||
|
"description": "Tooltip shown for the delete button on details page"
|
||||||
|
},
|
||||||
|
"downloadDocumentTooltip": "Download",
|
||||||
|
"@downloadDocumentTooltip": {
|
||||||
|
"description": "Tooltip shown for the download button on details page"
|
||||||
|
},
|
||||||
|
"editDocumentTooltip": "Edit",
|
||||||
|
"@editDocumentTooltip": {
|
||||||
|
"description": "Tooltip shown for the edit button on details page"
|
||||||
|
},
|
||||||
|
"loadFullContent": "Load full content",
|
||||||
|
"@loadFullContent": {},
|
||||||
|
"noAppToDisplayPDFFilesFound": "No app to display PDF files found!",
|
||||||
|
"@noAppToDisplayPDFFilesFound": {},
|
||||||
|
"openInSystemViewer": "Open in system viewer",
|
||||||
|
"@openInSystemViewer": {},
|
||||||
|
"couldNotOpenFilePermissionDenied": "Could not open file: Permission denied.",
|
||||||
|
"@couldNotOpenFilePermissionDenied": {},
|
||||||
|
"previewTooltip": "Preview",
|
||||||
|
"@previewTooltip": {
|
||||||
|
"description": "Tooltip shown for the preview button on details page"
|
||||||
|
},
|
||||||
|
"shareTooltip": "Share",
|
||||||
|
"@shareTooltip": {
|
||||||
|
"description": "Tooltip shown for the share button on details page"
|
||||||
|
},
|
||||||
|
"similarDocuments": "Similar Documents",
|
||||||
|
"@similarDocuments": {
|
||||||
|
"description": "Label shown in the tabbar on details page"
|
||||||
|
},
|
||||||
|
"content": "Content",
|
||||||
|
"@content": {
|
||||||
|
"description": "Label shown in the tabbar on details page"
|
||||||
|
},
|
||||||
|
"metaData": "Meta Data",
|
||||||
|
"@metaData": {
|
||||||
|
"description": "Label shown in the tabbar on details page"
|
||||||
|
},
|
||||||
|
"overview": "Overview",
|
||||||
|
"@overview": {
|
||||||
|
"description": "Label shown in the tabbar on details page"
|
||||||
|
},
|
||||||
|
"documentType": "Document Type",
|
||||||
|
"@documentType": {},
|
||||||
|
"archivedPdf": "Archived (pdf)",
|
||||||
|
"@archivedPdf": {
|
||||||
|
"description": "Option to chose when downloading a document"
|
||||||
|
},
|
||||||
|
"chooseFiletype": "Choose filetype",
|
||||||
|
"@chooseFiletype": {},
|
||||||
|
"original": "Original",
|
||||||
|
"@original": {
|
||||||
|
"description": "Option to chose when downloading a document"
|
||||||
|
},
|
||||||
|
"documentSuccessfullyDownloaded": "Document successfully downloaded.",
|
||||||
|
"@documentSuccessfullyDownloaded": {},
|
||||||
|
"suggestions": "Suggestions: ",
|
||||||
|
"@suggestions": {},
|
||||||
|
"editDocument": "Edit Document",
|
||||||
|
"@editDocument": {},
|
||||||
|
"advanced": "Advanced",
|
||||||
|
"@advanced": {},
|
||||||
|
"apply": "Apply",
|
||||||
|
"@apply": {},
|
||||||
|
"extended": "Extended",
|
||||||
|
"@extended": {},
|
||||||
|
"titleAndContent": "Title & Content",
|
||||||
|
"@titleAndContent": {},
|
||||||
|
"title": "Title",
|
||||||
|
"@title": {},
|
||||||
|
"reset": "Reset",
|
||||||
|
"@reset": {},
|
||||||
|
"filterDocuments": "Filter Documents",
|
||||||
|
"@filterDocuments": {
|
||||||
|
"description": "Title of the document filter"
|
||||||
|
},
|
||||||
|
"originalMD5Checksum": "Original MD5-Checksum",
|
||||||
|
"@originalMD5Checksum": {},
|
||||||
|
"mediaFilename": "Media Filename",
|
||||||
|
"@mediaFilename": {},
|
||||||
|
"originalFileSize": "Original File Size",
|
||||||
|
"@originalFileSize": {},
|
||||||
|
"originalMIMEType": "Original MIME-Type",
|
||||||
|
"@originalMIMEType": {},
|
||||||
|
"modifiedAt": "Modified at",
|
||||||
|
"@modifiedAt": {},
|
||||||
|
"preview": "Preview",
|
||||||
|
"@preview": {
|
||||||
|
"description": "Title of the document preview page"
|
||||||
|
},
|
||||||
|
"scanADocument": "Scan a document",
|
||||||
|
"@scanADocument": {},
|
||||||
|
"noDocumentsScannedYet": "No documents scanned yet.",
|
||||||
|
"@noDocumentsScannedYet": {},
|
||||||
|
"or": "or",
|
||||||
|
"@or": {
|
||||||
|
"description": "Used on the scanner page between both main actions when no scans have been captured."
|
||||||
|
},
|
||||||
|
"deleteAllScans": "Delete all scans",
|
||||||
|
"@deleteAllScans": {},
|
||||||
|
"uploadADocumentFromThisDevice": "Upload a document from this device",
|
||||||
|
"@uploadADocumentFromThisDevice": {
|
||||||
|
"description": "Button label on scanner page"
|
||||||
|
},
|
||||||
|
"noMatchesFound": "No matches found.",
|
||||||
|
"@noMatchesFound": {
|
||||||
|
"description": "Displayed when no documents were found in the document search."
|
||||||
|
},
|
||||||
|
"removeFromSearchHistory": "Remove from search history?",
|
||||||
|
"@removeFromSearchHistory": {},
|
||||||
|
"results": "Results",
|
||||||
|
"@results": {
|
||||||
|
"description": "Label displayed above search results in document search."
|
||||||
|
},
|
||||||
|
"searchDocuments": "Search documents",
|
||||||
|
"@searchDocuments": {},
|
||||||
|
"resetFilter": "Reset filter",
|
||||||
|
"@resetFilter": {},
|
||||||
|
"lastMonth": "Last Month",
|
||||||
|
"@lastMonth": {},
|
||||||
|
"last7Days": "Last 7 Days",
|
||||||
|
"@last7Days": {},
|
||||||
|
"last3Months": "Last 3 Months",
|
||||||
|
"@last3Months": {},
|
||||||
|
"lastYear": "Last Year",
|
||||||
|
"@lastYear": {},
|
||||||
|
"search": "Search",
|
||||||
|
"@search": {},
|
||||||
|
"documentsSuccessfullyDeleted": "Documents successfully deleted.",
|
||||||
|
"@documentsSuccessfullyDeleted": {},
|
||||||
|
"thereSeemsToBeNothingHere": "There seems to be nothing here...",
|
||||||
|
"@thereSeemsToBeNothingHere": {},
|
||||||
|
"oops": "Oops.",
|
||||||
|
"@oops": {},
|
||||||
|
"newDocumentAvailable": "New document available!",
|
||||||
|
"@newDocumentAvailable": {},
|
||||||
|
"orderBy": "Order By",
|
||||||
|
"@orderBy": {},
|
||||||
|
"thisActionIsIrreversibleDoYouWishToProceedAnyway": "This action is irreversible. Do you wish to proceed anyway?",
|
||||||
|
"@thisActionIsIrreversibleDoYouWishToProceedAnyway": {},
|
||||||
|
"confirmDeletion": "Confirm deletion",
|
||||||
|
"@confirmDeletion": {},
|
||||||
|
"areYouSureYouWantToDeleteTheFollowingDocuments": "{count, plural, one{Are you sure you want to delete the following document?} other{Are you sure you want to delete the following documents?}}",
|
||||||
|
"@areYouSureYouWantToDeleteTheFollowingDocuments": {
|
||||||
|
"placeholders": {
|
||||||
|
"count": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"countSelected": "{count} selected",
|
||||||
|
"@countSelected": {
|
||||||
|
"description": "Displayed in the appbar when at least one document is selected.",
|
||||||
|
"placeholders": {
|
||||||
|
"count": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"storagePath": "Storage Path",
|
||||||
|
"@storagePath": {},
|
||||||
|
"prepareDocument": "Prepare document",
|
||||||
|
"@prepareDocument": {},
|
||||||
|
"tags": "Tags",
|
||||||
|
"@tags": {},
|
||||||
|
"documentSuccessfullyUpdated": "Document successfully updated.",
|
||||||
|
"@documentSuccessfullyUpdated": {},
|
||||||
|
"fileName": "File Name",
|
||||||
|
"@fileName": {},
|
||||||
|
"synchronizeTitleAndFilename": "Synchronize title and filename",
|
||||||
|
"@synchronizeTitleAndFilename": {},
|
||||||
|
"reload": "Reload",
|
||||||
|
"@reload": {},
|
||||||
|
"documentSuccessfullyUploadedProcessing": "Document successfully uploaded, processing...",
|
||||||
|
"@documentSuccessfullyUploadedProcessing": {},
|
||||||
|
"deleteLabelWarningText": "This label contains references to other documents. By deleting this label, all references will be removed. Continue?",
|
||||||
|
"@deleteLabelWarningText": {},
|
||||||
|
"couldNotAcknowledgeTasks": "Could not acknowledge tasks.",
|
||||||
|
"@couldNotAcknowledgeTasks": {},
|
||||||
|
"authenticationFailedPleaseTryAgain": "Authentication failed, please try again.",
|
||||||
|
"@authenticationFailedPleaseTryAgain": {},
|
||||||
|
"anErrorOccurredWhileTryingToAutocompleteYourQuery": "An error ocurred while trying to autocomplete your query.",
|
||||||
|
"@anErrorOccurredWhileTryingToAutocompleteYourQuery": {},
|
||||||
|
"biometricAuthenticationFailed": "Biometric authentication failed.",
|
||||||
|
"@biometricAuthenticationFailed": {},
|
||||||
|
"biometricAuthenticationNotSupported": "Biometric authentication not supported on this device.",
|
||||||
|
"@biometricAuthenticationNotSupported": {},
|
||||||
|
"couldNotBulkEditDocuments": "Could not bulk edit documents.",
|
||||||
|
"@couldNotBulkEditDocuments": {},
|
||||||
|
"couldNotCreateCorrespondent": "Could not create correspondent, please try again.",
|
||||||
|
"@couldNotCreateCorrespondent": {},
|
||||||
|
"couldNotLoadCorrespondents": "Could not load correspondents.",
|
||||||
|
"@couldNotLoadCorrespondents": {},
|
||||||
|
"couldNotCreateSavedView": "Could not create saved view, please try again.",
|
||||||
|
"@couldNotCreateSavedView": {},
|
||||||
|
"couldNotDeleteSavedView": "Could not delete saved view, please try again",
|
||||||
|
"@couldNotDeleteSavedView": {},
|
||||||
|
"youAreCurrentlyOffline": "You are currently offline. Please make sure you are connected to the internet.",
|
||||||
|
"@youAreCurrentlyOffline": {},
|
||||||
|
"couldNotAssignArchiveSerialNumber": "Could not assign archive serial number.",
|
||||||
|
"@couldNotAssignArchiveSerialNumber": {},
|
||||||
|
"couldNotDeleteDocument": "Could not delete document, please try again.",
|
||||||
|
"@couldNotDeleteDocument": {},
|
||||||
|
"couldNotLoadDocuments": "Could not load documents, please try again.",
|
||||||
|
"@couldNotLoadDocuments": {},
|
||||||
|
"couldNotLoadDocumentPreview": "Could not load document preview.",
|
||||||
|
"@couldNotLoadDocumentPreview": {},
|
||||||
|
"couldNotCreateDocument": "Could not create document, please try again.",
|
||||||
|
"@couldNotCreateDocument": {},
|
||||||
|
"couldNotLoadDocumentTypes": "Could not load document types, please try again.",
|
||||||
|
"@couldNotLoadDocumentTypes": {},
|
||||||
|
"couldNotUpdateDocument": "Could not update document, please try again.",
|
||||||
|
"@couldNotUpdateDocument": {},
|
||||||
|
"couldNotUploadDocument": "Could not upload document, please try again.",
|
||||||
|
"@couldNotUploadDocument": {},
|
||||||
|
"invalidCertificateOrMissingPassphrase": "Invalid certificate or missing passphrase, please try again",
|
||||||
|
"@invalidCertificateOrMissingPassphrase": {},
|
||||||
|
"couldNotLoadSavedViews": "Could not load saved views.",
|
||||||
|
"@couldNotLoadSavedViews": {},
|
||||||
|
"aClientCertificateWasExpectedButNotSent": "A client certificate was expected but not sent. Please provide a valid client certificate.",
|
||||||
|
"@aClientCertificateWasExpectedButNotSent": {},
|
||||||
|
"userIsNotAuthenticated": "User is not authenticated.",
|
||||||
|
"@userIsNotAuthenticated": {},
|
||||||
|
"requestTimedOut": "The request to the server timed out.",
|
||||||
|
"@requestTimedOut": {},
|
||||||
|
"anErrorOccurredRemovingTheScans": "An error occurred removing the scans.",
|
||||||
|
"@anErrorOccurredRemovingTheScans": {},
|
||||||
|
"couldNotReachYourPaperlessServer": "Could not reach your Paperless server, is it up and running?",
|
||||||
|
"@couldNotReachYourPaperlessServer": {},
|
||||||
|
"couldNotLoadSimilarDocuments": "Could not load similar documents.",
|
||||||
|
"@couldNotLoadSimilarDocuments": {},
|
||||||
|
"couldNotCreateStoragePath": "Could not create storage path, please try again.",
|
||||||
|
"@couldNotCreateStoragePath": {},
|
||||||
|
"couldNotLoadStoragePaths": "Could not load storage paths.",
|
||||||
|
"@couldNotLoadStoragePaths": {},
|
||||||
|
"couldNotLoadSuggestions": "Could not load suggestions.",
|
||||||
|
"@couldNotLoadSuggestions": {},
|
||||||
|
"couldNotCreateTag": "Could not create tag, please try again.",
|
||||||
|
"@couldNotCreateTag": {},
|
||||||
|
"couldNotLoadTags": "Could not load tags.",
|
||||||
|
"@couldNotLoadTags": {},
|
||||||
|
"anUnknownErrorOccurred": "An unknown error occurred.",
|
||||||
|
"@anUnknownErrorOccurred": {},
|
||||||
|
"fileFormatNotSupported": "This file format is not supported.",
|
||||||
|
"@fileFormatNotSupported": {},
|
||||||
|
"report": "REPORT",
|
||||||
|
"@report": {},
|
||||||
|
"absolute": "Absolute",
|
||||||
|
"@absolute": {},
|
||||||
|
"hintYouCanAlsoSpecifyRelativeValues": "Hint: Apart from concrete dates, you can also specify a time range relative to the current date.",
|
||||||
|
"@hintYouCanAlsoSpecifyRelativeValues": {
|
||||||
|
"description": "Displayed in the extended date range picker"
|
||||||
|
},
|
||||||
|
"amount": "Amount",
|
||||||
|
"@amount": {},
|
||||||
|
"relative": "Relative",
|
||||||
|
"@relative": {},
|
||||||
|
"last": "Last",
|
||||||
|
"@last": {},
|
||||||
|
"timeUnit": "Time unit",
|
||||||
|
"@timeUnit": {},
|
||||||
|
"selectDateRange": "Select date range",
|
||||||
|
"@selectDateRange": {},
|
||||||
|
"after": "After",
|
||||||
|
"@after": {},
|
||||||
|
"before": "Before",
|
||||||
|
"@before": {},
|
||||||
|
"days": "{count, plural, zero{days} one{day} other{days}}",
|
||||||
|
"@days": {
|
||||||
|
"placeholders": {
|
||||||
|
"count": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lastNDays": "{count, plural, zero{} one{Yesterday} other{Last {count} days}}",
|
||||||
|
"@lastNDays": {
|
||||||
|
"placeholders": {
|
||||||
|
"count": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lastNMonths": "{count, plural, zero{} one{Last month} other{Last {count} months}}",
|
||||||
|
"@lastNMonths": {
|
||||||
|
"placeholders": {
|
||||||
|
"count": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lastNWeeks": "{count, plural, zero{} one{Last week} other{Last {count} weeks}}",
|
||||||
|
"@lastNWeeks": {
|
||||||
|
"placeholders": {
|
||||||
|
"count": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lastNYears": "{count, plural, zero{} one{Last year} other{Last {count} years}}",
|
||||||
|
"@lastNYears": {
|
||||||
|
"placeholders": {
|
||||||
|
"count": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"months": "{count, plural, zero{} one{month} other{months}}",
|
||||||
|
"@months": {
|
||||||
|
"placeholders": {
|
||||||
|
"count": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"weeks": "{count, plural, zero{} one{week} other{weeks}}",
|
||||||
|
"@weeks": {
|
||||||
|
"placeholders": {
|
||||||
|
"count": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"years": "{count, plural, zero{} one{year} other{years}}",
|
||||||
|
"@years": {
|
||||||
|
"placeholders": {
|
||||||
|
"count": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gotIt": "Got it!",
|
||||||
|
"@gotIt": {},
|
||||||
|
"cancel": "Cancel",
|
||||||
|
"@cancel": {},
|
||||||
|
"close": "Close",
|
||||||
|
"@close": {},
|
||||||
|
"create": "Create",
|
||||||
|
"@create": {},
|
||||||
|
"delete": "Delete",
|
||||||
|
"@delete": {},
|
||||||
|
"edit": "Edit",
|
||||||
|
"@edit": {},
|
||||||
|
"ok": "Ok",
|
||||||
|
"@ok": {},
|
||||||
|
"save": "Save",
|
||||||
|
"@save": {},
|
||||||
|
"select": "Select",
|
||||||
|
"@select": {},
|
||||||
|
"saveChanges": "Save changes",
|
||||||
|
"@saveChanges": {},
|
||||||
|
"upload": "Upload",
|
||||||
|
"@upload": {},
|
||||||
|
"youreOffline": "You're offline.",
|
||||||
|
"@youreOffline": {},
|
||||||
|
"deleteDocument": "Delete document",
|
||||||
|
"@deleteDocument": {
|
||||||
|
"description": "Used as an action label on each inbox item"
|
||||||
|
},
|
||||||
|
"removeDocumentFromInbox": "Document removed from inbox.",
|
||||||
|
"@removeDocumentFromInbox": {},
|
||||||
|
"areYouSureYouWantToMarkAllDocumentsAsSeen": "Are you sure you want to mark all documents as seen? This will perform a bulk edit operation removing all inbox tags from the documents. This action is not reversible! Are you sure you want to continue?",
|
||||||
|
"@areYouSureYouWantToMarkAllDocumentsAsSeen": {},
|
||||||
|
"markAllAsSeen": "Mark all as seen?",
|
||||||
|
"@markAllAsSeen": {},
|
||||||
|
"allSeen": "All seen",
|
||||||
|
"@allSeen": {},
|
||||||
|
"markAsSeen": "Mark as seen",
|
||||||
|
"@markAsSeen": {},
|
||||||
|
"refresh": "Refresh",
|
||||||
|
"@refresh": {},
|
||||||
|
"youDoNotHaveUnseenDocuments": "You do not have unseen documents.",
|
||||||
|
"@youDoNotHaveUnseenDocuments": {},
|
||||||
|
"quickAction": "Quick Action",
|
||||||
|
"@quickAction": {},
|
||||||
|
"suggestionSuccessfullyApplied": "Suggestion successfully applied.",
|
||||||
|
"@suggestionSuccessfullyApplied": {},
|
||||||
|
"today": "Today",
|
||||||
|
"@today": {},
|
||||||
|
"undo": "Undo",
|
||||||
|
"@undo": {},
|
||||||
|
"nUnseen": "{count} unseen",
|
||||||
|
"@nUnseen": {
|
||||||
|
"placeholders": {
|
||||||
|
"count": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"swipeLeftToMarkADocumentAsSeen": "Hint: Swipe left to mark a document as seen and remove all inbox tags from the document.",
|
||||||
|
"@swipeLeftToMarkADocumentAsSeen": {},
|
||||||
|
"yesterday": "Yesterday",
|
||||||
|
"@yesterday": {},
|
||||||
|
"anyAssigned": "Any assigned",
|
||||||
|
"@anyAssigned": {},
|
||||||
|
"noItemsFound": "No items found!",
|
||||||
|
"@noItemsFound": {},
|
||||||
|
"caseIrrelevant": "Case Irrelevant",
|
||||||
|
"@caseIrrelevant": {},
|
||||||
|
"matchingAlgorithm": "Matching Algorithm",
|
||||||
|
"@matchingAlgorithm": {},
|
||||||
|
"match": "Match",
|
||||||
|
"@match": {},
|
||||||
|
"name": "Name",
|
||||||
|
"@name": {},
|
||||||
|
"notAssigned": "Not assigned",
|
||||||
|
"@notAssigned": {},
|
||||||
|
"addNewCorrespondent": "Add new correspondent",
|
||||||
|
"@addNewCorrespondent": {},
|
||||||
|
"noCorrespondentsSetUp": "You don't seem to have any correspondents set up.",
|
||||||
|
"@noCorrespondentsSetUp": {},
|
||||||
|
"correspondents": "Correspondents",
|
||||||
|
"@correspondents": {},
|
||||||
|
"addNewDocumentType": "Add new document type",
|
||||||
|
"@addNewDocumentType": {},
|
||||||
|
"noDocumentTypesSetUp": "You don't seem to have any document types set up.",
|
||||||
|
"@noDocumentTypesSetUp": {},
|
||||||
|
"documentTypes": "Document Types",
|
||||||
|
"@documentTypes": {},
|
||||||
|
"addNewStoragePath": "Add new storage path",
|
||||||
|
"@addNewStoragePath": {},
|
||||||
|
"noStoragePathsSetUp": "You don't seem to have any storage paths set up.",
|
||||||
|
"@noStoragePathsSetUp": {},
|
||||||
|
"storagePaths": "Storage Paths",
|
||||||
|
"@storagePaths": {},
|
||||||
|
"addNewTag": "Add new tag",
|
||||||
|
"@addNewTag": {},
|
||||||
|
"noTagsSetUp": "You don't seem to have any tags set up.",
|
||||||
|
"@noTagsSetUp": {},
|
||||||
|
"linkedDocuments": "Linked Documents",
|
||||||
|
"@linkedDocuments": {},
|
||||||
|
"advancedSettings": "Advanced Settings",
|
||||||
|
"@advancedSettings": {},
|
||||||
|
"passphrase": "Passphrase",
|
||||||
|
"@passphrase": {},
|
||||||
|
"configureMutualTLSAuthentication": "Configure Mutual TLS Authentication",
|
||||||
|
"@configureMutualTLSAuthentication": {},
|
||||||
|
"invalidCertificateFormat": "Invalid certificate format, only .pfx is allowed",
|
||||||
|
"@invalidCertificateFormat": {},
|
||||||
|
"clientcertificate": "Client Certificate",
|
||||||
|
"@clientcertificate": {},
|
||||||
|
"selectFile": "Select file...",
|
||||||
|
"@selectFile": {},
|
||||||
|
"continueLabel": "Continue",
|
||||||
|
"@continueLabel": {},
|
||||||
|
"incorrectOrMissingCertificatePassphrase": "Incorrect or missing certificate passphrase.",
|
||||||
|
"@incorrectOrMissingCertificatePassphrase": {},
|
||||||
|
"connect": "Connect",
|
||||||
|
"@connect": {},
|
||||||
|
"password": "Password",
|
||||||
|
"@password": {},
|
||||||
|
"passwordMustNotBeEmpty": "Password must not be empty.",
|
||||||
|
"@passwordMustNotBeEmpty": {},
|
||||||
|
"connectionTimedOut": "Connection timed out.",
|
||||||
|
"@connectionTimedOut": {},
|
||||||
|
"loginPageReachabilityMissingClientCertificateText": "A client certificate was expected but not sent. Please provide a certificate.",
|
||||||
|
"@loginPageReachabilityMissingClientCertificateText": {},
|
||||||
|
"couldNotEstablishConnectionToTheServer": "Could not establish a connection to the server.",
|
||||||
|
"@couldNotEstablishConnectionToTheServer": {},
|
||||||
|
"connectionSuccessfulylEstablished": "Connection successfully established.",
|
||||||
|
"@connectionSuccessfulylEstablished": {},
|
||||||
|
"hostCouldNotBeResolved": "Host could not be resolved. Please check the server address and your internet connection. ",
|
||||||
|
"@hostCouldNotBeResolved": {},
|
||||||
|
"serverAddress": "Server Address",
|
||||||
|
"@serverAddress": {},
|
||||||
|
"invalidAddress": "Invalid address.",
|
||||||
|
"@invalidAddress": {},
|
||||||
|
"serverAddressMustIncludeAScheme": "Server address must include a scheme.",
|
||||||
|
"@serverAddressMustIncludeAScheme": {},
|
||||||
|
"serverAddressMustNotBeEmpty": "Server address must not be empty.",
|
||||||
|
"@serverAddressMustNotBeEmpty": {},
|
||||||
|
"signIn": "Sign In",
|
||||||
|
"@signIn": {},
|
||||||
|
"loginPageSignInTitle": "Sign In",
|
||||||
|
"@loginPageSignInTitle": {},
|
||||||
|
"signInToServer": "Sign in to {serverAddress}",
|
||||||
|
"@signInToServer": {
|
||||||
|
"placeholders": {
|
||||||
|
"serverAddress": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"connectToPaperless": "Connect to Paperless",
|
||||||
|
"@connectToPaperless": {},
|
||||||
|
"username": "Username",
|
||||||
|
"@username": {},
|
||||||
|
"usernameMustNotBeEmpty": "Username must not be empty.",
|
||||||
|
"@usernameMustNotBeEmpty": {},
|
||||||
|
"documentContainsAllOfTheseWords": "Document contains all of these words",
|
||||||
|
"@documentContainsAllOfTheseWords": {},
|
||||||
|
"all": "All",
|
||||||
|
"@all": {},
|
||||||
|
"documentContainsAnyOfTheseWords": "Document contains any of these words",
|
||||||
|
"@documentContainsAnyOfTheseWords": {},
|
||||||
|
"any": "Any",
|
||||||
|
"@any": {},
|
||||||
|
"learnMatchingAutomatically": "Learn matching automatically",
|
||||||
|
"@learnMatchingAutomatically": {},
|
||||||
|
"auto": "Auto",
|
||||||
|
"@auto": {},
|
||||||
|
"documentContainsThisString": "Document contains this string",
|
||||||
|
"@documentContainsThisString": {},
|
||||||
|
"exact": "Exact",
|
||||||
|
"@exact": {},
|
||||||
|
"documentContainsAWordSimilarToThisWord": "Document contains a word similar to this word",
|
||||||
|
"@documentContainsAWordSimilarToThisWord": {},
|
||||||
|
"fuzzy": "Fuzzy",
|
||||||
|
"@fuzzy": {},
|
||||||
|
"documentMatchesThisRegularExpression": "Document matches this regular expression",
|
||||||
|
"@documentMatchesThisRegularExpression": {},
|
||||||
|
"regularExpression": "Regular Expression",
|
||||||
|
"@regularExpression": {},
|
||||||
|
"anInternetConnectionCouldNotBeEstablished": "An internet connection could not be established.",
|
||||||
|
"@anInternetConnectionCouldNotBeEstablished": {},
|
||||||
|
"done": "Done",
|
||||||
|
"@done": {},
|
||||||
|
"next": "Next",
|
||||||
|
"@next": {},
|
||||||
|
"couldNotAccessReceivedFile": "Could not access the received file. Please try to open the app before sharing.",
|
||||||
|
"@couldNotAccessReceivedFile": {},
|
||||||
|
"newView": "New View",
|
||||||
|
"@newView": {},
|
||||||
|
"createsASavedViewBasedOnTheCurrentFilterCriteria": "Creates a new view based on the current filter criteria.",
|
||||||
|
"@createsASavedViewBasedOnTheCurrentFilterCriteria": {},
|
||||||
|
"createViewsToQuicklyFilterYourDocuments": "Create views to quickly filter your documents.",
|
||||||
|
"@createViewsToQuicklyFilterYourDocuments": {},
|
||||||
|
"nFiltersSet": "{count, plural, zero{{count} filters set} one{{count} filter set} other{{count} filters set}}",
|
||||||
|
"@nFiltersSet": {
|
||||||
|
"placeholders": {
|
||||||
|
"count": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"showInSidebar": "Show in sidebar",
|
||||||
|
"@showInSidebar": {},
|
||||||
|
"showOnDashboard": "Show on dashboard",
|
||||||
|
"@showOnDashboard": {},
|
||||||
|
"views": "Views",
|
||||||
|
"@views": {},
|
||||||
|
"clearAll": "Clear all",
|
||||||
|
"@clearAll": {},
|
||||||
|
"scan": "Scan",
|
||||||
|
"@scan": {},
|
||||||
|
"previewScan": "Preview",
|
||||||
|
"@previewScan": {},
|
||||||
|
"scrollToTop": "Scroll to top",
|
||||||
|
"@scrollToTop": {},
|
||||||
|
"paperlessServerVersion": "Paperless server version",
|
||||||
|
"@paperlessServerVersion": {},
|
||||||
|
"darkTheme": "Dark Theme",
|
||||||
|
"@darkTheme": {},
|
||||||
|
"lightTheme": "Light Theme",
|
||||||
|
"@lightTheme": {},
|
||||||
|
"systemTheme": "Use system theme",
|
||||||
|
"@systemTheme": {},
|
||||||
|
"appearance": "Appearance",
|
||||||
|
"@appearance": {},
|
||||||
|
"languageAndVisualAppearance": "Language and visual appearance",
|
||||||
|
"@languageAndVisualAppearance": {},
|
||||||
|
"applicationSettings": "Application",
|
||||||
|
"@applicationSettings": {},
|
||||||
|
"colorSchemeHint": "Choose between a classic color scheme inspired by a traditional Paperless green or use the dynamic color scheme based on your system theme.",
|
||||||
|
"@colorSchemeHint": {},
|
||||||
|
"colorSchemeNotSupportedWarning": "Dynamic theming is only supported for devices running Android 12 and above. Selecting the 'Dynamic' option might not have any effect depending on your OS implementation.",
|
||||||
|
"@colorSchemeNotSupportedWarning": {},
|
||||||
|
"colors": "Colors",
|
||||||
|
"@colors": {},
|
||||||
|
"language": "Language",
|
||||||
|
"@language": {},
|
||||||
|
"security": "Security",
|
||||||
|
"@security": {},
|
||||||
|
"mangeFilesAndStorageSpace": "Manage files and storage space",
|
||||||
|
"@mangeFilesAndStorageSpace": {},
|
||||||
|
"storage": "Storage",
|
||||||
|
"@storage": {},
|
||||||
|
"dark": "Dark",
|
||||||
|
"@dark": {},
|
||||||
|
"light": "Light",
|
||||||
|
"@light": {},
|
||||||
|
"system": "System",
|
||||||
|
"@system": {},
|
||||||
|
"ascending": "Ascending",
|
||||||
|
"@ascending": {},
|
||||||
|
"descending": "Descending",
|
||||||
|
"@descending": {},
|
||||||
|
"storagePathDay": "day",
|
||||||
|
"@storagePathDay": {},
|
||||||
|
"storagePathMonth": "month",
|
||||||
|
"@storagePathMonth": {},
|
||||||
|
"storagePathYear": "year",
|
||||||
|
"@storagePathYear": {},
|
||||||
|
"color": "Color",
|
||||||
|
"@color": {},
|
||||||
|
"filterTags": "Filter tags...",
|
||||||
|
"@filterTags": {},
|
||||||
|
"inboxTag": "Inbox-Tag",
|
||||||
|
"@inboxTag": {},
|
||||||
|
"uploadInferValuesHint": "If you specify values for these fields, your paperless instance will not automatically derive a value. If you want these values to be automatically populated by your server, leave the fields blank.",
|
||||||
|
"@uploadInferValuesHint": {},
|
||||||
|
"useTheConfiguredBiometricFactorToAuthenticate": "Use the configured biometric factor to authenticate and unlock your documents.",
|
||||||
|
"@useTheConfiguredBiometricFactorToAuthenticate": {},
|
||||||
|
"verifyYourIdentity": "Verify your identity",
|
||||||
|
"@verifyYourIdentity": {},
|
||||||
|
"verifyIdentity": "Verify Identity",
|
||||||
|
"@verifyIdentity": {},
|
||||||
|
"detailed": "Detailed",
|
||||||
|
"@detailed": {},
|
||||||
|
"grid": "Grid",
|
||||||
|
"@grid": {},
|
||||||
|
"list": "List",
|
||||||
|
"@list": {},
|
||||||
|
"remove": "Remove",
|
||||||
|
"removeQueryFromSearchHistory": "Remove query from search history?",
|
||||||
|
"dynamicColorScheme": "Dynamic",
|
||||||
|
"@dynamicColorScheme": {},
|
||||||
|
"classicColorScheme": "Classic",
|
||||||
|
"@classicColorScheme": {}
|
||||||
|
}
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
{
|
{
|
||||||
"@@locale": "pl",
|
|
||||||
"developedBy": "Developed by {name}",
|
"developedBy": "Developed by {name}",
|
||||||
"@developedBy": {
|
"@developedBy": {
|
||||||
"placeholders": {
|
"placeholders": {
|
||||||
@@ -11,28 +10,46 @@
|
|||||||
"account": "Account",
|
"account": "Account",
|
||||||
"@account": {},
|
"@account": {},
|
||||||
"addCorrespondent": "New Correspondent",
|
"addCorrespondent": "New Correspondent",
|
||||||
"@addCorrespondent": {},
|
"@addCorrespondent": {
|
||||||
|
"description": "Title when adding a new correspondent"
|
||||||
|
},
|
||||||
"addDocumentType": "Nowy rodzaj dokumentu",
|
"addDocumentType": "Nowy rodzaj dokumentu",
|
||||||
"@addDocumentType": {},
|
"@addDocumentType": {
|
||||||
|
"description": "Title when adding a new document type"
|
||||||
|
},
|
||||||
"addStoragePath": "New Storage Path",
|
"addStoragePath": "New Storage Path",
|
||||||
"@addStoragePath": {},
|
"@addStoragePath": {
|
||||||
|
"description": "Title when adding a new storage path"
|
||||||
|
},
|
||||||
"addTag": "Nowy tag",
|
"addTag": "Nowy tag",
|
||||||
"@addTag": {},
|
"@addTag": {
|
||||||
|
"description": "Title when adding a new tag"
|
||||||
|
},
|
||||||
"aboutThisApp": "O aplikacji",
|
"aboutThisApp": "O aplikacji",
|
||||||
"@aboutThisApp": {},
|
"@aboutThisApp": {
|
||||||
"loggedInAs": "Zalogowano jako",
|
"description": "Label for about this app tile displayed in the drawer"
|
||||||
"@loggedInAs": {},
|
},
|
||||||
|
"loggedInAs": "Zalogowano jako {name}",
|
||||||
|
"@loggedInAs": {
|
||||||
|
"placeholders": {
|
||||||
|
"name": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
"disconnect": "Disconnect",
|
"disconnect": "Disconnect",
|
||||||
"@disconnect": {},
|
"@disconnect": {
|
||||||
|
"description": "Logout button label"
|
||||||
|
},
|
||||||
"reportABug": "Report a Bug",
|
"reportABug": "Report a Bug",
|
||||||
"@reportABug": {},
|
"@reportABug": {},
|
||||||
"settings": "Ustawienia",
|
"settings": "Ustawienia",
|
||||||
"@settings": {},
|
"@settings": {},
|
||||||
"authenticateOnAppStart": "Authenticate on app start",
|
"authenticateOnAppStart": "Authenticate on app start",
|
||||||
"@authenticateOnAppStart": {},
|
"@authenticateOnAppStart": {
|
||||||
|
"description": "Description of the biometric authentication settings tile"
|
||||||
|
},
|
||||||
"biometricAuthentication": "Biometric authentication",
|
"biometricAuthentication": "Biometric authentication",
|
||||||
"@biometricAuthentication": {},
|
"@biometricAuthentication": {},
|
||||||
"authenticateToToggleBiometricAuthentication": "{mode, select, enable{Authenticate enable biometric authentication} disable{Authenticate to disable biometric authentication}}",
|
"authenticateToToggleBiometricAuthentication": "{mode, select, enable{Authenticate enable biometric authentication} disable{Authenticate to disable biometric authentication} other{}}",
|
||||||
"@authenticateToToggleBiometricAuthentication": {
|
"@authenticateToToggleBiometricAuthentication": {
|
||||||
"placeholders": {
|
"placeholders": {
|
||||||
"mode": {}
|
"mode": {}
|
||||||
@@ -46,10 +63,6 @@
|
|||||||
"@labels": {},
|
"@labels": {},
|
||||||
"scanner": "Scanner",
|
"scanner": "Scanner",
|
||||||
"@scanner": {},
|
"@scanner": {},
|
||||||
"classic": "Classic",
|
|
||||||
"@classic": {},
|
|
||||||
"dynamic": "Dynamic",
|
|
||||||
"@dynamic": {},
|
|
||||||
"startTyping": "Zacznij pisać...",
|
"startTyping": "Zacznij pisać...",
|
||||||
"@startTyping": {},
|
"@startTyping": {},
|
||||||
"doYouReallyWantToDeleteThisView": "Do you really want to delete this view?",
|
"doYouReallyWantToDeleteThisView": "Do you really want to delete this view?",
|
||||||
@@ -68,14 +81,20 @@
|
|||||||
"@createdAt": {},
|
"@createdAt": {},
|
||||||
"documentSuccessfullyDeleted": "Dokument pomyślnie usunięty.",
|
"documentSuccessfullyDeleted": "Dokument pomyślnie usunięty.",
|
||||||
"@documentSuccessfullyDeleted": {},
|
"@documentSuccessfullyDeleted": {},
|
||||||
"AssignAsn": "Assign",
|
"assignAsn": "Assign ASN",
|
||||||
"@AssignAsn": {},
|
"@assignAsn": {},
|
||||||
"deleteDocumentTooltip": "Usuń",
|
"deleteDocumentTooltip": "Usuń",
|
||||||
"@deleteDocumentTooltip": {},
|
"@deleteDocumentTooltip": {
|
||||||
|
"description": "Tooltip shown for the delete button on details page"
|
||||||
|
},
|
||||||
"downloadDocumentTooltip": "Pobierz",
|
"downloadDocumentTooltip": "Pobierz",
|
||||||
"@downloadDocumentTooltip": {},
|
"@downloadDocumentTooltip": {
|
||||||
|
"description": "Tooltip shown for the download button on details page"
|
||||||
|
},
|
||||||
"editDocumentTooltip": "Edytuj",
|
"editDocumentTooltip": "Edytuj",
|
||||||
"@editDocumentTooltip": {},
|
"@editDocumentTooltip": {
|
||||||
|
"description": "Tooltip shown for the edit button on details page"
|
||||||
|
},
|
||||||
"loadFullContent": "Load full content",
|
"loadFullContent": "Load full content",
|
||||||
"@loadFullContent": {},
|
"@loadFullContent": {},
|
||||||
"noAppToDisplayPDFFilesFound": "Nie znaleziono aplikacji do wyświetlania plików PDF",
|
"noAppToDisplayPDFFilesFound": "Nie znaleziono aplikacji do wyświetlania plików PDF",
|
||||||
@@ -85,25 +104,41 @@
|
|||||||
"couldNotOpenFilePermissionDenied": "Nie można otworzyć pliku: ",
|
"couldNotOpenFilePermissionDenied": "Nie można otworzyć pliku: ",
|
||||||
"@couldNotOpenFilePermissionDenied": {},
|
"@couldNotOpenFilePermissionDenied": {},
|
||||||
"previewTooltip": "Podgląd",
|
"previewTooltip": "Podgląd",
|
||||||
"@previewTooltip": {},
|
"@previewTooltip": {
|
||||||
|
"description": "Tooltip shown for the preview button on details page"
|
||||||
|
},
|
||||||
"shareTooltip": "Udostępnij",
|
"shareTooltip": "Udostępnij",
|
||||||
"@shareTooltip": {},
|
"@shareTooltip": {
|
||||||
|
"description": "Tooltip shown for the share button on details page"
|
||||||
|
},
|
||||||
"similarDocuments": "Podobne Dokumenty",
|
"similarDocuments": "Podobne Dokumenty",
|
||||||
"@similarDocuments": {},
|
"@similarDocuments": {
|
||||||
|
"description": "Label shown in the tabbar on details page"
|
||||||
|
},
|
||||||
"content": "Treść",
|
"content": "Treść",
|
||||||
"@content": {},
|
"@content": {
|
||||||
|
"description": "Label shown in the tabbar on details page"
|
||||||
|
},
|
||||||
"metaData": "Meta dane",
|
"metaData": "Meta dane",
|
||||||
"@metaData": {},
|
"@metaData": {
|
||||||
|
"description": "Label shown in the tabbar on details page"
|
||||||
|
},
|
||||||
"overview": "Przegląd",
|
"overview": "Przegląd",
|
||||||
"@overview": {},
|
"@overview": {
|
||||||
|
"description": "Label shown in the tabbar on details page"
|
||||||
|
},
|
||||||
"documentType": "Rodzaj dokumentu",
|
"documentType": "Rodzaj dokumentu",
|
||||||
"@documentType": {},
|
"@documentType": {},
|
||||||
"archivedPdf": "Archived (pdf)",
|
"archivedPdf": "Archived (pdf)",
|
||||||
"@archivedPdf": {},
|
"@archivedPdf": {
|
||||||
|
"description": "Option to chose when downloading a document"
|
||||||
|
},
|
||||||
"chooseFiletype": "Choose filetype",
|
"chooseFiletype": "Choose filetype",
|
||||||
"@chooseFiletype": {},
|
"@chooseFiletype": {},
|
||||||
"original": "Original",
|
"original": "Original",
|
||||||
"@original": {},
|
"@original": {
|
||||||
|
"description": "Option to chose when downloading a document"
|
||||||
|
},
|
||||||
"documentSuccessfullyDownloaded": "Document successfully downloaded.",
|
"documentSuccessfullyDownloaded": "Document successfully downloaded.",
|
||||||
"@documentSuccessfullyDownloaded": {},
|
"@documentSuccessfullyDownloaded": {},
|
||||||
"suggestions": "Suggestions: ",
|
"suggestions": "Suggestions: ",
|
||||||
@@ -123,7 +158,9 @@
|
|||||||
"reset": "Reset",
|
"reset": "Reset",
|
||||||
"@reset": {},
|
"@reset": {},
|
||||||
"filterDocuments": "Filter Documents",
|
"filterDocuments": "Filter Documents",
|
||||||
"@filterDocuments": {},
|
"@filterDocuments": {
|
||||||
|
"description": "Title of the document filter"
|
||||||
|
},
|
||||||
"originalMD5Checksum": "Original MD5-Checksum",
|
"originalMD5Checksum": "Original MD5-Checksum",
|
||||||
"@originalMD5Checksum": {},
|
"@originalMD5Checksum": {},
|
||||||
"mediaFilename": "Media Filename",
|
"mediaFilename": "Media Filename",
|
||||||
@@ -135,23 +172,33 @@
|
|||||||
"modifiedAt": "Modified at",
|
"modifiedAt": "Modified at",
|
||||||
"@modifiedAt": {},
|
"@modifiedAt": {},
|
||||||
"preview": "Podgląd",
|
"preview": "Podgląd",
|
||||||
"@preview": {},
|
"@preview": {
|
||||||
|
"description": "Title of the document preview page"
|
||||||
|
},
|
||||||
"scanADocument": "Zeskanuj dokument",
|
"scanADocument": "Zeskanuj dokument",
|
||||||
"@scanADocument": {},
|
"@scanADocument": {},
|
||||||
"noDocumentsScannedYet": "No documents scanned yet.",
|
"noDocumentsScannedYet": "No documents scanned yet.",
|
||||||
"@noDocumentsScannedYet": {},
|
"@noDocumentsScannedYet": {},
|
||||||
"or": "lub",
|
"or": "lub",
|
||||||
"@or": {},
|
"@or": {
|
||||||
|
"description": "Used on the scanner page between both main actions when no scans have been captured."
|
||||||
|
},
|
||||||
"deleteAllScans": "Delete all scans",
|
"deleteAllScans": "Delete all scans",
|
||||||
"@deleteAllScans": {},
|
"@deleteAllScans": {},
|
||||||
"uploadADocumentFromThisDevice": "Upload a document from this device",
|
"uploadADocumentFromThisDevice": "Upload a document from this device",
|
||||||
"@uploadADocumentFromThisDevice": {},
|
"@uploadADocumentFromThisDevice": {
|
||||||
|
"description": "Button label on scanner page"
|
||||||
|
},
|
||||||
"noMatchesFound": "No matches found.",
|
"noMatchesFound": "No matches found.",
|
||||||
"@noMatchesFound": {},
|
"@noMatchesFound": {
|
||||||
|
"description": "Displayed when no documents were found in the document search."
|
||||||
|
},
|
||||||
"removeFromSearchHistory": "Usunąć z historii wyszukiwania?",
|
"removeFromSearchHistory": "Usunąć z historii wyszukiwania?",
|
||||||
"@removeFromSearchHistory": {},
|
"@removeFromSearchHistory": {},
|
||||||
"results": "Wyniki",
|
"results": "Wyniki",
|
||||||
"@results": {},
|
"@results": {
|
||||||
|
"description": "Label displayed above search results in document search."
|
||||||
|
},
|
||||||
"searchDocuments": "Search documents",
|
"searchDocuments": "Search documents",
|
||||||
"@searchDocuments": {},
|
"@searchDocuments": {},
|
||||||
"resetFilter": "Reset filter",
|
"resetFilter": "Reset filter",
|
||||||
@@ -180,10 +227,19 @@
|
|||||||
"@thisActionIsIrreversibleDoYouWishToProceedAnyway": {},
|
"@thisActionIsIrreversibleDoYouWishToProceedAnyway": {},
|
||||||
"confirmDeletion": "Potwierdź usunięcie",
|
"confirmDeletion": "Potwierdź usunięcie",
|
||||||
"@confirmDeletion": {},
|
"@confirmDeletion": {},
|
||||||
"areYouSureYouWantToDeleteTheFollowingDocuments": "Are you sure you want to delete the following documents?",
|
"areYouSureYouWantToDeleteTheFollowingDocuments": "{count, plural, one{Are you sure you want to delete the following document?} other{Are you sure you want to delete the following documents?}}",
|
||||||
"@areYouSureYouWantToDeleteTheFollowingDocuments": {},
|
"@areYouSureYouWantToDeleteTheFollowingDocuments": {
|
||||||
|
"placeholders": {
|
||||||
|
"count": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
"countSelected": "{count} selected",
|
"countSelected": "{count} selected",
|
||||||
"@countSelected": {},
|
"@countSelected": {
|
||||||
|
"description": "Displayed in the appbar when at least one document is selected.",
|
||||||
|
"placeholders": {
|
||||||
|
"count": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
"storagePath": "Storage Path",
|
"storagePath": "Storage Path",
|
||||||
"@storagePath": {},
|
"@storagePath": {},
|
||||||
"prepareDocument": "Prepare document",
|
"prepareDocument": "Prepare document",
|
||||||
@@ -275,7 +331,9 @@
|
|||||||
"absolute": "Absolute",
|
"absolute": "Absolute",
|
||||||
"@absolute": {},
|
"@absolute": {},
|
||||||
"hintYouCanAlsoSpecifyRelativeValues": "Hint: Apart from concrete dates, you can also specify a time range relative to the current date.",
|
"hintYouCanAlsoSpecifyRelativeValues": "Hint: Apart from concrete dates, you can also specify a time range relative to the current date.",
|
||||||
"@hintYouCanAlsoSpecifyRelativeValues": {},
|
"@hintYouCanAlsoSpecifyRelativeValues": {
|
||||||
|
"description": "Displayed in the extended date range picker"
|
||||||
|
},
|
||||||
"amount": "Amount",
|
"amount": "Amount",
|
||||||
"@amount": {},
|
"@amount": {},
|
||||||
"relative": "Relative",
|
"relative": "Relative",
|
||||||
@@ -362,10 +420,10 @@
|
|||||||
"@upload": {},
|
"@upload": {},
|
||||||
"youreOffline": "Jesteście w trybie offline.",
|
"youreOffline": "Jesteście w trybie offline.",
|
||||||
"@youreOffline": {},
|
"@youreOffline": {},
|
||||||
"assignASN": "Assign ASN",
|
|
||||||
"@assignASN": {},
|
|
||||||
"deleteDocument": "Delete document",
|
"deleteDocument": "Delete document",
|
||||||
"@deleteDocument": {},
|
"@deleteDocument": {
|
||||||
|
"description": "Used as an action label on each inbox item"
|
||||||
|
},
|
||||||
"removeDocumentFromInbox": "Dokument usunięty ze skrzynki odbiorczej",
|
"removeDocumentFromInbox": "Dokument usunięty ze skrzynki odbiorczej",
|
||||||
"@removeDocumentFromInbox": {},
|
"@removeDocumentFromInbox": {},
|
||||||
"areYouSureYouWantToMarkAllDocumentsAsSeen": "Are you sure you want to mark all documents as seen? This will perform a bulk edit operation removing all inbox tags from the documents. This action is not reversible! Are you sure you want to continue?",
|
"areYouSureYouWantToMarkAllDocumentsAsSeen": "Are you sure you want to mark all documents as seen? This will perform a bulk edit operation removing all inbox tags from the documents. This action is not reversible! Are you sure you want to continue?",
|
||||||
@@ -389,7 +447,11 @@
|
|||||||
"undo": "Cofnij",
|
"undo": "Cofnij",
|
||||||
"@undo": {},
|
"@undo": {},
|
||||||
"nUnseen": "{count} unseen",
|
"nUnseen": "{count} unseen",
|
||||||
"@nUnseen": {},
|
"@nUnseen": {
|
||||||
|
"placeholders": {
|
||||||
|
"count": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
"swipeLeftToMarkADocumentAsSeen": "Hint: Swipe left to mark a document as seen and remove all inbox tags from the document.",
|
"swipeLeftToMarkADocumentAsSeen": "Hint: Swipe left to mark a document as seen and remove all inbox tags from the document.",
|
||||||
"@swipeLeftToMarkADocumentAsSeen": {},
|
"@swipeLeftToMarkADocumentAsSeen": {},
|
||||||
"yesterday": "Wczoraj",
|
"yesterday": "Wczoraj",
|
||||||
@@ -611,5 +673,9 @@
|
|||||||
"list": "List",
|
"list": "List",
|
||||||
"@list": {},
|
"@list": {},
|
||||||
"remove": "Remove",
|
"remove": "Remove",
|
||||||
"removeQueryFromSearchHistory": "Remove query from search history?"
|
"removeQueryFromSearchHistory": "Remove query from search history?",
|
||||||
|
"dynamicColorScheme": "Dynamic",
|
||||||
|
"@dynamicColorScheme": {},
|
||||||
|
"classicColorScheme": "Classic",
|
||||||
|
"@classicColorScheme": {}
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
{
|
{
|
||||||
"@@locale": "tr",
|
|
||||||
"developedBy": "Developed by {name}",
|
"developedBy": "Developed by {name}",
|
||||||
"@developedBy": {
|
"@developedBy": {
|
||||||
"placeholders": {
|
"placeholders": {
|
||||||
@@ -11,35 +10,51 @@
|
|||||||
"account": "Account",
|
"account": "Account",
|
||||||
"@account": {},
|
"@account": {},
|
||||||
"addCorrespondent": "Yeni ek yazar",
|
"addCorrespondent": "Yeni ek yazar",
|
||||||
"@addCorrespondent": {},
|
"@addCorrespondent": {
|
||||||
|
"description": "Title when adding a new correspondent"
|
||||||
|
},
|
||||||
"addDocumentType": "Yeni Belge Türü",
|
"addDocumentType": "Yeni Belge Türü",
|
||||||
"@addDocumentType": {},
|
"@addDocumentType": {
|
||||||
|
"description": "Title when adding a new document type"
|
||||||
|
},
|
||||||
"addStoragePath": "Yeni Depolama Yolu",
|
"addStoragePath": "Yeni Depolama Yolu",
|
||||||
"@addStoragePath": {},
|
"@addStoragePath": {
|
||||||
|
"description": "Title when adding a new storage path"
|
||||||
|
},
|
||||||
"addTag": "Yeni Etiket",
|
"addTag": "Yeni Etiket",
|
||||||
"@addTag": {},
|
"@addTag": {
|
||||||
|
"description": "Title when adding a new tag"
|
||||||
|
},
|
||||||
"aboutThisApp": "Bu uygulama hakkında",
|
"aboutThisApp": "Bu uygulama hakkında",
|
||||||
"@aboutThisApp": {},
|
"@aboutThisApp": {
|
||||||
"loggedInAs": "Olarak giriş yapıldı",
|
"description": "Label for about this app tile displayed in the drawer"
|
||||||
"@loggedInAs": {},
|
},
|
||||||
|
"loggedInAs": "Olarak giriş yapıldı {name}",
|
||||||
|
"@loggedInAs": {
|
||||||
|
"placeholders": {
|
||||||
|
"name": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
"disconnect": "Bağlantıyı kes",
|
"disconnect": "Bağlantıyı kes",
|
||||||
"@disconnect": {},
|
"@disconnect": {
|
||||||
|
"description": "Logout button label"
|
||||||
|
},
|
||||||
"reportABug": "Hata Bildir",
|
"reportABug": "Hata Bildir",
|
||||||
"@reportABug": {},
|
"@reportABug": {},
|
||||||
"settings": "Ayarlar",
|
"settings": "Ayarlar",
|
||||||
"@settings": {},
|
"@settings": {},
|
||||||
"authenticateOnAppStart": "Uygulama başlangıcında kimlik doğrulaması yapın",
|
"authenticateOnAppStart": "Uygulama başlangıcında kimlik doğrulaması yapın",
|
||||||
"@authenticateOnAppStart": {},
|
"@authenticateOnAppStart": {
|
||||||
|
"description": "Description of the biometric authentication settings tile"
|
||||||
|
},
|
||||||
"biometricAuthentication": "Biyometrik kimlik doğrulama",
|
"biometricAuthentication": "Biyometrik kimlik doğrulama",
|
||||||
"@biometricAuthentication": {},
|
"@biometricAuthentication": {},
|
||||||
"authenticateToToggleBiometricAuthentication": "{mode, select, enable{Biyometrik kimlik doğrulamayı etkinleştirmek için kimlik doğrulaması yapın} disable{Biyometrik kimlik doğrulamayı devre dışı bırakmak için kimlik doğrulaması yapın}}",
|
"authenticateToToggleBiometricAuthentication": "{mode, select, enable{Biyometrik kimlik doğrulamayı etkinleştirmek için kimlik doğrulaması yapın} disable{Biyometrik kimlik doğrulamayı devre dışı bırakmak için kimlik doğrulaması yapın} other{}}",
|
||||||
"@authenticateToToggleBiometricAuthentication": {
|
"@authenticateToToggleBiometricAuthentication": {
|
||||||
"placeholders": {
|
"placeholders": {
|
||||||
"mode": {}
|
"mode": {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"authenticateToEnableBiometricAuthentication": "",
|
|
||||||
"@authenticateToEnableBiometricAuthentication": {},
|
|
||||||
"documents": "Dökümanlar",
|
"documents": "Dökümanlar",
|
||||||
"@documents": {},
|
"@documents": {},
|
||||||
"inbox": "Gelen Kutusu",
|
"inbox": "Gelen Kutusu",
|
||||||
@@ -48,10 +63,6 @@
|
|||||||
"@labels": {},
|
"@labels": {},
|
||||||
"scanner": "Tarayıcı",
|
"scanner": "Tarayıcı",
|
||||||
"@scanner": {},
|
"@scanner": {},
|
||||||
"classic": "Classic",
|
|
||||||
"@classic": {},
|
|
||||||
"dynamic": "Dynamic",
|
|
||||||
"@dynamic": {},
|
|
||||||
"startTyping": "Yazmaya başlayın...",
|
"startTyping": "Yazmaya başlayın...",
|
||||||
"@startTyping": {},
|
"@startTyping": {},
|
||||||
"doYouReallyWantToDeleteThisView": "Bu görünümü gerçekten silmek istiyor musunuz?",
|
"doYouReallyWantToDeleteThisView": "Bu görünümü gerçekten silmek istiyor musunuz?",
|
||||||
@@ -70,14 +81,20 @@
|
|||||||
"@createdAt": {},
|
"@createdAt": {},
|
||||||
"documentSuccessfullyDeleted": "Doküman başarıyla silindi.",
|
"documentSuccessfullyDeleted": "Doküman başarıyla silindi.",
|
||||||
"@documentSuccessfullyDeleted": {},
|
"@documentSuccessfullyDeleted": {},
|
||||||
"AssignAsn": "Ata",
|
"assignAsn": "Assign ASN",
|
||||||
"@AssignAsn": {},
|
"@assignAsn": {},
|
||||||
"deleteDocumentTooltip": "Delete",
|
"deleteDocumentTooltip": "Delete",
|
||||||
"@deleteDocumentTooltip": {},
|
"@deleteDocumentTooltip": {
|
||||||
|
"description": "Tooltip shown for the delete button on details page"
|
||||||
|
},
|
||||||
"downloadDocumentTooltip": "Download",
|
"downloadDocumentTooltip": "Download",
|
||||||
"@downloadDocumentTooltip": {},
|
"@downloadDocumentTooltip": {
|
||||||
|
"description": "Tooltip shown for the download button on details page"
|
||||||
|
},
|
||||||
"editDocumentTooltip": "Edit",
|
"editDocumentTooltip": "Edit",
|
||||||
"@editDocumentTooltip": {},
|
"@editDocumentTooltip": {
|
||||||
|
"description": "Tooltip shown for the edit button on details page"
|
||||||
|
},
|
||||||
"loadFullContent": "Tüm içeriği yükle",
|
"loadFullContent": "Tüm içeriği yükle",
|
||||||
"@loadFullContent": {},
|
"@loadFullContent": {},
|
||||||
"noAppToDisplayPDFFilesFound": "No app to display PDF files found!",
|
"noAppToDisplayPDFFilesFound": "No app to display PDF files found!",
|
||||||
@@ -87,25 +104,41 @@
|
|||||||
"couldNotOpenFilePermissionDenied": "Could not open file: Permission denied.",
|
"couldNotOpenFilePermissionDenied": "Could not open file: Permission denied.",
|
||||||
"@couldNotOpenFilePermissionDenied": {},
|
"@couldNotOpenFilePermissionDenied": {},
|
||||||
"previewTooltip": "Preview",
|
"previewTooltip": "Preview",
|
||||||
"@previewTooltip": {},
|
"@previewTooltip": {
|
||||||
|
"description": "Tooltip shown for the preview button on details page"
|
||||||
|
},
|
||||||
"shareTooltip": "Share",
|
"shareTooltip": "Share",
|
||||||
"@shareTooltip": {},
|
"@shareTooltip": {
|
||||||
|
"description": "Tooltip shown for the share button on details page"
|
||||||
|
},
|
||||||
"similarDocuments": "Benzer Belgeler",
|
"similarDocuments": "Benzer Belgeler",
|
||||||
"@similarDocuments": {},
|
"@similarDocuments": {
|
||||||
|
"description": "Label shown in the tabbar on details page"
|
||||||
|
},
|
||||||
"content": "İçerik",
|
"content": "İçerik",
|
||||||
"@content": {},
|
"@content": {
|
||||||
|
"description": "Label shown in the tabbar on details page"
|
||||||
|
},
|
||||||
"metaData": "Meta Veri",
|
"metaData": "Meta Veri",
|
||||||
"@metaData": {},
|
"@metaData": {
|
||||||
|
"description": "Label shown in the tabbar on details page"
|
||||||
|
},
|
||||||
"overview": "Genel bakış",
|
"overview": "Genel bakış",
|
||||||
"@overview": {},
|
"@overview": {
|
||||||
|
"description": "Label shown in the tabbar on details page"
|
||||||
|
},
|
||||||
"documentType": "Döküman tipi",
|
"documentType": "Döküman tipi",
|
||||||
"@documentType": {},
|
"@documentType": {},
|
||||||
"archivedPdf": "Archived (pdf)",
|
"archivedPdf": "Archived (pdf)",
|
||||||
"@archivedPdf": {},
|
"@archivedPdf": {
|
||||||
|
"description": "Option to chose when downloading a document"
|
||||||
|
},
|
||||||
"chooseFiletype": "Choose filetype",
|
"chooseFiletype": "Choose filetype",
|
||||||
"@chooseFiletype": {},
|
"@chooseFiletype": {},
|
||||||
"original": "Original",
|
"original": "Original",
|
||||||
"@original": {},
|
"@original": {
|
||||||
|
"description": "Option to chose when downloading a document"
|
||||||
|
},
|
||||||
"documentSuccessfullyDownloaded": "Döküman başarıyla indirildi.",
|
"documentSuccessfullyDownloaded": "Döküman başarıyla indirildi.",
|
||||||
"@documentSuccessfullyDownloaded": {},
|
"@documentSuccessfullyDownloaded": {},
|
||||||
"suggestions": "Öneriler:",
|
"suggestions": "Öneriler:",
|
||||||
@@ -125,7 +158,9 @@
|
|||||||
"reset": "Sıfırla",
|
"reset": "Sıfırla",
|
||||||
"@reset": {},
|
"@reset": {},
|
||||||
"filterDocuments": "Dökümanları Filtrele",
|
"filterDocuments": "Dökümanları Filtrele",
|
||||||
"@filterDocuments": {},
|
"@filterDocuments": {
|
||||||
|
"description": "Title of the document filter"
|
||||||
|
},
|
||||||
"originalMD5Checksum": "Orijinal MD5-Sağlaması",
|
"originalMD5Checksum": "Orijinal MD5-Sağlaması",
|
||||||
"@originalMD5Checksum": {},
|
"@originalMD5Checksum": {},
|
||||||
"mediaFilename": "Medya Dosya Adı",
|
"mediaFilename": "Medya Dosya Adı",
|
||||||
@@ -137,23 +172,33 @@
|
|||||||
"modifiedAt": "Modified at",
|
"modifiedAt": "Modified at",
|
||||||
"@modifiedAt": {},
|
"@modifiedAt": {},
|
||||||
"preview": "Ön izleme",
|
"preview": "Ön izleme",
|
||||||
"@preview": {},
|
"@preview": {
|
||||||
|
"description": "Title of the document preview page"
|
||||||
|
},
|
||||||
"scanADocument": "Belge tarat",
|
"scanADocument": "Belge tarat",
|
||||||
"@scanADocument": {},
|
"@scanADocument": {},
|
||||||
"noDocumentsScannedYet": "Henüz taranan belge yok.",
|
"noDocumentsScannedYet": "Henüz taranan belge yok.",
|
||||||
"@noDocumentsScannedYet": {},
|
"@noDocumentsScannedYet": {},
|
||||||
"or": "yada",
|
"or": "yada",
|
||||||
"@or": {},
|
"@or": {
|
||||||
|
"description": "Used on the scanner page between both main actions when no scans have been captured."
|
||||||
|
},
|
||||||
"deleteAllScans": "Tüm tarananları sil",
|
"deleteAllScans": "Tüm tarananları sil",
|
||||||
"@deleteAllScans": {},
|
"@deleteAllScans": {},
|
||||||
"uploadADocumentFromThisDevice": "Bu cihazdan bir döküman yükleyin",
|
"uploadADocumentFromThisDevice": "Bu cihazdan bir döküman yükleyin",
|
||||||
"@uploadADocumentFromThisDevice": {},
|
"@uploadADocumentFromThisDevice": {
|
||||||
|
"description": "Button label on scanner page"
|
||||||
|
},
|
||||||
"noMatchesFound": "No matches found.",
|
"noMatchesFound": "No matches found.",
|
||||||
"@noMatchesFound": {},
|
"@noMatchesFound": {
|
||||||
|
"description": "Displayed when no documents were found in the document search."
|
||||||
|
},
|
||||||
"removeFromSearchHistory": "Remove from search history?",
|
"removeFromSearchHistory": "Remove from search history?",
|
||||||
"@removeFromSearchHistory": {},
|
"@removeFromSearchHistory": {},
|
||||||
"results": "Results",
|
"results": "Results",
|
||||||
"@results": {},
|
"@results": {
|
||||||
|
"description": "Label displayed above search results in document search."
|
||||||
|
},
|
||||||
"searchDocuments": "Search documents",
|
"searchDocuments": "Search documents",
|
||||||
"@searchDocuments": {},
|
"@searchDocuments": {},
|
||||||
"resetFilter": "Filtreyi sıfırla",
|
"resetFilter": "Filtreyi sıfırla",
|
||||||
@@ -182,10 +227,19 @@
|
|||||||
"@thisActionIsIrreversibleDoYouWishToProceedAnyway": {},
|
"@thisActionIsIrreversibleDoYouWishToProceedAnyway": {},
|
||||||
"confirmDeletion": "Silmeyi onayla",
|
"confirmDeletion": "Silmeyi onayla",
|
||||||
"@confirmDeletion": {},
|
"@confirmDeletion": {},
|
||||||
"areYouSureYouWantToDeleteTheFollowingDocuments": "Aşağıdaki belgeleri silmek istediğinizden emin misiniz?",
|
"areYouSureYouWantToDeleteTheFollowingDocuments": "{count, plural, one{Aşağıdaki belgeyi silmek istediğinizden emin misiniz?} other{Aşağıdaki belgeleri silmek istediğinizden emin misiniz?}}",
|
||||||
"@areYouSureYouWantToDeleteTheFollowingDocuments": {},
|
"@areYouSureYouWantToDeleteTheFollowingDocuments": {
|
||||||
|
"placeholders": {
|
||||||
|
"count": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
"countSelected": "{count} seçilmiş",
|
"countSelected": "{count} seçilmiş",
|
||||||
"@countSelected": {},
|
"@countSelected": {
|
||||||
|
"description": "Displayed in the appbar when at least one document is selected.",
|
||||||
|
"placeholders": {
|
||||||
|
"count": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
"storagePath": "Depolama Yolu",
|
"storagePath": "Depolama Yolu",
|
||||||
"@storagePath": {},
|
"@storagePath": {},
|
||||||
"prepareDocument": "Belge hazırla",
|
"prepareDocument": "Belge hazırla",
|
||||||
@@ -277,7 +331,9 @@
|
|||||||
"absolute": "Mutlak",
|
"absolute": "Mutlak",
|
||||||
"@absolute": {},
|
"@absolute": {},
|
||||||
"hintYouCanAlsoSpecifyRelativeValues": "İpucu: Somut tarihlerin yanı sıra, geçerli tarihe göre bir zaman aralığı da belirleyebilirsiniz.",
|
"hintYouCanAlsoSpecifyRelativeValues": "İpucu: Somut tarihlerin yanı sıra, geçerli tarihe göre bir zaman aralığı da belirleyebilirsiniz.",
|
||||||
"@hintYouCanAlsoSpecifyRelativeValues": {},
|
"@hintYouCanAlsoSpecifyRelativeValues": {
|
||||||
|
"description": "Displayed in the extended date range picker"
|
||||||
|
},
|
||||||
"amount": "Miktar",
|
"amount": "Miktar",
|
||||||
"@amount": {},
|
"@amount": {},
|
||||||
"relative": "Bağıl",
|
"relative": "Bağıl",
|
||||||
@@ -364,10 +420,10 @@
|
|||||||
"@upload": {},
|
"@upload": {},
|
||||||
"youreOffline": "Çevrimdışısınız.",
|
"youreOffline": "Çevrimdışısınız.",
|
||||||
"@youreOffline": {},
|
"@youreOffline": {},
|
||||||
"assignASN": "Assign ASN",
|
|
||||||
"@assignASN": {},
|
|
||||||
"deleteDocument": "Delete document",
|
"deleteDocument": "Delete document",
|
||||||
"@deleteDocument": {},
|
"@deleteDocument": {
|
||||||
|
"description": "Used as an action label on each inbox item"
|
||||||
|
},
|
||||||
"removeDocumentFromInbox": "Döküman gelen kutusundan kaldırıldı.",
|
"removeDocumentFromInbox": "Döküman gelen kutusundan kaldırıldı.",
|
||||||
"@removeDocumentFromInbox": {},
|
"@removeDocumentFromInbox": {},
|
||||||
"areYouSureYouWantToMarkAllDocumentsAsSeen": "Tüm belgeleri görüntülendi olarak işaretlemek istediğinizden emin misiniz? Bu, tüm gelen kutusu etiketlerini belgelerden kaldırarak, toplu bir düzenleme işlemi gerçekleştirecektir. Bu eylem geri alınamaz! Devam etmek istediğine emin misiniz?",
|
"areYouSureYouWantToMarkAllDocumentsAsSeen": "Tüm belgeleri görüntülendi olarak işaretlemek istediğinizden emin misiniz? Bu, tüm gelen kutusu etiketlerini belgelerden kaldırarak, toplu bir düzenleme işlemi gerçekleştirecektir. Bu eylem geri alınamaz! Devam etmek istediğine emin misiniz?",
|
||||||
@@ -391,7 +447,11 @@
|
|||||||
"undo": "Geri al",
|
"undo": "Geri al",
|
||||||
"@undo": {},
|
"@undo": {},
|
||||||
"nUnseen": "{count} görüntülenmemiş",
|
"nUnseen": "{count} görüntülenmemiş",
|
||||||
"@nUnseen": {},
|
"@nUnseen": {
|
||||||
|
"placeholders": {
|
||||||
|
"count": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
"swipeLeftToMarkADocumentAsSeen": "İpucu: Bir belgeyi görüntülendi olarak işaretlemek ve tüm gelen kutusu etiketlerini belgeden kaldırmak için sola kaydırın.",
|
"swipeLeftToMarkADocumentAsSeen": "İpucu: Bir belgeyi görüntülendi olarak işaretlemek ve tüm gelen kutusu etiketlerini belgeden kaldırmak için sola kaydırın.",
|
||||||
"@swipeLeftToMarkADocumentAsSeen": {},
|
"@swipeLeftToMarkADocumentAsSeen": {},
|
||||||
"yesterday": "Dün",
|
"yesterday": "Dün",
|
||||||
@@ -613,5 +673,9 @@
|
|||||||
"list": "List",
|
"list": "List",
|
||||||
"@list": {},
|
"@list": {},
|
||||||
"remove": "Remove",
|
"remove": "Remove",
|
||||||
"removeQueryFromSearchHistory": "Remove query from search history?"
|
"removeQueryFromSearchHistory": "Remove query from search history?",
|
||||||
|
"dynamicColorScheme": "Dynamic",
|
||||||
|
"@dynamicColorScheme": {},
|
||||||
|
"classicColorScheme": "Classic",
|
||||||
|
"@classicColorScheme": {}
|
||||||
}
|
}
|
||||||
@@ -42,7 +42,7 @@ import 'package:paperless_mobile/features/notifications/services/local_notificat
|
|||||||
import 'package:paperless_mobile/features/settings/cubit/application_settings_cubit.dart';
|
import 'package:paperless_mobile/features/settings/cubit/application_settings_cubit.dart';
|
||||||
import 'package:paperless_mobile/features/sharing/share_intent_queue.dart';
|
import 'package:paperless_mobile/features/sharing/share_intent_queue.dart';
|
||||||
import 'package:paperless_mobile/features/tasks/cubit/task_status_cubit.dart';
|
import 'package:paperless_mobile/features/tasks/cubit/task_status_cubit.dart';
|
||||||
import 'package:paperless_mobile/generated/l10n.dart';
|
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
|
||||||
import 'package:paperless_mobile/routes/document_details_route.dart';
|
import 'package:paperless_mobile/routes/document_details_route.dart';
|
||||||
import 'package:paperless_mobile/theme.dart';
|
import 'package:paperless_mobile/theme.dart';
|
||||||
import 'package:paperless_mobile/constants.dart';
|
import 'package:paperless_mobile/constants.dart';
|
||||||
@@ -232,7 +232,7 @@ class _PaperlessMobileEntrypointState extends State<PaperlessMobileEntrypoint> {
|
|||||||
preferredColorScheme: settings.preferredColorSchemeOption,
|
preferredColorScheme: settings.preferredColorSchemeOption,
|
||||||
),
|
),
|
||||||
themeMode: settings.preferredThemeMode,
|
themeMode: settings.preferredThemeMode,
|
||||||
supportedLocales: S.delegate.supportedLocales,
|
supportedLocales: S.supportedLocales,
|
||||||
locale: Locale.fromSubtags(
|
locale: Locale.fromSubtags(
|
||||||
languageCode: settings.preferredLocaleSubtag,
|
languageCode: settings.preferredLocaleSubtag,
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -61,7 +61,6 @@ dependencies:
|
|||||||
font_awesome_flutter: ^10.1.0
|
font_awesome_flutter: ^10.1.0
|
||||||
local_auth: ^2.1.2
|
local_auth: ^2.1.2
|
||||||
connectivity_plus: ^3.0.3
|
connectivity_plus: ^3.0.3
|
||||||
|
|
||||||
flutter_native_splash: ^2.2.11
|
flutter_native_splash: ^2.2.11
|
||||||
share_plus: ^6.2.0
|
share_plus: ^6.2.0
|
||||||
introduction_screen: ^3.0.2
|
introduction_screen: ^3.0.2
|
||||||
@@ -148,12 +147,7 @@ flutter:
|
|||||||
#
|
#
|
||||||
# For details regarding fonts from package dependencies,
|
# For details regarding fonts from package dependencies,
|
||||||
# see https://flutter.dev/custom-fonts/#from-packages
|
# see https://flutter.dev/custom-fonts/#from-packages
|
||||||
flutter_intl:
|
|
||||||
enabled: true
|
|
||||||
main_locale: en
|
|
||||||
localizely:
|
|
||||||
project_id: 84b4144d-a628-4ba6-a8d0-4f9917444057
|
|
||||||
download_empty_as: main
|
|
||||||
|
|
||||||
flutter_native_splash:
|
flutter_native_splash:
|
||||||
image: assets/logos/paperless_logo_green.png
|
image: assets/logos/paperless_logo_green.png
|
||||||
|
|||||||
Reference in New Issue
Block a user