Skip to content

Commit

Permalink
edited l10n
Browse files Browse the repository at this point in the history
  • Loading branch information
frankmer committed Oct 21, 2024
1 parent c5683a0 commit 224ebb7
Show file tree
Hide file tree
Showing 28 changed files with 2,861 additions and 387 deletions.
337 changes: 307 additions & 30 deletions lib/l10n/app_cs.arb

Large diffs are not rendered by default.

336 changes: 306 additions & 30 deletions lib/l10n/app_de.arb

Large diffs are not rendered by default.

288 changes: 164 additions & 124 deletions lib/l10n/app_en.arb

Large diffs are not rendered by default.

338 changes: 307 additions & 31 deletions lib/l10n/app_es.arb

Large diffs are not rendered by default.

335 changes: 306 additions & 29 deletions lib/l10n/app_fr.arb

Large diffs are not rendered by default.

797 changes: 762 additions & 35 deletions lib/l10n/app_id.arb

Large diffs are not rendered by default.

334 changes: 306 additions & 28 deletions lib/l10n/app_nl.arb

Large diffs are not rendered by default.

334 changes: 306 additions & 28 deletions lib/l10n/app_pl.arb

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -496,7 +496,7 @@ class TokenNotifier extends _$TokenNotifier with ResultHandler {
Logger.warning('Could not update firebase token because no firebase token is available.');
ref.read(statusMessageProvider.notifier).state = (
AppLocalizations.of(globalNavigatorKey.currentContext!)!.errorSynchronizationNoNetworkConnection,
AppLocalizations.of(globalNavigatorKey.currentContext!)!.pleaseSyncManuallyWhenNetworkIsAvailable,
AppLocalizations.of(globalNavigatorKey.currentContext!)!.syncFbTokenManuallyWhenNetworkIsAvailable,
);
}
final (notUpdated, _) = (await updateFirebaseToken(fbToken)) ?? (<PushToken>[], <PushToken>[]);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ class _DetailsContainerDialogState extends ConsumerState<DetailsContainerDialog>
Navigator.of(context).pop();
}
: null,
child: Text(AppLocalizations.of(context)!.save),
child: Text(AppLocalizations.of(context)!.saveButton),
),
],
);
Expand Down
4 changes: 2 additions & 2 deletions lib/views/import_tokens_view/pages/import_start_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ class _ImportStartPageState extends ConsumerState<ImportStartPage> {
TextField(
controller: _linkController,
decoration: InputDecoration(
labelText: localizations.tokenLink,
labelText: localizations.tokenLinkImport,
),
),
],
Expand Down Expand Up @@ -275,7 +275,7 @@ class _ImportStartPageState extends ConsumerState<ImportStartPage> {

Future<String?> _validateLink(TokenImportProcessor? processor) async {
final localizations = AppLocalizations.of(context)!;
if (_linkController.text.isEmpty) return localizations.mustNotBeEmpty(localizations.tokenLink);
if (_linkController.text.isEmpty) return localizations.mustNotBeEmpty(localizations.tokenLinkImport);
assert(processor is TokenImportSchemeProcessor);
final schemeProcessor = processor as TokenImportSchemeProcessor;
final Uri uri;
Expand Down
4 changes: 2 additions & 2 deletions lib/views/main_view/main_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -99,14 +99,14 @@ class _MainViewState extends ConsumerState<MainView> {
actions: [
hasFilter
? AppBarItem(
tooltip: AppLocalizations.of(context)!.closeSearchTokens,
a11y: AppLocalizations.of(context)!.a11yCloseSearchTokensButton,
onPressed: () {
ref.read(tokenFilterProvider.notifier).state = null;
},
icon: const Icon(Icons.close),
)
: AppBarItem(
tooltip: AppLocalizations.of(context)!.searchTokens,
a11y: AppLocalizations.of(context)!.a11ySearchTokensButton,
onPressed: () {
ref.read(tokenFilterProvider.notifier).state = TokenFilter(
searchQuery: '',
Expand Down
26 changes: 14 additions & 12 deletions lib/views/main_view/main_view_widgets/app_bar_item.dart
Original file line number Diff line number Diff line change
Expand Up @@ -20,23 +20,25 @@
import 'package:flutter/material.dart';

class AppBarItem extends StatelessWidget {
const AppBarItem({super.key, required this.onPressed, required this.icon, required this.tooltip});
const AppBarItem({super.key, required this.onPressed, required this.icon, required this.a11y});

final VoidCallback onPressed;
final String tooltip;
final String a11y;
final Widget icon;

@override
Widget build(BuildContext context) => IconButton(
tooltip: tooltip,
padding: const EdgeInsets.all(0),
splashRadius: 20,
onPressed: onPressed,
color: Theme.of(context).navigationBarTheme.iconTheme?.resolve({})?.color,
icon: SizedBox(
height: 24,
width: 24,
child: FittedBox(child: icon),
Widget build(BuildContext context) => Semantics(
label: a11y,
child: IconButton(
padding: const EdgeInsets.all(0),
splashRadius: 20,
onPressed: onPressed,
color: Theme.of(context).navigationBarTheme.iconTheme?.resolve({})?.color,
icon: SizedBox(
height: 24,
width: 24,
child: FittedBox(child: icon),
),
),
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ class MainViewNavigationBar extends ConsumerWidget {
child: Padding(
padding: EdgeInsets.only(top: navHeight * 0.1, bottom: navHeight * 0.2),
child: AppBarItem(
tooltip: AppLocalizations.of(context)!.addTokenManually,
a11y: AppLocalizations.of(context)!.a11yAddTokenManuallyButton,
onPressed: () {
Navigator.pushNamed(context, AddTokenManuallyView.routeName);
},
Expand Down Expand Up @@ -117,7 +117,7 @@ class MainViewNavigationBar extends ConsumerWidget {
tooltipWhenFocused: AppLocalizations.of(context)!.introAddFolder,
onComplete: () => ref.read(introductionNotifierProvider.notifier).complete(Introduction.addFolder),
child: AppBarItem(
tooltip: AppLocalizations.of(context)!.addFolder,
a11y: AppLocalizations.of(context)!.a11yAddFolderButton,
onPressed: () {
showDialog(
context: context,
Expand All @@ -141,7 +141,7 @@ class MainViewNavigationBar extends ConsumerWidget {
child: Padding(
padding: EdgeInsets.only(top: navHeight * 0.2, bottom: navHeight * 0.1),
child: AppBarItem(
tooltip: AppLocalizations.of(context)!.settings,
a11y: AppLocalizations.of(context)!.a11ySettingsButton,
onPressed: () {
Navigator.pushNamed(context, SettingsView.routeName);
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,13 @@ class LicensePushViewButton extends ConsumerWidget {
tooltipWhenFocused: AppLocalizations.of(context)!.introHidePushTokens,
onComplete: () => ref.read(introductionNotifierProvider.notifier).complete(Introduction.hidePushTokens),
child: AppBarItem(
tooltip: AppLocalizations.of(context)!.pushTokens,
a11y: AppLocalizations.of(context)!.a11yPushTokensButton,
onPressed: () => Navigator.pushNamed(context, PushTokensView.routeName),
icon: const Icon(Icons.notifications),
),
)
: AppBarItem(
tooltip: AppLocalizations.of(context)!.licenses,
a11y: AppLocalizations.of(context)!.a11yLicensesButton,
onPressed: () => Navigator.of(context).pushNamed(LicenseView.routeName),
icon: const Icon(Icons.info_outline),
);
Expand Down
5 changes: 2 additions & 3 deletions lib/views/main_view/main_view_widgets/no_token_screen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,8 @@ class NoTokenScreen extends StatelessWidget {
overflow: TextOverflow.fade,
softWrap: false,
),
Tooltip(
message: AppLocalizations.of(context)!.scanQrCode,
triggerMode: TooltipTriggerMode.longPress,
Semantics(
label: AppLocalizations.of(context)!.a11yScanQrCodeButton,
child: const Icon(Icons.qr_code_scanner_outlined),
),
Text(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -144,8 +144,8 @@ class _DayPasswordTokenWidgetTileState extends ConsumerState<DayPasswordTokenWid
child: Center(
child: Text(
switch (widget.token.viewMode) {
DayPasswordTokenViewMode.VALIDFOR => '${AppLocalizations.of(context)!.validFor}:',
DayPasswordTokenViewMode.VALIDUNTIL => '${AppLocalizations.of(context)!.validUntil}:',
DayPasswordTokenViewMode.VALIDFOR => '${AppLocalizations.of(context)!.dayPasswordValidFor}:',
DayPasswordTokenViewMode.VALIDUNTIL => '${AppLocalizations.of(context)!.dayPasswordValidUntil}:',
},
style: Theme.of(context).listTileTheme.subtitleTextStyle,
textAlign: TextAlign.center,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ class DefaultEditAction extends ConsumerSlideableAction {
children: [
const Icon(Icons.edit),
Text(
AppLocalizations.of(context)!.save,
AppLocalizations.of(context)!.saveButton,
overflow: TextOverflow.fade,
softWrap: false,
),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ class _DefaultEditActionDialogState extends ConsumerState<DefaultEditActionDialo
if (context.mounted) Navigator.of(context).pop();
},
child: Text(
appLocalizations.save,
appLocalizations.saveButton,
overflow: TextOverflow.fade,
softWrap: false,
),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ class StartRolloutWidget extends ConsumerWidget {
child: CooldownButton(
onPressed: () => globalRef?.read(tokenProvider.notifier).rolloutPushToken(token) ?? Future.value(),
child: Text(
token.rolloutState.rolloutFailed ? localizations.retryRollout : token.rolloutState.rolloutMsg(localizations),
token.rolloutState.rolloutFailed ? localizations.retryRolloutButton : token.rolloutState.rolloutMsg(localizations),
style: Theme.of(context).textTheme.bodyMedium,
overflow: TextOverflow.fade,
softWrap: false,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@

import 'package:flutter/material.dart';
import 'package:flutter_zxing/flutter_zxing.dart';
import 'package:privacyidea_authenticator/l10n/app_localizations.dart';

class QRScannerWidget extends StatefulWidget {
const QRScannerWidget({super.key});
Expand All @@ -29,20 +30,41 @@ class QRScannerWidget extends StatefulWidget {
}

class _QRScannerWidgetState extends State<QRScannerWidget> {
bool isInitialized = false;

@override
Widget build(BuildContext context) => Material(
color: Colors.black,
child: ReaderWidget(
showFlashlight: true,
showGallery: true,
showToggleCamera: false,
codeFormat: Format.qrCode,
cropPercent: 0.70,
scannerOverlay: const FixedScannerOverlay(
borderColor: Colors.white,
borderWidth: 2.2,
child: Semantics(
label: isInitialized ? AppLocalizations.of(context)!.a11yScanQrCodeViewActive : AppLocalizations.of(context)!.a11yScanQrCodeViewInactive,
child: ReaderWidget(
onControllerCreated: (controller, _) {
if (!mounted) return;
setState(() => isInitialized = controller != null);
},
showFlashlight: true,
flashOnIcon: Semantics(
label: AppLocalizations.of(context)!.a11yScanQrCodeViewFlashlightOn,
child: const Icon(Icons.flash_on),
),
flashOffIcon: Semantics(
label: AppLocalizations.of(context)!.a11yScanQrCodeViewFlashlightOff,
child: const Icon(Icons.flash_off),
),
showGallery: true,
galleryIcon: Semantics(
label: AppLocalizations.of(context)!.a11yScanQrCodeViewGallery,
child: const Icon(Icons.image),
),
showToggleCamera: false,
codeFormat: Format.qrCode,
cropPercent: 0.70,
scannerOverlay: const FixedScannerOverlay(
borderColor: Colors.white,
borderWidth: 2.2,
),
onScan: _onQrCaptured,
),
onScan: _onQrCaptured,
),
);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,24 @@ class _SelectTokensDialogState extends ConsumerState<SelectTokensDialog> {
context: context,
builder: (context) => DefaultDialog(
title: Text(AppLocalizations.of(context)!.selectTokensToExportHelpTitle),
content: Text(AppLocalizations.of(context)!.selectTokensToExportHelpContent),
content: SelectTokensToExportHelpContentWidget(),
),
);
}

class SelectTokensToExportHelpContentWidget extends StatelessWidget {
const SelectTokensToExportHelpContentWidget({super.key});

@override
Widget build(BuildContext context) {
final appLocalizations = AppLocalizations.of(context)!;
return Column(
children: [
Text(appLocalizations.selectTokensToExportHelpContent1),
Text(appLocalizations.selectTokensToExportHelpContent2),
Text(appLocalizations.selectTokensToExportHelpContent3),
Text(appLocalizations.selectTokensToExportHelpContent4),
],
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ class ShowQrCodeDialog extends ConsumerWidget {
actions: [
TextButton(
onPressed: () => Navigator.of(context).pop(),
child: Text(AppLocalizations.of(context)!.oneMore),
child: Text(AppLocalizations.of(context)!.exportOneMore),
),
TextButton(
onPressed: () => Navigator.of(context).pop(true),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ class SettingsGroupGeneral extends StatelessWidget {
SettingsListTileButton(
onPressed: () => launchUrl(piAuthenticatorGitHubUri),
title: Text(
AppLocalizations.of(context)!.thisAppIsOpenSource,
AppLocalizations.of(context)!.gitHubButton,
//'This Application is a Open Source Project. Visit us on GitHub.',
style: Theme.of(context).textTheme.bodyMedium,
maxLines: 2,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import '../../import_tokens_view/import_tokens_view.dart';
import '../settings_view_widgets/settings_group.dart';
import '../settings_view_widgets/settings_list_tile_button.dart';
import 'import_export_tokens_widgets/dialogs/select_export_type_dialog.dart';
import 'import_export_tokens_widgets/dialogs/select_tokens_dialog.dart';

class SettingsGroupImportExportTokens extends ConsumerStatefulWidget {
const SettingsGroupImportExportTokens({super.key});
Expand Down Expand Up @@ -78,21 +79,22 @@ class _SettingsGroupImportExportTokensState extends ConsumerState<SettingsGroupI
void _exportDialog() async {
bool? isAccepted = (await ref.read(introductionNotifierProvider.future)).isCompleted(Introduction.exportTokens) ? true : null;
if (!mounted) return;
final appLocalizations = AppLocalizations.of(context)!;
isAccepted ??= await showDialog<bool>(
useRootNavigator: false,
context: context,
builder: (context) => DefaultDialog(
title: Text(AppLocalizations.of(context)!.confirmation),
content: Text(AppLocalizations.of(context)!.selectTokensToExportHelpContent),
title: Text(appLocalizations.confirmation),
content: SelectTokensToExportHelpContentWidget(),
actions: [
TextButton(
onPressed: () => Navigator.of(context).pop(false),
child: Text(AppLocalizations.of(context)!.cancel),
child: Text(appLocalizations.cancel),
),
CountdownButton(
onPressed: () => Navigator.of(context).pop(true),
countdownSeconds: 10,
child: Text(AppLocalizations.of(context)!.ok),
child: Text(appLocalizations.ok),
),
],
),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ class _SendErrorDialogState extends State<SendErrorDialog> {
border: const OutlineInputBorder(borderSide: BorderSide(width: 1.5)),
enabledBorder: const OutlineInputBorder(borderSide: BorderSide(width: 1.5)),
focusedBorder: const OutlineInputBorder(borderSide: BorderSide(width: 1.5)),
labelText: AppLocalizations.of(context)!.optionalMessage,
labelText: AppLocalizations.of(context)!.additionalErrorMessage,
),
maxLines: 5,
),
Expand All @@ -87,7 +87,10 @@ class _SendErrorDialogState extends State<SendErrorDialog> {
TextButton(
onPressed: () {
Logger.sendErrorLog(_textController.text);
showDialog(context: context, builder: (context) => const AskLogSendedDialog()).then((value) => value == true ? _popDialogs(context) : null);
showDialog(context: context, builder: (context) => const AskLogSendedDialog()).then((value) {
if (!context.mounted) return;
value == true ? _popDialogs(context) : null;
});
},
child: const Icon(Icons.email),
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ class _ContainerAlreadyExistsDialogState extends ConsumerState<ContainerAlreadyE
),
CooldownButton(
onPressed: () => _replace(currentContainer, container),
child: Text(appLocalizations.replace),
child: Text(appLocalizations.replaceButton),
),
],
);
Expand Down
2 changes: 1 addition & 1 deletion lib/widgets/dialog_widgets/patch_notes_dialog.dart
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ class PatchNotesDialog extends StatelessWidget {
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text('${localizations.version}: ${version.toString()}'),
Text('${localizations.versionTitle}: ${version.toString()}'),
const SizedBox(height: 16),
...newNotes[version]!.entries.map(
(entry) {
Expand Down

0 comments on commit 224ebb7

Please sign in to comment.