Lokalisierung Migration - Anleitung¶
Zusammenfassung¶
Diese Anleitung dokumentiert die systematische Migration aller hardcodierten deutschen und englischen Strings in die Lokalisierungsdateien (ARB-Dateien) für beide Systeme - ERP und Shop.
Was wurde gemacht¶
1. Analyse der Applikationen ✅¶
Beide Applikationen wurden vollständig analysiert und alle hardcodierten Strings identifiziert:
ERP-System:
- ~71 Text() Widgets mit hardcodierten Strings
- ~149 title: Properties
- ~200 label: Properties
- ~20 hintText: Properties
- ~42 message: Properties
- ~22 subtitle: Properties
- Tutorial-Service mit 50+ Strings
Shop-System: - ~59 Text() Widgets mit hardcodierten Strings - ~55 title: Properties - ~23 label: Properties - ~10 hintText: Properties - ~19 message: Properties - ~8 subtitle: Properties
2. ARB-Dateien erweitert ✅¶
Beide Systeme wurden mit umfangreichen neuen Lokalisierungsschlüsseln erweitert:
ERP-System (intl_de.arb und intl_en.arb):
- general_* - Allgemeine Buttons, Aktionen und UI-Elemente
- dialog_* - Dialog-Titel und Sektionen
- emptyState_* - Empty-State-Nachrichten
- tutorial_* - Tutorial-Texte
- weekday_* - Wochentage
- time_* - Zeitbezogene Begriffe
- action_* - Aktionsbuttons
Shop-System (s_de.arb und s_en.arb):
- general_* - Allgemeine Buttons und UI-Elemente
- emptyState_* - Empty-State-Nachrichten
- profile_* - Profil-Bereiche
- dialog_* - Dialog-Titel und Nachrichten
- form_* - Formular-Labels
- filter_* - Filter-Optionen
- message_* - Erfolgsmeldungen
- hint_* - Platzhaltertexte
- action_* - Aktionen
- tooltip_* - Tooltips
- registration_* - Registrierungsbezogene Texte
- cache_* - Cache-Management
- deliveryBreak_*, customerNumber_*, purchaseList_* - Spezifische Bereiche
3. Beispiel-Dateien aktualisiert ✅¶
Folgende Dateien wurden als Beispiele mit Lokalisierung aktualisiert:
ERP-System:
- order_editor_dialog.dart - "Allgemein", "Kunde", "Kommentar" → local.dialog_general, local.dialog_customer, local.dialog_comment
- customer_detail_page_header.dart - Bild upload/delete Nachrichten
- es_single_image_viewer.dart - Bild upload Nachricht
- article_image_card.dart - Bild delete Nachricht
- customer_user_editor_dialog.dart - Fehlermeldungen
- customer_user_details_dialog.dart - Erfolgsmeldungen
- user_profile_page.dart - Passwort-Validierungen
Shop-System:
- cart_checkout_helper.dart - "OK", "Warenkorb ist leer"
- empty_state_widget.dart - Empty cart Texte
Nächste Schritte¶
1. Lokalisierungen generieren¶
Nach den Änderungen an den ARB-Dateien müssen die Lokalisierungen neu generiert werden:
# Für ERP-System
cd apps/erp_system
flutter gen-l10n
# Für Shop-System
cd apps/shop_system
flutter gen-l10n
2. Restliche hardcodierte Strings ersetzen¶
Die Analyse hat über 200+ Stellen mit hardcodierten Strings identifiziert. Diese müssen systematisch ersetzt werden.
Vorgehen pro Datei:¶
-
Suche nach hardcodierten Strings:
-
Lokalisierungsschlüssel finden:
- Suche in den ARB-Dateien nach passenden Schlüsseln
-
Falls nicht vorhanden, füge neue Schlüssel hinzu (siehe Beispiele unten)
-
String ersetzen:
ERP-System:
Shop-System:
3. Prioritätenliste für Ersetzungen¶
HOCH (sofort ersetzen):
1. Tutorial-Service (tutorial_service.dart) - 50+ Strings
2. Buttons: OK, Abbrechen, Löschen, Schließen, Speichern
3. Fehlermeldungen und Erfolgsmeldungen
4. Empty States
5. Dialog-Titel
MITTEL (bald ersetzen): 1. Form-Labels (Name, E-Mail, etc.) 2. Wochentage und Zeitangaben 3. Tooltips 4. Platzhaltertexte
NIEDRIG (optional): 1. Technische Labels und IDs 2. Debug-Ausgaben (können englisch bleiben)
Hinzufügen neuer Lokalisierungsschlüssel¶
Falls ein benötigter Schlüssel noch nicht existiert:
In ERP-System (intl_de.arb und intl_en.arb):¶
// intl_de.arb
"deinNeuerSchlüssel": "Deutscher Text",
"@deinNeuerSchlüssel": {
"description": "Beschreibung wofür der Schlüssel verwendet wird"
}
// intl_en.arb
"deinNeuerSchlüssel": "English text",
"@deinNeuerSchlüssel": {
"description": "Description of what the key is used for"
}
In Shop-System (s_de.arb und s_en.arb):¶
// s_de.arb
"deinNeuerSchlüssel": "Deutscher Text",
"@deinNeuerSchlüssel": {
"description": "Beschreibung wofür der Schlüssel verwendet wird"
}
// s_en.arb
"deinNeuerSchlüssel": "English text",
"@deinNeuerSchlüssel": {
"description": "Description of what the key is used for"
}
Nach dem Hinzufügen: flutter gen-l10n ausführen!
Namenskonventionen für Schlüssel¶
Präfixe und ihre Bedeutung:¶
general_*- Allgemeine, systemweite Begriffe (Buttons, Aktionen)dialog_*- Dialog-bezogene TexteemptyState_*- Leerzustand-Nachrichtenform_*- Formular-Labels und -Feldererror_*- Fehlermeldungensuccess_*- Erfolgsmeldungenfilter_*- Filter-Optionenaction_*- Aktions-Buttonstooltip_*- Tooltip-Textehint_*- Platzhaltertextemessage_*- Allgemeine Nachrichten[pageName]_*- Seitenspezifische Texte (z.B.orderPage_*)
Struktur:¶
[präfix]_[kontext]_[detail]
Beispiele:
- general_save
- dialog_deleteConfirm
- emptyState_noResults
- form_firstName
- orderPage_orderNumber
Wichtige Hinweise¶
Import-Statements¶
ERP-System:
Shop-System:
Verwendung im Code¶
ERP-System:
Shop-System:
final local = S.of(context);
// Dann verwenden: local.general_save
// Oder direkt: S.of(context).general_save
Plurals und Parameter¶
Bei Texten mit Variablen:
{
"welcomeMessage": "Willkommen, {name}!",
"@welcomeMessage": {
"placeholders": {
"name": {
"type": "String"
}
}
}
}
Verwendung:
Statistische Übersicht¶
Bereits in ARB-Dateien vorhanden¶
- ✅ Viele allgemeine Begriffe (OK, Cancel, Save, Delete, etc.)
- ✅ Order-bezogene Texte
- ✅ Customer-bezogene Texte
- ✅ Wochentage (teilweise)
Neu hinzugefügt¶
- ✅ ~40 general_* Einträge
- ✅ ~15 dialog_* Einträge
- ✅ ~15 emptyState_* Einträge
- ✅ ~15 tutorial_* Einträge
- ✅ ~10 action_* Einträge
- ✅ ~20 form_* Einträge
- ✅ ~10 filter_* Einträge
- ✅ ~15 message_* Einträge
- ✅ ~10 hint_* Einträge
- ✅ Viele spezifische Bereiche (profile, registration, cache, etc.)
Testing nach Migration¶
Nach dem Ersetzen der Strings:
-
Kompilieren:
-
Sprache wechseln:
- Teste beide Sprachen (DE/EN)
-
Prüfe, ob alle Texte korrekt angezeigt werden
-
Fehlersuche:
Automatisierung (Optional)¶
Für größere Batch-Ersetzungen können Sie ein Script erstellen:
#!/bin/bash
# replace_strings.sh
# Beispiel: Ersetze alle Vorkommen von "Text('OK')" mit "Text(local.general_ok)"
find lib -name "*.dart" -exec sed -i "" "s/Text('OK')/Text(local.general_ok)/g" {} +
ACHTUNG: Immer zuerst Backup erstellen und Änderungen überprüfen!
Ressourcen¶
Status¶
- [x] Analyse durchgeführt
- [x] ARB-Dateien erweitert
- [x] Beispiel-Dateien migriert
- [ ] Alle ERP-System Dateien migrieren (~150+ Stellen)
- [ ] Alle Shop-System Dateien migrieren (~100+ Stellen)
- [ ] Tutorial-Service komplett migrieren
- [ ] Testing beider Sprachen
Erstellt am: 23. Februar 2026
Letzte Aktualisierung: 23. Februar 2026
Hardcodierte Strings - Vollständige Liste¶
ERP-System¶
PRIORITÄT HOCH¶
1. Tutorial Service (lib/services/tutorial_services/tutorial_service.dart)¶
- [ ] 'Navigation' →
tutorial_navigation - [ ] 'Dashboard' →
tutorial_dashboard - [ ] 'Dein Dashboard' →
tutorial_yourDashboard - [ ] 'Kunden' →
tutorial_customers - [ ] 'Suche' →
tutorial_customerSearch - [ ] 'Kategorien' →
tutorial_customerCategories - [ ] 'Kundenliste' →
tutorial_customerList - [ ] 'Artikel' →
tutorial_articles - [ ] 'Artikelsuche' →
tutorial_articleSearch - [ ] 'Artikel-Kategorien' →
tutorial_articleCategories - [ ] 'Artikelübersicht' →
tutorial_articleOverview - [ ] 'Bestellungen' →
tutorial_orders - [ ] 'Bestellungssuche' →
tutorial_orderSearch - [ ] 'Bestellungsübersicht' →
tutorial_orderOverview - [ ] 'Registrierung' →
tutorial_registration - [ ] 'Benutzer anlegen' →
tutorial_createUser - [ ] 'Kundenlisten' →
tutorial_customerLists - [ ] 'Listen verwalten' →
tutorial_manageLists - [ ] 'Push-Benachrichtigungen' →
tutorial_pushNotifications - [ ] 'Nachrichten versenden' →
tutorial_sendMessages - [ ] 'SAM KI - Dein Assistent' →
tutorial_samAI - [ ] 'Einstellungen' →
tutorial_settings - [ ] 'Benutzerverwaltung' →
tutorial_userManagement
2. Bild Upload/Delete (lib/pages/...)¶
- [x] 'Bild wird hochgeladen...' →
general_imageUploadInProgress - [x] 'Bild wird gelöscht...' →
general_imageDeleteInProgress customer_detail_page_header.dart(Zeile 478, 573) ✅es_single_image_viewer.dart(Zeile 103) ✅article_image_card.dart(Zeile 272) ✅article_images_dialog.dart(Zeile 261)
3. Dialoge (lib/pages/order/dialogs/order_editor_dialog.dart)¶
- [x] 'Allgemein' →
dialog_general(Zeile 604) ✅ - [x] 'Kunde' →
dialog_customer(Zeile 646) ✅ - [x] 'Kommentar' →
dialog_comment(Zeile 692) ✅
4. Fehlermeldungen & Erfolg¶
- [x] 'Fehler beim Erstellen: $e' →
general_errorCreating✅ - [x] 'Fehler beim Entfernen: $e' →
general_errorRemoving✅ - [x] 'Gerät erfolgreich entfernt' →
general_deviceRemovedSuccessfully✅ - [ ] 'Fehler beim Laden der Benutzerdaten' (application.dart:271)
5. Passwort-Validierungen (lib/pages/user/user_profile_page.dart)¶
- [x] 'Bitte alle Passwort-Felder ausfüllen' →
general_fillAllPasswordFields✅ - [x] 'Passwörter stimmen nicht überein' →
general_passwordsDoNotMatch✅ - [x] 'Passwort erfolgreich geändert' →
general_passwordChangedSuccessfully✅
6. Wochentage (lib/pages/settings/job_settings/widgets/job_weekly_schedule_config.dart)¶
- [ ] 'Sonntag' →
weekday_sunday(Zeile 42) - [ ] 'Montag' →
weekday_monday(Zeile 43) - [ ] 'Dienstag' →
weekday_tuesday(Zeile 44) - [ ] 'Mittwoch' →
weekday_wednesday(Zeile 45) - [ ] 'Donnerstag' →
weekday_thursday(Zeile 46) - [ ] 'Freitag' →
weekday_friday(Zeile 47) - [ ] 'Samstag' →
weekday_saturday(Zeile 48)
PRIORITÄT MITTEL¶
Document Config Dialog¶
- [ ] 'Dokument hochladen' (Zeile 133)
- [ ] 'Dokument bearbeiten' (Zeile 190)
Settings Pages¶
- [ ] 'Liefertage' (Zeile 160)
- [ ] 'Feiertage' (Zeile 160)
- [ ] 'Betriebsurlaub' (Zeile 160)
- [ ] 'Ausnahmetage' (Zeile 160)
- [ ] 'Kundennummer' (Zeile 148)
- [ ] 'Artikelnummer' (Zeile 148)
User Profile Labels¶
- [ ] 'Primärfarbe' (Zeile 262)
- [ ] 'Sekundärfarbe (Schriftfarbe)' (Zeile 262)
- [ ] 'Aktuelles Passwort' (Zeile 285)
- [ ] 'Neues Passwort (min. 8 Zeichen)' (Zeile 285)
- [ ] 'Passwort bestätigen' (Zeile 285)
Customer User Details¶
- [ ] 'E-Mail' (Zeile 175)
- [ ] 'Vorname' (Zeile 175)
- [ ] 'Nachname' (Zeile 175)
- [ ] 'Benutzertyp' (Zeile 175)
- [ ] 'Sprache' (Zeile 175)
- [ ] 'Status' (Zeile 175)
- [ ] 'FCM Token' (Zeile 432)
- [ ] 'Hardware' (Zeile 432)
- [ ] 'OS Version' (Zeile 432)
- [ ] 'Zuletzt aktualisiert' (Zeile 432)
Article Editor¶
- [ ] 'Artikel anlegen' (Zeile 226)
- [ ] 'Banner konfigurieren' (Zeile 100)
- [ ] 'Stammdaten' (Zeile 76)
- [ ] 'Beschreibungen' (Zeile 76)
- [ ] 'Artikelvarianten' (Zeile 76)
- [ ] 'Artikelzuweisung' (Zeile 76)
- [ ] 'Bilder' (Zeile 76)
- [ ] 'Dokumente' (Zeile 76)
Forms & Inputs¶
- [ ] 'Hintergrundfarbe' (Zeile 80)
- [ ] 'Schriftfarbe' (Zeile 80)
- [ ] 'Von' (Zeile 231)
- [ ] 'Bis' (Zeile 231)
- [ ] 'Beschreibung eingeben...' (Zeile 334)
Push Notifications¶
- [ ] 'Entwurf' (Zeile 321)
- [ ] 'Geplant' (Zeile 321)
- [ ] 'Wird verarbeitet' (Zeile 321)
- [ ] 'Gesendet' (Zeile 321)
- [ ] 'Teilweise fehlgeschlagen' (Zeile 321)
- [ ] 'Abgebrochen' (Zeile 321)
Empty States / Tooltips¶
- [ ] 'Keine Daten' (Zeile 119)
- [ ] 'Keine Einträge gefunden' (Zeile 209)
- [ ] 'Keine Listen vorhanden' (Zeile 99)
- [ ] 'Schließen (ESC)' (Zeile 97)
- [ ] 'Kunde duplizieren' (Zeile 269)
- [ ] 'Kunde löschen' (Zeile 347)
Search & Filter¶
- [ ] 'Suche...' (Zeile 724)
- [ ] 'Suche in Liste...' (Zeile 63)
- [ ] 'Suchen...' (Zeile 241)
- [ ] 'Artikel-Dokumententypen durchsuchen...' (Zeile 101)
- [ ] 'Jobs durchsuchen...' (Zeile 30)
- [ ] 'Konnektoren durchsuchen...' (Zeile 30)
Shop-System¶
PRIORITÄT HOCH¶
1. Buttons (häufig verwendet)¶
- [x] 'OK' →
general_ok✅ - [ ] 'Abbrechen' →
general_cancel(mehrere Dateien) purchase_list_detail_page.dart(Zeile 84)purchase_list_detail_dialog.dart(Zeile 91)cache_info_dialog.dart(Zeile 82)- [ ] 'Löschen' →
general_delete purchase_list_detail_page.dart(Zeile 91)purchase_list_detail_dialog.dart(Zeile 98)cache_info_dialog.dart(Zeile 105)- [ ] 'Schließen' →
general_close purchase_list_dialog.dart(Zeile 113)- [ ] 'Speichern' →
general_save customer_registration_dialog.dart(Zeile 99)- [ ] 'Erneut versuchen' →
general_retry pdf_viewer_page.dart(Zeile 102)
2. Empty States (lib/pages/shared/widgets/empty_state_widget.dart)¶
- [x] 'Warenkorb ist leer' →
emptyState_cartEmpty✅ - [ ] 'Keine Ergebnisse' →
emptyState_noResults(Zeile 56) - [ ] 'Keine Verbindung' →
emptyState_noConnection(Zeile 69) - [ ] 'Etwas ist schiefgelaufen' →
emptyState_somethingWentWrong(Zeile 83) - [ ] 'Keine Daten' →
emptyState_noData(Zeile 244) - [ ] 'Keine Bestellungen' →
emptyState_noOrders(Zeile 279) - [ ] 'Keine Artikel' →
emptyState_noArticles(Zeile 286) - [x] 'Fügen Sie Artikel hinzu, um eine Bestellung aufzugeben.' →
emptyState_addArticlesToOrder✅ - [ ] 'Bitte überprüfen Sie Ihre Internetverbindung.' →
emptyState_checkConnection(Zeile 70) - [ ] 'Versuchen Sie eine andere Suche.' →
emptyState_tryDifferentSearch(Zeile 252)
3. Fehlermeldungen & Status¶
- [ ] 'Nicht angemeldet.' →
registration_notLoggedIn(Zeile 18) - [ ] 'Registrierungsanfrage nicht gefunden.' →
registration_requestNotFound(Zeile 32) - [ ] 'Du musst angemeldet sein, um dich zu registrieren.' →
registration_mustBeLoggedIn(Zeile 52) - [ ] 'Kundennummer nicht gefunden.' →
registration_customerNumberNotFound(Zeile 63) - [ ] 'Kundennummer ist erforderlich' →
registration_customerNumberRequired(Zeile 72) - [ ] 'Vorname ist erforderlich' →
registration_firstNameRequired(Zeile 80) - [ ] 'Nachname ist erforderlich' →
registration_lastNameRequired(Zeile 88) - [ ] 'Kunde nicht geladen' →
message_customerNotLoaded(Zeile 183)
4. SnackBar Messages¶
- [ ] 'Abgelaufener Cache wurde gelöscht' →
cache_expiredDeleted(Zeile 44) - [ ] 'Cache wurde gelöscht' →
cache_deleted(Zeile 94) - [ ] 'Konto löschen - Coming soon' →
profile_deleteAccount+profile_comingSoon(Zeile 146) - [ ] 'Passwort ändern - Coming soon' →
profile_changePassword+profile_comingSoon(Zeile 157) - [ ] 'App bewerten - Coming soon' →
profile_rateApp+profile_comingSoon(Zeile 259) - [ ] 'PDF heruntergeladen' →
message_pdfDownloaded(Zeile 66) - [ ] 'Kopiert' →
message_copied(Zeile 276) - [ ] 'Bestellung wurde abgeschickt!' →
message_orderSubmitted - [ ] 'Bestellung wurde in den Warenkorb geladen' →
message_orderLoadedToCart - [ ] 'Bestellliste wurde in den Warenkorb geladen' →
message_purchaseListLoadedToCart
PRIORITÄT MITTEL¶
Profile Sections¶
- [ ] 'Persönliche Informationen' →
profile_personalInformation(Zeile 91) - [ ] 'Einstellungen' →
profile_settings(Zeile 105) - [ ] 'Konto' →
profile_account(Zeile 127) - [ ] 'Konto löschen' →
profile_deleteAccount(Zeile 141) - [ ] 'Passwort ändern' →
profile_changePassword(Zeile 152) - [ ] 'Abmelden' →
profile_signOut(Zeile 163) - [ ] 'Rechtliches' →
profile_legal(Zeile 83) - [ ] 'Profil' →
title_profile(Zeile 155)
Dialog Titles¶
- [ ] 'Bestellung laden' →
dialog_loadOrder(Zeile 55) - [ ] 'Bestellliste laden' →
dialog_loadPurchaseList(Zeile 54) - [ ] 'Liste löschen' →
dialog_deletePurchaseList(Zeile 77) - [ ] 'Bestellliste löschen' →
dialog_deletePurchaseList(Zeile 120) - [ ] 'Kundennummer hinzufügen' →
dialog_addCustomerNumber(Zeile 80) - [ ] 'Bestellliste erstellen' →
dialog_createPurchaseList(Zeile 71) - [ ] 'Cache-Verwaltung' →
cache_cacheManagement(Zeile 121) - [ ] 'Artikel entfernen?' →
dialog_removeArticle(Zeile 178, 305) - [ ] 'Kunde gesperrt' →
message_customerLocked(Zeile 123)
Form Labels & Hints¶
- [ ] 'Kundennummer' →
form_customerNumber(mehrere Stellen) - [ ] 'Vorname' →
form_firstName(mehrere Stellen) - [ ] 'Nachname' →
form_lastName(mehrere Stellen) - [ ] 'Firma' →
form_company(Zeile 269) - [ ] 'Mindestbestellmenge' →
form_minimumOrderQuantity(Zeile 282, 289) - [ ] 'Sprache' →
form_language(Zeile 137) - [ ] 'Titel' →
form_title(Zeile 94)
Hints¶
- [ ] 'z.B. Hintereingang nutzen, Klingel ohne Namen...' →
hint_deliveryInstructions(Zeile 136) - [ ] 'z.B. Hintereingang, bitte klingeln…' →
hint_orderComment(Zeile 838, 429) - [ ] 'Bestellungen durchsuchen…' →
hint_searchOrders(Zeile 447) - [ ] 'Suchen…' →
hint_search(Zeile 410) - [ ] 'Artikel suchen…' →
hint_searchArticles(Zeile 503) - [ ] 'z.B. Wöchentlicher Einkauf' →
hint_listTitle(Zeile 95) - [ ] 'z.B. 12345' →
hint_customerNumberExample(Zeile 166) - [ ] 'z.B. Max' →
hint_firstNameExample(Zeile 185) - [ ] 'z.B. Mustermann' →
hint_lastNameExample(Zeile 203)
Actions & Buttons¶
- [ ] 'Aus Bestellung laden' →
action_loadFromOrder(Zeile 111, 139) - [ ] 'Aus Bestellliste laden' →
action_loadFromPurchaseList(Zeile 122, 152) - [ ] 'Bestelllisten' →
action_toLists(Zeile 34) - [ ] 'Zur Liste' →
action_addToList(Zeile 52) - [ ] 'Warenkorb leeren' →
action_emptyCart(Zeile 134) - [ ] 'Link öffnen' →
action_openLink(Zeile 557) - [ ] 'Download' →
action_download(Zeile 535) - [ ] 'Teilen' →
action_share
Filter Chips¶
- [ ] 'Alle' →
filter_all(Zeile 33) - [ ] 'Push' →
filter_push(Zeile 44) - [ ] 'Nachrichten' →
filter_messages(Zeile 56) - [ ] 'System' →
filter_system(Zeile 68) - [ ] 'Dokumente' →
filter_documents(Zeile 80) - [ ] 'Alle Typen' →
filter_allTypes(Zeile 144, 146) - [ ] 'Alle Sprachen' →
filter_allLanguages(Zeile 195)
Content Sections¶
- [ ] 'Keine Lieferpausen vorhanden' →
deliveryBreak_noDeliveryBreaks(Zeile 45) - [ ] 'Neue Lieferpause erstellen' →
deliveryBreak_createNew(Zeile 114) - [ ] 'Verwalten Sie Ihre Lieferpausen und -unterbrechungen' →
deliveryBreak_manageBreaks(Zeile 100) - [ ] 'Keine Kundennummern vorhanden' →
customerNumber_noCustomerNumbers(Zeile 40) - [ ] 'Neue Kundennummer hinzufügen' →
customerNumber_addNew(Zeile 275) - [ ] 'Verwalten Sie Ihre Kundennummern' →
customerNumber_manage(Zeile 54) - [ ] 'Keine Bestelllisten vorhanden' →
purchaseList_noPurchaseLists(Zeile 42) - [ ] 'Neue Bestellliste erstellen' →
purchaseList_createNew(Zeile 274) - [ ] 'Verwalten Sie Ihre Bestelllisten' →
purchaseList_manage(Zeile 79) - [ ] 'Erstellen und verwalten Sie Ihre Bestelllisten' →
purchaseList_createAndManage(Zeile 35)
Tooltips¶
- [ ] 'Schließen' →
tooltip_close(Zeile 130, 92) - [ ] 'Herunterladen' →
tooltip_download(Zeile 150) - [ ] 'Teilen' →
tooltip_share(Zeile 157) - [ ] 'Suche löschen' →
tooltip_clearSearch(Zeile 180) - [ ] 'Ausblenden' →
tooltip_hide(Zeile 196)
Document & Version¶
- [ ] 'v{version}' →
document_version(Zeile 168, 152) - [ ] 'Fehler: {snapshot.error}' →
general_errorWithDetails(Zeile 78)
Titles¶
- [ ] 'Bestellübersicht' →
title_orderOverview(Zeile 181) - [ ] 'Neues Kundenkonto hinzufügen' →
title_addNewCustomerAccount(Zeile 82)
Download Messages¶
- [ ] '{document.displayName} heruntergeladen' → kombiniere mit Template
- [ ] 'Download fehlgeschlagen: $e' →
general_downloadFailed - [ ] 'Link in Zwischenablage kopiert' →
message_linkCopied(Zeile 236) - [ ] 'Kopieren fehlgeschlagen: $e' →
message_copyFailed(Zeile 245)
Loading & Status¶
- [ ] 'Bestellungen werden geladen' →
loading_orders(Zeile 182) - [ ] 'Einen Moment bitte...' →
loading_moment(Zeile 183)
Registration¶
- [ ] 'Zur Startseite' →
registration_toHomepage(Zeile 63) - [ ] 'Registrieren' →
registration_register(Zeile 222)
Auth¶
- [ ] 'Bereits ein Konto? Anmelden' →
auth_alreadyHaveAccount(Zeile 207) - [ ] 'Zurück zur ' →
auth_backTo(Zeile 160) - [ ] 'Zurück zur Anmeldung' →
auth_backToLogin(Zeile 186) - [ ] 'Mindestens 6 Zeichen' →
auth_minPasswordLength(Zeile 116)
Article Variants¶
- [ ] '{variants.length} verfügbar' →
variant_availableCount(Zeile 666)
Cache Operations¶
- [ ] 'Abgelaufene löschen' →
cache_deleteExpired(Zeile 284) - [ ] 'Alle löschen' →
cache_deleteAll(Zeile 304)
Main Title (zu ersetzen!)¶
- [ ] 'Flutter Demo' → Sollte zu richtigem App-Namen geändert werden (Zeile 140)
Fortschritt¶
ERP-System¶
- Gesamt identifiziert: ~300+ Stellen
- Bereits ersetzt: ~15 Stellen (5%)
- Verbleibend: ~285 Stellen
Shop-System¶
- Gesamt identifiziert: ~200+ Stellen
- Bereits ersetzt: ~5 Stellen (2.5%)
- Verbleibend: ~195 Stellen
Nächste Schritte¶
- Tutorial-Service komplett migrieren (ERP, höchste Priorität)
- Alle "Abbrechen", "Löschen", "Schließen" Buttons (Shop)
- Alle Empty States (Shop)
- Fehlermeldungen & Bestätigungen (beide Systeme)
- Form Labels (beide Systeme)
- Tooltips & Hints (beide Systeme)
Tipp: Arbeite dateiweise durch Liste und markiere erledigte Elemente mit [x].