From b830a7c802cb5c4aa4b08095d20d9e6295a8c145 Mon Sep 17 00:00:00 2001 From: fulleni Date: 2025年10月13日 17:14:31 +0100 Subject: [PATCH 01/14] fix(l10n): update localization for saved feed filters limit - Replace "saved headlines" with "saved feed filters" in Arabic and English localization files - Update descriptions to reflect the change from headlines to feed filters --- lib/l10n/app_localizations.dart | 8 ++++---- lib/l10n/app_localizations_ar.dart | 6 +++--- lib/l10n/app_localizations_en.dart | 6 +++--- lib/l10n/arb/app_ar.arb | 10 +++++----- lib/l10n/arb/app_en.arb | 8 ++++---- 5 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lib/l10n/app_localizations.dart b/lib/l10n/app_localizations.dart index 48b37d6..fca6406 100644 --- a/lib/l10n/app_localizations.dart +++ b/lib/l10n/app_localizations.dart @@ -1571,14 +1571,14 @@ abstract class AppLocalizations { /// Label for Saved Headlines Limit /// /// In en, this message translates to: - /// **'Saved Headlines Limit'** - String get savedHeadlinesLimitLabel; + /// **'Saved Feed Filters Limit'** + String get savedFeedFiltersLimitLabel; /// Description for Saved Headlines Limit /// /// In en, this message translates to: - /// **'Maximum number of headlines this user role can save.'** - String get savedHeadlinesLimitDescription; + /// **'Maximum number of feed filters this user role can save.'** + String get savedFeedFiltersLimitDescription; /// Label for Ad Frequency /// diff --git a/lib/l10n/app_localizations_ar.dart b/lib/l10n/app_localizations_ar.dart index 1e778cb..927ecda 100644 --- a/lib/l10n/app_localizations_ar.dart +++ b/lib/l10n/app_localizations_ar.dart @@ -826,11 +826,11 @@ class AppLocalizationsAr extends AppLocalizations { 'الحد الأقصى لعدد البلدان أو مصادر الأخبار أو المواضيع التي يمكن لهذا الدور المستخدم متابعتها (لكل نوع حد خاص به).'; @override - String get savedHeadlinesLimitLabel => 'حد العناوين المحفوظة'; + String get savedFeedFiltersLimitLabel => 'حد مرشحات موجز الأخبار المحفوظة'; @override - String get savedHeadlinesLimitDescription => - 'الحد الأقصى لعدد العناوين الرئيسية التي يمكن لهذا الدور المستخدم حفظها.'; + String get savedFeedFiltersLimitDescription => + 'الحد الأقصى لعدد مرشحات موجز الأخبار التي يمكن لهذا الدور المستخدم حفظها.'; @override String get adFrequencyLabel => 'تكرار الإعلان'; diff --git a/lib/l10n/app_localizations_en.dart b/lib/l10n/app_localizations_en.dart index 8523c0f..78d5d68 100644 --- a/lib/l10n/app_localizations_en.dart +++ b/lib/l10n/app_localizations_en.dart @@ -824,11 +824,11 @@ class AppLocalizationsEn extends AppLocalizations { 'Maximum number of countries, news sources, or categories this user role can follow (each type has its own limit).'; @override - String get savedHeadlinesLimitLabel => 'Saved Headlines Limit'; + String get savedFeedFiltersLimitLabel => 'Saved Feed Filters Limit'; @override - String get savedHeadlinesLimitDescription => - 'Maximum number of headlines this user role can save.'; + String get savedFeedFiltersLimitDescription => + 'Maximum number of feed filters this user role can save.'; @override String get adFrequencyLabel => 'Ad Frequency'; diff --git a/lib/l10n/arb/app_ar.arb b/lib/l10n/arb/app_ar.arb index b3e75a9..4c20b18 100644 --- a/lib/l10n/arb/app_ar.arb +++ b/lib/l10n/arb/app_ar.arb @@ -1022,12 +1022,12 @@ "@followedItemsLimitDescription": { "description": "وصف حد العناصر المتابعة" }, - "savedHeadlinesLimitLabel": "حد العناوين المحفوظة", - "@savedHeadlinesLimitLabel": { - "description": "تسمية حد العناوين المحفوظة" + "savedFeedFiltersLimitLabel": "حد مرشحات موجز الأخبار المحفوظة", + "@savedFeedFiltersLimitLabel": { + "description": "تسمية حد مرشحات موجز الأخبار المحفوظة" }, - "savedHeadlinesLimitDescription": "الحد الأقصى لعدد العناوين الرئيسية التي يمكن لهذا الدور المستخدم حفظها.", - "@savedHeadlinesLimitDescription": { + "savedFeedFiltersLimitDescription": "الحد الأقصى لعدد مرشحات موجز الأخبار التي يمكن لهذا الدور المستخدم حفظها.", + "@savedFeedFiltersLimitDescription": { "description": "وصف حد العناوين المحفوظة" }, "adFrequencyLabel": "تكرار الإعلان", diff --git a/lib/l10n/arb/app_en.arb b/lib/l10n/arb/app_en.arb index 560b554..53027ce 100644 --- a/lib/l10n/arb/app_en.arb +++ b/lib/l10n/arb/app_en.arb @@ -1022,12 +1022,12 @@ "@followedItemsLimitDescription": { "description": "Description for Followed Items Limit" }, - "savedHeadlinesLimitLabel": "Saved Headlines Limit", - "@savedHeadlinesLimitLabel": { + "savedFeedFiltersLimitLabel": "Saved Feed Filters Limit", + "@savedFeedFiltersLimitLabel": { "description": "Label for Saved Headlines Limit" }, - "savedHeadlinesLimitDescription": "Maximum number of headlines this user role can save.", - "@savedHeadlinesLimitDescription": { + "savedFeedFiltersLimitDescription": "Maximum number of feed filters this user role can save.", + "@savedFeedFiltersLimitDescription": { "description": "Description for Saved Headlines Limit" }, "adFrequencyLabel": "Ad Frequency", From b731f65656ae5c428276e2149ca864925746fd94 Mon Sep 17 00:00:00 2001 From: fulleni Date: 2025年10月13日 17:14:55 +0100 Subject: [PATCH 02/14] refactor(app_configuration): rename widget for better reusability - Rename `SavedHeadlinesFiltersLimitForm` to `SavedFeedFiltersLimitForm` - Update import statement in `feed_configuration_tab.dart` --- lib/app_configuration/view/tabs/feed_configuration_tab.dart | 2 +- ...lters_limit_form.dart => saved_feed_filters_limit_form.dart} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename lib/app_configuration/widgets/{saved_headlines_filters_limit_form.dart => saved_feed_filters_limit_form.dart} (100%) diff --git a/lib/app_configuration/view/tabs/feed_configuration_tab.dart b/lib/app_configuration/view/tabs/feed_configuration_tab.dart index cbff207..69456cf 100644 --- a/lib/app_configuration/view/tabs/feed_configuration_tab.dart +++ b/lib/app_configuration/view/tabs/feed_configuration_tab.dart @@ -1,7 +1,7 @@ import 'package:core/core.dart'; import 'package:flutter/material.dart'; import 'package:flutter_news_app_web_dashboard_full_source_code/app_configuration/widgets/feed_decorator_form.dart'; -import 'package:flutter_news_app_web_dashboard_full_source_code/app_configuration/widgets/saved_headlines_filters_limit_form.dart'; +import 'package:flutter_news_app_web_dashboard_full_source_code/app_configuration/widgets/saved_feed_filters_limit_form.dart'; import 'package:flutter_news_app_web_dashboard_full_source_code/app_configuration/widgets/user_preference_limits_form.dart'; import 'package:flutter_news_app_web_dashboard_full_source_code/l10n/l10n.dart'; import 'package:flutter_news_app_web_dashboard_full_source_code/shared/extensions/feed_decorator_type_l10n.dart'; diff --git a/lib/app_configuration/widgets/saved_headlines_filters_limit_form.dart b/lib/app_configuration/widgets/saved_feed_filters_limit_form.dart similarity index 100% rename from lib/app_configuration/widgets/saved_headlines_filters_limit_form.dart rename to lib/app_configuration/widgets/saved_feed_filters_limit_form.dart From e044399557d1a86a6010ec92fefeafb4e8f4ad07 Mon Sep 17 00:00:00 2001 From: fulleni Date: 2025年10月13日 17:17:31 +0100 Subject: [PATCH 03/14] refactor(app_configuration): rename SavedHeadlinesFiltersLimitForm to SavedFeedFiltersLimitForm - Update class name from SavedHeadlinesFiltersLimitForm to SavedFeedFiltersLimitForm - Update related file name and comments - Modify UI labels to reflect new form name --- .../view/tabs/feed_configuration_tab.dart | 2 +- .../saved_feed_filters_limit_form.dart | 23 +++++++++---------- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/lib/app_configuration/view/tabs/feed_configuration_tab.dart b/lib/app_configuration/view/tabs/feed_configuration_tab.dart index 69456cf..4b2ede1 100644 --- a/lib/app_configuration/view/tabs/feed_configuration_tab.dart +++ b/lib/app_configuration/view/tabs/feed_configuration_tab.dart @@ -114,7 +114,7 @@ class _FeedConfigurationTabState extends State { ), ), const SizedBox(height: AppSpacing.lg), - SavedHeadlinesFiltersLimitForm( + SavedFeedFiltersLimitForm( remoteConfig: widget.remoteConfig, onConfigChanged: widget.onConfigChanged, ), diff --git a/lib/app_configuration/widgets/saved_feed_filters_limit_form.dart b/lib/app_configuration/widgets/saved_feed_filters_limit_form.dart index 557e539..d0bc253 100644 --- a/lib/app_configuration/widgets/saved_feed_filters_limit_form.dart +++ b/lib/app_configuration/widgets/saved_feed_filters_limit_form.dart @@ -5,16 +5,16 @@ import 'package:flutter_news_app_web_dashboard_full_source_code/l10n/l10n.dart'; import 'package:flutter_news_app_web_dashboard_full_source_code/shared/extensions/app_user_role_l10n.dart'; import 'package:ui_kit/ui_kit.dart'; -/// {@template saved_headlines_filters_limit_form} -/// A form for configuring saved headlines filter limits within the +/// {@template saved_feed_filters_limit_form} +/// A form for configuring saved feed filter limits within the /// [RemoteConfig]. /// /// This form provides fields to set the maximum number of saved filters /// for guest, authenticated, and premium users. /// {@endtemplate} -class SavedHeadlinesFiltersLimitForm extends StatefulWidget { - /// {@macro saved_headlines_filters_limit_form} - const SavedHeadlinesFiltersLimitForm({ +class SavedFeedFiltersLimitForm extends StatefulWidget { + /// {@macro saved_feed_filters_limit_form} + const SavedFeedFiltersLimitForm({ required this.remoteConfig, required this.onConfigChanged, super.key, @@ -27,12 +27,11 @@ class SavedHeadlinesFiltersLimitForm extends StatefulWidget { final ValueChanged onConfigChanged; @override - State createState() => - _SavedHeadlinesFiltersLimitFormState(); + State createState() => + _SavedFeedFiltersLimitFormState(); } -class _SavedHeadlinesFiltersLimitFormState - extends State +class _SavedFeedFiltersLimitFormState extends State with SingleTickerProviderStateMixin { late TabController _tabController; late final Map _controllers; @@ -48,7 +47,7 @@ class _SavedHeadlinesFiltersLimitFormState } @override - void didUpdateWidget(covariant SavedHeadlinesFiltersLimitForm oldWidget) { + void didUpdateWidget(covariant SavedFeedFiltersLimitForm oldWidget) { super.didUpdateWidget(oldWidget); if (widget.remoteConfig.userPreferenceConfig != oldWidget.remoteConfig.userPreferenceConfig) { @@ -125,8 +124,8 @@ class _SavedHeadlinesFiltersLimitFormState children: AppUserRole.values.map((role) { final config = widget.remoteConfig.userPreferenceConfig; return AppConfigIntField( - label: l10n.savedHeadlinesLimitLabel, - description: l10n.savedHeadlinesLimitDescription, + label: l10n.savedFeedFiltersLimitLabel, + description: l10n.savedFeedFiltersLimitLabel, value: _getSavedFiltersLimit(config, role), onChanged: (value) { widget.onConfigChanged( From e9ce6c8d7008dc97499b4693f4223450a8729d51 Mon Sep 17 00:00:00 2001 From: fulleni Date: 2025年10月13日 17:24:02 +0100 Subject: [PATCH 04/14] fix(localization): update saved feed filter limits terminology - Replace "saved headlines filter" with "saved feed filter" in Arabic and English localization files - Update descriptions to reflect the new terminology --- lib/l10n/app_localizations.dart | 10 +++++----- lib/l10n/app_localizations_ar.dart | 6 +++--- lib/l10n/app_localizations_en.dart | 6 +++--- lib/l10n/arb/app_ar.arb | 10 +++++----- lib/l10n/arb/app_en.arb | 10 +++++----- 5 files changed, 21 insertions(+), 21 deletions(-) diff --git a/lib/l10n/app_localizations.dart b/lib/l10n/app_localizations.dart index fca6406..209b593 100644 --- a/lib/l10n/app_localizations.dart +++ b/lib/l10n/app_localizations.dart @@ -1595,14 +1595,14 @@ abstract class AppLocalizations { /// Description for the Saved Headlines Filter Limits section /// /// In en, this message translates to: - /// **'Set limits on the number of saved headlines filters for each user tier.'** - String get savedHeadlinesFilterLimitsDescription; + /// **'Set limits on the number of saved feed filters for each user tier.'** + String get savedFeedFilterLimitsDescription; - /// Title for the Saved Headlines Filter Limits section + /// Title for the Saved Feed Filter Limits section /// /// In en, this message translates to: - /// **'Saved Headlines Filter Limits'** - String get savedHeadlinesFilterLimitsTitle; + /// **'Saved Feed Filter Limits'** + String get savedFeedFilterLimitsTitle; /// Label for Ad Placement Interval /// diff --git a/lib/l10n/app_localizations_ar.dart b/lib/l10n/app_localizations_ar.dart index 927ecda..33a808f 100644 --- a/lib/l10n/app_localizations_ar.dart +++ b/lib/l10n/app_localizations_ar.dart @@ -840,11 +840,11 @@ class AppLocalizationsAr extends AppLocalizations { 'عدد مرات ظهور الإعلان لهذا الدور المستخدم (على سبيل المثال، قيمة 5 تعني أنه يمكن وضع إعلان بعد كل 5 عناصر إخبارية).'; @override - String get savedHeadlinesFilterLimitsDescription => - 'الحد الأقصى لعدد مرشحات العناوين المحفوظة التي يمكن لهذا الدور إنشاؤها.'; + String get savedFeedFilterLimitsDescription => + 'الحد الأقصى لعدد مرشحات موجز الأخبار المحفوظة التي يمكن لهذا الدور إنشاؤها.'; @override - String get savedHeadlinesFilterLimitsTitle => 'حدود مرشحات العناوين المحفوظة'; + String get savedFeedFilterLimitsTitle => 'حد مرشحات موجز الأخبار المحفوظة'; @override String get adPlacementIntervalLabel => 'فترة وضع الإعلان'; diff --git a/lib/l10n/app_localizations_en.dart b/lib/l10n/app_localizations_en.dart index 78d5d68..680205d 100644 --- a/lib/l10n/app_localizations_en.dart +++ b/lib/l10n/app_localizations_en.dart @@ -838,11 +838,11 @@ class AppLocalizationsEn extends AppLocalizations { 'How often an ad can appear for this user role (e.g., a value of 5 means an ad could be placed after every 5 news items).'; @override - String get savedHeadlinesFilterLimitsDescription => - 'Set limits on the number of saved headlines filters for each user tier.'; + String get savedFeedFilterLimitsDescription => + 'Set limits on the number of saved feed filters for each user tier.'; @override - String get savedHeadlinesFilterLimitsTitle => 'Saved Headlines Filter Limits'; + String get savedFeedFilterLimitsTitle => 'Saved Feed Filter Limits'; @override String get adPlacementIntervalLabel => 'Ad Placement Interval'; diff --git a/lib/l10n/arb/app_ar.arb b/lib/l10n/arb/app_ar.arb index 4c20b18..cf5ebcc 100644 --- a/lib/l10n/arb/app_ar.arb +++ b/lib/l10n/arb/app_ar.arb @@ -1038,12 +1038,12 @@ "@adFrequencyDescription": { "description": "وصف تكرار الإعلان" }, - "savedHeadlinesFilterLimitsTitle": "حدود مرشحات العناوين المحفوظة", - "@savedHeadlinesFilterLimitsTitle": { - "description": "وصف لحد المرشحات المحفوظة" + "savedFeedFilterLimitsTitle": "حد مرشحات موجز الأخبار المحفوظة", + "@savedFeedFilterLimitsTitle": { + "description": "وصف لحد مرشحات موجز الأخبار المحفوظة" }, - "savedHeadlinesFilterLimitsDescription": "الحد الأقصى لعدد مرشحات العناوين المحفوظة التي يمكن لهذا الدور إنشاؤها.", - "@savedHeadlinesFilterLimitsDescription": { + "savedFeedFilterLimitsDescription": "الحد الأقصى لعدد مرشحات موجز الأخبار المحفوظة التي يمكن لهذا الدور إنشاؤها.", + "@savedFeedFilterLimitsDescription": { "description": "وصف لحد المرشحات المحفوظة" }, "adPlacementIntervalLabel": "فترة وضع الإعلان", diff --git a/lib/l10n/arb/app_en.arb b/lib/l10n/arb/app_en.arb index 53027ce..8808687 100644 --- a/lib/l10n/arb/app_en.arb +++ b/lib/l10n/arb/app_en.arb @@ -1038,13 +1038,13 @@ "@adFrequencyDescription": { "description": "Description for Ad Frequency" }, - "savedHeadlinesFilterLimitsDescription": "Set limits on the number of saved headlines filters for each user tier.", - "@savedHeadlinesFilterLimitsDescription": { + "savedFeedFilterLimitsDescription": "Set limits on the number of saved feed filters for each user tier.", + "@savedFeedFilterLimitsDescription": { "description": "Description for the Saved Headlines Filter Limits section" }, - "savedHeadlinesFilterLimitsTitle": "Saved Headlines Filter Limits", - "@savedHeadlinesFilterLimitsTitle": { - "description": "Title for the Saved Headlines Filter Limits section" + "savedFeedFilterLimitsTitle": "Saved Feed Filter Limits", + "@savedFeedFilterLimitsTitle": { + "description": "Title for the Saved Feed Filter Limits section" }, "adPlacementIntervalLabel": "Ad Placement Interval", "@adPlacementIntervalLabel": { From d04a33bb98c37dcac00c7a5c254dcdaf169b73b7 Mon Sep 17 00:00:00 2001 From: fulleni Date: 2025年10月13日 17:24:49 +0100 Subject: [PATCH 05/14] fix(localization): update feed configuration tab localization - Change 'savedHeadlinesFilterLimitsTitle' to 'savedFeedFilterLimitsTitle' - Change 'savedHeadlinesFilterLimitsDescription' to 'savedFeedFilterLimitsDescription' --- lib/app_configuration/view/tabs/feed_configuration_tab.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/app_configuration/view/tabs/feed_configuration_tab.dart b/lib/app_configuration/view/tabs/feed_configuration_tab.dart index 4b2ede1..6b90c85 100644 --- a/lib/app_configuration/view/tabs/feed_configuration_tab.dart +++ b/lib/app_configuration/view/tabs/feed_configuration_tab.dart @@ -93,7 +93,7 @@ class _FeedConfigurationTabState extends State { const tileIndex = 1; return ExpansionTile( key: ValueKey('savedHeadlinesFilterLimitsTile_$expandedIndex'), - title: Text(l10n.savedHeadlinesFilterLimitsTitle), + title: Text(l10n.savedFeedFilterLimitsTitle), childrenPadding: const EdgeInsetsDirectional.only( start: AppSpacing.lg, top: AppSpacing.md, @@ -106,7 +106,7 @@ class _FeedConfigurationTabState extends State { initiallyExpanded: expandedIndex == tileIndex, children: [ Text( - l10n.savedHeadlinesFilterLimitsDescription, + l10n.savedFeedFilterLimitsDescription, style: Theme.of(context).textTheme.bodySmall?.copyWith( color: Theme.of( context, From c2175bf5288a7259ba7f5354ffc741c279da856f Mon Sep 17 00:00:00 2001 From: fulleni Date: 2025年10月13日 17:36:54 +0100 Subject: [PATCH 06/14] refactor(l10n): remove feed limits references from user content section - Remove "Feed" references from the "User Content & Feed Limits" section - Rename section title from "User Content & Feed Limits" to "User Content Limits" - Update corresponding descriptions in both English and Arabic files --- lib/l10n/arb/app_ar.arb | 6 +++--- lib/l10n/arb/app_en.arb | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/l10n/arb/app_ar.arb b/lib/l10n/arb/app_ar.arb index cf5ebcc..0f89db2 100644 --- a/lib/l10n/arb/app_ar.arb +++ b/lib/l10n/arb/app_ar.arb @@ -143,13 +143,13 @@ "@generalTab": { "description": "عنوان تبويب الإعدادات العامة" }, - "userContentLimitsTitle": "حدود المحتوى والموجز للمستخدم", + "userContentLimitsTitle": "حدود المحتوى للمستخدم", "@userContentLimitsTitle": { - "description": "عنوان قسم حدود المحتوى والموجز للمستخدم" + "description": "عنوان قسم حدود المحتوى للمستخدم" }, "userContentLimitsDescription": "تعيين حدود للعناصر المتابعة والعناوين المحفوظة لكل فئة من فئات المستخدمين.", "@userContentLimitsDescription": { - "description": "وصف قسم حدود المحتوى والموجز للمستخدم" + "description": "وصف قسم حدود المحتوى للمستخدم" }, "feedActionsTitle": "إجراءات الموجز", "@feedActionsTitle": { diff --git a/lib/l10n/arb/app_en.arb b/lib/l10n/arb/app_en.arb index 8808687..6ed4517 100644 --- a/lib/l10n/arb/app_en.arb +++ b/lib/l10n/arb/app_en.arb @@ -143,13 +143,13 @@ "@generalTab": { "description": "Tab title for General settings" }, - "userContentLimitsTitle": "User Content & Feed Limits", + "userContentLimitsTitle": "User Content Limits", "@userContentLimitsTitle": { - "description": "Title for the User Content & Feed Limits section" + "description": "Title for the User Content Limits section" }, "userContentLimitsDescription": "Set limits on followed items and saved headlines for each user tier.", "@userContentLimitsDescription": { - "description": "Description for the User Content & Feed Limits section" + "description": "Description for the User Content Limits section" }, "feedActionsTitle": "Feed Actions", "@feedActionsTitle": { From 679ab3c2e063c43e86c973424aa8d05919d61e89 Mon Sep 17 00:00:00 2001 From: fulleni Date: 2025年10月13日 17:37:03 +0100 Subject: [PATCH 07/14] fix(l10n): remove feed limits references from user content - Update translations to remove feed limits - Rename section title from 'User Content & Feed Limits' to 'User Content Limits' - Remove feed-related descriptions and comments --- lib/l10n/app_localizations.dart | 6 +++--- lib/l10n/app_localizations_ar.dart | 2 +- lib/l10n/app_localizations_en.dart | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/l10n/app_localizations.dart b/lib/l10n/app_localizations.dart index 209b593..6bee17f 100644 --- a/lib/l10n/app_localizations.dart +++ b/lib/l10n/app_localizations.dart @@ -290,13 +290,13 @@ abstract class AppLocalizations { /// **'General'** String get generalTab; - /// Title for the User Content & Feed Limits section + /// Title for the User Content Limits section /// /// In en, this message translates to: - /// **'User Content & Feed Limits'** + /// **'User Content Limits'** String get userContentLimitsTitle; - /// Description for the User Content & Feed Limits section + /// Description for the User Content Limits section /// /// In en, this message translates to: /// **'Set limits on followed items and saved headlines for each user tier.'** diff --git a/lib/l10n/app_localizations_ar.dart b/lib/l10n/app_localizations_ar.dart index 33a808f..d588a99 100644 --- a/lib/l10n/app_localizations_ar.dart +++ b/lib/l10n/app_localizations_ar.dart @@ -118,7 +118,7 @@ class AppLocalizationsAr extends AppLocalizations { String get generalTab => 'عام'; @override - String get userContentLimitsTitle => 'حدود المحتوى والموجز للمستخدم'; + String get userContentLimitsTitle => 'حدود المحتوى للمستخدم'; @override String get userContentLimitsDescription => diff --git a/lib/l10n/app_localizations_en.dart b/lib/l10n/app_localizations_en.dart index 680205d..f5a00f7 100644 --- a/lib/l10n/app_localizations_en.dart +++ b/lib/l10n/app_localizations_en.dart @@ -117,7 +117,7 @@ class AppLocalizationsEn extends AppLocalizations { String get generalTab => 'General'; @override - String get userContentLimitsTitle => 'User Content & Feed Limits'; + String get userContentLimitsTitle => 'User Content Limits'; @override String get userContentLimitsDescription => From 347fda267b7dc642532e963931a7dca57d5c69a4 Mon Sep 17 00:00:00 2001 From: fulleni Date: 2025年10月13日 17:39:25 +0100 Subject: [PATCH 08/14] fix(localization): adjust saved feed filters limit labels and descriptions - Update Arabic and English labels and descriptions for saved feed filters limit - Change "Saved Feed Filters Limit" to "Saved Filters Limit" for better clarity - Update corresponding descriptions in both languages --- lib/l10n/arb/app_ar.arb | 2 +- lib/l10n/arb/app_en.arb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/l10n/arb/app_ar.arb b/lib/l10n/arb/app_ar.arb index 0f89db2..5f4c6f0 100644 --- a/lib/l10n/arb/app_ar.arb +++ b/lib/l10n/arb/app_ar.arb @@ -1022,7 +1022,7 @@ "@followedItemsLimitDescription": { "description": "وصف حد العناصر المتابعة" }, - "savedFeedFiltersLimitLabel": "حد مرشحات موجز الأخبار المحفوظة", + "savedFeedFiltersLimitLabel": "حد المرشحات المحفوظة", "@savedFeedFiltersLimitLabel": { "description": "تسمية حد مرشحات موجز الأخبار المحفوظة" }, diff --git a/lib/l10n/arb/app_en.arb b/lib/l10n/arb/app_en.arb index 6ed4517..9375ab9 100644 --- a/lib/l10n/arb/app_en.arb +++ b/lib/l10n/arb/app_en.arb @@ -1022,9 +1022,9 @@ "@followedItemsLimitDescription": { "description": "Description for Followed Items Limit" }, - "savedFeedFiltersLimitLabel": "Saved Feed Filters Limit", + "savedFeedFiltersLimitLabel": "Saved Filters Limit", "@savedFeedFiltersLimitLabel": { - "description": "Label for Saved Headlines Limit" + "description": "Label for Saved filters Limit" }, "savedFeedFiltersLimitDescription": "Maximum number of feed filters this user role can save.", "@savedFeedFiltersLimitDescription": { From b44f638c03bb22ce0f783894dcf7c20e725981a4 Mon Sep 17 00:00:00 2001 From: fulleni Date: 2025年10月13日 17:39:49 +0100 Subject: [PATCH 09/14] fix(l10n): refine app localizations for saved filters limit label - Update label from 'Saved Feed Filters Limit' to 'Saved Filters Limit' - Adjust description to remove redundant wording - Apply changes across main localization file and specific language files --- lib/l10n/app_localizations.dart | 4 ++-- lib/l10n/app_localizations_ar.dart | 2 +- lib/l10n/app_localizations_en.dart | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/l10n/app_localizations.dart b/lib/l10n/app_localizations.dart index 6bee17f..0a69068 100644 --- a/lib/l10n/app_localizations.dart +++ b/lib/l10n/app_localizations.dart @@ -1568,10 +1568,10 @@ abstract class AppLocalizations { /// **'Maximum number of countries, news sources, or categories this user role can follow (each type has its own limit).'** String get followedItemsLimitDescription; - /// Label for Saved Headlines Limit + /// Label for Saved filters Limit /// /// In en, this message translates to: - /// **'Saved Feed Filters Limit'** + /// **'Saved Filters Limit'** String get savedFeedFiltersLimitLabel; /// Description for Saved Headlines Limit diff --git a/lib/l10n/app_localizations_ar.dart b/lib/l10n/app_localizations_ar.dart index d588a99..53be389 100644 --- a/lib/l10n/app_localizations_ar.dart +++ b/lib/l10n/app_localizations_ar.dart @@ -826,7 +826,7 @@ class AppLocalizationsAr extends AppLocalizations { 'الحد الأقصى لعدد البلدان أو مصادر الأخبار أو المواضيع التي يمكن لهذا الدور المستخدم متابعتها (لكل نوع حد خاص به).'; @override - String get savedFeedFiltersLimitLabel => 'حد مرشحات موجز الأخبار المحفوظة'; + String get savedFeedFiltersLimitLabel => 'حد المرشحات المحفوظة'; @override String get savedFeedFiltersLimitDescription => diff --git a/lib/l10n/app_localizations_en.dart b/lib/l10n/app_localizations_en.dart index f5a00f7..43c3653 100644 --- a/lib/l10n/app_localizations_en.dart +++ b/lib/l10n/app_localizations_en.dart @@ -824,7 +824,7 @@ class AppLocalizationsEn extends AppLocalizations { 'Maximum number of countries, news sources, or categories this user role can follow (each type has its own limit).'; @override - String get savedFeedFiltersLimitLabel => 'Saved Feed Filters Limit'; + String get savedFeedFiltersLimitLabel => 'Saved Filters Limit'; @override String get savedFeedFiltersLimitDescription => From 31dffcef338dc3add4172aaca3af09a5e2abd567 Mon Sep 17 00:00:00 2001 From: fulleni Date: 2025年10月13日 17:50:47 +0100 Subject: [PATCH 10/14] fix(localization): correct translation and consistency issues - Update Arabic translation for "savedFeedFilterLimitsTitle" - Reorder English localization entries for better consistency - Improve description for "savedFeedFilterLimitsDescription" --- lib/l10n/app_localizations.dart | 49 ++++++++++++++---------------- lib/l10n/app_localizations_ar.dart | 6 ++-- lib/l10n/app_localizations_en.dart | 6 ++-- lib/l10n/arb/app_ar.arb | 2 +- lib/l10n/arb/app_en.arb | 8 ++--- 5 files changed, 33 insertions(+), 38 deletions(-) diff --git a/lib/l10n/app_localizations.dart b/lib/l10n/app_localizations.dart index 0a69068..9845bd4 100644 --- a/lib/l10n/app_localizations.dart +++ b/lib/l10n/app_localizations.dart @@ -62,8 +62,7 @@ import 'app_localizations_en.dart'; /// be consistent with the languages listed in the AppLocalizations.supportedLocales /// property. abstract class AppLocalizations { - AppLocalizations(String locale) - : localeName = intl.Intl.canonicalizedLocale(locale.toString()); + AppLocalizations(String locale) : localeName = intl.Intl.canonicalizedLocale(locale.toString()); final String localeName; @@ -71,8 +70,7 @@ abstract class AppLocalizations { return Localizations.of(context, AppLocalizations)!; } - static const LocalizationsDelegate delegate = - _AppLocalizationsDelegate(); + static const LocalizationsDelegate delegate = _AppLocalizationsDelegate(); /// A list of this localizations delegate along with the default localizations /// delegates. @@ -84,18 +82,17 @@ abstract class AppLocalizations { /// Additional delegates can be added by appending to this list in /// MaterialApp. This list does not have to be used at all if a custom list /// of delegates is preferred or required. - static const List> localizationsDelegates = - >[ - delegate, - GlobalMaterialLocalizations.delegate, - GlobalCupertinoLocalizations.delegate, - GlobalWidgetsLocalizations.delegate, - ]; + static const List> localizationsDelegates = >[ + delegate, + GlobalMaterialLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, + ]; /// A list of this localizations delegate's supported locales. static const List supportedLocales = [ Locale('ar'), - Locale('en'), + Locale('en') ]; /// Headline for the main authentication page @@ -1592,17 +1589,17 @@ abstract class AppLocalizations { /// **'How often an ad can appear for this user role (e.g., a value of 5 means an ad could be placed after every 5 news items).'** String get adFrequencyDescription; - /// Description for the Saved Headlines Filter Limits section + /// Title for the Saved Feed Filter Limits section /// /// In en, this message translates to: - /// **'Set limits on the number of saved feed filters for each user tier.'** - String get savedFeedFilterLimitsDescription; + /// **'Saved Filter Limits'** + String get savedFeedFilterLimitsTitle; - /// Title for the Saved Feed Filter Limits section + /// Description for the Saved Headlines Filter Limits section /// /// In en, this message translates to: - /// **'Saved Feed Filter Limits'** - String get savedFeedFilterLimitsTitle; + /// **'Set limits on the number of saved feed filters for each user tier.'** + String get savedFeedFilterLimitsDescription; /// Label for Ad Placement Interval /// @@ -2841,8 +2838,7 @@ abstract class AppLocalizations { String get saveAdMessage; } -class _AppLocalizationsDelegate - extends LocalizationsDelegate { +class _AppLocalizationsDelegate extends LocalizationsDelegate { const _AppLocalizationsDelegate(); @override @@ -2851,26 +2847,25 @@ class _AppLocalizationsDelegate } @override - bool isSupported(Locale locale) => - ['ar', 'en'].contains(locale.languageCode); + bool isSupported(Locale locale) => ['ar', 'en'].contains(locale.languageCode); @override bool shouldReload(_AppLocalizationsDelegate old) => false; } AppLocalizations lookupAppLocalizations(Locale locale) { + + // Lookup logic when only language code is specified. switch (locale.languageCode) { - case 'ar': - return AppLocalizationsAr(); - case 'en': - return AppLocalizationsEn(); + case 'ar': return AppLocalizationsAr(); + case 'en': return AppLocalizationsEn(); } throw FlutterError( 'AppLocalizations.delegate failed to load unsupported locale "$locale". This is likely ' 'an issue with the localizations generation tool. Please file an issue ' 'on GitHub with a reproducible sample app and the gen-l10n configuration ' - 'that was used.', + 'that was used.' ); } diff --git a/lib/l10n/app_localizations_ar.dart b/lib/l10n/app_localizations_ar.dart index 53be389..cf9292c 100644 --- a/lib/l10n/app_localizations_ar.dart +++ b/lib/l10n/app_localizations_ar.dart @@ -840,11 +840,11 @@ class AppLocalizationsAr extends AppLocalizations { 'عدد مرات ظهور الإعلان لهذا الدور المستخدم (على سبيل المثال، قيمة 5 تعني أنه يمكن وضع إعلان بعد كل 5 عناصر إخبارية).'; @override - String get savedFeedFilterLimitsDescription => - 'الحد الأقصى لعدد مرشحات موجز الأخبار المحفوظة التي يمكن لهذا الدور إنشاؤها.'; + String get savedFeedFilterLimitsTitle => 'حد المرشحات المحفوظة'; @override - String get savedFeedFilterLimitsTitle => 'حد مرشحات موجز الأخبار المحفوظة'; + String get savedFeedFilterLimitsDescription => + 'الحد الأقصى لعدد مرشحات موجز الأخبار المحفوظة التي يمكن لهذا الدور إنشاؤها.'; @override String get adPlacementIntervalLabel => 'فترة وضع الإعلان'; diff --git a/lib/l10n/app_localizations_en.dart b/lib/l10n/app_localizations_en.dart index 43c3653..ffc9a51 100644 --- a/lib/l10n/app_localizations_en.dart +++ b/lib/l10n/app_localizations_en.dart @@ -838,11 +838,11 @@ class AppLocalizationsEn extends AppLocalizations { 'How often an ad can appear for this user role (e.g., a value of 5 means an ad could be placed after every 5 news items).'; @override - String get savedFeedFilterLimitsDescription => - 'Set limits on the number of saved feed filters for each user tier.'; + String get savedFeedFilterLimitsTitle => 'Saved Filter Limits'; @override - String get savedFeedFilterLimitsTitle => 'Saved Feed Filter Limits'; + String get savedFeedFilterLimitsDescription => + 'Set limits on the number of saved feed filters for each user tier.'; @override String get adPlacementIntervalLabel => 'Ad Placement Interval'; diff --git a/lib/l10n/arb/app_ar.arb b/lib/l10n/arb/app_ar.arb index 5f4c6f0..91c7e9f 100644 --- a/lib/l10n/arb/app_ar.arb +++ b/lib/l10n/arb/app_ar.arb @@ -1038,7 +1038,7 @@ "@adFrequencyDescription": { "description": "وصف تكرار الإعلان" }, - "savedFeedFilterLimitsTitle": "حد مرشحات موجز الأخبار المحفوظة", + "savedFeedFilterLimitsTitle": "حد المرشحات المحفوظة", "@savedFeedFilterLimitsTitle": { "description": "وصف لحد مرشحات موجز الأخبار المحفوظة" }, diff --git a/lib/l10n/arb/app_en.arb b/lib/l10n/arb/app_en.arb index 9375ab9..3cb9463 100644 --- a/lib/l10n/arb/app_en.arb +++ b/lib/l10n/arb/app_en.arb @@ -1038,14 +1038,14 @@ "@adFrequencyDescription": { "description": "Description for Ad Frequency" }, + "savedFeedFilterLimitsTitle": "Saved Filter Limits", + "@savedFeedFilterLimitsTitle": { + "description": "Title for the Saved Feed Filter Limits section" + }, "savedFeedFilterLimitsDescription": "Set limits on the number of saved feed filters for each user tier.", "@savedFeedFilterLimitsDescription": { "description": "Description for the Saved Headlines Filter Limits section" }, - "savedFeedFilterLimitsTitle": "Saved Feed Filter Limits", - "@savedFeedFilterLimitsTitle": { - "description": "Title for the Saved Feed Filter Limits section" - }, "adPlacementIntervalLabel": "Ad Placement Interval", "@adPlacementIntervalLabel": { "description": "Label for Ad Placement Interval" From 429055cec1ec49614baaf614d1974c642ee22d44 Mon Sep 17 00:00:00 2001 From: fulleni Date: 2025年10月13日 17:50:55 +0100 Subject: [PATCH 11/14] chore: misc --- lib/l10n/app_localizations.dart | 37 +++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/lib/l10n/app_localizations.dart b/lib/l10n/app_localizations.dart index 9845bd4..12590ed 100644 --- a/lib/l10n/app_localizations.dart +++ b/lib/l10n/app_localizations.dart @@ -62,7 +62,8 @@ import 'app_localizations_en.dart'; /// be consistent with the languages listed in the AppLocalizations.supportedLocales /// property. abstract class AppLocalizations { - AppLocalizations(String locale) : localeName = intl.Intl.canonicalizedLocale(locale.toString()); + AppLocalizations(String locale) + : localeName = intl.Intl.canonicalizedLocale(locale.toString()); final String localeName; @@ -70,7 +71,8 @@ abstract class AppLocalizations { return Localizations.of(context, AppLocalizations)!; } - static const LocalizationsDelegate delegate = _AppLocalizationsDelegate(); + static const LocalizationsDelegate delegate = + _AppLocalizationsDelegate(); /// A list of this localizations delegate along with the default localizations /// delegates. @@ -82,17 +84,18 @@ abstract class AppLocalizations { /// Additional delegates can be added by appending to this list in /// MaterialApp. This list does not have to be used at all if a custom list /// of delegates is preferred or required. - static const List> localizationsDelegates = >[ - delegate, - GlobalMaterialLocalizations.delegate, - GlobalCupertinoLocalizations.delegate, - GlobalWidgetsLocalizations.delegate, - ]; + static const List> localizationsDelegates = + >[ + delegate, + GlobalMaterialLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, + ]; /// A list of this localizations delegate's supported locales. static const List supportedLocales = [ Locale('ar'), - Locale('en') + Locale('en'), ]; /// Headline for the main authentication page @@ -2838,7 +2841,8 @@ abstract class AppLocalizations { String get saveAdMessage; } -class _AppLocalizationsDelegate extends LocalizationsDelegate { +class _AppLocalizationsDelegate + extends LocalizationsDelegate { const _AppLocalizationsDelegate(); @override @@ -2847,25 +2851,26 @@ class _AppLocalizationsDelegate extends LocalizationsDelegate } @override - bool isSupported(Locale locale) => ['ar', 'en'].contains(locale.languageCode); + bool isSupported(Locale locale) => + ['ar', 'en'].contains(locale.languageCode); @override bool shouldReload(_AppLocalizationsDelegate old) => false; } AppLocalizations lookupAppLocalizations(Locale locale) { - - // Lookup logic when only language code is specified. switch (locale.languageCode) { - case 'ar': return AppLocalizationsAr(); - case 'en': return AppLocalizationsEn(); + case 'ar': + return AppLocalizationsAr(); + case 'en': + return AppLocalizationsEn(); } throw FlutterError( 'AppLocalizations.delegate failed to load unsupported locale "$locale". This is likely ' 'an issue with the localizations generation tool. Please file an issue ' 'on GitHub with a reproducible sample app and the gen-l10n configuration ' - 'that was used.' + 'that was used.', ); } From 2233ffc5de2fbd134917ca39ff7f13bd83442b8c Mon Sep 17 00:00:00 2001 From: fulleni Date: 2025年10月13日 17:58:07 +0100 Subject: [PATCH 12/14] refactor(l10n): adjust content limits section titles in Arabic MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Change "userContentLimitsTitle" from "حدود المحتوى للمستخدم" to "حدود المحتوى" - Modify "savedFeedFiltersLimitLabel" from "حد المرشحات المحفوظة" to "حدود المرشحات" --- lib/l10n/app_localizations_ar.dart | 4 ++-- lib/l10n/arb/app_ar.arb | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/l10n/app_localizations_ar.dart b/lib/l10n/app_localizations_ar.dart index cf9292c..28904e6 100644 --- a/lib/l10n/app_localizations_ar.dart +++ b/lib/l10n/app_localizations_ar.dart @@ -118,7 +118,7 @@ class AppLocalizationsAr extends AppLocalizations { String get generalTab => 'عام'; @override - String get userContentLimitsTitle => 'حدود المحتوى للمستخدم'; + String get userContentLimitsTitle => 'حدود المحتوى'; @override String get userContentLimitsDescription => @@ -826,7 +826,7 @@ class AppLocalizationsAr extends AppLocalizations { 'الحد الأقصى لعدد البلدان أو مصادر الأخبار أو المواضيع التي يمكن لهذا الدور المستخدم متابعتها (لكل نوع حد خاص به).'; @override - String get savedFeedFiltersLimitLabel => 'حد المرشحات المحفوظة'; + String get savedFeedFiltersLimitLabel => 'حدود المرشحات'; @override String get savedFeedFiltersLimitDescription => diff --git a/lib/l10n/arb/app_ar.arb b/lib/l10n/arb/app_ar.arb index 91c7e9f..473bc18 100644 --- a/lib/l10n/arb/app_ar.arb +++ b/lib/l10n/arb/app_ar.arb @@ -143,7 +143,7 @@ "@generalTab": { "description": "عنوان تبويب الإعدادات العامة" }, - "userContentLimitsTitle": "حدود المحتوى للمستخدم", + "userContentLimitsTitle": "حدود المحتوى", "@userContentLimitsTitle": { "description": "عنوان قسم حدود المحتوى للمستخدم" }, @@ -1022,7 +1022,7 @@ "@followedItemsLimitDescription": { "description": "وصف حد العناصر المتابعة" }, - "savedFeedFiltersLimitLabel": "حد المرشحات المحفوظة", + "savedFeedFiltersLimitLabel": "حدود المرشحات", "@savedFeedFiltersLimitLabel": { "description": "تسمية حد مرشحات موجز الأخبار المحفوظة" }, From 80435ccb735a061a2e07f54d682821ee35231c20 Mon Sep 17 00:00:00 2001 From: fulleni Date: 2025年10月13日 18:16:00 +0100 Subject: [PATCH 13/14] style(l10n): improve consistency in saved feed filters limit labels - Change "Saved Filters Limit" to "Saved Filters Limits" for better grammatical agreement - Update corresponding description for consistency --- lib/l10n/app_localizations.dart | 4 ++-- lib/l10n/app_localizations_en.dart | 2 +- lib/l10n/arb/app_en.arb | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/l10n/app_localizations.dart b/lib/l10n/app_localizations.dart index 12590ed..e014bb9 100644 --- a/lib/l10n/app_localizations.dart +++ b/lib/l10n/app_localizations.dart @@ -1568,10 +1568,10 @@ abstract class AppLocalizations { /// **'Maximum number of countries, news sources, or categories this user role can follow (each type has its own limit).'** String get followedItemsLimitDescription; - /// Label for Saved filters Limit + /// Label for Saved filters Limits /// /// In en, this message translates to: - /// **'Saved Filters Limit'** + /// **'Saved Filters Limits'** String get savedFeedFiltersLimitLabel; /// Description for Saved Headlines Limit diff --git a/lib/l10n/app_localizations_en.dart b/lib/l10n/app_localizations_en.dart index ffc9a51..445cdd0 100644 --- a/lib/l10n/app_localizations_en.dart +++ b/lib/l10n/app_localizations_en.dart @@ -824,7 +824,7 @@ class AppLocalizationsEn extends AppLocalizations { 'Maximum number of countries, news sources, or categories this user role can follow (each type has its own limit).'; @override - String get savedFeedFiltersLimitLabel => 'Saved Filters Limit'; + String get savedFeedFiltersLimitLabel => 'Saved Filters Limits'; @override String get savedFeedFiltersLimitDescription => diff --git a/lib/l10n/arb/app_en.arb b/lib/l10n/arb/app_en.arb index 3cb9463..92c8900 100644 --- a/lib/l10n/arb/app_en.arb +++ b/lib/l10n/arb/app_en.arb @@ -1022,9 +1022,9 @@ "@followedItemsLimitDescription": { "description": "Description for Followed Items Limit" }, - "savedFeedFiltersLimitLabel": "Saved Filters Limit", + "savedFeedFiltersLimitLabel": "Saved Filters Limits", "@savedFeedFiltersLimitLabel": { - "description": "Label for Saved filters Limit" + "description": "Label for Saved filters Limits" }, "savedFeedFiltersLimitDescription": "Maximum number of feed filters this user role can save.", "@savedFeedFiltersLimitDescription": { From 606d490ad7a746474cce87e5f85443e0d7160856 Mon Sep 17 00:00:00 2001 From: fulleni Date: 2025年10月13日 18:16:09 +0100 Subject: [PATCH 14/14] refactor(app_configuration): update localization key and improve UI naming - Update localization key for saved feed filter limits tile - Improve UI naming by changing "Filter Limits" to "Filters Limit" --- lib/app_configuration/view/tabs/feed_configuration_tab.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/app_configuration/view/tabs/feed_configuration_tab.dart b/lib/app_configuration/view/tabs/feed_configuration_tab.dart index 6b90c85..3f6acc6 100644 --- a/lib/app_configuration/view/tabs/feed_configuration_tab.dart +++ b/lib/app_configuration/view/tabs/feed_configuration_tab.dart @@ -92,8 +92,8 @@ class _FeedConfigurationTabState extends State { builder: (context, expandedIndex, child) { const tileIndex = 1; return ExpansionTile( - key: ValueKey('savedHeadlinesFilterLimitsTile_$expandedIndex'), - title: Text(l10n.savedFeedFilterLimitsTitle), + key: ValueKey('savedFeedFilterLimitsTile_$expandedIndex'), + title: Text(l10n.savedFeedFiltersLimitLabel), childrenPadding: const EdgeInsetsDirectional.only( start: AppSpacing.lg, top: AppSpacing.md,

AltStyle によって変換されたページ (->オリジナル) /