Feature: Add feature toggles and settings for modular features (e.g., Car, Inventory), enhance navigation for mobile/desktop, and improve i18n integration.

This commit is contained in:
2025-09-27 13:37:43 +02:00
parent 8ca98d4720
commit 8fa071e565
13 changed files with 545 additions and 81 deletions

View File

@@ -4,9 +4,9 @@
/// To regenerate, run: `dart run slang`
///
/// Locales: 2
/// Strings: 104 (52 per locale)
/// Strings: 122 (61 per locale)
///
/// Built on 2025-09-27 at 10:12 UTC
/// Built on 2025-09-27 at 11:35 UTC
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import

View File

@@ -42,6 +42,7 @@ class TranslationsDe implements Translations {
@override late final _TranslationsBudgetDe budget = _TranslationsBudgetDe._(_root);
@override late final _TranslationsAppDe app = _TranslationsAppDe._(_root);
@override late final _TranslationsSettingsDe settings = _TranslationsSettingsDe._(_root);
@override late final _TranslationsFeaturesDe features = _TranslationsFeaturesDe._(_root);
}
// Path: login
@@ -105,6 +106,7 @@ class _TranslationsSettingsDe implements TranslationsSettingsEn {
// Translations
@override String get title => 'Einstellungen';
@override String get featureSettings => 'Funktionseinstellungen';
@override late final _TranslationsSettingsSectionsDe sections = _TranslationsSettingsSectionsDe._(_root);
@override late final _TranslationsSettingsItemsDe items = _TranslationsSettingsItemsDe._(_root);
@override late final _TranslationsSettingsMessagesDe messages = _TranslationsSettingsMessagesDe._(_root);
@@ -115,6 +117,19 @@ class _TranslationsSettingsDe implements TranslationsSettingsEn {
@override late final _TranslationsSettingsLegalDe legal = _TranslationsSettingsLegalDe._(_root);
}
// Path: features
class _TranslationsFeaturesDe implements TranslationsFeaturesEn {
_TranslationsFeaturesDe._(this._root);
final TranslationsDe _root; // ignore: unused_field
// Translations
@override late final _TranslationsFeaturesInventoryDe inventory = _TranslationsFeaturesInventoryDe._(_root);
@override late final _TranslationsFeaturesCarDe car = _TranslationsFeaturesCarDe._(_root);
@override late final _TranslationsFeaturesHouseholdDe household = _TranslationsFeaturesHouseholdDe._(_root);
@override late final _TranslationsFeaturesReportsDe reports = _TranslationsFeaturesReportsDe._(_root);
}
// Path: settings.sections
class _TranslationsSettingsSectionsDe implements TranslationsSettingsSectionsEn {
_TranslationsSettingsSectionsDe._(this._root);
@@ -220,6 +235,50 @@ class _TranslationsSettingsLegalDe implements TranslationsSettingsLegalEn {
@override String get termsOfService => 'Nutzungsbedingungen';
}
// Path: features.inventory
class _TranslationsFeaturesInventoryDe implements TranslationsFeaturesInventoryEn {
_TranslationsFeaturesInventoryDe._(this._root);
final TranslationsDe _root; // ignore: unused_field
// Translations
@override String get displayName => 'Inventar';
@override String get description => 'Verwaltet Gegenstände, Kategorien und Lagerorte.';
}
// Path: features.car
class _TranslationsFeaturesCarDe implements TranslationsFeaturesCarEn {
_TranslationsFeaturesCarDe._(this._root);
final TranslationsDe _root; // ignore: unused_field
// Translations
@override String get displayName => 'Auto';
@override String get description => 'KFZ-Tracking (Tanken, Wartung, Kosten, Kilometer).';
}
// Path: features.household
class _TranslationsFeaturesHouseholdDe implements TranslationsFeaturesHouseholdEn {
_TranslationsFeaturesHouseholdDe._(this._root);
final TranslationsDe _root; // ignore: unused_field
// Translations
@override String get displayName => 'Haushalt (inkl. Budget)';
@override String get description => 'Haushaltsfunktionen inkl. Budgetplanung.';
}
// Path: features.reports
class _TranslationsFeaturesReportsDe implements TranslationsFeaturesReportsEn {
_TranslationsFeaturesReportsDe._(this._root);
final TranslationsDe _root; // ignore: unused_field
// Translations
@override String get displayName => 'Berichte';
@override String get description => 'Statistiken von Ausgaben';
}
/// Flat map(s) containing all translations.
/// Only for edge cases! For simple maps, use the map function of this library.
extension on TranslationsDe {
@@ -244,6 +303,7 @@ extension on TranslationsDe {
case 'app.tooltipExpandRail': return 'Leiste erweitern';
case 'app.drawerSettings': return 'Einstellungen';
case 'settings.title': return 'Einstellungen';
case 'settings.featureSettings': return 'Funktionseinstellungen';
case 'settings.sections.account': return 'Konto & Daten';
case 'settings.sections.app': return 'App';
case 'settings.sections.help': return 'Hilfe & Rechtliches';
@@ -277,6 +337,14 @@ extension on TranslationsDe {
case 'settings.help.sendFeedback': return 'Feedback senden';
case 'settings.legal.privacy': return 'Datenschutz';
case 'settings.legal.termsOfService': return 'Nutzungsbedingungen';
case 'features.inventory.displayName': return 'Inventar';
case 'features.inventory.description': return 'Verwaltet Gegenstände, Kategorien und Lagerorte.';
case 'features.car.displayName': return 'Auto';
case 'features.car.description': return 'KFZ-Tracking (Tanken, Wartung, Kosten, Kilometer).';
case 'features.household.displayName': return 'Haushalt (inkl. Budget)';
case 'features.household.description': return 'Haushaltsfunktionen inkl. Budgetplanung.';
case 'features.reports.displayName': return 'Berichte';
case 'features.reports.description': return 'Statistiken von Ausgaben';
default: return null;
}
}

View File

@@ -48,6 +48,7 @@ class Translations implements BaseTranslations<AppLocale, Translations> {
late final TranslationsBudgetEn budget = TranslationsBudgetEn._(_root);
late final TranslationsAppEn app = TranslationsAppEn._(_root);
late final TranslationsSettingsEn settings = TranslationsSettingsEn._(_root);
late final TranslationsFeaturesEn features = TranslationsFeaturesEn._(_root);
}
// Path: login
@@ -148,6 +149,9 @@ class TranslationsSettingsEn {
/// en: 'Settings'
String get title => 'Settings';
/// en: 'Feature Settings'
String get featureSettings => 'Feature Settings';
late final TranslationsSettingsSectionsEn sections = TranslationsSettingsSectionsEn._(_root);
late final TranslationsSettingsItemsEn items = TranslationsSettingsItemsEn._(_root);
late final TranslationsSettingsMessagesEn messages = TranslationsSettingsMessagesEn._(_root);
@@ -158,6 +162,19 @@ class TranslationsSettingsEn {
late final TranslationsSettingsLegalEn legal = TranslationsSettingsLegalEn._(_root);
}
// Path: features
class TranslationsFeaturesEn {
TranslationsFeaturesEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
late final TranslationsFeaturesInventoryEn inventory = TranslationsFeaturesInventoryEn._(_root);
late final TranslationsFeaturesCarEn car = TranslationsFeaturesCarEn._(_root);
late final TranslationsFeaturesHouseholdEn household = TranslationsFeaturesHouseholdEn._(_root);
late final TranslationsFeaturesReportsEn reports = TranslationsFeaturesReportsEn._(_root);
}
// Path: settings.sections
class TranslationsSettingsSectionsEn {
TranslationsSettingsSectionsEn._(this._root);
@@ -329,6 +346,66 @@ class TranslationsSettingsLegalEn {
String get termsOfService => 'Terms of Service';
}
// Path: features.inventory
class TranslationsFeaturesInventoryEn {
TranslationsFeaturesInventoryEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'Inventory'
String get displayName => 'Inventory';
/// en: 'Manages items, categories and storage locations.'
String get description => 'Manages items, categories and storage locations.';
}
// Path: features.car
class TranslationsFeaturesCarEn {
TranslationsFeaturesCarEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'Car'
String get displayName => 'Car';
/// en: 'Vehicle tracking (fuel, maintenance, costs, mileage).'
String get description => 'Vehicle tracking (fuel, maintenance, costs, mileage).';
}
// Path: features.household
class TranslationsFeaturesHouseholdEn {
TranslationsFeaturesHouseholdEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'Household (incl. Budget)'
String get displayName => 'Household (incl. Budget)';
/// en: 'Household functions including budget planning.'
String get description => 'Household functions including budget planning.';
}
// Path: features.reports
class TranslationsFeaturesReportsEn {
TranslationsFeaturesReportsEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'Reports'
String get displayName => 'Reports';
/// en: 'Statistics of expenses'
String get description => 'Statistics of expenses';
}
/// Flat map(s) containing all translations.
/// Only for edge cases! For simple maps, use the map function of this library.
extension on Translations {
@@ -353,6 +430,7 @@ extension on Translations {
case 'app.tooltipExpandRail': return 'Expand Rail';
case 'app.drawerSettings': return 'Settings';
case 'settings.title': return 'Settings';
case 'settings.featureSettings': return 'Feature Settings';
case 'settings.sections.account': return 'Account & Data';
case 'settings.sections.app': return 'App';
case 'settings.sections.help': return 'Help & Legal';
@@ -386,6 +464,14 @@ extension on Translations {
case 'settings.help.sendFeedback': return 'Send Feedback';
case 'settings.legal.privacy': return 'Privacy';
case 'settings.legal.termsOfService': return 'Terms of Service';
case 'features.inventory.displayName': return 'Inventory';
case 'features.inventory.description': return 'Manages items, categories and storage locations.';
case 'features.car.displayName': return 'Car';
case 'features.car.description': return 'Vehicle tracking (fuel, maintenance, costs, mileage).';
case 'features.household.displayName': return 'Household (incl. Budget)';
case 'features.household.description': return 'Household functions including budget planning.';
case 'features.reports.displayName': return 'Reports';
case 'features.reports.description': return 'Statistics of expenses';
default: return null;
}
}