From 91da9db1c03d69038a6de70cf77897089fd8f9bb Mon Sep 17 00:00:00 2001 From: Thibault Deckers Date: Thu, 28 Oct 2021 10:52:42 +0900 Subject: [PATCH] l10n: minor fixes --- l10n.yaml | 2 +- lib/l10n/app_en.arb | 12 ---------- lib/l10n/app_ko.arb | 2 -- lib/l10n/app_ru.arb | 9 +++----- lib/widgets/dialogs/aves_dialog.dart | 8 ++++--- lib/widgets/dialogs/create_album_dialog.dart | 6 +++-- lib/widgets/dialogs/video_speed_dialog.dart | 17 ++++++++------ lib/widgets/stats/stats_page.dart | 24 ++++++++++++++------ untranslated.json | 5 ++++ 9 files changed, 45 insertions(+), 40 deletions(-) create mode 100644 untranslated.json diff --git a/l10n.yaml b/l10n.yaml index 3619cab0e..9b7cfce0e 100644 --- a/l10n.yaml +++ b/l10n.yaml @@ -7,4 +7,4 @@ preferred-supported-locales: - en -# untranslated-messages-file: untranslated.json +untranslated-messages-file: untranslated.json diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 74ac7cfd9..cfd5adebd 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -858,18 +858,6 @@ "statsPageTitle": "Stats", "@statsPageTitle": {}, - "statsImage": "{count, plural, =1{image} other{images}}", - "@statsImage": { - "placeholders": { - "count": {} - } - }, - "statsVideo": "{count, plural, =1{video} other{videos}}", - "@statsVideo": { - "placeholders": { - "count": {} - } - }, "statsWithGps": "{count, plural, =1{1 item with location} other{{count} items with location}}", "@statsWithGps": { "placeholders": { diff --git a/lib/l10n/app_ko.arb b/lib/l10n/app_ko.arb index 3233a6aec..e9604e93b 100644 --- a/lib/l10n/app_ko.arb +++ b/lib/l10n/app_ko.arb @@ -422,8 +422,6 @@ "settingsUnitSystemTitle": "단위법", "statsPageTitle": "통계", - "statsImage": "{count, plural, other{사진}}", - "statsVideo": "{count, plural, other{동영상}}", "statsWithGps": "{count, plural, other{{count}개 위치가 있음}}", "statsTopCountries": "국가 랭킹", "statsTopPlaces": "장소 랭킹", diff --git a/lib/l10n/app_ru.arb b/lib/l10n/app_ru.arb index 9e2c4bcfa..3ba644bc5 100644 --- a/lib/l10n/app_ru.arb +++ b/lib/l10n/app_ru.arb @@ -5,8 +5,8 @@ "welcomeTermsToggle": "Я согласен с условиями и положениями", "itemCount": "{count, plural, =1{1 объект} few{{count} объекта} other{{count} объектов}}", - "timeSeconds": "{seconds, plural, =1{1 секунда} few{{count} секунды} other{{seconds} секунд}}", - "timeMinutes": "{minutes, plural, =1{1 минута} few{{count} минуты}other{{minutes} минут}}", + "timeSeconds": "{seconds, plural, =1{1 секунда} few{{seconds} секунды} other{{seconds} секунд}}", + "timeMinutes": "{minutes, plural, =1{1 минута} few{{minutes} минуты} other{{minutes} минут}}", "applyButtonLabel": "ПРИМЕНИТЬ", "deleteButtonLabel": "УДАЛИТЬ", @@ -217,7 +217,6 @@ "aboutCredits": "Благодарности", "aboutCreditsWorldAtlas1": "Это приложение использует файл TopoJSON из", "aboutCreditsWorldAtlas2": "под лицензией ISC.", - "aboutCreditsTranslators": "Translators:", "aboutLicenses": "Лицензии с открытым исходным кодом", "aboutLicensesBanner": "Это приложение использует следующие пакеты и библиотеки с открытым исходным кодом.", @@ -252,7 +251,7 @@ "dateYesterday": "Вчера", "dateThisMonth": "В этом месяце", "collectionDeleteFailureFeedback": "{count, plural, =1{Не удалось удалить 1 объект} few{Не удалось удалить {count} объекта} other{Не удалось удалить {count} объектов}}", - "collectionCopyFailureFeedback": "{count, plural, =1{Не удалось скопировать 1 объект} few{Не удалось скопировать {count} объекта}} other{Не удалось скопировать {count} объектов}}", + "collectionCopyFailureFeedback": "{count, plural, =1{Не удалось скопировать 1 объект} few{Не удалось скопировать {count} объекта} other{Не удалось скопировать {count} объектов}}", "collectionMoveFailureFeedback": "{count, plural, =1{Не удалось переместить 1 объект} few{Не удалось переместить {count} объекта} other{Не удалось переместить {count} объектов}}", "collectionExportFailureFeedback": "{count, plural, =1{Не удалось экспортировать 1 страницу} few{Не удалось экспортировать {count} страницы} other{Не удалось экспортировать {count} страниц}}", "collectionCopySuccessFeedback": "{count, plural, =1{Скопирован 1 объект} few{Скопировано {count} объекта} other{Скопировано {count} объектов}}", @@ -422,8 +421,6 @@ "settingsUnitSystemTitle": "Единицы измерения", "statsPageTitle": "Статистика", - "statsImage": "{count, plural, =1{изображение} few{изображения} other{изображений)}}", - "statsVideo": "{count, plural, =1{видео} few{видео} other{видео}}", "statsWithGps": "{count, plural, =1{1 объект с местоположением} few{{count} объекта с местоположением} other{{count} объектов с местоположением}}", "statsTopCountries": "Топ стран", "statsTopPlaces": "Топ локаций", diff --git a/lib/widgets/dialogs/aves_dialog.dart b/lib/widgets/dialogs/aves_dialog.dart index c4a28c2a0..e589f43ab 100644 --- a/lib/widgets/dialogs/aves_dialog.dart +++ b/lib/widgets/dialogs/aves_dialog.dart @@ -5,7 +5,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; class AvesDialog extends AlertDialog { - static const EdgeInsets contentHorizontalPadding = EdgeInsets.symmetric(horizontal: 24); + static const double defaultHorizontalContentPadding = 24; static const double controlCaptionPadding = 16; static const double borderWidth = 1.0; @@ -16,6 +16,7 @@ class AvesDialog extends AlertDialog { ScrollController? scrollController, List? scrollableContent, bool hasScrollBar = true, + double horizontalContentPadding = defaultHorizontalContentPadding, Widget? content, required List actions, }) : assert((scrollableContent != null) ^ (content != null)), @@ -34,7 +35,7 @@ class AvesDialog extends AlertDialog { // and overflow feedback ignores the dialog shape, // so we restrict scrolling to the content instead content: _buildContent(context, scrollController, scrollableContent, hasScrollBar, content), - contentPadding: scrollableContent != null ? EdgeInsets.zero : const EdgeInsets.fromLTRB(24, 20, 24, 0), + contentPadding: scrollableContent != null ? EdgeInsets.zero : EdgeInsets.fromLTRB(horizontalContentPadding, 20, horizontalContentPadding, 0), actions: actions, actionsPadding: const EdgeInsets.symmetric(horizontal: 8), shape: RoundedRectangleBorder( @@ -115,7 +116,7 @@ class DialogTitle extends StatelessWidget { Widget build(BuildContext context) { return Container( alignment: Alignment.center, - padding: const EdgeInsets.symmetric(vertical: 20), + padding: const EdgeInsets.symmetric(vertical: 20, horizontal: 16), decoration: BoxDecoration( border: Border( bottom: Divider.createBorderSide(context, width: AvesDialog.borderWidth), @@ -127,6 +128,7 @@ class DialogTitle extends StatelessWidget { fontWeight: FontWeight.normal, fontFeatures: [FontFeature.enable('smcp')], ), + textAlign: TextAlign.center, ), ); } diff --git a/lib/widgets/dialogs/create_album_dialog.dart b/lib/widgets/dialogs/create_album_dialog.dart index da9fa5759..2e5965d24 100644 --- a/lib/widgets/dialogs/create_album_dialog.dart +++ b/lib/widgets/dialogs/create_album_dialog.dart @@ -44,6 +44,8 @@ class _CreateAlbumDialogState extends State { @override Widget build(BuildContext context) { + const contentHorizontalPadding = EdgeInsets.symmetric(horizontal: AvesDialog.defaultHorizontalContentPadding); + final volumeTiles = []; if (_allVolumes.length > 1) { final byPrimary = groupBy(_allVolumes, (volume) => volume.isPrimary); @@ -52,7 +54,7 @@ class _CreateAlbumDialogState extends State { final otherVolumes = (byPrimary[false] ?? [])..sort(compare); volumeTiles.addAll([ Padding( - padding: AvesDialog.contentHorizontalPadding + const EdgeInsets.only(top: 20), + padding: contentHorizontalPadding + const EdgeInsets.only(top: 20), child: Text(context.l10n.newAlbumDialogStorageLabel), ), ...primaryVolumes.map((volume) => _buildVolumeTile(context, volume)), @@ -68,7 +70,7 @@ class _CreateAlbumDialogState extends State { scrollableContent: [ ...volumeTiles, Padding( - padding: AvesDialog.contentHorizontalPadding + const EdgeInsets.only(bottom: 8), + padding: contentHorizontalPadding + const EdgeInsets.only(bottom: 8), child: ValueListenableBuilder( valueListenable: _existsNotifier, builder: (context, exists, child) { diff --git a/lib/widgets/dialogs/video_speed_dialog.dart b/lib/widgets/dialogs/video_speed_dialog.dart index e1afe9109..d7ecebb7a 100644 --- a/lib/widgets/dialogs/video_speed_dialog.dart +++ b/lib/widgets/dialogs/video_speed_dialog.dart @@ -32,17 +32,20 @@ class _VideoSpeedDialogState extends State { Widget build(BuildContext context) { return AvesDialog( context: context, + horizontalContentPadding: 4, content: Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ - Row( - children: [ - const SizedBox(width: 24), - Text(context.l10n.videoSpeedDialogLabel), - const SizedBox(width: 16), - Text('x$_speed'), - ], + Padding( + padding: const EdgeInsets.symmetric(horizontal: 24), + child: Wrap( + children: [ + Text(context.l10n.videoSpeedDialogLabel), + const SizedBox(width: 16), + Text('x$_speed'), + ], + ), ), const SizedBox(height: 16), Slider( diff --git a/lib/widgets/stats/stats_page.dart b/lib/widgets/stats/stats_page.dart index bf32ce914..bd079ee08 100644 --- a/lib/widgets/stats/stats_page.dart +++ b/lib/widgets/stats/stats_page.dart @@ -22,6 +22,7 @@ import 'package:charts_flutter/flutter.dart' as charts; import 'package:collection/collection.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/widgets.dart'; import 'package:intl/intl.dart'; import 'package:percent_indicator/linear_percent_indicator.dart'; import 'package:provider/provider.dart'; @@ -78,8 +79,8 @@ class StatsPage extends StatelessWidget { alignment: WrapAlignment.center, crossAxisAlignment: WrapCrossAlignment.center, children: [ - _buildMimeDonut(context, (sum) => context.l10n.statsImage(sum), imagesByMimeTypes, animate), - _buildMimeDonut(context, (sum) => context.l10n.statsVideo(sum), videoByMimeTypes, animate), + _buildMimeDonut(context, AIcons.image, imagesByMimeTypes, animate), + _buildMimeDonut(context, AIcons.video, videoByMimeTypes, animate), ], ); @@ -108,7 +109,10 @@ class StatsPage extends StatelessWidget { ), ), const SizedBox(height: 8), - Text(context.l10n.statsWithGps(withGpsCount)), + Text( + context.l10n.statsWithGps(withGpsCount), + textAlign: TextAlign.center, + ), ], ), ); @@ -136,7 +140,7 @@ class StatsPage extends StatelessWidget { Widget _buildMimeDonut( BuildContext context, - String Function(int) label, + IconData icon, Map byMimeTypes, bool animate, ) { @@ -180,9 +184,15 @@ class StatsPage extends StatelessWidget { ), ), Center( - child: Text( - '$sum\n${label(sum)}', - textAlign: TextAlign.center, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Icon(icon), + Text( + '$sum', + textAlign: TextAlign.center, + ), + ], ), ), ], diff --git a/untranslated.json b/untranslated.json new file mode 100644 index 000000000..3d5126e85 --- /dev/null +++ b/untranslated.json @@ -0,0 +1,5 @@ +{ + "ru": [ + "aboutCreditsTranslators" + ] +}