Add i18n support and integrate localized strings across modules (Login, AppShell, etc.)

This commit is contained in:
2025-09-27 12:15:57 +02:00
parent 0a0e421158
commit 140e3a7328
8 changed files with 576 additions and 71 deletions

View File

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

View File

@@ -38,6 +38,9 @@ class TranslationsDe implements Translations {
// Translations
@override String hello({required Object name}) => 'Hallo ${name}';
@override late final _TranslationsLoginDe login = _TranslationsLoginDe._(_root);
@override late final _TranslationsDashboardDe dashboard = _TranslationsDashboardDe._(_root);
@override late final _TranslationsBudgetDe budget = _TranslationsBudgetDe._(_root);
@override late final _TranslationsAppDe app = _TranslationsAppDe._(_root);
@override late final _TranslationsSettingsDe settings = _TranslationsSettingsDe._(_root);
}
@@ -48,9 +51,52 @@ class _TranslationsLoginDe implements TranslationsLoginEn {
final TranslationsDe _root; // ignore: unused_field
// Translations
@override String get title => 'Login';
@override String get pleaseSignIn => 'Bitte melden Sie sich an';
@override String get signingIn => 'Melde Sie an…';
@override String get success => 'Login erfolgreich';
}
// Path: dashboard
class _TranslationsDashboardDe implements TranslationsDashboardEn {
_TranslationsDashboardDe._(this._root);
final TranslationsDe _root; // ignore: unused_field
// Translations
@override String get welcome => 'Dashboard Willkommen bei Finlog';
}
// Path: budget
class _TranslationsBudgetDe implements TranslationsBudgetEn {
_TranslationsBudgetDe._(this._root);
final TranslationsDe _root; // ignore: unused_field
// Translations
@override String get title => 'Budgets';
}
// Path: app
class _TranslationsAppDe implements TranslationsAppEn {
_TranslationsAppDe._(this._root);
final TranslationsDe _root; // ignore: unused_field
// Translations
@override String get navigationSettings => 'Einstellungen';
@override String get navigationDashboard => 'Dashboard';
@override String get navigationBudgets => 'Budgets';
@override String get navigationInventory => 'Inventar';
@override String get navigationReports => 'Berichte';
@override String get tooltipMenu => 'Menü';
@override String get tooltipNotifications => 'Benachrichtigungen';
@override String get tooltipUserSettings => 'Benutzer-Einstellungen';
@override String get tooltipCollapseRail => 'Leiste verkleinern';
@override String get tooltipExpandRail => 'Leiste erweitern';
@override String get drawerSettings => 'Einstellungen';
}
// Path: settings
class _TranslationsSettingsDe implements TranslationsSettingsEn {
_TranslationsSettingsDe._(this._root);
@@ -62,6 +108,11 @@ class _TranslationsSettingsDe implements TranslationsSettingsEn {
@override late final _TranslationsSettingsSectionsDe sections = _TranslationsSettingsSectionsDe._(_root);
@override late final _TranslationsSettingsItemsDe items = _TranslationsSettingsItemsDe._(_root);
@override late final _TranslationsSettingsMessagesDe messages = _TranslationsSettingsMessagesDe._(_root);
@override late final _TranslationsSettingsAppDe app = _TranslationsSettingsAppDe._(_root);
@override late final _TranslationsSettingsPersonalDataDe personalData = _TranslationsSettingsPersonalDataDe._(_root);
@override late final _TranslationsSettingsAccountManagementDe accountManagement = _TranslationsSettingsAccountManagementDe._(_root);
@override late final _TranslationsSettingsHelpDe help = _TranslationsSettingsHelpDe._(_root);
@override late final _TranslationsSettingsLegalDe legal = _TranslationsSettingsLegalDe._(_root);
}
// Path: settings.sections
@@ -102,13 +153,96 @@ class _TranslationsSettingsMessagesDe implements TranslationsSettingsMessagesEn
@override String get logoutNotImplemented => 'Logout… (noch nicht implementiert)';
}
// Path: settings.app
class _TranslationsSettingsAppDe implements TranslationsSettingsAppEn {
_TranslationsSettingsAppDe._(this._root);
final TranslationsDe _root; // ignore: unused_field
// Translations
@override String get systemBackground => 'System-Hintergrundfarbe';
@override String get systemDefault => 'Systemstandard';
@override String get darkMode => 'Dark Mode';
@override String get lightMode => 'Light Mode';
@override String get textSize => 'Textgröße';
@override String get system => 'System';
@override String get small => 'Klein';
@override String get medium => 'Mittel';
@override String get large => 'Groß';
@override String get language => 'Sprache';
@override String get german => 'Deutsch';
@override String get english => 'Englisch';
}
// Path: settings.personalData
class _TranslationsSettingsPersonalDataDe implements TranslationsSettingsPersonalDataEn {
_TranslationsSettingsPersonalDataDe._(this._root);
final TranslationsDe _root; // ignore: unused_field
// Translations
@override String get name => 'Name';
@override String get maxMustermann => 'Max Mustermann';
@override String get changePassword => 'Passwort ändern';
@override String get twoFactor => '2-Faktor-Authentifizierung';
@override String get off => 'Aus';
}
// Path: settings.accountManagement
class _TranslationsSettingsAccountManagementDe implements TranslationsSettingsAccountManagementEn {
_TranslationsSettingsAccountManagementDe._(this._root);
final TranslationsDe _root; // ignore: unused_field
// Translations
@override String get email => 'E-Mail';
}
// Path: settings.help
class _TranslationsSettingsHelpDe implements TranslationsSettingsHelpEn {
_TranslationsSettingsHelpDe._(this._root);
final TranslationsDe _root; // ignore: unused_field
// Translations
@override String get faq => 'FAQ';
@override String get sendFeedback => 'Feedback senden';
}
// Path: settings.legal
class _TranslationsSettingsLegalDe implements TranslationsSettingsLegalEn {
_TranslationsSettingsLegalDe._(this._root);
final TranslationsDe _root; // ignore: unused_field
// Translations
@override String get privacy => 'Datenschutz';
@override String get termsOfService => 'Nutzungsbedingungen';
}
/// Flat map(s) containing all translations.
/// Only for edge cases! For simple maps, use the map function of this library.
extension on TranslationsDe {
dynamic _flatMapFunction(String path) {
switch (path) {
case 'hello': return ({required Object name}) => 'Hallo ${name}';
case 'login.title': return 'Login';
case 'login.pleaseSignIn': return 'Bitte melden Sie sich an';
case 'login.signingIn': return 'Melde Sie an…';
case 'login.success': return 'Login erfolgreich';
case 'dashboard.welcome': return 'Dashboard Willkommen bei Finlog';
case 'budget.title': return 'Budgets';
case 'app.navigationSettings': return 'Einstellungen';
case 'app.navigationDashboard': return 'Dashboard';
case 'app.navigationBudgets': return 'Budgets';
case 'app.navigationInventory': return 'Inventar';
case 'app.navigationReports': return 'Berichte';
case 'app.tooltipMenu': return 'Menü';
case 'app.tooltipNotifications': return 'Benachrichtigungen';
case 'app.tooltipUserSettings': return 'Benutzer-Einstellungen';
case 'app.tooltipCollapseRail': return 'Leiste verkleinern';
case 'app.tooltipExpandRail': return 'Leiste erweitern';
case 'app.drawerSettings': return 'Einstellungen';
case 'settings.title': return 'Einstellungen';
case 'settings.sections.account': return 'Konto & Daten';
case 'settings.sections.app': return 'App';
@@ -121,6 +255,28 @@ extension on TranslationsDe {
case 'settings.items.legalPrivacy': return 'Rechtliches & Datenschutz';
case 'settings.items.logout': return 'Abmelden';
case 'settings.messages.logoutNotImplemented': return 'Logout… (noch nicht implementiert)';
case 'settings.app.systemBackground': return 'System-Hintergrundfarbe';
case 'settings.app.systemDefault': return 'Systemstandard';
case 'settings.app.darkMode': return 'Dark Mode';
case 'settings.app.lightMode': return 'Light Mode';
case 'settings.app.textSize': return 'Textgröße';
case 'settings.app.system': return 'System';
case 'settings.app.small': return 'Klein';
case 'settings.app.medium': return 'Mittel';
case 'settings.app.large': return 'Groß';
case 'settings.app.language': return 'Sprache';
case 'settings.app.german': return 'Deutsch';
case 'settings.app.english': return 'Englisch';
case 'settings.personalData.name': return 'Name';
case 'settings.personalData.maxMustermann': return 'Max Mustermann';
case 'settings.personalData.changePassword': return 'Passwort ändern';
case 'settings.personalData.twoFactor': return '2-Faktor-Authentifizierung';
case 'settings.personalData.off': return 'Aus';
case 'settings.accountManagement.email': return 'E-Mail';
case 'settings.help.faq': return 'FAQ';
case 'settings.help.sendFeedback': return 'Feedback senden';
case 'settings.legal.privacy': return 'Datenschutz';
case 'settings.legal.termsOfService': return 'Nutzungsbedingungen';
default: return null;
}
}

View File

@@ -44,6 +44,9 @@ class Translations implements BaseTranslations<AppLocale, Translations> {
String hello({required Object name}) => 'Hello ${name}';
late final TranslationsLoginEn login = TranslationsLoginEn._(_root);
late final TranslationsDashboardEn dashboard = TranslationsDashboardEn._(_root);
late final TranslationsBudgetEn budget = TranslationsBudgetEn._(_root);
late final TranslationsAppEn app = TranslationsAppEn._(_root);
late final TranslationsSettingsEn settings = TranslationsSettingsEn._(_root);
}
@@ -55,10 +58,85 @@ class TranslationsLoginEn {
// Translations
/// en: 'Login'
String get title => 'Login';
/// en: 'Please sign in'
String get pleaseSignIn => 'Please sign in';
/// en: 'Signing you in…'
String get signingIn => 'Signing you in…';
/// en: 'Logged in successfully'
String get success => 'Logged in successfully';
}
// Path: dashboard
class TranslationsDashboardEn {
TranslationsDashboardEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'Dashboard Welcome to Finlog'
String get welcome => 'Dashboard Welcome to Finlog';
}
// Path: budget
class TranslationsBudgetEn {
TranslationsBudgetEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'Budgets'
String get title => 'Budgets';
}
// Path: app
class TranslationsAppEn {
TranslationsAppEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'Settings'
String get navigationSettings => 'Settings';
/// en: 'Dashboard'
String get navigationDashboard => 'Dashboard';
/// en: 'Budgets'
String get navigationBudgets => 'Budgets';
/// en: 'Inventory'
String get navigationInventory => 'Inventory';
/// en: 'Reports'
String get navigationReports => 'Reports';
/// en: 'Menu'
String get tooltipMenu => 'Menu';
/// en: 'Notifications'
String get tooltipNotifications => 'Notifications';
/// en: 'User Settings'
String get tooltipUserSettings => 'User Settings';
/// en: 'Collapse Rail'
String get tooltipCollapseRail => 'Collapse Rail';
/// en: 'Expand Rail'
String get tooltipExpandRail => 'Expand Rail';
/// en: 'Settings'
String get drawerSettings => 'Settings';
}
// Path: settings
class TranslationsSettingsEn {
TranslationsSettingsEn._(this._root);
@@ -73,6 +151,11 @@ class TranslationsSettingsEn {
late final TranslationsSettingsSectionsEn sections = TranslationsSettingsSectionsEn._(_root);
late final TranslationsSettingsItemsEn items = TranslationsSettingsItemsEn._(_root);
late final TranslationsSettingsMessagesEn messages = TranslationsSettingsMessagesEn._(_root);
late final TranslationsSettingsAppEn app = TranslationsSettingsAppEn._(_root);
late final TranslationsSettingsPersonalDataEn personalData = TranslationsSettingsPersonalDataEn._(_root);
late final TranslationsSettingsAccountManagementEn accountManagement = TranslationsSettingsAccountManagementEn._(_root);
late final TranslationsSettingsHelpEn help = TranslationsSettingsHelpEn._(_root);
late final TranslationsSettingsLegalEn legal = TranslationsSettingsLegalEn._(_root);
}
// Path: settings.sections
@@ -135,13 +218,140 @@ class TranslationsSettingsMessagesEn {
String get logoutNotImplemented => 'Logout… (not implemented yet)';
}
// Path: settings.app
class TranslationsSettingsAppEn {
TranslationsSettingsAppEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'System Background Color'
String get systemBackground => 'System Background Color';
/// en: 'System Default'
String get systemDefault => 'System Default';
/// en: 'Dark Mode'
String get darkMode => 'Dark Mode';
/// en: 'Light Mode'
String get lightMode => 'Light Mode';
/// en: 'Text Size'
String get textSize => 'Text Size';
/// en: 'System'
String get system => 'System';
/// en: 'Small'
String get small => 'Small';
/// en: 'Medium'
String get medium => 'Medium';
/// en: 'Large'
String get large => 'Large';
/// en: 'Language'
String get language => 'Language';
/// en: 'German'
String get german => 'German';
/// en: 'English'
String get english => 'English';
}
// Path: settings.personalData
class TranslationsSettingsPersonalDataEn {
TranslationsSettingsPersonalDataEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'Name'
String get name => 'Name';
/// en: 'Max Mustermann'
String get maxMustermann => 'Max Mustermann';
/// en: 'Change Password'
String get changePassword => 'Change Password';
/// en: 'Two-Factor Authentication'
String get twoFactor => 'Two-Factor Authentication';
/// en: 'Off'
String get off => 'Off';
}
// Path: settings.accountManagement
class TranslationsSettingsAccountManagementEn {
TranslationsSettingsAccountManagementEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'Email'
String get email => 'Email';
}
// Path: settings.help
class TranslationsSettingsHelpEn {
TranslationsSettingsHelpEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'FAQ'
String get faq => 'FAQ';
/// en: 'Send Feedback'
String get sendFeedback => 'Send Feedback';
}
// Path: settings.legal
class TranslationsSettingsLegalEn {
TranslationsSettingsLegalEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'Privacy'
String get privacy => 'Privacy';
/// en: 'Terms of Service'
String get termsOfService => 'Terms of Service';
}
/// Flat map(s) containing all translations.
/// Only for edge cases! For simple maps, use the map function of this library.
extension on Translations {
dynamic _flatMapFunction(String path) {
switch (path) {
case 'hello': return ({required Object name}) => 'Hello ${name}';
case 'login.title': return 'Login';
case 'login.pleaseSignIn': return 'Please sign in';
case 'login.signingIn': return 'Signing you in…';
case 'login.success': return 'Logged in successfully';
case 'dashboard.welcome': return 'Dashboard Welcome to Finlog';
case 'budget.title': return 'Budgets';
case 'app.navigationSettings': return 'Settings';
case 'app.navigationDashboard': return 'Dashboard';
case 'app.navigationBudgets': return 'Budgets';
case 'app.navigationInventory': return 'Inventory';
case 'app.navigationReports': return 'Reports';
case 'app.tooltipMenu': return 'Menu';
case 'app.tooltipNotifications': return 'Notifications';
case 'app.tooltipUserSettings': return 'User Settings';
case 'app.tooltipCollapseRail': return 'Collapse Rail';
case 'app.tooltipExpandRail': return 'Expand Rail';
case 'app.drawerSettings': return 'Settings';
case 'settings.title': return 'Settings';
case 'settings.sections.account': return 'Account & Data';
case 'settings.sections.app': return 'App';
@@ -154,6 +364,28 @@ extension on Translations {
case 'settings.items.legalPrivacy': return 'Legal & Privacy';
case 'settings.items.logout': return 'Sign out';
case 'settings.messages.logoutNotImplemented': return 'Logout… (not implemented yet)';
case 'settings.app.systemBackground': return 'System Background Color';
case 'settings.app.systemDefault': return 'System Default';
case 'settings.app.darkMode': return 'Dark Mode';
case 'settings.app.lightMode': return 'Light Mode';
case 'settings.app.textSize': return 'Text Size';
case 'settings.app.system': return 'System';
case 'settings.app.small': return 'Small';
case 'settings.app.medium': return 'Medium';
case 'settings.app.large': return 'Large';
case 'settings.app.language': return 'Language';
case 'settings.app.german': return 'German';
case 'settings.app.english': return 'English';
case 'settings.personalData.name': return 'Name';
case 'settings.personalData.maxMustermann': return 'Max Mustermann';
case 'settings.personalData.changePassword': return 'Change Password';
case 'settings.personalData.twoFactor': return 'Two-Factor Authentication';
case 'settings.personalData.off': return 'Off';
case 'settings.accountManagement.email': return 'Email';
case 'settings.help.faq': return 'FAQ';
case 'settings.help.sendFeedback': return 'Send Feedback';
case 'settings.legal.privacy': return 'Privacy';
case 'settings.legal.termsOfService': return 'Terms of Service';
default: return null;
}
}