diff --git a/.gitignore b/.gitignore
index 6b3af3f..203dbab 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,3 +4,4 @@
Homestead.yaml
Homestead.json
.env
+/.idea/
diff --git a/resources/lang/de/address.php b/resources/lang/de/address.php
new file mode 100644
index 0000000..2f1bb51
--- /dev/null
+++ b/resources/lang/de/address.php
@@ -0,0 +1,14 @@
+ 'Adresse',
+ 'contact' => 'Kontakt',
+ 'street' => 'Straße',
+ 'rt' => 'RT',
+ 'rw' => 'RW',
+ 'village' => 'Ort',
+ 'district' => 'Ortsteil',
+ 'municipality' => 'Gemeinde',
+ 'city' => 'Stadt',
+ 'province' => 'Bundesland',
+];
diff --git a/resources/lang/de/agency.php b/resources/lang/de/agency.php
new file mode 100644
index 0000000..00cd3e6
--- /dev/null
+++ b/resources/lang/de/agency.php
@@ -0,0 +1,25 @@
+ 'Agentur',
+ 'not_found' => 'Agentur nicht gefunden',
+ 'detail' => 'Agentur Detail',
+
+ // Actions
+ 'edit' => 'Agentur bearbeiten',
+ 'update' => 'Agentur aktualisieren',
+ 'updated' => 'Agentur wurde aktualisiert.',
+ 'logo_change' => 'Agentur Logo ändern',
+ 'logo_upload' => 'Upload Agentur Logo',
+ 'logo_upload_info' => 'Lade eine .png Datei mit 200px Breite hoch',
+
+ // Attributes
+ 'name' => 'Agentur Name',
+ 'tagline' => 'Agentur Tagline',
+ 'email' => 'Agentur E-Mail',
+ 'website' => 'Agentur Website',
+ 'address' => 'Agentur Adresse',
+ 'phone' => 'Agentur Telefon',
+ 'logo' => 'Agentur Logo',
+];
diff --git a/resources/lang/de/app.php b/resources/lang/de/app.php
new file mode 100644
index 0000000..2547e4e
--- /dev/null
+++ b/resources/lang/de/app.php
@@ -0,0 +1,52 @@
+ '#',
+ 'no' => 'Nr.',
+ 'label' => 'Label',
+ 'action' => 'Aktion',
+ 'welcome' => 'Willkommen',
+ 'to' => 'Zu',
+ 'from' => 'Von',
+ 'active' => 'aktiv',
+ 'in_active' => 'in Bearbeitung',
+ 'show_detail_title' => 'Zeige :name :type detail',
+ 'status' => 'Status',
+ 'type' => 'Typ',
+ 'total' => 'gesamt',
+ 'count' => 'Summe',
+ 'remark' => 'Remark',
+
+ // Action
+ 'add' => 'Hinzufügen',
+ 'submit' => 'absenden',
+ 'update' => 'aktualisieren',
+ 'delete' => 'löschen',
+ 'back' => 'zurück',
+ 'cancel' => 'abbrechen',
+ 'reset' => 'zurücksetzen',
+ 'show' => 'zeige Details',
+ 'edit' => 'bearbeiten',
+ 'print' => 'drucken',
+ 'search' => 'suchen',
+ 'filter' => 'filtern',
+ 'pick' => 'auswählen',
+ 'close' => 'schließen',
+ 'delete_confirm_button' => 'Ja, bitte lösche es',
+ 'delete_confirm' => 'Wollen Sie das wirklich löschen?',
+ 'change_photo' => 'Foto ändern',
+ 'done' => 'fertig',
+
+ // Attributes
+ 'name' => 'Name',
+ 'notes' => 'Notizen',
+ 'description' => 'Beschreibung',
+ 'code' => 'Code',
+ 'date' => 'Datum',
+ 'time' => 'Zeit',
+ 'created_at' => 'erstellt am',
+ 'created_by' => 'erstellt von',
+ 'start_date' => 'Startdatum',
+ 'end_date' => 'Enddatum',
+];
diff --git a/resources/lang/de/app_install.php b/resources/lang/de/app_install.php
new file mode 100644
index 0000000..4e16040
--- /dev/null
+++ b/resources/lang/de/app_install.php
@@ -0,0 +1,10 @@
+ 'Install '.config('app.name').'',
+ 'agency_info_text' => 'Bitte füllen Sie das nachfolgende Fomular aus, um Ihre Agentur anzulegen.',
+ 'admin_info_text' => 'Bitte füllen Sie das nachfolgende Formular aus, um einen Administrator Account anzulegen.',
+ 'admin_name' => 'Administrator Name',
+ 'admin_email' => 'Administrator E-Mail',
+ 'button' => 'installiere jetzt Free PMO',
+];
diff --git a/resources/lang/de/auth.php b/resources/lang/de/auth.php
new file mode 100644
index 0000000..d83a105
--- /dev/null
+++ b/resources/lang/de/auth.php
@@ -0,0 +1,42 @@
+ 'Mein Profil',
+ 'profile_edit' => 'Mein Profil bearbeiten',
+ 'update_profile' => 'Profil aktualisieren',
+ 'profile_updated' => 'Profil wurde aktualisiert.',
+
+ // Registration
+ 'register' => 'Neuen Account anlegen',
+ 'need_account' => 'Account benötigt?',
+ 'have_an_account' => 'Ich habe bereits einen Account',
+
+ // Login & Logout
+ 'login' => 'Login',
+ 'welcome' => 'Willkommen :name.',
+ 'failed' => 'Diese Zugangsdaten passen nicht zu unseren Daten.',
+ 'throttle' => 'Zu viele Login Versuche. Bitte probiere es erneut in :seconds Sekunden.',
+ 'logout' => 'Logout',
+ 'logged_out' => 'Sie haben sich ausgeloggt.',
+
+ // Password
+ 'change_password' => 'Passwort ändern',
+ 'password_changed' => 'Ihr Passwort wurde geändert',
+ 'forgot_password' => 'Passwort vergessen?',
+ 'reset_password' => 'Password zurücksetzen',
+ 'send_reset_password_link' => 'Sende Passwort Reset Link',
+ 'old_password_failed' => 'Altes Passwort stimmt nicht überein!',
+ 'reset_password_hint' => 'Bitte setzen Sie Ihr Passwort zurück, indem Sie dieses Formular ausfüllen',
+
+ // Attributes
+ 'email' => 'E-Mail',
+ 'password' => 'Passwort',
+ 'password_confirmation' => 'Passwort bestätigen',
+ 'old_password' => 'Altes Passwort',
+ 'new_password' => 'Neues Passwort',
+ 'new_password_confirmation' => 'Neues Passwort bestätigen',
+
+ // Authorization
+ 'unauthorized_access' => 'Sie können nicht auf die Seite :url zugreifen.',
+];
diff --git a/resources/lang/de/backup.php b/resources/lang/de/backup.php
new file mode 100644
index 0000000..5a36260
--- /dev/null
+++ b/resources/lang/de/backup.php
@@ -0,0 +1,40 @@
+ 'Datenbank Backup Manager',
+ 'list' => 'Backup Dateiliste',
+ 'file_name' => 'Dateiname',
+ 'file_size' => 'Dateigröße',
+ 'created_at' => 'erstellt am',
+ 'actions' => 'Aktionen',
+ 'empty' => 'Keine Backups verfügbar.',
+
+ // Create backup file
+ 'create' => 'erstelle Backup Datei',
+ 'created' => 'Backup Datei :filename erstellt.',
+ 'not_created' => 'Backup Datei mit den Namen :filename existiert bereits.',
+
+ // Delete backup file
+ 'delete' => 'Löschen',
+ 'delete_title' => 'Lösche diese Backup Datei',
+ 'sure_to_delete_file' => 'Möchten Sie diese Datei wirklich löschen? ":filename"?',
+ 'cancel_delete' => 'Löschen abbrechen',
+ 'confirm_delete' => 'JA, bitte lösche diese Datei',
+ 'deleted' => 'Backup Datei :filename wurde gelöscht!',
+
+ // Download backup file
+ 'download' => 'Download',
+
+ // Restore backup
+ 'restore' => 'Wiederherstellen',
+ 'restore_title' => 'Datenbank von Datei wiederherstellen',
+ 'sure_to_restore' => 'Möchten Sie wirklich diese Backup Datei wiederherstellen ":filename"?
Bitte stellen Sie sicher, dass ihre aktuelle Datenbank abgesichert wurde..',
+ 'cancel_restore' => 'Wiederherstellung abbrechen',
+ 'confirm_restore' => 'JA, Datenbank wiederherstellen!',
+ 'restored' => 'Datenbank wurde wiederhergestellt mit Backup Datei :filename',
+
+ // Upload backup fle
+ 'upload' => 'Backup Datei hochladen',
+ 'uploaded' => 'Backup Datei :filename hochgeladen.',
+];
diff --git a/resources/lang/de/bank_account.php b/resources/lang/de/bank_account.php
new file mode 100644
index 0000000..db3b9f7
--- /dev/null
+++ b/resources/lang/de/bank_account.php
@@ -0,0 +1,28 @@
+ 'Bankverbindung',
+ 'list' => 'Bankverbindungsliste',
+ 'empty' => 'Bankverbindugnsliste ist leer',
+ 'back_to_index' => 'Zurück zur Bankverbindunsliste',
+
+ // Actions
+ 'create' => 'Neue Bankverbindung erstellen',
+ 'created' => 'Neue Bankverbindung wurde erstellt.',
+ 'show' => 'Zeige Bankverbindung Details',
+ 'edit' => 'Bankverbindung bearbeiten',
+ 'update' => 'Bankverbindung aktualisieren',
+ 'updated' => 'Bankverbindung wurde aktualisiert.',
+ 'delete' => 'Bankverbindung löschen',
+ 'delete_confirm' => 'Möchten Sie wirklich diese Bankverbindung löschen?',
+ 'deleted' => 'Bankverbindung wurde gelöscht.',
+ 'undeleted' => 'Bankverbindung wurde nicht gelöscht.',
+ 'undeleteable' => 'Bankverbindung kann nicht gelöscht werden.',
+
+ // Attributes
+ 'name' => 'Bank Name',
+ 'number' => 'Kontonummer / IBAN',
+ 'account_name' => 'Kontoinhaber',
+ 'description' => 'Beschreibung',
+];
diff --git a/resources/lang/de/contact.php b/resources/lang/de/contact.php
new file mode 100644
index 0000000..8566511
--- /dev/null
+++ b/resources/lang/de/contact.php
@@ -0,0 +1,10 @@
+ 'Kontakt',
+ 'phone' => 'Telefon',
+ 'phone_abb' => 'Tel.',
+ 'cellphone' => 'Handy',
+ 'email' => 'E-Mail',
+ 'website' => 'Webseite',
+];
diff --git a/resources/lang/de/customer.php b/resources/lang/de/customer.php
new file mode 100644
index 0000000..17bc36d
--- /dev/null
+++ b/resources/lang/de/customer.php
@@ -0,0 +1,39 @@
+ 'Kunde',
+ 'list' => 'Kundenliste',
+ 'search' => 'Kundensuche',
+ 'not_found' => 'Kunde nicht gefunden.',
+ 'empty' => 'Kunde ist leer.',
+ 'back_to_show' => 'Zurück zu Kundendetails',
+ 'back_to_index' => 'Zurück zur Kundennliste',
+ 'detail' => 'Kundendetails',
+ 'contact' => 'Kundenkontakt',
+
+ // Actions
+ 'create' => 'neuen Kunden anlegen',
+ 'created' => 'Erfolgreich neuen Kunden angelegt.',
+ 'show' => 'Kundendetails anzeigen',
+ 'edit' => 'Kunde bearbeiten',
+ 'update' => 'Kunde aktualisieren',
+ 'updated' => 'Kunde erfolgreich aktualisiert.',
+ 'delete' => 'Kunde löschen',
+ 'delete_confirm' => 'Wollen Sie wirklich diesen Kunden löschen?',
+ 'deleted' => 'Kunde löschen erfolgreich.',
+ 'undeleted' => 'Kunde nicht gelöscht.',
+ 'undeleteable' => 'Kunde konnte nicht gelöscht werden.',
+
+ // Attributes
+ 'name' => 'Kundenname',
+ 'description' => 'Kundenbeschreibung',
+ 'pic' => 'PIC',
+ 'projects_count' => 'Projektanzahl',
+
+ // Relations
+ 'projects' => 'Projektliste',
+ 'payments' => 'Zahlungshistorie',
+ 'subscriptions' => 'Abonnement liste',
+ 'invoices' => 'Rechnungsliste',
+];
diff --git a/resources/lang/de/dashboard.php b/resources/lang/de/dashboard.php
new file mode 100644
index 0000000..d577bff
--- /dev/null
+++ b/resources/lang/de/dashboard.php
@@ -0,0 +1,11 @@
+ 'Projektstatus Satistik',
+ 'earnings_stats' => 'Verdienst Statistik',
+ 'upcoming_subscriptions_expiry' => 'kommende auslaufende Abonnement',
+ 'no_upcoming_subscriptions_expiry' => 'Keine kommende auslaufende Abonnements in den nächsten 60 Tagen.',
+ 'yearly_earnings' => 'jährliche Verdienste',
+ 'finished_projects_count' => 'abgeschlossene Projekte',
+ 'receiveable_earnings' => 'empfangbare Verdienste',
+];
diff --git a/resources/lang/de/file.php b/resources/lang/de/file.php
new file mode 100644
index 0000000..f2e7ad4
--- /dev/null
+++ b/resources/lang/de/file.php
@@ -0,0 +1,32 @@
+ 'Datei',
+ 'list' => 'Dateiliste',
+ 'search' => 'Dateisuche',
+ 'not_found' => 'Datei nicht gefunden.',
+ 'empty' => 'Dateiliste ist leer.',
+ 'back_to_index' => 'Zurück zur Dateiliste',
+
+ // Actions
+ 'create' => 'neue Datei hochladen',
+ 'created' => 'Neue Datei wurde erstellt.',
+ 'edit' => 'Datei bearbeiten',
+ 'update' => 'Datei hochladen',
+ 'updated' => 'Neue Datei wurde aktualisiert.',
+ 'delete' => 'Datei löschen',
+ 'delete_confirm' => 'Wollen Sie wirklich diese Datei löschen?',
+ 'deleted' => 'Datei wurde gelöscht.',
+ 'undeleted' => 'Datei nicht gelöscht.',
+ 'undeleteable' => 'Datei kann nicht gelöscht werden.',
+ 'select' => 'Datei auswählen',
+ 'upload' => 'Datei hochladen',
+ 'download' => 'Download',
+
+ // Attributes
+ 'title' => 'Dateiname',
+ 'description' => 'Dateibeschreibung',
+ 'size' => 'Dateigröße',
+ 'updated_at' => 'aktualisiert am',
+];
diff --git a/resources/lang/de/invoice.php b/resources/lang/de/invoice.php
new file mode 100644
index 0000000..0b53c86
--- /dev/null
+++ b/resources/lang/de/invoice.php
@@ -0,0 +1,56 @@
+ 'Rechnung',
+ 'list' => 'Rechnungsliste',
+ 'search' => 'Rechnungssuche',
+ 'detail' => 'Rechnungsdetails',
+ 'not_found' => 'Rechnung nicht gefunden.',
+ 'empty' => 'Rechnungsliste ist leer.',
+ 'back_to_show' => 'Zurück zu Rechnungsdetails',
+ 'back_to_index' => 'Zurück zur Rechnungsliste',
+ 'back_to_project' => 'Zurück zu Projektrechnungen',
+ 'draft_list' => 'Entwurf Rechnungsliste',
+ 'draft_list_empty' => 'Entwurf Rechnungsliste ist leer.',
+ 'draft_not_found' => 'Entwurf Rechnungsliste nicht gefunden.',
+
+ // Actions
+ 'proccess' => 'Rechnung verarbeiten',
+ 'item_list_empty' => 'Liste ist leer.',
+ 'create' => 'neue Rechnung anlegen',
+ 'save' => 'Rechnung speichern',
+ 'created' => 'Neue Rechnung wurde erstellt.',
+ 'show' => 'Rechnungsdetails',
+ 'edit' => 'Rechnung bearbeiten',
+ 'update' => 'Rechnung aktualisieren',
+ 'updated' => 'Rechnungsdetails wurden aktualisiert.',
+ 'delete' => 'Rechnung löschen',
+ 'delete_confirm' => 'Wollen Sie diese Rechnung wirklich löschen?',
+ 'deleted' => 'Rechnung wurde gelöscht.',
+ 'undeleted' => 'Rechnung nicht gelöscht.',
+ 'undeleteable' => 'Rechnung kann nicht gelöscht werden.',
+ 'print' => 'Rechnung drucken',
+ 'add_item' => 'Position hinzufügen',
+ 'item_added' => 'Position hinzugefügt.',
+ 'item_updated' => 'Position aktualisiert.',
+ 'item_remove' => 'Position löschen',
+ 'item_removed' => 'Position gelöscht.',
+ 'confirm_instruction' => 'Bitte übeprüfen Sie diese Rechnungsposition, tippe :back_link zum Bearbeiten.',
+ 'draft_del_confirm' => 'Wollen Sie wirklich diesen Entwurf löschen?',
+
+ // Attributes
+ 'number' => 'Rechnungsnr.',
+ 'project' => 'Projekt',
+ 'creator' => 'Autor',
+ 'items' => 'Rechnungsposition',
+ 'notes' => 'Notizen',
+ 'date' => 'Datum',
+ 'due_date' => 'Fälligkeitsdatum',
+ 'amount' => 'Betrag',
+ 'total' => 'Rechnungsbetrag',
+ 'customer' => 'Kunde',
+ 'item_description' => 'Beschreibung',
+ 'item_amount' => 'Summe',
+ 'items_count' => 'Summe Positionen',
+];
diff --git a/resources/lang/de/job.php b/resources/lang/de/job.php
new file mode 100644
index 0000000..602a3f6
--- /dev/null
+++ b/resources/lang/de/job.php
@@ -0,0 +1,44 @@
+ 'Beschäftigung',
+ 'list' => 'Beschäftigungsliste',
+ 'on_progress' => 'in Arbeit',
+ 'detail' => 'Beschäftigungsdetails',
+ 'search' => 'Beschäftigung suchen',
+ 'found' => 'Beschäftigung gefunden.',
+ 'not_found' => 'Beschäftigung nicht gefunden.',
+ 'tasks' => 'Aufgabenliste',
+ 'price_total' => 'Beschäftigungsgesamtpreis',
+ 'tasks_count' => 'Beschäftigungsanzahl',
+ 'empty' => 'Beschäftigungsliste ist leer.',
+ 'back_to_index' => 'zurück zur Beschäftigungsliste',
+
+ // Actions
+ 'create' => 'Neue Beschäftigung anlegen',
+ 'add' => 'Beschäftigung hinzufügen',
+ 'created' => 'Neue Beschäftigung wurde angelegt.',
+ 'show' => 'Beschäftigungsdetails anzeigen',
+ 'edit' => 'Beschäftigung bearbeiten',
+ 'update' => 'Beschäftigung aktualisieren',
+ 'updated' => 'Beschäftigungsdetails wurden aktualisiert.',
+ 'delete' => 'Beschäftigung löschen',
+ 'deleted' => 'Beschäftigung wurde gelöscht.',
+ 'undeleted' => 'Beschäftigung nicht gelöscht.',
+ 'add_from_other_project' => 'Beschäftigung von einem anderen Projekt hinzufügen',
+ 'select_project' => 'ein Projekt auswählen.',
+ 'sort_tasks' => 'sortiere Aufgabenpriorität',
+
+ // Attributes
+ 'name' => 'Beschäftigungsname',
+ 'description' => 'Beschreibung',
+ 'progress' => 'Fortschritt',
+ 'worker' => 'Bearbeiter',
+ 'price' => 'Preis',
+ 'type' => 'Beschäftigungstyp',
+
+ // Types
+ 'main' => 'Haupt',
+ 'additional' => 'Zusätzlich',
+];
diff --git a/resources/lang/de/lang.php b/resources/lang/de/lang.php
new file mode 100644
index 0000000..846a707
--- /dev/null
+++ b/resources/lang/de/lang.php
@@ -0,0 +1,9 @@
+ 'Sprache',
+ 'switch_tooltip' => 'Sprache wechseln zu :lang',
+ 'en' => 'Englisch',
+ 'id' => 'Indonesisch',
+ 'de' => 'Deutsch',
+];
diff --git a/resources/lang/de/nav_menu.php b/resources/lang/de/nav_menu.php
new file mode 100644
index 0000000..f9f8cbf
--- /dev/null
+++ b/resources/lang/de/nav_menu.php
@@ -0,0 +1,8 @@
+ 'Dashboard',
+ 'agency' => 'Agenturprofil',
+ 'calendar' => 'Kalender',
+ 'nav' => 'DB Backup/Wiederherstellung',
+];
diff --git a/resources/lang/de/option.php b/resources/lang/de/option.php
new file mode 100644
index 0000000..c1550b6
--- /dev/null
+++ b/resources/lang/de/option.php
@@ -0,0 +1,17 @@
+ 'Einstellungen',
+ 'create' => 'neue Option hinzufügen',
+ 'created' => 'Neue Option erstellt.',
+ 'updated' => 'Option aktualisiert.',
+ 'delete' => 'Option löschen',
+ 'deleted' => 'Option gelöscht.',
+ 'undeleted' => 'Option kann nicht gelöscht werden.',
+ 'key' => 'Schlüssel',
+ 'value' => 'Wert',
+
+ // Keys
+ 'money_sign' => 'Geldsignatur',
+];
diff --git a/resources/lang/de/pagination.php b/resources/lang/de/pagination.php
new file mode 100644
index 0000000..88a5b00
--- /dev/null
+++ b/resources/lang/de/pagination.php
@@ -0,0 +1,19 @@
+ '« Letzte',
+ 'next' => 'Nächste »',
+
+];
diff --git a/resources/lang/de/passwords.php b/resources/lang/de/passwords.php
new file mode 100644
index 0000000..d14b757
--- /dev/null
+++ b/resources/lang/de/passwords.php
@@ -0,0 +1,22 @@
+ 'Passwörter müssen mindestens sechs Zeichen lang sein und der Bestätigung entsprechen.',
+ 'user' => "Wir können keinen Benutzer mit dieser E-Mailadresse finden.",
+ 'token' => 'Dieses Passwort Reset Token ist ungültig.',
+ 'sent' => 'Wir haben Ihnen Ihr Passwort Rest Link per E-Mail zugesandt!',
+ 'reset' => 'Ihr Passwort wurde zurückgesetzt!',
+ 'back_to_login' => 'Zurück zum Login',
+];
diff --git a/resources/lang/de/payment.php b/resources/lang/de/payment.php
new file mode 100644
index 0000000..94a71e0
--- /dev/null
+++ b/resources/lang/de/payment.php
@@ -0,0 +1,53 @@
+ 'Zahlungen',
+ 'payments' => 'Zahlungsliste',
+ 'list' => 'Zahlungsliste',
+ 'found' => 'Zahlung nicht gefunden.',
+ 'not_found' => 'Zahlung nicht gefunden.',
+ 'empty' => 'Zahlungsliste ist leer.',
+ 'back_to_index' => 'Zurück zur Zahlungsliste',
+ 'receipt' => 'Zahlungseingänge',
+ 'from' => 'empfangen von',
+ 'cash_amount' => 'Betrag',
+ 'words_amount' => 'Betrag in Worten',
+
+ // Actions
+ 'create' => 'Neue Zahlung erstellen',
+ 'create_fee' => 'Zahlungsgebühr erstellen',
+ 'created' => 'Zahlung wurde erstellt.',
+ 'show' => 'Zahlungsdetails anzeigen',
+ 'detail' => 'Zahlungsdetails',
+ 'edit' => 'Zahlung bearbeiten',
+ 'update' => 'Zahlung aktualisieren',
+ 'updated' => 'Zahlungsdaten wurden aktualisiert.',
+ 'delete' => 'Zahlung löschen',
+ 'deleted' => 'Zahlung wurde gelöscht.',
+ 'undeleted' => 'Zahlung nicht gelöscht.',
+ 'search' => 'Suche Projektzahlung',
+ 'print' => 'Zahlungseingang drucken',
+
+ // Attributes
+ 'id' => 'Zahlungs ID',
+ 'description' => 'Beschreibung',
+ 'date' => 'Zahlungsdatum',
+ 'in_out' => 'Transaktionstyp',
+ 'in' => 'Zahlungseingang',
+ 'out' => 'Zahlungsausgang',
+ 'type' => 'Zahlungstyp',
+ 'project' => 'Projekt',
+ 'customer' => 'Von/Zu',
+ 'amount' => 'Betrag',
+ 'cash_in' => 'Zahlungseingang',
+ 'cash_out' => 'Zahlungsausgang',
+ 'payer' => 'Zahler',
+
+ // Types
+ 'types' => [
+ 'project' => 'Projekt',
+ 'add_job' => 'Beschäftigung hinzufügen',
+ 'maintenance' => 'Wartung',
+ ],
+];
diff --git a/resources/lang/de/project.php b/resources/lang/de/project.php
new file mode 100644
index 0000000..349056a
--- /dev/null
+++ b/resources/lang/de/project.php
@@ -0,0 +1,76 @@
+ 'Projekt',
+ 'projects' => 'Projektliste',
+ 'index_title' => ':status Projektliste',
+ 'work_duration' => 'Arbeitsdauer',
+ 'cash_in_total' => 'Summe Zahlungseingang',
+ 'cash_out_total' => 'Summe Zahlungsausgang',
+ 'all' => 'Alle Projekte',
+ 'search' => 'Projekte suchen',
+ 'found' => 'Projekte gefunden',
+ 'not_found' => 'Projekt nicht gefunden.',
+ 'select' => 'Projekt auswählen',
+ 'empty' => 'Projektliste ist leer.',
+ 'back_to_index' => 'Zurück zur Projektliste',
+ 'receiveable_earnings' => 'Forderungsauszahlung',
+ 'payment_remaining' => 'Verbleibende Zahlung',
+ 'earnings_calculation' => 'Ergebnisberechnung',
+ 'additional_jobs' => 'Zusätzliche Beschäftigungsliste',
+
+ // Payments
+ 'payment_summary' => 'Zahlungssumme',
+ 'payment_status' => 'Zahlungsstatus',
+ 'payment_statuses' => [
+ 'paid' => 'bezahlt',
+ 'outstanding' => 'ausstehend',
+ ],
+
+ // Actions
+ 'create' => 'Neues Projekt erstellen',
+ 'created' => 'Neues Projekt wurde erstellt.',
+ 'show' => 'Projektdetails',
+ 'edit' => 'Projekt bearbeiten',
+ 'update' => 'Projekt aktualisieren',
+ 'updated' => 'Projekt wurde aktualisiert.',
+ 'delete' => 'Projekt löschen',
+ 'deleted' => 'Projekt wurde gelöscht.',
+ 'undeleted' => 'Projekt nicht gelöscht.',
+ 'show_jobs' => 'Beschäftigung anzeigen',
+
+ 'jobs_list_export_html' => 'Export HTML',
+ 'jobs_export_excel' => 'Export Excel',
+ 'jobs_progress_export_html' => 'Export Fortschritt',
+ 'sort_jobs' => 'sortiere Beschäftigungspriorität',
+
+ // Attributes
+ 'name' => 'Projektname',
+ 'description' => 'Projektbeschreibung',
+ 'start_date' => 'Startdatum',
+ 'end_date' => 'Enddatum',
+ 'proposal_date' => 'Datum des Angebotes',
+ 'project_value' => 'Projektwert',
+ 'proposal_value' => 'Angebotswert',
+
+ // Relations
+ 'files' => 'Dokumentenliste',
+ 'jobs' => 'Beschäftigungsliste',
+ 'no_jobs' => 'Beschäftigungsliste ist leer.',
+ 'cost_proposal' => 'Kostenvoranschlag',
+ 'invoices' => 'Rechnungsliste',
+ 'customer' => 'Kunder',
+ 'worker' => 'Mitarbeiter',
+ 'subscriptions' => 'Abonnements',
+ 'status' => 'Projektstatus',
+ 'payments' => 'Zahlungen',
+
+ // Statuses
+ 'planned' => 'geplant',
+ 'progress' => 'in Bearbeitung',
+ 'done' => 'erledigt',
+ 'closed' => 'Geschlossen',
+ 'canceled' => 'Abgebrochen',
+ 'on_hold' => 'in Warteposition',
+];
diff --git a/resources/lang/de/subscription.php b/resources/lang/de/subscription.php
new file mode 100644
index 0000000..a2707cb
--- /dev/null
+++ b/resources/lang/de/subscription.php
@@ -0,0 +1,51 @@
+ 'Abonnements',
+ 'subscriptions' => 'Abonnements Liste',
+ 'list' => 'Abonnements Liste',
+ 'detail' => 'Abonnement Details',
+ 'search' => 'Suche Abonnements',
+ 'found' => 'Abonnement gefunden.',
+ 'not_found' => 'Abonnement nicht gefunden.',
+ 'empty' => 'Abonnements Liste ist leer.',
+ 'back_to_show' => 'Zurück zu Abonnement Details',
+ 'back_to_index' => 'Zurück zu Abonnements Liste',
+
+ // Actions
+ 'create' => 'Neues Abonnement erstellen',
+ 'created' => 'Abonnement wurde erstellt.',
+ 'show' => 'Abonnement Details anzeigen',
+ 'edit' => 'Abonnement bearbeiten',
+ 'update' => 'Abonnement aktualisieren',
+ 'updated' => 'Abonnementdaten wurden aktualisiert.',
+ 'delete' => 'Abonnement löschen',
+ 'deleted' => 'Abonnement wurde gelöscht.',
+ 'undeleted' => 'Abonnement nicht gelöscht.',
+
+ // Attributes
+ 'name' => 'Abonnement Name',
+ 'price' => 'Preis',
+ 'domain_name' => 'Domain',
+ 'domain_price' => 'Domain Price',
+ 'epp_code' => 'EPP Code',
+ 'hosting_capacity' => 'Hosting Kapazität',
+ 'hosting_price' => 'Hosting Preis',
+ 'start_date' => 'Startdatum',
+ 'due_date' => 'Fälligkeitsdatum',
+ 'extension_price' => 'Verlängerungspreis',
+ 'project' => 'Pojekt',
+ 'customer' => 'Kunde',
+ 'vendor' => 'Hersteller',
+ 'notes' => 'Notizen',
+ 'type' => 'Abonnement Typ',
+
+ // Types
+ 'types' => [
+ 'domain' => 'Domain',
+ 'hosting' => 'Hosting',
+ 'maintenance' => 'Wartung',
+ ],
+];
diff --git a/resources/lang/de/task.php b/resources/lang/de/task.php
new file mode 100644
index 0000000..d63ab69
--- /dev/null
+++ b/resources/lang/de/task.php
@@ -0,0 +1,29 @@
+ 'Vorgang',
+ 'list' => 'Vorgangsliste',
+ 'empty' => 'Vorgangsliste ist leer.',
+ 'search' => 'Vorgang ',
+ 'found' => 'Vorgang gefunden.',
+ 'not_found' => 'Vorgang nicht gefunden.',
+ 'back_to_index' => 'Zurück zur Vorgangsliste',
+ 'move_to_other_job' => 'Zu einer anderen Beschäftigung verschieben',
+
+ // Actions
+ 'create' => 'Neuen Vorgang erstellen',
+ 'created' => 'Vorgang wurde erstellt.',
+ 'show' => 'Vorgangsdetails',
+ 'edit' => 'Vorgang bearbeiten',
+ 'update' => 'Vorgang aktualisieren',
+ 'updated' => 'Vorgang wurde aktualisiert.',
+ 'delete' => 'Vorgang löschen',
+ 'deleted' => 'Vorgan wurde gelöscht.',
+ 'undeleted' => 'Vorgang nicht gelöscht.',
+
+ // Attributes
+ 'name' => 'Vorgang Name',
+ 'progress' => 'Fortschritt',
+ 'description' => 'Vorgang Beschreibung',
+];
diff --git a/resources/lang/de/user.php b/resources/lang/de/user.php
new file mode 100644
index 0000000..f63fa16
--- /dev/null
+++ b/resources/lang/de/user.php
@@ -0,0 +1,47 @@
+ 'Benutzer',
+ 'list' => 'Benutzerliste',
+ 'user_id' => 'Benutzer ID',
+ 'profile' => 'Profil',
+ 'current_jobs' => 'Aktuelle Beschäftigungen',
+ 'search' => 'Benutzer suchen: ketik nama',
+ 'search' => 'Tippe Benutzer ein und drücke Enter..',
+ 'found' => 'Benutzer gefunden.',
+ 'not_found' => 'Benutzer nicht gefunden.',
+ 'empty' => 'Benutzerliste leer.',
+ 'back_to_show' => 'Zurück zum Benutzerprofil',
+ 'back_to_index' => 'Zurück zur Benutzerliste',
+
+ // Actions
+ 'create' => 'Neuen Benutzer erstellen',
+ 'created' => 'Benutzer wurde erstellt.',
+ 'show' => 'Benutzerdetails',
+ 'edit' => 'Benutzerdaten bearbeiten',
+ 'update' => 'Benutzerdaten aktualisieren',
+ 'updated' => 'Benutzer wurde aktualisiert.',
+ 'delete' => 'Benutzerdaten löschen',
+ 'deleted' => 'Benutzer wurde gelöscht.',
+ 'undeleted' => 'Benutzer nicht gelöscht.',
+
+ // Attributes
+ 'name' => 'Benutzername',
+ 'email' => 'E-Mail',
+ 'lang' => 'Sprache',
+ 'api_token' => 'API Token',
+ 'registered_at' => 'Registriert bei',
+
+ // Roles
+ 'role' => 'Rolle',
+ 'roles' => [
+ 'admin' => 'Administrator',
+ 'worker' => 'Mitarbeiter',
+ ],
+
+ // Relations
+ 'jobs' => 'Beschäftigungsliste',
+ 'jobs_count' => 'Beschäftigungssumme',
+ 'projects' => 'Projektliste',
+];
diff --git a/resources/lang/de/validation.php b/resources/lang/de/validation.php
new file mode 100644
index 0000000..edd1862
--- /dev/null
+++ b/resources/lang/de/validation.php
@@ -0,0 +1,112 @@
+ 'Bitte überprüfen Sie die Formularfelder erneut.',
+ 'accepted' => 'Das :attribute muss akzeptiert.',
+ 'active_url' => 'Das :attribute ist kein valider URL.',
+ 'after' => 'Das :attribute muss ein Datum sein nach :date.',
+ 'alpha' => 'Das :attribute darf nur Buchstaben beinhalten.',
+ 'alpha_dash' => 'Das :attribute darf nur Buchstaben, Zahlen und Bindestriche enthalten.',
+ 'alpha_num' => 'Das :attribute darf nur Buchstaben und Zahlen enthalten.',
+ 'array' => 'Das :attribute muss ein Array sein.',
+ 'before' => 'Das :attribute muss ein Datum sein vor :date.',
+ 'between' => [
+ 'numeric' => 'Das :attribute muss zwischen :min und :max sein.',
+ 'file' => 'Das :attribute muss zwischen :min und :max Kilobytes sein.',
+ 'string' => 'Das :attribute muss zwischen :min und :max Zeichen liegen.',
+ 'array' => 'Das :attribute muss zwischen :min und :max Einträge haben.',
+ ],
+ 'boolean' => 'Das :attribute Feld muss wahr oder falsch sein.',
+ 'confirmed' => 'Die :attribute Bestätigung stimmt nicht überein.',
+ 'date' => 'Das :attribute ist kein gültiges Datum.',
+ 'date_format' => 'Das :attribute passt nicht zum Format :format.',
+ 'different' => 'Die :attribute und :other müssen unterschiedlich sein.',
+ 'digits' => 'Das :attribute müssen :digits Zeichen sein.',
+ 'digits_between' => 'Das :attribute muss zwischen :min und :max Zeichen sein.',
+ 'dimensions' => 'Das :attribute hat ungültige Bild Dimensionen.',
+ 'email' => 'Das :attribute muss eine gültige E-Mailadresse sein.',
+ 'exists' => 'Das ausgewählte :attribute ist ungültig.',
+ 'filled' => 'Das :attribute Feld ist benötigt.',
+ 'image' => 'Das :attribute muss ein Bild sein.',
+ 'in' => 'Das ausgewählte :attribute ist ungültig.',
+ 'integer' => 'Das :attribute muss ein Integer sein.',
+ 'ip' => 'Das :attribute muss eine gültige IP Adresse sein.',
+ 'json' => 'Das :attribute muss ein JSON String sein.',
+ 'max' => [
+ 'numeric' => 'Das :attribute darf nicht größer sein als :max.',
+ 'file' => 'Das :attribute darf nicht größer sein als :max Kilobytes.',
+ 'string' => 'Das :attribute darf nicht länger sein als :max Zeichen.',
+ 'array' => 'Das :attribute darf nicht mehr als :max Einräge haben.',
+ ],
+ 'mimes' => 'Das :attribute muss ein gülter Dateityp sein von: :values.',
+ 'min' => [
+ 'numeric' => 'Das :attribute muss mindestens :min sein.',
+ 'file' => 'Das :attribute muss mindestens :min Kilobytes haben.',
+ 'string' => 'Das :attribute muss mindestens :min Zeichen haben.',
+ 'array' => 'Das :attribute muss mindestens :min Einträge haben.',
+ ],
+ 'not_in' => 'Das ausgewählte :attribute ist nicht gültig.',
+ 'numeric' => 'Das :attribute muss eine Zahl sein.',
+ 'regex' => 'Das :attribute Format ist ungültig.',
+ 'required' => 'Das :attribute Feld ist benötigt.',
+ 'required_if' => 'Das :attribute Feld ist benötigt, wenn :other ist :value.',
+ 'required_unless' => 'Das :attribute Feld ist benötigt, bis :other in :values ist.',
+ 'required_with' => 'Das :attribute Feld ist benötigt, wenn :values vorhanden ist.',
+ 'required_with_all' => 'Das :attribute Feld ist benötigt, wenn :values vorhanden ist.',
+ 'required_without' => 'Das :attribute Feld ist benötigt, wenn :values nicht vorhanden ist.',
+ 'required_without_all' => 'Das :attribute ist benötigt, wenn keiner von :values vorhanden ist.',
+ 'same' => 'Das :attribute und :other müssen übereinstimmen.',
+ 'size' => [
+ 'numeric' => 'Das :attribute muss :size sein.',
+ 'file' => 'Das :attribute muss :size Kilobytes sein.',
+ 'string' => 'Das :attribute muss :size Zeichen sein.',
+ 'array' => 'Das :attribute muss :size Einträge beinhalten.',
+ ],
+ 'string' => 'Das :attribute muss ein String sein.',
+ 'timezone' => 'Das :attribute muss eine gültige Zeitzone sein.',
+ 'unique' => 'Das :attribute ist bereits vergeben.',
+ 'url' => 'Das :attribute Format ist ungültig.',
+
+ /*
+ |--------------------------------------------------------------------------
+ | Custom Validation Language Lines
+ |--------------------------------------------------------------------------
+ |
+ | Here you may specify custom validation messages for attributes using the
+ | convention "attribute.rule" to name the lines. This makes it quick to
+ | specify a specific custom language line for a given attribute rule.
+ |
+ */
+
+ 'custom' => [
+ 'attribute-name' => [
+ 'rule-name' => 'custom-message',
+ ],
+ ],
+
+ /*
+ |--------------------------------------------------------------------------
+ | Custom Validation Attributes
+ |--------------------------------------------------------------------------
+ |
+ | The following language lines are used to swap attribute place-holders
+ | with something more reader friendly such as E-Mail Address instead
+ | of "email". This simply helps us make messages a little cleaner.
+ |
+ */
+
+ 'attributes' => [],
+
+];
diff --git a/resources/lang/de/vendor.php b/resources/lang/de/vendor.php
new file mode 100644
index 0000000..35bc828
--- /dev/null
+++ b/resources/lang/de/vendor.php
@@ -0,0 +1,29 @@
+ 'Hersteller',
+ 'list' => 'Hersteller Liste',
+ 'search' => 'Hersteller suchen',
+ 'not_found' => 'Hersteller nicht gefunden.',
+ 'empty' => 'Hersteller Liste ist leer.',
+ 'back_to_show' => 'Zurück zu Herstellerdetails',
+ 'back_to_index' => 'Zurüc zur Hersteller Liste',
+
+ // Actions
+ 'create' => 'neuen Hersteller anlegen',
+ 'created' => 'Neuer Hersteller wurde angelegt.',
+ 'show' => 'Herstellerdetails',
+ 'edit' => 'Hersteller bearbeiten',
+ 'update' => 'Hersteller aktualisieren',
+ 'updated' => 'Hersteller wurde aktualisiert.',
+ 'delete' => 'Hersteller löschen',
+ 'delete_confirm' => 'Wollen sie diesen Hersteller wirklich löschen?',
+ 'deleted' => 'Hersteller wurde gelöscht.',
+ 'undeleted' => 'Hersteller nicht gelöscht.',
+ 'undeleteable' => 'Hersteller kann nicht gelöscht werden.',
+
+ // Attributes
+ 'name' => 'Hersteller Name',
+ 'description' => 'Hersteller Beschreibung',
+];