Stand: SMTP-Test, Admin-Mail-Tab, Notifiable-Fix, Lazy-Quill

- Fix: Notifiable-Trait zum User-Model hinzugefuegt (behebt notify()-500er)
- Installer: SMTP-Verbindungstest mit EsmtpTransport + Ueberspringen-Link
- Admin: Neuer E-Mail-Tab mit SMTP-Konfiguration + Verbindungstest
- Admin: Lazy Quill-Initialisierung (nur sichtbare Locale wird geladen)
- Uebersetzungen: 17 neue Mail-Keys in allen 6 Sprachen

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Rhino
2026-03-02 07:30:37 +01:00
commit 2e24a40d68
9633 changed files with 1300799 additions and 0 deletions

549
lang/ar/admin.php Executable file
View File

@@ -0,0 +1,549 @@
<?php
return [
'dashboard_title' => 'لوحة تحكم الإدارة',
'stat_users' => 'المستخدمون',
'stat_players' => 'اللاعبون',
'stat_upcoming' => 'المواعيد القادمة',
'stat_invitations' => 'الدعوات المفتوحة',
'quick_links' => 'وصول سريع',
'new_event' => 'موعد جديد',
'new_player' => 'لاعب جديد',
'new_invitation' => 'دعوة جديدة',
'new_team' => 'فريق جديد',
'open_responses_title' => 'مواعيد بردود مفتوحة',
'x_open' => ':count مفتوح',
'nav_teams' => 'الفرق',
'nav_players' => 'اللاعبون',
'nav_users' => 'المستخدمون',
'nav_invitations' => 'الدعوات',
'nav_events' => 'الأحداث',
'nav_settings' => 'الإعدادات',
'nav_verwaltung' => 'الإدارة',
'actions' => 'الإجراءات',
'action' => 'إجراء',
'please_select' => 'يرجى الاختيار',
'back_to_list' => 'العودة إلى القائمة',
'inactive' => 'غير نشط',
'nr' => 'رقم',
'photo' => 'صورة',
'date' => 'التاريخ',
'location' => 'الموقع',
'all_status' => 'جميع الحالات',
'copied' => 'تم النسخ!',
'copy' => 'نسخ',
'created_by' => 'بواسطة',
'valid_until' => 'صالح حتى',
'teams_title' => 'الفرق',
'team_created' => 'تم إنشاء الفريق.',
'team_updated' => 'تم تحديث الفريق.',
'team_name' => 'اسم الفريق',
'year_group' => 'الفئة العمرية',
'year_group_placeholder' => 'مثلاً 2017/18',
'active' => 'نشط',
'team_is_active' => 'الفريق نشط',
'create_team' => 'إنشاء فريق',
'edit_team' => 'تعديل الفريق',
'no_teams_yet' => 'لا توجد فرق بعد.',
'team_notes' => 'ملاحظات',
'team_notes_placeholder' => 'ملاحظات حول الفريق (داخلية، مرئية فقط للمسؤولين)...',
'team_coaches' => 'المدربون',
'no_coaches_available' => 'لا يوجد مدربون في النظام.',
'team_players' => 'اللاعبون',
'team_parent_reps' => 'ممثلو أولياء الأمور',
'team_parent_reps_hint' => 'أولياء الأمور الذين لديهم دور "ممثل أولياء الأمور" ولديهم أطفال في هذا الفريق.',
'no_parent_reps' => 'لا يوجد ممثلون لأولياء الأمور لهذا الفريق.',
'log_team_updated' => 'تم تحديث الفريق ":name"',
'log_player_team_changed' => 'تم نقل اللاعب :name إلى فريق آخر',
'players_title' => 'اللاعبون',
'player_created' => 'تم إنشاء اللاعب.',
'player_updated' => 'تم تحديث اللاعب.',
'first_name' => 'الاسم الأول',
'last_name' => 'اسم العائلة',
'birth_year' => 'سنة الميلاد',
'jersey_number' => 'رقم القميص',
'photo_permission' => 'إذن التصوير',
'notes' => 'ملاحظات',
'parent_assigned' => 'تم تعيين ولي الأمر.',
'parent_removed' => 'تم إزالة التعيين.',
'assign_parent' => 'تعيين ولي أمر',
'add_parent' => 'إضافة ولي أمر',
'select_user' => 'اختيار مستخدم',
'assign' => 'تعيين',
'relationship_label' => 'صلة القرابة',
'relationship_placeholder' => 'مثال: أم، أب',
'parents' => 'أولياء الأمور',
'player_data' => 'البيانات الأساسية',
'parent_assignment' => 'تعيين أولياء الأمور',
'no_parents_yet' => 'لم يتم تعيين أولياء أمور بعد.',
'confirm_remove_parent' => 'هل تريد إزالة التعيين فعلاً؟',
'remove' => 'إزالة',
'no_players_yet' => 'لا يوجد لاعبون بعد.',
'users_title' => 'المستخدمون',
'user_toggled' => 'تم :status المستخدم.',
'role_updated' => 'تم تحديث الدور.',
'cannot_deactivate_self' => 'لا يمكنك تعطيل حسابك الخاص.',
'cannot_change_own_role' => 'لا يمكنك تغيير دورك الخاص.',
'activated' => 'تفعيل',
'deactivated' => 'تعطيل',
'deactivated_label' => 'معطّل',
'children' => 'الأطفال',
'phone' => 'الهاتف',
'last_login' => 'آخر تسجيل دخول',
'never' => 'أبداً',
'deactivate' => 'تعطيل',
'activate' => 'تفعيل',
'you_suffix' => '(أنت)',
'edit' => 'تعديل',
'edit_user' => 'تعديل المستخدم',
'user_data' => 'بيانات المستخدم',
'user_updated' => 'تم تحديث المستخدم.',
'reset_password' => 'إعادة تعيين كلمة المرور',
'reset_password_hint' => 'ينشئ كلمة مرور عشوائية جديدة. ستصبح كلمة المرور القديمة غير صالحة.',
'reset_password_confirm' => 'إنشاء كلمة مرور عشوائية جديدة؟ ستصبح كلمة المرور القديمة غير صالحة.',
'password_reset_success' => 'تم إنشاء كلمة مرور جديدة.',
'new_password_label' => 'كلمة المرور الجديدة (مرئية مرة واحدة فقط):',
'password_only_visible_now' => 'تُعرض كلمة المرور هذه الآن فقط. يرجى مشاركتها وعدم إعادة تحميل الصفحة.',
'cannot_edit_own_role' => 'لا يمكنك تغيير دورك هنا.',
'cannot_assign_admin_role' => 'لا يمكنك تعيين دور المدير.',
'cannot_reset_own_password' => 'لا يمكنك إعادة تعيين كلمة المرور الخاصة بك عبر منطقة الإدارة.',
'registered_at' => 'تاريخ التسجيل',
'invitations_title' => 'الدعوات',
'invitation_created' => 'تم إنشاء الدعوة. الرابط: :link',
'invitation_deleted' => 'تم حذف الدعوة.',
'invitation_already_used' => 'لا يمكن حذف الدعوات التي تم استخدامها.',
'create_invitation' => 'إنشاء دعوة',
'assign_players' => 'تعيين لاعبين',
'email_optional' => 'البريد الإلكتروني (اختياري)',
'email_optional_hint' => 'إذا تم تحديده، يمكن لهذا البريد الإلكتروني فقط التسجيل',
'expires_at' => 'صالح حتى',
'valid_for_days' => 'صالح لمدة (أيام)',
'token' => 'الرمز',
'status' => 'الحالة',
'used' => 'مستخدَم',
'expired' => 'منتهي الصلاحية',
'pending' => 'مفتوح',
'copy_link' => 'نسخ الرابط',
'invite_link' => 'رابط الدعوة',
'no_assignment' => 'بدون تعيين',
'no_invitations_yet' => 'لم يتم إنشاء دعوات بعد.',
'no_active_players' => 'لا يوجد لاعبون نشطون.',
'confirm_delete_invitation' => 'هل تريد حذف الدعوة فعلاً؟',
'created_label' => 'تم الإنشاء',
'player_assignment_hint' => 'اختر الأطفال الذين سيتم تعيينهم تلقائياً لحساب ولي الأمر الجديد.',
'events_title' => 'الأحداث',
'event_created' => 'تم إنشاء الحدث.',
'event_updated' => 'تم تحديث الحدث.',
'event_deleted' => 'تم حذف الحدث.',
'event_title' => 'العنوان',
'start_at' => 'البداية',
'date' => 'التاريخ',
'time' => 'الوقت',
'end_at' => 'النهاية',
'location_name' => 'اسم الموقع',
'address' => 'العنوان',
'description' => 'الوصف',
'search_address' => 'البحث عن عنوان...',
'new_event_title' => 'حدث جديد',
'edit_event_title' => 'تعديل الحدث',
'no_events_yet' => 'لا توجد أحداث بعد.',
'confirm_delete_event' => 'هل تريد حذف الحدث فعلاً؟',
'location_address' => 'الموقع / العنوان',
'location_name_hint' => 'اسم الموقع (مثلاً: الصالة الرياضية الشمالية)',
'search_by_name' => 'البحث عن العنوان',
'location_name_placeholder' => 'مثال: ملعب BVB، صالة رياضية...',
'search_address_hint' => 'أدخل العنوان (٣ أحرف على الأقل)...',
'description_placeholder' => 'أدخل الوصف...',
'assignments' => 'التعيينات',
'catering_assignment' => 'التموين',
'timekeeper_assignment' => 'ميقاتي',
'geocoding_error' => 'فشل البحث عن العنوان. حاول مرة أخرى.',
'geocoding_rate_limit' => 'طلبات كثيرة جداً. انتظر لحظة.',
'geocoding_no_results' => 'لم يتم العثور على عنوان. كن أكثر تحديداً.',
'min_requirements' => 'الحد الأدنى من المتطلبات',
'min_players' => 'الحد الأدنى للاعبين',
'min_parents' => 'الحد الأدنى للأولياء',
'min_catering' => 'الحد الأدنى للتموين',
'min_timekeepers' => 'الحد الأدنى للميقاتيين',
'event_defaults_title' => 'القيم الافتراضية للحد الأدنى للأحداث',
'event_defaults_description' => 'حدد القيم الافتراضية للحد الأدنى للأحداث الجديدة حسب النوع. يمكن للمسؤولين تغييرها عند الإنشاء.',
// إدارة المواقع
'nav_locations' => 'المواقع',
'locations_title' => 'إدارة المواقع',
'location_add' => 'إضافة موقع جديد',
'location_name_label' => 'الاسم',
'location_save' => 'حفظ',
'location_created' => 'تم إنشاء الموقع.',
'location_updated' => 'تم تحديث الموقع.',
'location_deleted' => 'تم حذف الموقع.',
'location_confirm_delete' => 'هل تريد حقاً حذف هذا الموقع؟',
'locations_empty' => 'لا توجد مواقع بعد.',
'known_locations' => 'مواقع معروفة',
'address_manual_hint' => 'أدخل العنوان يدوياً...',
// الإعدادات
'settings_title' => 'الإعدادات',
'settings_saved' => 'تم حفظ الإعدادات.',
'settings_tab_general' => 'عام',
'settings_tab_legal' => 'قانوني',
'settings_tab_defaults' => 'معايير الأحداث',
'settings_tab_categories' => 'فئات الملفات',
// إدارة الملفات
'nav_files' => 'الملفات',
'files_title' => 'إدارة الملفات',
'upload_file' => 'رفع ملف',
'file_uploaded' => 'تم رفع الملف.',
'file_deleted' => 'تم حذف الملف.',
'file_category' => 'الفئة',
'select_category' => 'اختر الفئة',
'no_files_yet' => 'لا توجد ملفات في هذه الفئة بعد.',
'no_files_at_all' => 'لم يتم رفع أي ملفات بعد.',
'file_size' => 'الحجم',
'uploaded_by' => 'رُفع بواسطة',
'uploaded_at' => 'تاريخ الرفع',
'confirm_delete_file' => 'هل تريد حذف هذا الملف حقاً؟ سيتم إزالة جميع ارتباطات الأحداث.',
'allowed_file_types' => 'أنواع الملفات المسموحة: PDF, DOCX, XLSX, صور (JPG, PNG, GIF, WEBP)',
'max_file_size' => 'الحد الأقصى لحجم الملف: 10 ميجابايت',
'file_categories' => 'فئات الملفات',
'file_categories_description' => 'إدارة فئات الملفات.',
'new_category' => 'فئة جديدة',
'category_name' => 'اسم الفئة',
'category_created' => 'تم إنشاء الفئة.',
'category_updated' => 'تم تحديث الفئة.',
'category_deleted' => 'تم حذف الفئة.',
'category_not_empty' => 'لا يمكن حذف الفئة لأنها تحتوي على ملفات.',
'confirm_delete_category' => 'هل تريد حذف هذه الفئة حقاً؟',
'event_files' => 'الملفات',
'attach_from_library' => 'إرفاق من المكتبة',
'upload_new_file' => 'رفع ملف جديد',
'attached_files' => 'الملفات المرفقة',
'detach_file' => 'إزالة',
'no_attached_files' => 'لا توجد ملفات مرفقة.',
'profile_picture' => 'صورة الملف الشخصي',
'upload_picture' => 'رفع صورة',
'remove_picture' => 'إزالة الصورة',
'picture_uploaded' => 'تم تحديث صورة الملف الشخصي.',
'picture_removed' => 'تم إزالة صورة الملف الشخصي.',
'max_picture_size' => 'حد أقصى 2 ميجابايت (JPG, PNG, GIF, WEBP)',
'html_anchor_hint' => 'تلميح: أضف علامات ربط بسمة id، مثال &lt;h3 id="cookies"&gt;',
// Soft-Delete
'danger_zone' => 'منطقة الخطر',
'delete_user' => 'حذف المستخدم',
'delete_user_hint' => 'سيتم تعطيل المستخدم ويمكن استعادته خلال 7 أيام. ستبقى البيانات التاريخية (التعليقات، المشاركات) محفوظة.',
'delete_player' => 'حذف اللاعب',
'delete_player_hint' => 'سيتم إزالة اللاعب ويمكن استعادته خلال 7 أيام. ستبقى البيانات التاريخية (المشاركات، الأحداث) محفوظة.',
'user_status_label' => 'حالة المستخدم',
'player_status_label' => 'حالة اللاعب',
'deactivate_user_hint' => 'لن يتمكن المستخدم من تسجيل الدخول بعد الآن.',
'activate_user_hint' => 'سيتمكن المستخدم من تسجيل الدخول مرة أخرى.',
'deactivate_player_hint' => 'لن يظهر اللاعب في قوائم المواعيد.',
'activate_player_hint' => 'سيظهر اللاعب في قوائم المواعيد مرة أخرى.',
'player_toggled' => 'اللاعب :status.',
'log_player_toggled' => 'اللاعب :name :status',
'confirm_delete_user' => 'هل أنت متأكد أنك تريد حذف هذا المستخدم؟ يمكن استعادته خلال 7 أيام.',
'confirm_delete_player' => 'هل أنت متأكد أنك تريد حذف هذا اللاعب؟ يمكن استعادته خلال 7 أيام.',
'user_deleted' => 'تم حذف المستخدم.',
'user_restored' => 'تم استعادة المستخدم.',
'player_deleted' => 'تم حذف اللاعب.',
'player_restored' => 'تم استعادة اللاعب.',
'cannot_delete_self' => 'لا يمكنك حذف نفسك.',
'cannot_delete_main_admin' => 'لا يمكن حذف المسؤول الرئيسي.',
'restore_expired' => 'انتهت فترة الاستعادة.',
'trash' => 'سلة المحذوفات',
'restore' => 'استعادة',
'delete' => 'حذف',
'deleted_at' => 'تاريخ الحذف',
// Activity Log
'activity_log_title' => 'سجل النشاط',
'nav_activity_log' => 'سجل النشاط',
'log_category' => 'الفئة',
'log_all_categories' => 'جميع الفئات',
'log_cat_auth' => 'المصادقة',
'log_cat_users' => 'المستخدمون',
'log_cat_players' => 'اللاعبون',
'log_cat_events' => 'المواعيد',
'log_cat_files' => 'الملفات',
'log_cat_settings' => 'الإعدادات',
'log_cat_dsgvo' => 'حماية البيانات',
'log_from' => 'من',
'log_to' => 'إلى',
'log_filter' => 'تصفية',
'log_reset' => 'إعادة تعيين',
'log_time' => 'الوقت',
'log_user' => 'المستخدم',
'log_action' => 'الإجراء',
'log_description' => 'الوصف',
'log_ip' => 'عنوان IP',
'log_system' => 'النظام',
'log_empty' => 'لا توجد سجلات.',
'log_details' => 'تفاصيل',
'log_field' => 'الحقل',
'log_old_value' => 'قبل',
'log_new_value' => 'بعد',
// Log descriptions
'log_login' => ':name قام بتسجيل الدخول',
'log_logout' => ':name قام بتسجيل الخروج',
'log_login_failed' => 'محاولة تسجيل دخول فاشلة لـ :email',
'log_registered' => ':name قام بالتسجيل',
'log_user_updated' => 'تم تحديث المستخدم :name',
'log_user_toggled' => 'المستخدم :name: تم تغيير الحالة إلى :status',
'log_role_changed' => 'تم تغيير دور :name إلى :role',
'log_password_reset' => 'تم إعادة تعيين كلمة مرور :name',
'log_user_deleted' => 'تم حذف المستخدم :name',
'log_user_restored' => 'تم استعادة المستخدم :name',
'log_player_created' => 'تم إنشاء اللاعب :name',
'log_player_updated' => 'تم تحديث اللاعب :name',
'log_player_deleted' => 'تم حذف اللاعب :name',
'log_player_restored' => 'تم استعادة اللاعب :name',
'log_parent_assigned' => 'تم تعيين :parent كوالد لـ :player',
'log_parent_removed' => 'تم إزالة :parent كوالد لـ :player',
'log_event_created' => 'تم إنشاء الموعد ":title"',
'log_event_updated' => 'تم تحديث الموعد ":title"',
'log_event_deleted' => 'تم حذف الموعد ":title"',
'log_participant_changed' => 'تم تغيير حالة المشاركة لـ ":event" إلى :status',
'log_catering_changed' => 'تم تغيير حالة التموين لـ ":event" إلى :status',
'log_timekeeper_changed' => 'تم تغيير حالة الميقاتي لـ ":event" إلى :status',
'log_comment_created' => 'تم إضافة تعليق إلى ":event"',
'log_comment_deleted' => 'تم حذف تعليق من ":event"',
'log_file_uploaded' => 'تم رفع الملف ":name"',
'log_file_deleted' => 'تم حذف الملف ":name"',
'log_settings_updated' => 'تم تحديث الإعدادات',
'log_invitation_created' => 'تم إنشاء دعوة لـ :email',
// الإحصائيات
'nav_statistics' => 'الإحصائيات',
'statistics_title' => 'إحصائيات المباريات',
'total_games' => 'إجمالي المباريات',
'wins' => 'انتصارات',
'losses' => 'خسارات',
'draws' => 'تعادلات',
'win_rate' => 'نسبة الفوز',
'chart_win_loss' => 'انتصارات / خسارات',
'chart_player_participation' => 'مشاركة اللاعبين',
'chart_parent_involvement' => 'مشاركة الأهالي',
'no_games_yet' => 'لا توجد مباريات بعد.',
'filter_from' => 'من',
'filter_to' => 'إلى',
'filter_apply' => 'تصفية',
'filter_reset' => 'إعادة تعيين',
'all_teams' => 'جميع الفرق',
'not_applicable' => 'غ/م',
'min_users' => 'الحد الأدنى للمستخدمين',
'home_short' => 'د',
'away_short' => 'خ',
'player_ranking_title' => 'مشاركة اللاعبين',
'player_ranking_desc' => 'نسبة مشاركة اللاعبين في :count مباراة (محلية وخارجية).',
'games_played' => 'لعب',
'games_assigned' => 'مُعيَّن',
'participation_rate' => 'النسبة',
'parent_ranking_title' => 'مشاركة أولياء الأمور',
'parent_ranking_desc' => 'التموين (:catering فعالية) والتحكيم الزمني (:timekeeper فعالية) — جميع الفعاليات المنشورة.',
'total_contributions' => 'الإجمالي',
'statistics_enabled_label' => 'تفعيل صفحة الإحصائيات',
'statistics_enabled_hint' => 'عند التعطيل، تكون صفحة الإحصائيات مرئية فقط للمشرف.',
// Slogan & Favicon
'slogan_label' => 'الشعار',
'slogan_hint' => 'يُعرض على صفحة تسجيل الدخول وفي التذييل.',
'favicon_label' => 'أيقونة الموقع',
'favicon_hint' => 'ICO, PNG, SVG, JPG (الحد الأقصى 512 كيلوبايت)',
'favicon_current' => 'الأيقونة الحالية',
'favicon_remove' => 'إزالة الأيقونة',
'favicon_uploaded' => 'تم تحديث الأيقونة.',
'favicon_removed' => 'تم إزالة الأيقونة.',
// Undo / Revert
'log_revert' => 'تراجع',
'log_revert_confirm' => 'هل تريد حقاً التراجع عن هذا الإجراء؟',
'log_revert_success' => 'تم التراجع عن الإجراء بنجاح.',
'log_revert_not_possible' => 'لا يمكن التراجع عن هذا الإجراء.',
'log_reverted' => 'تم التراجع: ":desc"',
'event_restored' => 'تمت استعادة الحدث.',
'log_event_restored' => 'تمت استعادة الحدث ":title"',
// الرؤية
'settings_tab_visibility' => 'الرؤية',
'visibility_description' => 'تحكم في الوظائف المرئية لكل دور. يرى المشرفون كل شيء دائماً.',
'visibility_feature_statistics' => 'صفحة الإحصائيات',
'visibility_feature_catering_history' => 'سجل التموين/التوقيت',
// إنشاء القوائم
'nav_list_generator' => 'إنشاء القوائم',
'list_generator_title' => 'إنشاء قائمة',
'list_title' => 'الموضوع',
'list_subtitle' => 'العنوان الفرعي (اختياري)',
'list_notes' => 'ملاحظات / وصف',
'list_source' => 'مصدر الصفوف',
'list_source_players' => 'اللاعبون',
'list_source_parents' => 'أولياء الأمور',
'list_source_freetext' => 'نص حر',
'list_freetext_hint' => 'سطر واحد لكل إدخال',
'list_columns' => 'الأعمدة',
'list_custom_columns' => 'أعمدة إضافية',
'list_add_column' => 'إضافة عمود',
'list_column_name' => 'اسم العمود',
'list_generate' => 'إنشاء القائمة',
'list_result_title' => 'تم إنشاء القائمة',
'list_print' => 'طباعة / حفظ كـ PDF',
'list_new' => 'إنشاء قائمة جديدة',
'list_to_library' => 'إلى مكتبة الملفات',
'list_generated_at' => 'تم الإنشاء في',
'list_all_teams' => 'جميع الفرق',
'list_saved_info' => 'تم حفظ الملف ":name" تلقائياً في المكتبة تحت "عام".',
'list_download_pdf' => 'تحميل PDF',
'list_entries_count' => 'إدخالات',
'log_list_generated' => 'تم إنشاء القائمة ":title"',
'no_entries' => 'لا توجد إدخالات.',
// حماية البيانات GDPR
'dsgvo_title' => 'إقرار الموافقة على حماية البيانات',
'dsgvo_short' => 'GDPR',
'dsgvo_consent_label' => 'تم تأكيد إقرار الموافقة',
'dsgvo_view_document' => 'عرض المستند',
'dsgvo_confirm' => 'تأكيد',
'dsgvo_revoke' => 'إلغاء',
'dsgvo_toggled' => 'تم تحديث حالة حماية البيانات.',
'dsgvo_no_file' => 'لم يتم تحميل أي مستند بعد.',
'dsgvo_no_document' => 'لم يقم المستخدم بتحميل إقرار موافقة بعد.',
'dsgvo_not_confirmed' => 'لم يتم التأكيد بعد. يرجى مراجعة المستند ثم التأكيد.',
'dsgvo_confirmed_info' => 'تم التأكيد بواسطة :name في :date',
'dsgvo_confirmed_tooltip' => 'تم تأكيد موافقة حماية البيانات',
'dsgvo_pending_tooltip' => 'تم تحميل المستند، التأكيد معلق',
'dsgvo_missing_tooltip' => 'لم يتم تحميل مستند',
'dsgvo_events_title' => 'أحداث حماية البيانات (آخر 10)',
'dsgvo_action_dsgvo_consent_uploaded' => 'تم التحميل',
'dsgvo_action_dsgvo_consent_confirmed' => 'تم التأكيد',
'dsgvo_action_dsgvo_consent_revoked' => 'تم الإلغاء',
'dsgvo_action_dsgvo_consent_removed' => 'تمت الإزالة',
'dsgvo_action_account_self_deleted' => 'تم حذف الحساب',
'dsgvo_action_child_auto_deactivated' => 'تم تعطيل الطفل',
'log_dsgvo_consent_uploaded' => ':name قام بتحميل إقرار موافقة',
'log_dsgvo_confirmed' => 'تم تأكيد إقرار موافقة :name',
'log_dsgvo_revoked' => 'تم إلغاء تأكيد إقرار موافقة :name',
'log_dsgvo_consent_removed' => ':name قام بإزالة إقرار الموافقة',
'log_account_self_deleted' => ':name قام بحذف حسابه',
'log_child_auto_deactivated' => 'تم تعطيل اللاعب :child تلقائيًا (الوالد الوحيد :parent حذف الحساب)',
// حماية البيانات - ويدجت الانتظار
'dsgvo_pending_title' => 'حماية البيانات — التأكيد معلق',
'dsgvo_pending_count' => ':count إقرار(ات) معلقة',
'dsgvo_consent_document' => 'إقرار الموافقة على حماية البيانات',
'dsgvo_reject' => 'رفض',
'dsgvo_reject_confirm' => 'هل أنت متأكد أنك تريد رفض إقرار الموافقة هذا؟ سيتم حذف المستند وسيحتاج المستخدم إلى تحميله مرة أخرى.',
'dsgvo_rejected' => 'تم رفض إقرار الموافقة.',
'log_dsgvo_rejected' => 'تم رفض إقرار موافقة :name',
'dsgvo_action_dsgvo_consent_rejected' => 'مرفوض',
'dsgvo_preview_not_available' => 'المعاينة غير متاحة لهذا النوع من الملفات.',
// Factory Reset
'factory_reset_title' => 'إعادة تعيين كاملة',
'factory_reset_description' => 'يعيد تعيين التطبيق بالكامل إلى حالته الأولية. بعد إعادة التعيين، سيبدأ معالج التثبيت من جديد.',
'factory_reset_deletes' => 'سيتم حذف ما يلي نهائياً',
'factory_reset_item_users' => 'جميع المستخدمين (بما في ذلك المدير)',
'factory_reset_item_data' => 'جميع الفرق واللاعبين والمواعيد والتعليقات',
'factory_reset_item_settings' => 'جميع الإعدادات وفئات الملفات',
'factory_reset_item_files' => 'جميع الملفات المرفوعة وصور الملفات الشخصية',
'factory_reset_warning' => 'لا يمكن التراجع عن هذا الإجراء! سيتم إعادة تعيين التطبيق بالكامل وتشغيل معالج التثبيت.',
'factory_reset_confirm' => 'تحذير: سيتم إعادة تعيين التطبيق بالكامل بشكل لا رجعة فيه وحذف جميع البيانات. سيبدأ معالج التثبيت من جديد. هل أنت متأكد؟',
'factory_reset_button' => 'إعادة تعيين التطبيق بالكامل',
// الترخيص والدعم
'settings_tab_license' => 'الترخيص والدعم',
'license_title' => 'مفتاح الترخيص',
'license_description' => 'أدخل مفتاح الترخيص للحصول على الدعم والتحديثات.',
'license_key_label' => 'مفتاح الترخيص',
'license_invalid' => 'مفتاح الترخيص المدخل غير صالح.',
'registration_status' => 'حالة التسجيل',
'registration_active' => 'مسجّل',
'registration_inactive' => 'غير مسجّل',
'register_now' => 'سجّل الآن',
'registration_success' => 'تم تسجيل التثبيت بنجاح.',
'registration_failed' => 'فشل التسجيل. يرجى المحاولة مرة أخرى لاحقاً.',
'version_info' => 'معلومات النظام',
'update_available' => 'تحديث متاح: الإصدار :version',
'update_details' => 'عرض التفاصيل',
'download_update' => 'تحميل التحديث',
'installation_id_label' => 'معرّف التثبيت',
'nav_support' => 'الدعم',
'support_title' => 'تذاكر الدعم',
'support_not_registered' => 'التثبيت غير مسجّل',
'support_register_hint' => 'يجب تسجيل التثبيت لاستخدام الدعم. يتم إرسال البيانات التقنية فقط (اسم التطبيق، الرابط، إصدار PHP).',
'support_new_ticket' => 'إنشاء تذكرة جديدة',
'support_subject' => 'الموضوع',
'support_category' => 'الفئة',
'support_category_bug' => 'تقرير خطأ',
'support_category_feature' => 'طلب ميزة',
'support_category_question' => 'سؤال',
'support_category_other' => 'أخرى',
'support_message' => 'الرسالة',
'support_submit' => 'إرسال التذكرة',
'support_reply' => 'الرد',
'support_send_reply' => 'إرسال الرد',
'support_reply_placeholder' => 'اكتب ردك...',
'support_ticket_created' => 'تم إنشاء التذكرة بنجاح.',
'support_reply_sent' => 'تم إرسال الرد.',
'support_submit_failed' => 'تعذر إنشاء التذكرة. يرجى المحاولة مرة أخرى لاحقاً.',
'support_reply_failed' => 'تعذر إرسال الرد. يرجى المحاولة مرة أخرى لاحقاً.',
'support_ticket_not_found' => 'التذكرة غير موجودة.',
'support_no_tickets' => 'لا توجد تذاكر حتى الآن.',
'support_no_messages' => 'لا توجد رسائل حتى الآن.',
'support_ticket_id' => 'رقم التذكرة',
'support_status' => 'الحالة',
'support_status_open' => 'مفتوحة',
'support_status_in_progress' => 'قيد المعالجة',
'support_status_waiting' => 'في الانتظار',
'support_status_closed' => 'مغلقة',
'support_created_at' => 'تاريخ الإنشاء',
'support_last_reply' => 'آخر رد',
'support_back_to_list' => 'العودة إلى القائمة',
'support_system_info_note' => 'يتم إرسال معلومات النظام تلقائياً.',
'support_sender_support' => 'الدعم',
'support_sender_you' => 'أنت',
'support_ticket_closed' => 'هذه التذكرة مغلقة.',
'installer_register_label' => 'تسجيل التثبيت',
'installer_register_hint' => 'يتيح إشعارات التحديث والدعم. يتم إرسال البيانات التقنية فقط (اسم التطبيق، الرابط، إصدار PHP، إصدار التطبيق).',
'installer_license_label' => 'مفتاح الترخيص (اختياري)',
'installer_license_hint' => 'يمكن إدخاله لاحقاً في الإعدادات.',
// إعادة تعيين كلمة المرور (المسؤول + الخدمة الذاتية)
'settings_tab_maintenance' => 'الصيانة',
'factory_reset_password_label' => 'كلمة المرور الخاصة بك للتأكيد',
'factory_reset_confirmation_label' => 'تأكيد الأمان',
'factory_reset_confirmation_hint' => 'اكتب RESET-BESTÄTIGT لتأكيد العملية.',
'password_reset_link_sent' => 'تم إرسال رابط إعادة تعيين كلمة المرور عبر البريد الإلكتروني.',
'password_reset_email_label' => 'قالب بريد إعادة تعيين كلمة المرور',
'password_reset_email_hint' => 'المتغيرات: {name} = اسم المستخدم، {link} = رابط إعادة التعيين، {app_name} = اسم التطبيق',
'log_password_reset_requested' => 'تم طلب إعادة تعيين كلمة المرور',
'log_password_changed_self' => ':name غيّر كلمة المرور',
'log_dsgvo_viewed' => 'تم عرض مستند GDPR للمستخدم :name',
// محرر النصوص القانونية متعدد اللغات
'legal_language_label' => 'اللغة',
'legal_impressum_label' => 'بيان قانوني',
'legal_datenschutz_label' => 'سياسة الخصوصية',
'legal_password_reset_email_label' => 'بريد إعادة تعيين كلمة المرور',
// تبويب البريد الإلكتروني
'settings_tab_mail' => 'البريد الإلكتروني',
'mail_config_title' => 'إعدادات البريد الإلكتروني',
'mail_config_hint' => 'إعدادات SMTP لإرسال رسائل البريد الإلكتروني (مثل إعادة تعيين كلمة المرور والإشعارات).',
'mail_mailer_label' => 'طريقة الإرسال',
'mail_log_mode' => 'بدون إرسال (سجل)',
'mail_host_label' => 'مضيف SMTP',
'mail_port_label' => 'المنفذ',
'mail_username_label' => 'اسم المستخدم',
'mail_password_label' => 'كلمة المرور',
'mail_from_address_label' => 'عنوان المرسل',
'mail_from_name_label' => 'اسم المرسل',
'mail_encryption_label' => 'التشفير',
'mail_encryption_none' => 'بدون',
'mail_save' => 'حفظ إعدادات البريد',
'mail_saved' => 'تم حفظ إعدادات البريد الإلكتروني.',
'mail_test_button' => 'اختبار الاتصال',
'mail_testing' => 'جاري اختبار الاتصال...',
'mail_test_success' => 'اتصال SMTP ناجح!',
];

7
lang/ar/auth.php Executable file
View File

@@ -0,0 +1,7 @@
<?php
return [
'failed' => 'بيانات الاعتماد هذه غير متطابقة مع سجلاتنا.',
'password' => 'كلمة المرور المدخلة غير صحيحة.',
'throttle' => 'محاولات تسجيل دخول كثيرة جداً. يرجى المحاولة مرة أخرى بعد :seconds ثانية.',
];

34
lang/ar/auth_ui.php Executable file
View File

@@ -0,0 +1,34 @@
<?php
return [
'login_title' => 'تسجيل الدخول',
'email_label' => 'البريد الإلكتروني',
'password_label' => 'كلمة المرور',
'remember_me' => 'تذكرني',
'login_button' => 'تسجيل الدخول',
'register_title' => 'إنشاء حساب',
'name_label' => 'الاسم',
'children_assigned' => 'سيتم ربط حسابك بالأطفال التالية أسماؤهم:',
'password_min' => '(٨ أحرف على الأقل)',
'password_confirm_label' => 'تأكيد كلمة المرور',
'create_account' => 'إنشاء الحساب',
'already_registered' => 'لديك حساب بالفعل؟',
'go_to_login' => 'تسجيل الدخول',
'email_fixed_by_invitation' => 'عنوان البريد الإلكتروني محدد بواسطة الدعوة.',
'invalid_invitation' => 'رابط الدعوة هذا غير صالح أو منتهي الصلاحية.',
'welcome' => 'مرحباً! تم إنشاء حسابك بنجاح.',
'forgot_password_link' => 'نسيت كلمة المرور؟',
'forgot_password_title' => 'إعادة تعيين كلمة المرور',
'forgot_password_description' => 'أدخل عنوان بريدك الإلكتروني وسنرسل لك رابطاً لإعادة تعيين كلمة المرور.',
'send_reset_link' => 'إرسال الرابط',
'back_to_login' => 'العودة لتسجيل الدخول',
'reset_password_title' => 'تعيين كلمة مرور جديدة',
'reset_password_button' => 'إعادة تعيين كلمة المرور',
'new_password_label' => 'كلمة المرور الجديدة',
'confirm_password_label' => 'تأكيد كلمة المرور',
'login_failed' => 'بيانات الاعتماد غير صالحة.',
'email_must_match_invitation' => 'يجب أن يتطابق عنوان البريد الإلكتروني مع الدعوة: :email',
'cookie_notice' => 'يستخدم هذا الموقع فقط ملف تعريف ارتباط جلسة ضروري تقنياً. لا يوجد تتبع.',
'cookie_notice_link' => 'اقرأ المزيد',
'account_deactivated' => 'تم تعطيل حسابك. يرجى التواصل مع المسؤول.',
];

64
lang/ar/events.php Executable file
View File

@@ -0,0 +1,64 @@
<?php
return [
'title' => 'المواعيد',
'no_events' => 'لم يتم العثور على مواعيد.',
'no_upcoming' => 'لا توجد مواعيد قادمة.',
'upcoming_title' => 'المواعيد القادمة',
'cancelled_label' => 'ملغى',
'draft_label' => 'مسودة',
'cancelled_banner' => 'تم إلغاء هذا الموعد.',
'draft_banner' => 'مسودة — مرئي للمسؤولين فقط.',
'back_to_list' => 'العودة إلى قائمة المواعيد',
'description' => 'الوصف',
'plan_route' => 'تخطيط المسار',
'start_navigation' => 'بدء الملاحة',
'participants' => 'المشاركون',
'confirmations' => 'تأكيدات الحضور',
'rejections' => 'الاعتذارات',
'open_responses' => 'مفتوح',
'participation_updated' => 'تم تحديث المشاركة.',
'catering' => 'التموين / الطعام',
'bring_something' => 'سأحضر شيئاً',
'bring_nothing' => 'لن أحضر شيئاً',
'catering_note_placeholder' => 'مثلاً: سأحضر كعكة',
'catering_updated' => 'تم تحديث حالة التموين.',
'no_catering_yet' => 'لا توجد تأكيدات للتموين بعد.',
'timekeeper' => 'ميقاتي',
'timekeeper_yes' => 'نعم، أستطيع',
'timekeeper_no' => 'لا',
'catering_short' => 'تموين',
'timekeeper_short' => 'ميقاتي',
'no_timekeeper_yet' => 'لم يتم تعيين ميقاتي بعد.',
'timekeeper_updated' => 'تم تحديث حالة الميقاتي.',
'comments' => 'التعليقات',
'comment_placeholder' => 'اكتب تعليقاً...',
'no_comments' => 'لا توجد تعليقات بعد.',
'comment_deleted' => '[محذوف]',
'confirm_delete_comment' => 'حذف التعليق؟',
'comment_added' => 'تمت إضافة التعليق.',
'comment_removed' => 'تم حذف التعليق.',
'hello_user' => 'مرحباً، :name!',
'upcoming_events' => 'المواعيد القادمة',
'calendar' => 'التقويم',
'today' => 'اليوم',
'month_view' => 'شهر',
'year_view' => 'سنة',
// الملفات
'files' => 'الملفات',
'download' => 'تحميل',
'no_files' => 'لا توجد ملفات مرفقة.',
// الخصم والنتيجة
'opponent' => 'الخصم',
'score' => 'النتيجة',
'score_home' => 'الفريق المضيف',
'score_away' => 'الفريق الضيف',
'vs' => 'ضد',
// Staff visibility
'signed_up' => 'سجّل',
'withdrawn' => 'انسحب',
'deleted_label' => 'محذوف',
];

6
lang/ar/pagination.php Executable file
View File

@@ -0,0 +1,6 @@
<?php
return [
'previous' => '&laquo; السابق',
'next' => 'التالي &raquo;',
];

14
lang/ar/passwords.php Executable file
View File

@@ -0,0 +1,14 @@
<?php
return [
'reset' => 'تم إعادة تعيين كلمة المرور.',
'sent' => 'تم إرسال رابط إعادة تعيين كلمة المرور إلى بريدك الإلكتروني.',
'throttled' => 'يرجى الانتظار قبل المحاولة مرة أخرى.',
'token' => 'رمز إعادة تعيين كلمة المرور هذا غير صالح.',
'user' => 'لم يتم العثور على مستخدم بهذا البريد الإلكتروني.',
'reset_subject' => 'إعادة تعيين كلمة المرور — :app',
'reset_greeting' => 'مرحباً :name،',
'reset_line1' => 'لقد تلقيت هذا البريد الإلكتروني لأنه تم طلب إعادة تعيين كلمة المرور لحسابك.',
'reset_line2' => 'ستنتهي صلاحية رابط إعادة التعيين بعد :count دقيقة.',
'reset_line3' => 'إذا لم تطلب إعادة تعيين كلمة المرور، يمكنك تجاهل هذا البريد.',
];

44
lang/ar/profile.php Executable file
View File

@@ -0,0 +1,44 @@
<?php
return [
'title' => 'ملفي الشخصي',
'name_label' => 'الاسم',
'email_label' => 'البريد الإلكتروني',
'email_readonly' => 'لا يمكن تغيير عنوان البريد الإلكتروني.',
'phone_label' => 'الهاتف (المحمول)',
'role_label' => 'الدور',
'language_label' => 'اللغة',
'my_children' => 'أطفالي',
'updated' => 'تم تحديث الملف الشخصي.',
// صورة الملف الشخصي
'profile_picture' => 'صورة الملف الشخصي',
'upload_picture' => 'رفع صورة',
'remove_picture' => 'إزالة الصورة',
'max_picture_size' => 'حد أقصى 2 ميجابايت (JPG, PNG, GIF, WEBP)',
// موافقة GDPR
'dsgvo_title' => 'إقرار الموافقة على حماية البيانات',
'dsgvo_description' => 'قم بتحميل إقرار الموافقة الموقّع كصورة أو ملف PDF هنا. إقرار واحد يسري لكلا الوالدين معًا.',
'dsgvo_upload' => 'تحميل الإقرار',
'dsgvo_replace' => 'استبدال',
'dsgvo_remove' => 'إزالة الإقرار',
'dsgvo_file_hint' => 'PDF أو صورة (بحد أقصى 10 ميجابايت)',
'dsgvo_uploaded' => 'تم تحميل إقرار الموافقة.',
'dsgvo_removed' => 'تم إزالة إقرار الموافقة.',
'dsgvo_view' => 'عرض',
'dsgvo_confirmed' => 'مؤكّد',
'dsgvo_pending' => 'في انتظار التأكيد من المسؤول/المدرب',
'dsgvo_confirmed_by' => 'تم التأكيد بواسطة :name في :date',
'dsgvo_confirm_remove' => 'هل تريد حقًا إزالة إقرار الموافقة؟ سيتم إعادة تعيين أي تأكيد موجود أيضًا.',
// حذف الحساب
'danger_zone' => 'منطقة الخطر',
'delete_account' => 'حذف الحساب',
'delete_account_hint' => 'سيتم تعطيل ملفك الشخصي ويمكن للمسؤول استعادته خلال 7 أيام. البيانات التاريخية (التعليقات، المشاركات) ستبقى محفوظة.',
'delete_warning_children' => 'تحذير: أنت الوالد الوحيد للأطفال التالين. سيتم تعطيلهم أيضًا:',
'delete_confirm' => 'هل تريد حقًا حذف حسابك؟ يمكن التراجع عن هذا فقط بواسطة المسؤول.',
'account_deleted' => 'تم حذف حسابك.',
'cannot_delete_admin' => 'لا يمكن حذف حساب المسؤول.',
'cannot_delete_staff' => 'لا يمكن للمدربين والمسؤولين حذف حسابهم عبر صفحة الملف الشخصي.',
];

109
lang/ar/ui.php Executable file
View File

@@ -0,0 +1,109 @@
<?php
return [
'dashboard' => 'لوحة التحكم',
'events' => 'المواعيد',
'admin' => 'الإدارة',
'profile' => 'الملف الشخصي',
'logout' => 'تسجيل الخروج',
'back_to_app' => 'العودة إلى التطبيق',
'login' => 'تسجيل الدخول',
'save' => 'حفظ',
'cancel' => 'إلغاء',
'edit' => 'تعديل',
'delete' => 'حذف',
'create' => 'إنشاء',
'filter' => 'تصفية',
'send' => 'إرسال',
'back' => 'رجوع',
'yes' => 'نعم',
'no' => 'لا',
'open' => 'مفتوح',
'all_teams' => 'جميع الفرق',
'all_types' => 'جميع الأنواع',
'upcoming' => 'القادمة',
'past' => 'السابقة',
'period' => 'الفترة',
'team' => 'الفريق',
'type' => 'النوع',
'name' => 'الاسم',
'email' => 'البريد الإلكتروني',
'password' => 'كلمة المرور',
'role' => 'الدور',
'language' => 'اللغة',
'impressum' => 'بيانات الموقع',
'privacy' => 'سياسة الخصوصية',
'no_entries' => 'لا توجد إدخالات.',
'clock' => '',
'date_format' => 'D، d/m/Y، H:i',
'date_format_long' => 'l، d. F Y، H:i',
'date_format_short' => 'd/m/Y H:i',
'date_format_date' => 'd/m/Y',
'footer_impressum' => 'بيانات الموقع',
'footer_privacy' => 'سياسة الخصوصية',
'pwa_install_title' => 'تثبيت التطبيق',
'pwa_install_text' => 'أضف التطبيق إلى شاشتك الرئيسية للوصول السريع.',
'pwa_install_btn' => 'تثبيت',
'pwa_ios_steps' => 'اضغط على <strong>⋯</strong> (القائمة)، ثم <strong>⬆</strong> (مشاركة) واختر «إضافة إلى الشاشة الرئيسية».',
'error_403_title' => 'الوصول مرفوض',
'error_403_text' => 'ليس لديك صلاحية للوصول إلى هذه الصفحة.',
'error_404_title' => 'الصفحة غير موجودة',
'error_404_text' => 'لم يتم العثور على الصفحة المطلوبة.',
'error_500_title' => 'خطأ في الخادم',
'error_500_text' => 'حدث خطأ داخلي. يرجى المحاولة مرة أخرى لاحقاً.',
'back_to_dashboard' => 'العودة إلى لوحة التحكم',
'enums' => [
'event_type' => [
'home_game' => 'مباراة على أرضنا',
'away_game' => 'مباراة خارج الأرض',
'training' => 'تدريب',
'tournament' => 'بطولة',
'meeting' => 'اجتماع',
'other' => 'أخرى',
],
'event_status' => [
'published' => 'منشور',
'cancelled' => 'ملغى',
'draft' => 'مسودة',
],
'participant_status' => [
'yes' => 'مؤكد',
'no' => 'معتذر',
'unknown' => 'مفتوح',
],
'catering_status' => [
'yes' => 'نعم',
'no' => 'لا',
'unknown' => 'مفتوح',
],
'user_role' => [
'admin' => 'مدير',
'coach' => 'مدرب',
'parent_rep' => 'ممثل أولياء الأمور',
'user' => 'ولي أمر',
],
],
'locales' => [
'de' => 'Deutsch',
'en' => 'English',
'pl' => 'Polski',
'ru' => 'Русский',
'ar' => 'العربية',
'tr' => 'Türkçe',
],
// شعار حماية البيانات
'dsgvo_banner_title' => 'مطلوب إقرار الموافقة على حماية البيانات (DSGVO)',
'dsgvo_banner_text' => 'يجب تقديم إقرار موافقة موقّع على حماية البيانات لاستخدام هذا التطبيق. يرجى تحميل الإقرار كصورة أو ملف PDF في ملفك الشخصي. لا يمكن استخدام التطبيق بالكامل إلا بعد التحميل.',
'dsgvo_banner_action' => 'تحميل في الملف الشخصي الآن',
'dsgvo_banner_pending_title' => 'إقرار الموافقة قيد المراجعة',
'dsgvo_banner_pending_text' => 'تم تقديم إقرار الموافقة على حماية البيانات الخاص بك وهو قيد المراجعة. حتى يتم التأكيد من قبل المسؤول، يعمل التطبيق في وضع القراءة فقط — المشاركة والتموين والتوقيت والتعليقات مقفلة.',
'dsgvo_restricted' => 'لم يتم تأكيد إقرار الموافقة على حماية البيانات الخاص بك بعد. يرجى الانتظار حتى الموافقة من قبل المسؤول.',
'dsgvo_restricted_hint' => 'إقرار حماية البيانات غير مؤكد — الإجراءات مقفلة.',
// الملفات
'files' => 'الملفات',
'download' => 'تحميل',
'all' => 'الكل',
'close' => 'إغلاق',
];

130
lang/ar/validation.php Executable file
View File

@@ -0,0 +1,130 @@
<?php
return [
'accepted' => 'يجب قبول :attribute.',
'active_url' => ':attribute ليس عنوان URL صالحاً.',
'after' => ':attribute يجب أن يكون تاريخاً بعد :date.',
'after_or_equal' => ':attribute يجب أن يكون تاريخاً بعد أو يساوي :date.',
'alpha' => ':attribute يجب أن يحتوي على أحرف فقط.',
'alpha_dash' => ':attribute يجب أن يحتوي على أحرف وأرقام وشرطات وشرطات سفلية فقط.',
'alpha_num' => ':attribute يجب أن يحتوي على أحرف وأرقام فقط.',
'array' => ':attribute يجب أن يكون مصفوفة.',
'before' => ':attribute يجب أن يكون تاريخاً قبل :date.',
'before_or_equal' => ':attribute يجب أن يكون تاريخاً قبل أو يساوي :date.',
'between' => [
'numeric' => ':attribute يجب أن يكون بين :min و :max.',
'file' => ':attribute يجب أن يكون بين :min و :max كيلوبايت.',
'string' => ':attribute يجب أن يكون بين :min و :max حرفاً.',
'array' => ':attribute يجب أن يحتوي على بين :min و :max عنصراً.',
],
'boolean' => ':attribute يجب أن يكون صحيحاً أو خاطئاً.',
'confirmed' => 'تأكيد :attribute غير متطابق.',
'date' => ':attribute ليس تاريخاً صالحاً.',
'date_equals' => ':attribute يجب أن يكون تاريخاً مساوياً لـ :date.',
'date_format' => ':attribute لا يتوافق مع الصيغة :format.',
'different' => ':attribute و :other يجب أن يكونا مختلفين.',
'digits' => ':attribute يجب أن يتكون من :digits رقماً.',
'digits_between' => ':attribute يجب أن يتكون من بين :min و :max رقماً.',
'email' => ':attribute يجب أن يكون عنوان بريد إلكتروني صالحاً.',
'exists' => 'القيمة المختارة لـ :attribute غير صالحة.',
'file' => ':attribute يجب أن يكون ملفاً.',
'filled' => ':attribute يجب أن يحتوي على قيمة.',
'gt' => [
'numeric' => ':attribute يجب أن يكون أكبر من :value.',
'file' => ':attribute يجب أن يكون أكبر من :value كيلوبايت.',
'string' => ':attribute يجب أن يحتوي على أكثر من :value حرفاً.',
'array' => ':attribute يجب أن يحتوي على أكثر من :value عنصراً.',
],
'gte' => [
'numeric' => ':attribute يجب أن يكون أكبر من أو يساوي :value.',
'file' => ':attribute يجب أن يكون أكبر من أو يساوي :value كيلوبايت.',
'string' => ':attribute يجب أن يحتوي على :value حرفاً على الأقل.',
'array' => ':attribute يجب أن يحتوي على :value عنصراً على الأقل.',
],
'image' => ':attribute يجب أن يكون صورة.',
'in' => 'القيمة المختارة لـ :attribute غير صالحة.',
'in_array' => ':attribute غير موجود في :other.',
'integer' => ':attribute يجب أن يكون عدداً صحيحاً.',
'ip' => ':attribute يجب أن يكون عنوان IP صالحاً.',
'json' => ':attribute يجب أن يكون نص JSON صالحاً.',
'lt' => [
'numeric' => ':attribute يجب أن يكون أقل من :value.',
'file' => ':attribute يجب أن يكون أقل من :value كيلوبايت.',
'string' => ':attribute يجب أن يحتوي على أقل من :value حرفاً.',
'array' => ':attribute يجب أن يحتوي على أقل من :value عنصراً.',
],
'lte' => [
'numeric' => ':attribute يجب أن يكون أقل من أو يساوي :value.',
'file' => ':attribute يجب أن يكون أقل من أو يساوي :value كيلوبايت.',
'string' => ':attribute يجب ألا يتجاوز :value حرفاً.',
'array' => ':attribute يجب ألا يتجاوز :value عنصراً.',
],
'max' => [
'numeric' => ':attribute يجب ألا يكون أكبر من :max.',
'file' => ':attribute يجب ألا يكون أكبر من :max كيلوبايت.',
'string' => ':attribute يجب ألا يتجاوز :max حرفاً.',
'array' => ':attribute يجب ألا يتجاوز :max عنصراً.',
],
'min' => [
'numeric' => ':attribute يجب أن يكون :min على الأقل.',
'file' => ':attribute يجب أن يكون :min كيلوبايت على الأقل.',
'string' => ':attribute يجب أن يحتوي على :min حرفاً على الأقل.',
'array' => ':attribute يجب أن يحتوي على :min عنصراً على الأقل.',
],
'not_in' => 'القيمة المختارة لـ :attribute غير صالحة.',
'numeric' => ':attribute يجب أن يكون رقماً.',
'present' => ':attribute يجب أن يكون موجوداً.',
'regex' => 'صيغة :attribute غير صالحة.',
'required' => ':attribute مطلوب.',
'required_if' => ':attribute مطلوب عندما يكون :other هو :value.',
'required_unless' => ':attribute مطلوب ما لم يكن :other ضمن :values.',
'required_with' => ':attribute مطلوب عند وجود :values.',
'required_with_all' => ':attribute مطلوب عند وجود :values.',
'required_without' => ':attribute مطلوب عند عدم وجود :values.',
'required_without_all' => ':attribute مطلوب عند عدم وجود أي من :values.',
'same' => ':attribute و :other يجب أن يتطابقا.',
'size' => [
'numeric' => ':attribute يجب أن يكون :size.',
'file' => ':attribute يجب أن يكون :size كيلوبايت.',
'string' => ':attribute يجب أن يتكون من :size حرفاً.',
'array' => ':attribute يجب أن يحتوي على :size عنصراً.',
],
'string' => ':attribute يجب أن يكون نصاً.',
'timezone' => ':attribute يجب أن يكون منطقة زمنية صالحة.',
'unique' => ':attribute مستخدم بالفعل.',
'url' => ':attribute يجب أن يكون عنوان URL صالحاً.',
'password' => [
'letters' => ':attribute يجب أن يحتوي على حرف واحد على الأقل.',
'mixed' => ':attribute يجب أن يحتوي على حرف كبير وحرف صغير على الأقل.',
'numbers' => ':attribute يجب أن يحتوي على رقم واحد على الأقل.',
'symbols' => ':attribute يجب أن يحتوي على رمز واحد على الأقل.',
'uncompromised' => ':attribute ظهر في تسريب بيانات. يرجى اختيار كلمة مرور مختلفة.',
],
'attributes' => [
'name' => 'الاسم',
'email' => 'البريد الإلكتروني',
'password' => 'كلمة المرور',
'password_confirmation' => 'تأكيد كلمة المرور',
'title' => 'العنوان',
'body' => 'الرسالة',
'type' => 'النوع',
'status' => 'الحالة',
'team_id' => 'الفريق',
'start_date' => 'التاريخ',
'start_time' => 'الوقت',
'location_name' => 'الموقع',
'address_text' => 'العنوان',
'description_html' => 'الوصف',
'first_name' => 'الاسم الأول',
'last_name' => 'اسم العائلة',
'birth_year' => 'سنة الميلاد',
'jersey_number' => 'رقم القميص',
'note' => 'ملاحظة',
'season' => 'الموسم',
'player_id' => 'اللاعب',
'parent_id' => 'ولي الأمر',
'relationship_label' => 'صلة القرابة',
],
];

585
lang/de/admin.php Executable file
View File

@@ -0,0 +1,585 @@
<?php
return [
// Dashboard
'dashboard_title' => 'Admin-Dashboard',
'stat_users' => 'Benutzer',
'stat_players' => 'Spieler',
'stat_upcoming' => 'Anstehende Termine',
'stat_invitations' => 'Offene Einladungen',
'quick_links' => 'Schnellzugriff',
'new_event' => 'Neuer Termin',
'new_player' => 'Neuer Spieler',
'new_invitation' => 'Neue Einladung',
'new_team' => 'Neues Team',
'open_responses_title' => 'Termine mit offenen Rückmeldungen',
'x_open' => ':count offen',
// Navigation
'nav_teams' => 'Teams',
'nav_players' => 'Spieler',
'nav_users' => 'Benutzer',
'nav_invitations' => 'Einladungen',
'nav_events' => 'Events',
'nav_settings' => 'Einstellungen',
'nav_verwaltung' => 'Verwaltung',
// Allgemein
'actions' => 'Aktionen',
'action' => 'Aktion',
'please_select' => 'Bitte wählen',
'back_to_list' => 'Zurück zur Liste',
'inactive' => 'Inaktiv',
'nr' => 'Nr.',
'photo' => 'Foto',
'date' => 'Datum',
'location' => 'Ort',
'all_status' => 'Alle Status',
'copied' => 'Kopiert!',
'copy' => 'Kopieren',
'created_by' => 'von',
'valid_until' => 'gültig bis',
// Teams
'teams_title' => 'Teams',
'team_created' => 'Team wurde erstellt.',
'team_updated' => 'Team wurde aktualisiert.',
'team_name' => 'Teamname',
'year_group' => 'Jahrgang',
'year_group_placeholder' => 'z.B. 2017/18',
'active' => 'Aktiv',
'team_is_active' => 'Team ist aktiv',
'create_team' => 'Team erstellen',
'edit_team' => 'Team bearbeiten',
'no_teams_yet' => 'Noch keine Teams vorhanden.',
'team_notes' => 'Notizen',
'team_notes_placeholder' => 'Notizen zum Team (intern, nur für Admins sichtbar)...',
'team_coaches' => 'Trainer',
'no_coaches_available' => 'Keine Trainer im System vorhanden.',
'team_players' => 'Spieler',
'team_parent_reps' => 'Elternvertretung',
'team_parent_reps_hint' => 'Eltern mit der Rolle "Elternvertretung", die Kinder in diesem Team haben.',
'no_parent_reps' => 'Keine Elternvertretung für dieses Team.',
'log_team_updated' => 'Team ":name" wurde aktualisiert',
'log_player_team_changed' => 'Spieler :name wurde in ein anderes Team verschoben',
// Players
'players_title' => 'Spieler',
'player_created' => 'Spieler wurde erstellt.',
'player_updated' => 'Spieler wurde aktualisiert.',
'first_name' => 'Vorname',
'last_name' => 'Nachname',
'birth_year' => 'Geburtsjahr',
'jersey_number' => 'Trikotnummer',
'photo_permission' => 'Fotoerlaubnis',
'notes' => 'Notizen',
'parent_assigned' => 'Elternteil wurde zugeordnet.',
'parent_removed' => 'Zuordnung wurde entfernt.',
'assign_parent' => 'Elternteil zuordnen',
'add_parent' => 'Elternteil hinzufügen',
'select_user' => 'Benutzer wählen',
'assign' => 'Zuordnen',
'relationship_label' => 'Beziehung',
'relationship_placeholder' => 'z.B. Mutter, Vater',
'parents' => 'Eltern',
'player_data' => 'Stammdaten',
'parent_assignment' => 'Eltern-Zuordnung',
'no_parents_yet' => 'Noch keine Eltern zugeordnet.',
'confirm_remove_parent' => 'Zuordnung wirklich entfernen?',
'remove' => 'Entfernen',
'no_players_yet' => 'Noch keine Spieler vorhanden.',
// Users
'users_title' => 'Benutzer',
'user_toggled' => 'Benutzer wurde :status.',
'role_updated' => 'Rolle wurde aktualisiert.',
'cannot_deactivate_self' => 'Du kannst deinen eigenen Account nicht deaktivieren.',
'cannot_change_own_role' => 'Du kannst deine eigene Rolle nicht ändern.',
'activated' => 'aktiviert',
'deactivated' => 'deaktiviert',
'deactivated_label' => 'Deaktiviert',
'children' => 'Kinder',
'phone' => 'Erreichbarkeit',
'last_login' => 'Letzter Login',
'never' => 'Nie',
'deactivate' => 'Deaktivieren',
'activate' => 'Aktivieren',
'you_suffix' => '(du)',
'edit' => 'Bearbeiten',
'edit_user' => 'Benutzer bearbeiten',
'user_data' => 'Benutzerdaten',
'user_updated' => 'Benutzer wurde aktualisiert.',
'reset_password' => 'Passwort zurücksetzen',
'reset_password_hint' => 'Sendet dem Benutzer einen Link zum Zurücksetzen des Passworts per E-Mail.',
'reset_password_confirm' => 'Dem Benutzer einen Passwort-Reset-Link per E-Mail senden?',
'password_reset_success' => 'Neues Passwort wurde generiert.',
'new_password_label' => 'Neues Passwort (einmalig sichtbar):',
'password_only_visible_now' => 'Dieses Passwort wird nur jetzt angezeigt. Bitte weitergeben und Seite nicht neu laden.',
'cannot_edit_own_role' => 'Du kannst deine eigene Rolle nicht hier ändern.',
'cannot_assign_admin_role' => 'Du kannst die Admin-Rolle nicht vergeben.',
'cannot_reset_own_password' => 'Du kannst dein eigenes Passwort nicht über den Admin-Bereich zurücksetzen.',
'registered_at' => 'Registriert am',
// Invitations
'invitations_title' => 'Einladungen',
'invitation_created' => 'Einladung erstellt. Link: :link',
'invitation_deleted' => 'Einladung wurde gelöscht.',
'invitation_already_used' => 'Bereits eingelöste Einladungen können nicht gelöscht werden.',
'create_invitation' => 'Einladung erstellen',
'assign_players' => 'Spieler zuordnen',
'email_optional' => 'E-Mail-Adresse (optional)',
'email_optional_hint' => 'Wenn gesetzt, kann nur diese E-Mail sich registrieren',
'expires_at' => 'Gültig bis',
'valid_for_days' => 'Gültig für (Tage)',
'token' => 'Token',
'status' => 'Status',
'used' => 'Eingelöst',
'expired' => 'Abgelaufen',
'pending' => 'Offen',
'copy_link' => 'Link kopieren',
'invite_link' => 'Einladungslink',
'no_assignment' => 'Keine Zuordnung',
'no_invitations_yet' => 'Noch keine Einladungen erstellt.',
'no_active_players' => 'Keine aktiven Spieler vorhanden.',
'confirm_delete_invitation' => 'Einladung wirklich löschen?',
'created_label' => 'Erstellt',
'player_assignment_hint' => 'Wähle die Kinder aus, die dem neuen Eltern-Account automatisch zugeordnet werden sollen.',
// Events
'events_title' => 'Events',
'event_created' => 'Event wurde erstellt.',
'event_updated' => 'Event wurde aktualisiert.',
'event_deleted' => 'Event wurde gelöscht.',
'event_title' => 'Titel',
'start_at' => 'Start',
'date' => 'Datum',
'time' => 'Uhrzeit',
'end_at' => 'Ende',
'location_name' => 'Ortsname',
'address' => 'Adresse',
'description' => 'Beschreibung',
'search_address' => 'Adresse suchen...',
'new_event_title' => 'Neues Event',
'edit_event_title' => 'Event bearbeiten',
'no_events_yet' => 'Noch keine Events vorhanden.',
'confirm_delete_event' => 'Event wirklich löschen?',
'location_address' => 'Ort / Adresse',
'location_name_hint' => 'Ortsname (z.B. Sporthalle Nord)',
'search_by_name' => 'Adresse suchen',
'location_name_placeholder' => 'z.B. BVB Stadion, Sporthalle West...',
'search_address_hint' => 'Adresse eingeben (min. 3 Zeichen)...',
'description_placeholder' => 'Beschreibung eingeben...',
'assignments' => 'Zuweisungen',
'catering_assignment' => 'Catering',
'timekeeper_assignment' => 'Zeitnehmer',
'geocoding_error' => 'Adresssuche fehlgeschlagen. Bitte erneut versuchen.',
'geocoding_rate_limit' => 'Zu viele Anfragen. Bitte kurz warten.',
'geocoding_no_results' => 'Keine Adresse gefunden. Bitte genauer eingeben.',
// Mindestanforderungen
'min_requirements' => 'Mindestanforderungen',
'min_players' => 'Min. Spieler',
'min_parents' => 'Min. Eltern',
'min_catering' => 'Min. Catering',
'min_timekeepers' => 'Min. Zeitnehmer',
'event_defaults_title' => 'Standard-Mindestwerte für Events',
'event_defaults_description' => 'Lege Standard-Mindestwerte für neue Events pro Typ fest. Admins können diese beim Erstellen überschreiben.',
// Orte-Verwaltung
'nav_locations' => 'Orte',
'locations_title' => 'Orte verwalten',
'location_add' => 'Neuen Ort anlegen',
'location_name_label' => 'Name',
'location_save' => 'Speichern',
'location_created' => 'Ort wurde angelegt.',
'location_updated' => 'Ort wurde aktualisiert.',
'location_deleted' => 'Ort wurde gelöscht.',
'location_confirm_delete' => 'Ort wirklich löschen?',
'locations_empty' => 'Noch keine Orte vorhanden.',
'known_locations' => 'Bekannte Orte',
'address_manual_hint' => 'Adresse manuell eingeben...',
// Settings
'settings_title' => 'Einstellungen',
'settings_saved' => 'Einstellungen gespeichert.',
'settings_tab_general' => 'Allgemein',
'settings_tab_legal' => 'Rechtliches',
'settings_tab_defaults' => 'Event-Standards',
'settings_tab_categories' => 'Dateikategorien',
'settings_tab_maintenance' => 'Wartung',
// Demo-Daten löschen
'demo_data_delete_title' => 'Beispieldaten löschen',
'demo_data_delete_description' => 'Entferne alle Beispieldaten, die bei der Installation angelegt wurden. Die App wird auf den Zustand direkt nach der Installation zurückgesetzt.',
'demo_data_delete_warning' => 'Achtung: Dieser Vorgang kann nicht rückgängig gemacht werden! Alle Benutzer (außer dem Administrator), Teams, Spieler, Termine, Kommentare, Dateien und Aktivitätsprotokolle werden unwiderruflich gelöscht.',
'demo_data_delete_button' => 'Alle Beispieldaten löschen',
'demo_data_delete_confirm' => 'Bist du sicher, dass du ALLE Beispieldaten unwiderruflich löschen möchtest?',
'demo_data_deleted' => 'Alle Beispieldaten wurden erfolgreich gelöscht.',
'demo_data_deletes' => 'Wird gelöscht:',
'demo_data_keeps' => 'Bleibt erhalten:',
'demo_data_except_admin' => 'außer Administrator',
'demo_data_keeps_admin' => 'Dein Administrator-Konto',
// Dateiverwaltung
'nav_files' => 'Dateien',
'files_title' => 'Dateiverwaltung',
'upload_file' => 'Datei hochladen',
'file_uploaded' => 'Datei wurde hochgeladen.',
'file_deleted' => 'Datei wurde gelöscht.',
'file_category' => 'Kategorie',
'select_category' => 'Kategorie wählen',
'no_files_yet' => 'Noch keine Dateien in dieser Kategorie.',
'no_files_at_all' => 'Noch keine Dateien hochgeladen.',
'file_size' => 'Größe',
'uploaded_by' => 'Hochgeladen von',
'uploaded_at' => 'Hochgeladen am',
'confirm_delete_file' => 'Datei wirklich löschen? Alle Event-Verknüpfungen werden entfernt.',
'allowed_file_types' => 'Erlaubte Dateitypen: PDF, DOCX, XLSX, Bilder (JPG, PNG, GIF, WEBP)',
'max_file_size' => 'Maximale Dateigröße: 10 MB',
'file_categories' => 'Dateikategorien',
'file_categories_description' => 'Verwalte die Kategorien für die Dateiverwaltung.',
'new_category' => 'Neue Kategorie',
'category_name' => 'Kategoriename',
'category_created' => 'Kategorie wurde erstellt.',
'category_updated' => 'Kategorie wurde aktualisiert.',
'category_deleted' => 'Kategorie wurde gelöscht.',
'category_not_empty' => 'Kategorie kann nicht gelöscht werden, da sie noch Dateien enthält.',
'confirm_delete_category' => 'Kategorie wirklich löschen?',
'event_files' => 'Dateien',
'attach_from_library' => 'Aus Bibliothek anhängen',
'upload_new_file' => 'Neue Datei hochladen',
'attached_files' => 'Angehängte Dateien',
'detach_file' => 'Entfernen',
'no_attached_files' => 'Keine Dateien angehängt.',
'profile_picture' => 'Profilbild',
'upload_picture' => 'Bild hochladen',
'remove_picture' => 'Bild entfernen',
'picture_uploaded' => 'Profilbild wurde aktualisiert.',
'picture_removed' => 'Profilbild wurde entfernt.',
'max_picture_size' => 'Max. 2 MB (JPG, PNG, GIF, WEBP)',
'html_anchor_hint' => 'Tipp: Sprungmarken setzen mit id-Attribut, z. B. &lt;h3 id="cookies"&gt;',
// Soft-Delete
'danger_zone' => 'Gefahrenzone',
'delete_user' => 'Benutzer löschen',
'delete_user_hint' => 'Der Benutzer wird deaktiviert und kann 7 Tage lang wiederhergestellt werden. Historische Daten (Kommentare, Teilnahmen) bleiben erhalten.',
'delete_player' => 'Spieler löschen',
'delete_player_hint' => 'Der Spieler wird entfernt und kann 7 Tage lang wiederhergestellt werden. Historische Daten (Teilnahmen, Events) bleiben erhalten.',
'user_status_label' => 'Benutzerstatus',
'player_status_label' => 'Spielerstatus',
'deactivate_user_hint' => 'Der Benutzer kann sich nicht mehr einloggen.',
'activate_user_hint' => 'Der Benutzer kann sich wieder einloggen.',
'deactivate_player_hint' => 'Der Spieler wird nicht mehr in Terminlisten angezeigt.',
'activate_player_hint' => 'Der Spieler wird wieder in Terminlisten angezeigt.',
'player_toggled' => 'Spieler :status.',
'log_player_toggled' => 'Spieler :name :status',
'confirm_delete_user' => 'Möchtest du diesen Benutzer wirklich löschen? Er kann 7 Tage lang wiederhergestellt werden.',
'confirm_delete_player' => 'Möchtest du diesen Spieler wirklich löschen? Er kann 7 Tage lang wiederhergestellt werden.',
'user_deleted' => 'Benutzer wurde gelöscht.',
'user_restored' => 'Benutzer wurde wiederhergestellt.',
'player_deleted' => 'Spieler wurde gelöscht.',
'player_restored' => 'Spieler wurde wiederhergestellt.',
'cannot_delete_self' => 'Du kannst dich nicht selbst löschen.',
'cannot_delete_main_admin' => 'Der Haupt-Admin kann nicht gelöscht werden.',
'restore_expired' => 'Die Wiederherstellungsfrist ist abgelaufen.',
'trash' => 'Papierkorb',
'restore' => 'Wiederherstellen',
'delete' => 'Löschen',
'deleted_at' => 'Gelöscht am',
// Activity Log
'activity_log_title' => 'Aktivitätslog',
'nav_activity_log' => 'Aktivitätslog',
'log_category' => 'Kategorie',
'log_all_categories' => 'Alle Kategorien',
'log_cat_auth' => 'Authentifizierung',
'log_cat_users' => 'Benutzer',
'log_cat_players' => 'Spieler',
'log_cat_events' => 'Termine',
'log_cat_files' => 'Dateien',
'log_cat_settings' => 'Einstellungen',
'log_cat_dsgvo' => 'DSGVO',
'log_from' => 'Von',
'log_to' => 'Bis',
'log_filter' => 'Filtern',
'log_reset' => 'Zurücksetzen',
'log_time' => 'Zeitpunkt',
'log_user' => 'Benutzer',
'log_action' => 'Aktion',
'log_description' => 'Beschreibung',
'log_ip' => 'IP-Adresse',
'log_system' => 'System',
'log_empty' => 'Keine Einträge vorhanden.',
'log_details' => 'Details',
'log_field' => 'Feld',
'log_old_value' => 'Vorher',
'log_new_value' => 'Nachher',
// Log descriptions
'log_login' => ':name hat sich angemeldet',
'log_logout' => ':name hat sich abgemeldet',
'log_login_failed' => 'Fehlgeschlagener Login-Versuch für :email',
'log_registered' => ':name hat sich registriert',
'log_user_updated' => 'Benutzer :name wurde aktualisiert',
'log_user_toggled' => 'Benutzer :name: Status geändert auf :status',
'log_role_changed' => 'Rolle von :name geändert auf :role',
'log_password_reset' => 'Passwort von :name wurde zurückgesetzt',
'log_user_deleted' => 'Benutzer :name wurde gelöscht',
'log_user_restored' => 'Benutzer :name wurde wiederhergestellt',
'log_player_created' => 'Spieler :name wurde erstellt',
'log_player_updated' => 'Spieler :name wurde aktualisiert',
'log_player_deleted' => 'Spieler :name wurde gelöscht',
'log_player_restored' => 'Spieler :name wurde wiederhergestellt',
'log_parent_assigned' => ':parent wurde :player als Elternteil zugeordnet',
'log_parent_removed' => ':parent wurde als Elternteil von :player entfernt',
'log_event_created' => 'Termin ":title" wurde erstellt',
'log_event_updated' => 'Termin ":title" wurde aktualisiert',
'log_event_deleted' => 'Termin ":title" wurde gelöscht',
'log_participant_changed' => 'Teilnahme-Status für ":event" geändert auf :status',
'log_catering_changed' => 'Catering-Status für ":event" geändert auf :status',
'log_timekeeper_changed' => 'Zeitnehmer-Status für ":event" geändert auf :status',
'log_comment_created' => 'Kommentar zu ":event" hinzugefügt',
'log_comment_deleted' => 'Kommentar zu ":event" gelöscht',
'log_file_uploaded' => 'Datei ":name" hochgeladen',
'log_file_deleted' => 'Datei ":name" gelöscht',
'log_settings_updated' => 'Einstellungen wurden aktualisiert',
'log_invitation_created' => 'Einladung erstellt für :email',
// Statistik
'nav_statistics' => 'Statistik',
'statistics_title' => 'Spiel-Statistik',
'total_games' => 'Spiele gesamt',
'wins' => 'Siege',
'losses' => 'Niederlagen',
'draws' => 'Unentschieden',
'win_rate' => 'Siegquote',
'chart_win_loss' => 'Siege / Niederlagen',
'chart_player_participation' => 'Spieler-Teilnahme',
'chart_parent_involvement' => 'Eltern-Engagement',
'no_games_yet' => 'Noch keine Spiele vorhanden.',
'filter_from' => 'Von',
'filter_to' => 'Bis',
'filter_apply' => 'Filtern',
'filter_reset' => 'Zurücksetzen',
'all_teams' => 'Alle Teams',
'not_applicable' => 'N/A',
'min_users' => 'Min. Benutzer',
'home_short' => 'H',
'away_short' => 'A',
'player_ranking_title' => 'Spieler-Teilnahme',
'player_ranking_desc' => 'Teilnahmequote der Spieler an :count Spielen (Heim- und Auswärtsspiele).',
'games_played' => 'Gespielt',
'games_assigned' => 'Aufgestellt',
'participation_rate' => 'Quote',
'parent_ranking_title' => 'Eltern-Engagement',
'parent_ranking_desc' => 'Catering (:catering Events) und Zeitnehmer (:timekeeper Events) — alle publizierten Termine.',
'total_contributions' => 'Gesamt',
// Statistik-Sichtbarkeit
'statistics_enabled_label' => 'Statistik-Seite aktivieren',
'statistics_enabled_hint' => 'Wenn deaktiviert, ist die Statistik-Seite nur für den Administrator sichtbar.',
// Slogan & Favicon
'slogan_label' => 'Slogan',
'slogan_hint' => 'Wird auf der Login-Seite und im Footer angezeigt.',
'favicon_label' => 'Favicon',
'favicon_hint' => 'ICO, PNG, SVG, JPG (max. 512 KB)',
'favicon_current' => 'Aktuelles Favicon',
'favicon_remove' => 'Favicon entfernen',
'favicon_uploaded' => 'Favicon wurde aktualisiert.',
'favicon_removed' => 'Favicon wurde entfernt.',
// Undo / Revert
'log_revert' => 'Rückgängig',
'log_revert_confirm' => 'Möchtest du diese Aktion wirklich rückgängig machen?',
'log_revert_success' => 'Aktion wurde erfolgreich rückgängig gemacht.',
'log_revert_not_possible' => 'Diese Aktion kann nicht rückgängig gemacht werden.',
'log_reverted' => 'Rückgängig gemacht: ":desc"',
'event_restored' => 'Event wurde wiederhergestellt.',
'log_event_restored' => 'Event ":title" wurde wiederhergestellt',
// Sichtbarkeit
'settings_tab_visibility' => 'Sichtbarkeit',
'visibility_description' => 'Steuere, welche Funktionen für welche Rollen sichtbar sind. Administratoren sehen immer alles.',
'visibility_feature_statistics' => 'Statistik-Seite',
'visibility_feature_catering_history' => 'Catering/Zeitnehmer-Verlauf',
// Listenerstellung
'nav_list_generator' => 'Listenerstellung',
'list_generator_title' => 'Liste erstellen',
'list_title' => 'Betreff',
'list_subtitle' => 'Untertitel (optional)',
'list_notes' => 'Notizen / Beschreibung',
'list_source' => 'Zeilen-Quelle',
'list_source_players' => 'Spieler',
'list_source_parents' => 'Eltern',
'list_source_freetext' => 'Freitext',
'list_freetext_hint' => 'Eine Zeile pro Eintrag',
'list_columns' => 'Spalten',
'list_custom_columns' => 'Zusätzliche Spalten',
'list_add_column' => 'Spalte hinzufügen',
'list_column_name' => 'Spaltenname',
'list_generate' => 'Liste erstellen',
'list_result_title' => 'Liste erstellt',
'list_print' => 'Drucken / Als PDF speichern',
'list_new' => 'Neue Liste erstellen',
'list_to_library' => 'Zur Datei-Bibliothek',
'list_generated_at' => 'Erstellt am',
'list_all_teams' => 'Alle Teams',
'list_saved_info' => 'Datei ":name" wurde automatisch in der Bibliothek unter "Allgemein" gespeichert.',
'list_download_pdf' => 'PDF herunterladen',
'list_entries_count' => 'Einträge',
'log_list_generated' => 'Liste ":title" wurde erstellt',
'no_entries' => 'Keine Einträge vorhanden.',
// DSGVO
'dsgvo_title' => 'DSGVO-Einverständniserklärung',
'dsgvo_short' => 'DSGVO',
'dsgvo_consent_label' => 'Einverständniserklärung bestätigt',
'dsgvo_view_document' => 'Dokument ansehen',
'dsgvo_confirm' => 'Bestätigen',
'dsgvo_revoke' => 'Widerrufen',
'dsgvo_toggled' => 'DSGVO-Status wurde aktualisiert.',
'dsgvo_no_file' => 'Es wurde noch kein Dokument hochgeladen.',
'dsgvo_no_document' => 'Der Benutzer hat noch keine Einverständniserklärung hochgeladen.',
'dsgvo_not_confirmed' => 'Noch nicht bestätigt. Bitte Dokument prüfen und dann bestätigen.',
'dsgvo_confirmed_info' => 'Bestätigt von :name am :date',
'dsgvo_confirmed_tooltip' => 'DSGVO-Einverständnis bestätigt',
'dsgvo_pending_tooltip' => 'Dokument hochgeladen, Bestätigung ausstehend',
'dsgvo_missing_tooltip' => 'Kein Dokument hochgeladen',
'dsgvo_events_title' => 'DSGVO-Ereignisse (letzte 10)',
// DSGVO Action-Labels
'dsgvo_action_dsgvo_consent_uploaded' => 'Hochgeladen',
'dsgvo_action_dsgvo_consent_confirmed' => 'Bestätigt',
'dsgvo_action_dsgvo_consent_revoked' => 'Widerrufen',
'dsgvo_action_dsgvo_consent_removed' => 'Entfernt',
'dsgvo_action_account_self_deleted' => 'Account gelöscht',
'dsgvo_action_child_auto_deactivated' => 'Kind deaktiviert',
// DSGVO Log-Beschreibungen
'log_dsgvo_consent_uploaded' => ':name hat eine Einverständniserklärung hochgeladen',
'log_dsgvo_confirmed' => 'Einverständniserklärung von :name wurde bestätigt',
'log_dsgvo_revoked' => 'Bestätigung der Einverständniserklärung von :name wurde widerrufen',
'log_dsgvo_consent_removed' => ':name hat die Einverständniserklärung entfernt',
'log_account_self_deleted' => ':name hat den eigenen Account gelöscht',
'log_child_auto_deactivated' => 'Spieler :child wurde automatisch deaktiviert (einziger Elternteil :parent hat Account gelöscht)',
// DSGVO Pending Widget
'dsgvo_pending_title' => 'DSGVO — Bestätigung ausstehend',
'dsgvo_pending_count' => ':count Erklärung(en) ausstehend',
'dsgvo_consent_document' => 'DSGVO-Einverständniserklärung',
'dsgvo_reject' => 'Ablehnen',
'dsgvo_reject_confirm' => 'Bist du sicher, dass du diese Einverständniserklärung ablehnen möchtest? Das Dokument wird gelöscht und der Benutzer muss es erneut hochladen.',
'dsgvo_rejected' => 'Einverständniserklärung wurde abgelehnt.',
'log_dsgvo_rejected' => 'Einverständniserklärung von :name wurde abgelehnt',
'dsgvo_action_dsgvo_consent_rejected' => 'Abgelehnt',
'dsgvo_preview_not_available' => 'Vorschau für diesen Dateityp nicht verfügbar.',
// Factory Reset
'factory_reset_title' => 'Kompletter Reset',
'factory_reset_description' => 'Setzt die gesamte WebApp auf den Ausgangszustand zurück. Nach dem Reset wird der Installations-Assistent erneut gestartet.',
'factory_reset_deletes' => 'Folgendes wird unwiderruflich gelöscht',
'factory_reset_item_users' => 'Alle Benutzer (inkl. Administrator)',
'factory_reset_item_data' => 'Alle Teams, Spieler, Termine, Kommentare',
'factory_reset_item_settings' => 'Alle Einstellungen und Dateikategorien',
'factory_reset_item_files' => 'Alle hochgeladenen Dateien und Profilbilder',
'factory_reset_warning' => 'Dieser Vorgang kann NICHT rückgängig gemacht werden! Die App wird vollständig zurückgesetzt und der Installations-Assistent gestartet.',
'factory_reset_confirm' => 'ACHTUNG: Die gesamte WebApp wird unwiderruflich zurückgesetzt und alle Daten gelöscht. Der Installations-Assistent wird erneut gestartet. Bist du sicher?',
'factory_reset_button' => 'WebApp komplett zurücksetzen',
// Lizenz & Support
'settings_tab_license' => 'Lizenz & Support',
'license_title' => 'Lizenzschlüssel',
'license_description' => 'Geben Sie Ihren Lizenzschlüssel ein, um Support und Updates zu erhalten.',
'license_key_label' => 'Lizenzschlüssel',
'license_invalid' => 'Der eingegebene Lizenzschlüssel ist ungültig.',
'registration_status' => 'Registrierungsstatus',
'registration_active' => 'Registriert',
'registration_inactive' => 'Nicht registriert',
'register_now' => 'Jetzt registrieren',
'registration_success' => 'Installation erfolgreich registriert.',
'registration_failed' => 'Registrierung fehlgeschlagen. Bitte versuchen Sie es später erneut.',
'version_info' => 'Systeminformationen',
'update_available' => 'Update verfügbar: Version :version',
'update_details' => 'Details anzeigen',
'download_update' => 'Update herunterladen',
'installation_id_label' => 'Installations-ID',
'nav_support' => 'Support',
'support_title' => 'Support-Tickets',
'support_not_registered' => 'Installation nicht registriert',
'support_register_hint' => 'Um den Support zu nutzen, muss die Installation registriert sein. Es werden nur technische Daten (App-Name, URL, PHP-Version) übermittelt.',
'support_new_ticket' => 'Neues Ticket erstellen',
'support_subject' => 'Betreff',
'support_category' => 'Kategorie',
'support_category_bug' => 'Fehlerbericht',
'support_category_feature' => 'Feature-Wunsch',
'support_category_question' => 'Frage',
'support_category_other' => 'Sonstiges',
'support_message' => 'Nachricht',
'support_submit' => 'Ticket senden',
'support_reply' => 'Antworten',
'support_send_reply' => 'Antwort senden',
'support_reply_placeholder' => 'Schreiben Sie Ihre Antwort...',
'support_ticket_created' => 'Ticket wurde erfolgreich erstellt.',
'support_reply_sent' => 'Antwort wurde gesendet.',
'support_submit_failed' => 'Ticket konnte nicht erstellt werden. Bitte versuchen Sie es später erneut.',
'support_reply_failed' => 'Antwort konnte nicht gesendet werden. Bitte versuchen Sie es später erneut.',
'support_ticket_not_found' => 'Ticket nicht gefunden.',
'support_no_tickets' => 'Noch keine Tickets vorhanden.',
'support_no_messages' => 'Noch keine Nachrichten.',
'support_ticket_id' => 'Ticket-Nr.',
'support_status' => 'Status',
'support_status_open' => 'Offen',
'support_status_in_progress' => 'In Bearbeitung',
'support_status_waiting' => 'Wartend',
'support_status_closed' => 'Geschlossen',
'support_created_at' => 'Erstellt',
'support_last_reply' => 'Letzte Antwort',
'support_back_to_list' => 'Zurück zur Übersicht',
'support_system_info_note' => 'Systeminformationen werden automatisch mitgesendet.',
'support_sender_support' => 'Support',
'support_sender_you' => 'Sie',
'support_ticket_closed' => 'Dieses Ticket ist geschlossen.',
'installer_register_label' => 'Installation registrieren',
'installer_register_hint' => 'Ermöglicht Update-Benachrichtigungen und Support. Es werden nur technische Daten übermittelt (App-Name, URL, PHP-Version, App-Version).',
'installer_license_label' => 'Lizenzschlüssel (optional)',
'installer_license_hint' => 'Kann auch später in den Einstellungen eingetragen werden.',
// Password Reset (Admin + Self-Service)
'factory_reset_password_label' => 'Dein Passwort zur Bestätigung',
'factory_reset_confirmation_label' => 'Sicherheitsbestätigung',
'factory_reset_confirmation_hint' => 'Tippe RESET-BESTÄTIGT ein, um den Vorgang zu bestätigen.',
'password_reset_link_sent' => 'Ein Link zum Zurücksetzen des Passworts wurde per E-Mail gesendet.',
'password_reset_email_label' => 'Passwort-Reset E-Mail-Vorlage',
'password_reset_email_hint' => 'Platzhalter: {name} = Benutzername, {link} = Reset-Link, {app_name} = App-Name',
'log_password_reset_requested' => 'Passwort-Zurücksetzen angefordert',
'log_password_changed_self' => ':name hat das Passwort geändert',
'log_dsgvo_viewed' => 'DSGVO-Dokument von :name angesehen',
// Multi-Language Legal Editor
'legal_language_label' => 'Sprache',
'legal_impressum_label' => 'Impressum',
'legal_datenschutz_label' => 'Datenschutzerklärung',
'legal_password_reset_email_label' => 'Passwort-Reset E-Mail',
// E-Mail Tab
'settings_tab_mail' => 'E-Mail',
'mail_config_title' => 'E-Mail-Konfiguration',
'mail_config_hint' => 'SMTP-Einstellungen fuer den E-Mail-Versand (z.B. Passwort-Reset, Benachrichtigungen).',
'mail_mailer_label' => 'Versandmethode',
'mail_log_mode' => 'Kein Versand (Log)',
'mail_host_label' => 'SMTP-Host',
'mail_port_label' => 'Port',
'mail_username_label' => 'Benutzername',
'mail_password_label' => 'Passwort',
'mail_from_address_label' => 'Absender-Adresse',
'mail_from_name_label' => 'Absender-Name',
'mail_encryption_label' => 'Verschluesselung',
'mail_encryption_none' => 'Keine',
'mail_save' => 'Mail-Einstellungen speichern',
'mail_saved' => 'Mail-Einstellungen wurden gespeichert.',
'mail_test_button' => 'Verbindung testen',
'mail_testing' => 'Teste Verbindung...',
'mail_test_success' => 'SMTP-Verbindung erfolgreich!',
];

7
lang/de/auth.php Executable file
View File

@@ -0,0 +1,7 @@
<?php
return [
'failed' => 'Diese Anmeldedaten stimmen nicht mit unseren Aufzeichnungen überein.',
'password' => 'Das angegebene Passwort ist falsch.',
'throttle' => 'Zu viele Anmeldeversuche. Bitte versuche es in :seconds Sekunden erneut.',
];

43
lang/de/auth_ui.php Executable file
View File

@@ -0,0 +1,43 @@
<?php
return [
// Login
'login_title' => 'Anmelden',
'email_label' => 'E-Mail',
'password_label' => 'Passwort',
'remember_me' => 'Angemeldet bleiben',
'login_button' => 'Anmelden',
// Register
'register_title' => 'Registrieren',
'name_label' => 'Name',
'children_assigned' => 'Dein Account wird folgenden Kindern zugeordnet:',
'password_min' => '(min. 8 Zeichen)',
'password_confirm_label' => 'Passwort bestätigen',
'create_account' => 'Account erstellen',
'already_registered' => 'Bereits registriert?',
'go_to_login' => 'Zum Login',
'email_fixed_by_invitation' => 'Die E-Mail-Adresse ist durch die Einladung festgelegt.',
'invalid_invitation' => 'Dieser Einladungslink ist ungültig oder abgelaufen.',
'welcome' => 'Willkommen! Dein Account wurde erstellt.',
// Forgot / Reset Password
'forgot_password_link' => 'Passwort vergessen?',
'forgot_password_title' => 'Passwort zurücksetzen',
'forgot_password_description' => 'Gib deine E-Mail-Adresse ein und wir senden dir einen Link zum Zurücksetzen deines Passworts.',
'send_reset_link' => 'Link senden',
'back_to_login' => 'Zurück zum Login',
'reset_password_title' => 'Neues Passwort setzen',
'reset_password_button' => 'Passwort zurücksetzen',
'new_password_label' => 'Neues Passwort',
'confirm_password_label' => 'Passwort bestätigen',
// Security
'login_failed' => 'Die Anmeldedaten sind ungültig.',
'email_must_match_invitation' => 'Die E-Mail-Adresse muss mit der Einladung übereinstimmen: :email',
// Cookie notice
'cookie_notice' => 'Diese Seite nutzt nur ein technisch notwendiges Session-Cookie. Kein Tracking.',
'cookie_notice_link' => 'Mehr erfahren',
'account_deactivated' => 'Dein Account wurde deaktiviert. Bitte wende dich an den Administrator.',
];

78
lang/de/events.php Executable file
View File

@@ -0,0 +1,78 @@
<?php
return [
'title' => 'Termine',
'no_events' => 'Keine Termine gefunden.',
'no_upcoming' => 'Keine anstehenden Termine.',
'upcoming_title' => 'Nächste Termine',
'cancelled_label' => 'Abgesagt',
'draft_label' => 'Entwurf',
'cancelled_banner' => 'Dieser Termin wurde abgesagt.',
'draft_banner' => 'Entwurf — nur für Admins sichtbar.',
'back_to_list' => 'Zurück zur Terminliste',
// Detail-Seite
'description' => 'Beschreibung',
'plan_route' => 'Route planen',
'start_navigation' => 'Navigation starten',
// Teilnehmer
'participants' => 'Teilnehmer',
'confirmations' => 'Zusagen',
'rejections' => 'Absagen',
'open_responses' => 'Offen',
'participation_updated' => 'Teilnahme aktualisiert.',
// Catering
'catering' => 'Catering / Verpflegung',
'bring_something' => 'Bringe etwas mit',
'bring_nothing' => 'Bringe nichts mit',
'catering_note_placeholder' => 'z.B. Bringe Kuchen mit',
'no_catering_yet' => 'Noch keine Zusagen für Verpflegung.',
'catering_updated' => 'Catering-Status aktualisiert.',
// Zeitnehmer
'timekeeper' => 'Zeitnehmer',
'timekeeper_yes' => 'Ja, ich kann',
'timekeeper_no' => 'Nein',
'catering_short' => 'Catering',
'timekeeper_short' => 'Zeitnehmer',
'no_timekeeper_yet' => 'Noch kein Zeitnehmer eingetragen.',
'timekeeper_updated' => 'Zeitnehmer-Status aktualisiert.',
// Kommentare
'comments' => 'Kommentare',
'comment_placeholder' => 'Kommentar schreiben...',
'no_comments' => 'Noch keine Kommentare.',
'comment_deleted' => '[Gelöscht]',
'confirm_delete_comment' => 'Kommentar löschen?',
'comment_added' => 'Kommentar hinzugefügt.',
'comment_removed' => 'Kommentar gelöscht.',
// Dashboard
'hello_user' => 'Hallo, :name!',
'upcoming_events' => 'Nächste Termine',
// Kalender
'calendar' => 'Kalender',
'today' => 'Heute',
'month_view' => 'Monat',
'year_view' => 'Jahr',
// Dateien
'files' => 'Dateien',
'download' => 'Herunterladen',
'no_files' => 'Keine Dateien angehängt.',
// Gegner & Ergebnis
'opponent' => 'Gegner',
'score' => 'Ergebnis',
'score_home' => 'Heim',
'score_away' => 'Gast',
'vs' => 'vs.',
// Staff-Sichtbarkeit
'signed_up' => 'zugesagt',
'withdrawn' => 'abgemeldet',
'deleted_label' => 'gelöscht',
];

6
lang/de/pagination.php Executable file
View File

@@ -0,0 +1,6 @@
<?php
return [
'previous' => '&laquo; Zurück',
'next' => 'Weiter &raquo;',
];

14
lang/de/passwords.php Executable file
View File

@@ -0,0 +1,14 @@
<?php
return [
'reset' => 'Dein Passwort wurde zurückgesetzt.',
'sent' => 'Wir haben dir einen Link zum Zurücksetzen des Passworts gesendet.',
'throttled' => 'Bitte warte, bevor du es erneut versuchst.',
'token' => 'Dieses Token zum Zurücksetzen des Passworts ist ungültig.',
'user' => 'Es konnte kein Benutzer mit dieser E-Mail-Adresse gefunden werden.',
'reset_subject' => 'Passwort zurücksetzen — :app',
'reset_greeting' => 'Hallo :name,',
'reset_line1' => 'Du erhältst diese E-Mail, weil eine Anfrage zum Zurücksetzen deines Passworts gestellt wurde.',
'reset_line2' => 'Dieser Link zum Zurücksetzen ist :count Minuten gültig.',
'reset_line3' => 'Falls du kein Zurücksetzen angefordert hast, kannst du diese E-Mail ignorieren.',
];

44
lang/de/profile.php Executable file
View File

@@ -0,0 +1,44 @@
<?php
return [
'title' => 'Mein Profil',
'name_label' => 'Name',
'email_label' => 'E-Mail',
'email_readonly' => 'Die E-Mail-Adresse kann nicht geändert werden.',
'phone_label' => 'Erreichbarkeit (Mobilnummer)',
'role_label' => 'Rolle',
'language_label' => 'Sprache',
'my_children' => 'Meine Kinder',
'updated' => 'Profil aktualisiert.',
// Profilbild
'profile_picture' => 'Profilbild',
'upload_picture' => 'Bild hochladen',
'remove_picture' => 'Bild entfernen',
'max_picture_size' => 'Max. 2 MB (JPG, PNG, GIF, WEBP)',
// DSGVO-Einverständniserklärung
'dsgvo_title' => 'DSGVO-Einverständniserklärung',
'dsgvo_description' => 'Lade hier die unterschriebene Einverständniserklärung als Foto oder PDF hoch. Eine Erklärung gilt für beide Elternteile gemeinsam.',
'dsgvo_upload' => 'Erklärung hochladen',
'dsgvo_replace' => 'Ersetzen',
'dsgvo_remove' => 'Erklärung entfernen',
'dsgvo_file_hint' => 'PDF oder Bild (max. 10 MB)',
'dsgvo_uploaded' => 'Einverständniserklärung wurde hochgeladen.',
'dsgvo_removed' => 'Einverständniserklärung wurde entfernt.',
'dsgvo_view' => 'Ansehen',
'dsgvo_confirmed' => 'Bestätigt',
'dsgvo_pending' => 'Warte auf Bestätigung durch Admin/Trainer',
'dsgvo_confirmed_by' => 'Bestätigt von :name am :date',
'dsgvo_confirm_remove' => 'Einverständniserklärung wirklich entfernen? Eine vorhandene Bestätigung wird ebenfalls zurückgesetzt.',
// Account löschen
'danger_zone' => 'Gefahrenzone',
'delete_account' => 'Account löschen',
'delete_account_hint' => 'Dein Profil wird deaktiviert und kann 7 Tage lang vom Administrator wiederhergestellt werden. Historische Daten (Kommentare, Teilnahmen) bleiben erhalten.',
'delete_warning_children' => 'Achtung: Du bist der einzige Elternteil für folgende Kinder. Diese werden ebenfalls deaktiviert:',
'delete_confirm' => 'Möchtest du deinen Account wirklich löschen? Dieser Vorgang kann nur vom Administrator rückgängig gemacht werden.',
'account_deleted' => 'Dein Account wurde gelöscht.',
'cannot_delete_admin' => 'Der Administrator-Account kann nicht gelöscht werden.',
'cannot_delete_staff' => 'Trainer und Admins können ihren Account nicht über die Profilseite löschen.',
];

126
lang/de/ui.php Executable file
View File

@@ -0,0 +1,126 @@
<?php
return [
// Navigation
'dashboard' => 'Dashboard',
'events' => 'Termine',
'admin' => 'Admin',
'profile' => 'Profil',
'logout' => 'Abmelden',
'back_to_app' => 'Zur App',
'login' => 'Anmelden',
// Allgemeine Buttons
'save' => 'Speichern',
'cancel' => 'Abbrechen',
'edit' => 'Bearbeiten',
'delete' => 'Löschen',
'create' => 'Erstellen',
'filter' => 'Filtern',
'send' => 'Senden',
'back' => 'Zurück',
'yes' => 'Ja',
'no' => 'Nein',
'open' => 'Offen',
// Allgemeine Labels
'all_teams' => 'Alle Teams',
'all_types' => 'Alle Typen',
'upcoming' => 'Kommende',
'past' => 'Vergangene',
'period' => 'Zeitraum',
'team' => 'Team',
'type' => 'Typ',
'name' => 'Name',
'email' => 'E-Mail',
'password' => 'Passwort',
'role' => 'Rolle',
'language' => 'Sprache',
'impressum' => 'Impressum',
'privacy' => 'Datenschutz',
'no_entries' => 'Keine Einträge vorhanden.',
'clock' => 'Uhr',
// Datumsformat
'date_format' => 'D, d.m.Y, H:i',
'date_format_long' => 'l, d. F Y, H:i',
'date_format_short' => 'd.m.Y H:i',
'date_format_date' => 'd.m.Y',
// Footer
'footer_impressum' => 'Impressum',
'footer_privacy' => 'Datenschutz',
// PWA
'pwa_install_title' => 'App installieren',
'pwa_install_text' => 'Füge die App zum Startbildschirm hinzu für schnelleren Zugriff.',
'pwa_install_btn' => 'Installieren',
'pwa_ios_steps' => 'Tippe auf <strong>⋯</strong> (Menü), dann auf <strong>⬆</strong> (Teilen) und wähle „Zum Home-Bildschirm".',
// Fehlerseiten
'error_403_title' => 'Zugriff verweigert',
'error_403_text' => 'Du hast keine Berechtigung, diese Seite aufzurufen.',
'error_404_title' => 'Seite nicht gefunden',
'error_404_text' => 'Die angeforderte Seite konnte nicht gefunden werden.',
'error_500_title' => 'Serverfehler',
'error_500_text' => 'Es ist ein interner Fehler aufgetreten. Bitte versuche es später erneut.',
'back_to_dashboard' => 'Zum Dashboard',
// Enums
'enums' => [
'event_type' => [
'home_game' => 'Heimspiel',
'away_game' => 'Auswärtsspiel',
'training' => 'Training',
'tournament' => 'Turnier',
'meeting' => 'Besprechung',
'other' => 'Sonstiges',
],
'event_status' => [
'published' => 'Veröffentlicht',
'cancelled' => 'Abgesagt',
'draft' => 'Entwurf',
],
'participant_status' => [
'yes' => 'Zugesagt',
'no' => 'Abgesagt',
'unknown' => 'Offen',
],
'catering_status' => [
'yes' => 'Ja',
'no' => 'Nein',
'unknown' => 'Offen',
],
'user_role' => [
'admin' => 'Administrator',
'coach' => 'Trainer',
'parent_rep' => 'Elternvertretung',
'user' => 'Elternteil',
],
],
// Sprachen
'locales' => [
'de' => 'Deutsch',
'en' => 'English',
'pl' => 'Polski',
'ru' => 'Русский',
'ar' => 'العربية',
'tr' => 'Türkçe',
],
// DSGVO-Banner
'dsgvo_banner_title' => 'DSGVO-Einverständniserklärung erforderlich',
'dsgvo_banner_text' => 'Für die Nutzung dieser App ist eine unterschriebene DSGVO-Einverständniserklärung erforderlich. Bitte lade die Erklärung als Foto oder PDF in deinem Profil hoch. Erst danach kann die App vollständig genutzt werden.',
'dsgvo_banner_action' => 'Jetzt im Profil hochladen',
'dsgvo_banner_pending_title' => 'Einverständniserklärung wird geprüft',
'dsgvo_banner_pending_text' => 'Deine DSGVO-Einverständniserklärung wurde eingereicht und wird geprüft. Bis zur Bestätigung durch einen Administrator ist die App im Lesemodus — Teilnahme, Catering, Zeitnehmer und Kommentare sind gesperrt.',
'dsgvo_restricted' => 'Deine DSGVO-Einverständniserklärung wurde noch nicht bestätigt. Bitte warte auf die Freigabe durch einen Administrator.',
'dsgvo_restricted_hint' => 'DSGVO-Einverständniserklärung noch nicht bestätigt — Aktionen gesperrt.',
// Dateien
'files' => 'Dateien',
'download' => 'Herunterladen',
'all' => 'Alle',
'close' => 'Schließen',
];

130
lang/de/validation.php Executable file
View File

@@ -0,0 +1,130 @@
<?php
return [
'accepted' => ':attribute muss akzeptiert werden.',
'active_url' => ':attribute ist keine gültige URL.',
'after' => ':attribute muss ein Datum nach :date sein.',
'after_or_equal' => ':attribute muss ein Datum nach oder gleich :date sein.',
'alpha' => ':attribute darf nur Buchstaben enthalten.',
'alpha_dash' => ':attribute darf nur Buchstaben, Zahlen, Bindestriche und Unterstriche enthalten.',
'alpha_num' => ':attribute darf nur Buchstaben und Zahlen enthalten.',
'array' => ':attribute muss ein Array sein.',
'before' => ':attribute muss ein Datum vor :date sein.',
'before_or_equal' => ':attribute muss ein Datum vor oder gleich :date sein.',
'between' => [
'numeric' => ':attribute muss zwischen :min und :max liegen.',
'file' => ':attribute muss zwischen :min und :max Kilobytes groß sein.',
'string' => ':attribute muss zwischen :min und :max Zeichen lang sein.',
'array' => ':attribute muss zwischen :min und :max Elemente haben.',
],
'boolean' => ':attribute muss wahr oder falsch sein.',
'confirmed' => ':attribute Bestätigung stimmt nicht überein.',
'date' => ':attribute ist kein gültiges Datum.',
'date_equals' => ':attribute muss ein Datum gleich :date sein.',
'date_format' => ':attribute entspricht nicht dem Format :format.',
'different' => ':attribute und :other müssen sich unterscheiden.',
'digits' => ':attribute muss :digits Stellen haben.',
'digits_between' => ':attribute muss zwischen :min und :max Stellen haben.',
'email' => ':attribute muss eine gültige E-Mail-Adresse sein.',
'exists' => 'Der gewählte Wert für :attribute ist ungültig.',
'file' => ':attribute muss eine Datei sein.',
'filled' => ':attribute muss einen Wert haben.',
'gt' => [
'numeric' => ':attribute muss größer als :value sein.',
'file' => ':attribute muss größer als :value Kilobytes sein.',
'string' => ':attribute muss mehr als :value Zeichen haben.',
'array' => ':attribute muss mehr als :value Elemente haben.',
],
'gte' => [
'numeric' => ':attribute muss größer oder gleich :value sein.',
'file' => ':attribute muss größer oder gleich :value Kilobytes sein.',
'string' => ':attribute muss mindestens :value Zeichen haben.',
'array' => ':attribute muss mindestens :value Elemente haben.',
],
'image' => ':attribute muss ein Bild sein.',
'in' => 'Der gewählte Wert für :attribute ist ungültig.',
'in_array' => ':attribute kommt nicht in :other vor.',
'integer' => ':attribute muss eine ganze Zahl sein.',
'ip' => ':attribute muss eine gültige IP-Adresse sein.',
'json' => ':attribute muss ein gültiger JSON-String sein.',
'lt' => [
'numeric' => ':attribute muss kleiner als :value sein.',
'file' => ':attribute muss kleiner als :value Kilobytes sein.',
'string' => ':attribute muss weniger als :value Zeichen haben.',
'array' => ':attribute muss weniger als :value Elemente haben.',
],
'lte' => [
'numeric' => ':attribute muss kleiner oder gleich :value sein.',
'file' => ':attribute muss kleiner oder gleich :value Kilobytes sein.',
'string' => ':attribute darf höchstens :value Zeichen haben.',
'array' => ':attribute darf höchstens :value Elemente haben.',
],
'max' => [
'numeric' => ':attribute darf nicht größer als :max sein.',
'file' => ':attribute darf nicht größer als :max Kilobytes sein.',
'string' => ':attribute darf nicht mehr als :max Zeichen haben.',
'array' => ':attribute darf nicht mehr als :max Elemente haben.',
],
'min' => [
'numeric' => ':attribute muss mindestens :min sein.',
'file' => ':attribute muss mindestens :min Kilobytes groß sein.',
'string' => ':attribute muss mindestens :min Zeichen haben.',
'array' => ':attribute muss mindestens :min Elemente haben.',
],
'not_in' => 'Der gewählte Wert für :attribute ist ungültig.',
'numeric' => ':attribute muss eine Zahl sein.',
'present' => ':attribute muss vorhanden sein.',
'regex' => ':attribute hat ein ungültiges Format.',
'required' => ':attribute ist erforderlich.',
'required_if' => ':attribute ist erforderlich, wenn :other :value ist.',
'required_unless' => ':attribute ist erforderlich, es sei denn :other ist :values.',
'required_with' => ':attribute ist erforderlich, wenn :values vorhanden ist.',
'required_with_all' => ':attribute ist erforderlich, wenn :values vorhanden sind.',
'required_without' => ':attribute ist erforderlich, wenn :values nicht vorhanden ist.',
'required_without_all' => ':attribute ist erforderlich, wenn keiner der Werte :values vorhanden ist.',
'same' => ':attribute und :other müssen übereinstimmen.',
'size' => [
'numeric' => ':attribute muss :size sein.',
'file' => ':attribute muss :size Kilobytes groß sein.',
'string' => ':attribute muss :size Zeichen lang sein.',
'array' => ':attribute muss :size Elemente enthalten.',
],
'string' => ':attribute muss ein String sein.',
'timezone' => ':attribute muss eine gültige Zeitzone sein.',
'unique' => ':attribute ist bereits vergeben.',
'url' => ':attribute muss eine gültige URL sein.',
'password' => [
'letters' => ':attribute muss mindestens einen Buchstaben enthalten.',
'mixed' => ':attribute muss mindestens einen Groß- und einen Kleinbuchstaben enthalten.',
'numbers' => ':attribute muss mindestens eine Zahl enthalten.',
'symbols' => ':attribute muss mindestens ein Sonderzeichen enthalten.',
'uncompromised' => ':attribute wurde in einem Datenleck gefunden. Bitte ein anderes Passwort wählen.',
],
'attributes' => [
'name' => 'Name',
'email' => 'E-Mail',
'password' => 'Passwort',
'password_confirmation' => 'Passwort-Bestätigung',
'title' => 'Titel',
'body' => 'Nachricht',
'type' => 'Typ',
'status' => 'Status',
'team_id' => 'Team',
'start_date' => 'Datum',
'start_time' => 'Uhrzeit',
'location_name' => 'Ort',
'address_text' => 'Adresse',
'description_html' => 'Beschreibung',
'first_name' => 'Vorname',
'last_name' => 'Nachname',
'birth_year' => 'Geburtsjahr',
'jersey_number' => 'Trikotnummer',
'note' => 'Notiz',
'season' => 'Saison',
'player_id' => 'Spieler',
'parent_id' => 'Elternteil',
'relationship_label' => 'Beziehung',
],
];

548
lang/en/admin.php Executable file
View File

@@ -0,0 +1,548 @@
<?php
return [
'dashboard_title' => 'Admin Dashboard',
'stat_users' => 'Users',
'stat_players' => 'Players',
'stat_upcoming' => 'Upcoming Events',
'stat_invitations' => 'Open Invitations',
'quick_links' => 'Quick Links',
'new_event' => 'New Event',
'new_player' => 'New Player',
'new_invitation' => 'New Invitation',
'new_team' => 'New Team',
'open_responses_title' => 'Events with Open Responses',
'x_open' => ':count open',
'nav_teams' => 'Teams',
'nav_players' => 'Players',
'nav_users' => 'Users',
'nav_invitations' => 'Invitations',
'nav_events' => 'Events',
'nav_settings' => 'Settings',
'nav_verwaltung' => 'Management',
'actions' => 'Actions',
'action' => 'Action',
'please_select' => 'Please select',
'back_to_list' => 'Back to list',
'inactive' => 'Inactive',
'nr' => 'No.',
'photo' => 'Photo',
'date' => 'Date',
'location' => 'Location',
'all_status' => 'All Statuses',
'copied' => 'Copied!',
'copy' => 'Copy',
'created_by' => 'by',
'valid_until' => 'valid until',
'teams_title' => 'Teams',
'team_created' => 'Team has been created.',
'team_updated' => 'Team has been updated.',
'team_name' => 'Team Name',
'year_group' => 'Year Group',
'year_group_placeholder' => 'e.g. 2017/18',
'active' => 'Active',
'team_is_active' => 'Team is active',
'create_team' => 'Create Team',
'edit_team' => 'Edit Team',
'no_teams_yet' => 'No teams yet.',
'team_notes' => 'Notes',
'team_notes_placeholder' => 'Notes about the team (internal, only visible to admins)...',
'team_coaches' => 'Coaches',
'no_coaches_available' => 'No coaches available in the system.',
'team_players' => 'Players',
'team_parent_reps' => 'Parent Representatives',
'team_parent_reps_hint' => 'Parents with the "Parent Representative" role who have children on this team.',
'no_parent_reps' => 'No parent representatives for this team.',
'log_team_updated' => 'Team ":name" was updated',
'log_player_team_changed' => 'Player :name was moved to a different team',
'players_title' => 'Players',
'player_created' => 'Player has been created.',
'player_updated' => 'Player has been updated.',
'first_name' => 'First Name',
'last_name' => 'Last Name',
'birth_year' => 'Birth Year',
'jersey_number' => 'Jersey Number',
'photo_permission' => 'Photo Permission',
'notes' => 'Notes',
'parent_assigned' => 'Parent has been assigned.',
'parent_removed' => 'Assignment has been removed.',
'assign_parent' => 'Assign Parent',
'add_parent' => 'Add Parent',
'select_user' => 'Select User',
'assign' => 'Assign',
'relationship_label' => 'Relationship',
'relationship_placeholder' => 'e.g. Mother, Father',
'parents' => 'Parents',
'player_data' => 'Player Details',
'parent_assignment' => 'Parent Assignment',
'no_parents_yet' => 'No parents assigned yet.',
'confirm_remove_parent' => 'Really remove assignment?',
'remove' => 'Remove',
'no_players_yet' => 'No players yet.',
'users_title' => 'Users',
'user_toggled' => 'User has been :status.',
'role_updated' => 'Role has been updated.',
'cannot_deactivate_self' => 'You cannot deactivate your own account.',
'cannot_change_own_role' => 'You cannot change your own role.',
'activated' => 'activated',
'deactivated' => 'deactivated',
'deactivated_label' => 'Deactivated',
'children' => 'Children',
'phone' => 'Phone',
'last_login' => 'Last Login',
'never' => 'Never',
'deactivate' => 'Deactivate',
'activate' => 'Activate',
'you_suffix' => '(you)',
'edit' => 'Edit',
'edit_user' => 'Edit User',
'user_data' => 'User Data',
'user_updated' => 'User has been updated.',
'reset_password' => 'Reset Password',
'reset_password_hint' => 'Sends the user a password reset link via email.',
'reset_password_confirm' => 'Send a password reset link to the user via email?',
'password_reset_success' => 'New password has been generated.',
'new_password_label' => 'New password (visible once only):',
'password_only_visible_now' => 'This password is only shown now. Please share it and do not reload the page.',
'cannot_edit_own_role' => 'You cannot change your own role here.',
'cannot_assign_admin_role' => 'You cannot assign the admin role.',
'cannot_reset_own_password' => 'You cannot reset your own password via the admin area.',
'registered_at' => 'Registered on',
'invitations_title' => 'Invitations',
'invitation_created' => 'Invitation created. Link: :link',
'invitation_deleted' => 'Invitation has been deleted.',
'invitation_already_used' => 'Already redeemed invitations cannot be deleted.',
'create_invitation' => 'Create Invitation',
'assign_players' => 'Assign Players',
'email_optional' => 'Email address (optional)',
'email_optional_hint' => 'If set, only this email can register',
'expires_at' => 'Valid until',
'valid_for_days' => 'Valid for (days)',
'token' => 'Token',
'status' => 'Status',
'used' => 'Redeemed',
'expired' => 'Expired',
'pending' => 'Open',
'copy_link' => 'Copy Link',
'invite_link' => 'Invitation Link',
'no_assignment' => 'No assignment',
'no_invitations_yet' => 'No invitations created yet.',
'no_active_players' => 'No active players available.',
'confirm_delete_invitation' => 'Really delete invitation?',
'created_label' => 'Created',
'player_assignment_hint' => 'Select the children that should be automatically assigned to the new parent account.',
'events_title' => 'Events',
'event_created' => 'Event has been created.',
'event_updated' => 'Event has been updated.',
'event_deleted' => 'Event has been deleted.',
'event_title' => 'Title',
'start_at' => 'Start',
'date' => 'Date',
'time' => 'Time',
'end_at' => 'End',
'location_name' => 'Location Name',
'address' => 'Address',
'description' => 'Description',
'search_address' => 'Search address...',
'new_event_title' => 'New Event',
'edit_event_title' => 'Edit Event',
'no_events_yet' => 'No events yet.',
'confirm_delete_event' => 'Really delete event?',
'location_address' => 'Location / Address',
'location_name_hint' => 'Location name (e.g. Sports Hall North)',
'search_by_name' => 'Find address',
'location_name_placeholder' => 'e.g. BVB Stadium, Sports Hall West...',
'search_address_hint' => 'Enter address (min. 3 characters)...',
'description_placeholder' => 'Enter description...',
'assignments' => 'Assignments',
'catering_assignment' => 'Catering',
'timekeeper_assignment' => 'Timekeeper',
'geocoding_error' => 'Address search failed. Please try again.',
'geocoding_rate_limit' => 'Too many requests. Please wait a moment.',
'geocoding_no_results' => 'No address found. Please be more specific.',
'min_requirements' => 'Minimum Requirements',
'min_players' => 'Min. Players',
'min_parents' => 'Min. Parents',
'min_catering' => 'Min. Catering',
'min_timekeepers' => 'Min. Timekeepers',
'event_defaults_title' => 'Event Default Minimums',
'event_defaults_description' => 'Set default minimum values for new events per type. Admins can override these when creating events.',
// Locations management
'nav_locations' => 'Locations',
'locations_title' => 'Manage Locations',
'location_add' => 'Add New Location',
'location_name_label' => 'Name',
'location_save' => 'Save',
'location_created' => 'Location has been created.',
'location_updated' => 'Location has been updated.',
'location_deleted' => 'Location has been deleted.',
'location_confirm_delete' => 'Really delete this location?',
'locations_empty' => 'No locations yet.',
'known_locations' => 'Known Locations',
'address_manual_hint' => 'Enter address manually...',
// Settings
'settings_title' => 'Settings',
'settings_saved' => 'Settings saved.',
'settings_tab_general' => 'General',
'settings_tab_legal' => 'Legal',
'settings_tab_defaults' => 'Event Defaults',
'settings_tab_categories' => 'File Categories',
// File Management
'nav_files' => 'Files',
'files_title' => 'File Management',
'upload_file' => 'Upload File',
'file_uploaded' => 'File has been uploaded.',
'file_deleted' => 'File has been deleted.',
'file_category' => 'Category',
'select_category' => 'Select category',
'no_files_yet' => 'No files in this category yet.',
'no_files_at_all' => 'No files uploaded yet.',
'file_size' => 'Size',
'uploaded_by' => 'Uploaded by',
'uploaded_at' => 'Uploaded on',
'confirm_delete_file' => 'Really delete this file? All event attachments will be removed.',
'allowed_file_types' => 'Allowed file types: PDF, DOCX, XLSX, Images (JPG, PNG, GIF, WEBP)',
'max_file_size' => 'Maximum file size: 10 MB',
'file_categories' => 'File Categories',
'file_categories_description' => 'Manage the categories for file management.',
'new_category' => 'New Category',
'category_name' => 'Category Name',
'category_created' => 'Category has been created.',
'category_updated' => 'Category has been updated.',
'category_deleted' => 'Category has been deleted.',
'category_not_empty' => 'Category cannot be deleted because it still contains files.',
'confirm_delete_category' => 'Really delete this category?',
'event_files' => 'Files',
'attach_from_library' => 'Attach from library',
'upload_new_file' => 'Upload new file',
'attached_files' => 'Attached Files',
'detach_file' => 'Remove',
'no_attached_files' => 'No files attached.',
'profile_picture' => 'Profile Picture',
'upload_picture' => 'Upload picture',
'remove_picture' => 'Remove picture',
'picture_uploaded' => 'Profile picture has been updated.',
'picture_removed' => 'Profile picture has been removed.',
'max_picture_size' => 'Max. 2 MB (JPG, PNG, GIF, WEBP)',
'html_anchor_hint' => 'Tip: Add anchors with id attribute, e.g. &lt;h3 id="cookies"&gt;',
// Soft-Delete
'danger_zone' => 'Danger zone',
'delete_user' => 'Delete user',
'delete_user_hint' => 'The user will be deactivated and can be restored within 7 days. Historical data (comments, participations) will be preserved.',
'delete_player' => 'Delete player',
'delete_player_hint' => 'The player will be removed and can be restored within 7 days. Historical data (participations, events) will be preserved.',
'user_status_label' => 'User status',
'player_status_label' => 'Player status',
'deactivate_user_hint' => 'The user will no longer be able to log in.',
'activate_user_hint' => 'The user will be able to log in again.',
'deactivate_player_hint' => 'The player will no longer appear in event lists.',
'activate_player_hint' => 'The player will appear in event lists again.',
'player_toggled' => 'Player :status.',
'log_player_toggled' => 'Player :name :status',
'confirm_delete_user' => 'Are you sure you want to delete this user? They can be restored within 7 days.',
'confirm_delete_player' => 'Are you sure you want to delete this player? They can be restored within 7 days.',
'user_deleted' => 'User has been deleted.',
'user_restored' => 'User has been restored.',
'player_deleted' => 'Player has been deleted.',
'player_restored' => 'Player has been restored.',
'cannot_delete_self' => 'You cannot delete yourself.',
'cannot_delete_main_admin' => 'The main admin cannot be deleted.',
'restore_expired' => 'The restoration period has expired.',
'trash' => 'Trash',
'restore' => 'Restore',
'delete' => 'Delete',
'deleted_at' => 'Deleted at',
// Activity Log
'activity_log_title' => 'Activity Log',
'nav_activity_log' => 'Activity Log',
'log_category' => 'Category',
'log_all_categories' => 'All categories',
'log_cat_auth' => 'Authentication',
'log_cat_users' => 'Users',
'log_cat_players' => 'Players',
'log_cat_events' => 'Events',
'log_cat_files' => 'Files',
'log_cat_settings' => 'Settings',
'log_cat_dsgvo' => 'GDPR',
'log_from' => 'From',
'log_to' => 'To',
'log_filter' => 'Filter',
'log_reset' => 'Reset',
'log_time' => 'Time',
'log_user' => 'User',
'log_action' => 'Action',
'log_description' => 'Description',
'log_ip' => 'IP Address',
'log_system' => 'System',
'log_empty' => 'No entries found.',
'log_details' => 'Details',
'log_field' => 'Field',
'log_old_value' => 'Before',
'log_new_value' => 'After',
// Log descriptions
'log_login' => ':name logged in',
'log_logout' => ':name logged out',
'log_login_failed' => 'Failed login attempt for :email',
'log_registered' => ':name registered',
'log_user_updated' => 'User :name was updated',
'log_user_toggled' => 'User :name: status changed to :status',
'log_role_changed' => 'Role of :name changed to :role',
'log_password_reset' => 'Password of :name was reset',
'log_user_deleted' => 'User :name was deleted',
'log_user_restored' => 'User :name was restored',
'log_player_created' => 'Player :name was created',
'log_player_updated' => 'Player :name was updated',
'log_player_deleted' => 'Player :name was deleted',
'log_player_restored' => 'Player :name was restored',
'log_parent_assigned' => ':parent was assigned as parent of :player',
'log_parent_removed' => ':parent was removed as parent of :player',
'log_event_created' => 'Event ":title" was created',
'log_event_updated' => 'Event ":title" was updated',
'log_event_deleted' => 'Event ":title" was deleted',
'log_participant_changed' => 'Participation status for ":event" changed to :status',
'log_catering_changed' => 'Catering status for ":event" changed to :status',
'log_timekeeper_changed' => 'Timekeeper status for ":event" changed to :status',
'log_comment_created' => 'Comment added to ":event"',
'log_comment_deleted' => 'Comment deleted from ":event"',
'log_file_uploaded' => 'File ":name" uploaded',
'log_file_deleted' => 'File ":name" deleted',
'log_settings_updated' => 'Settings were updated',
'log_invitation_created' => 'Invitation created for :email',
// Statistics
'nav_statistics' => 'Statistics',
'statistics_title' => 'Game Statistics',
'total_games' => 'Total Games',
'wins' => 'Wins',
'losses' => 'Losses',
'draws' => 'Draws',
'win_rate' => 'Win Rate',
'chart_win_loss' => 'Wins / Losses',
'chart_player_participation' => 'Player Participation',
'chart_parent_involvement' => 'Parent Involvement',
'no_games_yet' => 'No games available yet.',
'filter_from' => 'From',
'filter_to' => 'To',
'filter_apply' => 'Filter',
'filter_reset' => 'Reset',
'all_teams' => 'All Teams',
'not_applicable' => 'N/A',
'min_users' => 'Min. Users',
'home_short' => 'H',
'away_short' => 'A',
'player_ranking_title' => 'Player Participation',
'player_ranking_desc' => 'Participation rate of players in :count games (home and away games).',
'games_played' => 'Played',
'games_assigned' => 'Assigned',
'participation_rate' => 'Rate',
'parent_ranking_title' => 'Parent Engagement',
'parent_ranking_desc' => 'Catering (:catering events) and timekeeping (:timekeeper events) — all published events.',
'total_contributions' => 'Total',
'statistics_enabled_label' => 'Enable statistics page',
'statistics_enabled_hint' => 'When disabled, the statistics page is only visible to the administrator.',
// Slogan & Favicon
'slogan_label' => 'Slogan',
'slogan_hint' => 'Displayed on the login page and in the footer.',
'favicon_label' => 'Favicon',
'favicon_hint' => 'ICO, PNG, SVG, JPG (max. 512 KB)',
'favicon_current' => 'Current favicon',
'favicon_remove' => 'Remove favicon',
'favicon_uploaded' => 'Favicon has been updated.',
'favicon_removed' => 'Favicon has been removed.',
// Undo / Revert
'log_revert' => 'Undo',
'log_revert_confirm' => 'Are you sure you want to undo this action?',
'log_revert_success' => 'Action has been successfully undone.',
'log_revert_not_possible' => 'This action cannot be undone.',
'log_reverted' => 'Undone: ":desc"',
'event_restored' => 'Event has been restored.',
'log_event_restored' => 'Event ":title" has been restored',
// Visibility
'settings_tab_visibility' => 'Visibility',
'visibility_description' => 'Control which features are visible for which roles. Administrators always see everything.',
'visibility_feature_statistics' => 'Statistics page',
'visibility_feature_catering_history' => 'Catering/timekeeper history',
// List Generator
'nav_list_generator' => 'List Generator',
'list_generator_title' => 'Create List',
'list_title' => 'Subject',
'list_subtitle' => 'Subtitle (optional)',
'list_notes' => 'Notes / Description',
'list_source' => 'Row Source',
'list_source_players' => 'Players',
'list_source_parents' => 'Parents',
'list_source_freetext' => 'Free Text',
'list_freetext_hint' => 'One line per entry',
'list_columns' => 'Columns',
'list_custom_columns' => 'Additional Columns',
'list_add_column' => 'Add Column',
'list_column_name' => 'Column Name',
'list_generate' => 'Generate List',
'list_result_title' => 'List Generated',
'list_print' => 'Print / Save as PDF',
'list_new' => 'Create New List',
'list_to_library' => 'Go to File Library',
'list_generated_at' => 'Generated on',
'list_all_teams' => 'All Teams',
'list_saved_info' => 'File ":name" was automatically saved in the library under "General".',
'list_download_pdf' => 'Download PDF',
'list_entries_count' => 'entries',
'log_list_generated' => 'List ":title" was generated',
'no_entries' => 'No entries found.',
// GDPR
'dsgvo_title' => 'GDPR Consent Declaration',
'dsgvo_short' => 'GDPR',
'dsgvo_consent_label' => 'Consent declaration confirmed',
'dsgvo_view_document' => 'View document',
'dsgvo_confirm' => 'Confirm',
'dsgvo_revoke' => 'Revoke',
'dsgvo_toggled' => 'GDPR status has been updated.',
'dsgvo_no_file' => 'No document has been uploaded yet.',
'dsgvo_no_document' => 'The user has not uploaded a consent declaration yet.',
'dsgvo_not_confirmed' => 'Not yet confirmed. Please review the document and then confirm.',
'dsgvo_confirmed_info' => 'Confirmed by :name on :date',
'dsgvo_confirmed_tooltip' => 'GDPR consent confirmed',
'dsgvo_pending_tooltip' => 'Document uploaded, confirmation pending',
'dsgvo_missing_tooltip' => 'No document uploaded',
'dsgvo_events_title' => 'GDPR Events (last 10)',
'dsgvo_action_dsgvo_consent_uploaded' => 'Uploaded',
'dsgvo_action_dsgvo_consent_confirmed' => 'Confirmed',
'dsgvo_action_dsgvo_consent_revoked' => 'Revoked',
'dsgvo_action_dsgvo_consent_removed' => 'Removed',
'dsgvo_action_account_self_deleted' => 'Account deleted',
'dsgvo_action_child_auto_deactivated' => 'Child deactivated',
'log_dsgvo_consent_uploaded' => ':name has uploaded a consent declaration',
'log_dsgvo_confirmed' => 'Consent declaration of :name has been confirmed',
'log_dsgvo_revoked' => 'Confirmation of consent declaration of :name has been revoked',
'log_dsgvo_consent_removed' => ':name has removed the consent declaration',
'log_account_self_deleted' => ':name has deleted their own account',
'log_child_auto_deactivated' => 'Player :child was automatically deactivated (sole parent :parent deleted account)',
// GDPR Pending Widget
'dsgvo_pending_title' => 'GDPR — Confirmation Pending',
'dsgvo_pending_count' => ':count declaration(s) pending',
'dsgvo_consent_document' => 'GDPR Consent Declaration',
'dsgvo_reject' => 'Reject',
'dsgvo_reject_confirm' => 'Are you sure you want to reject this consent declaration? The document will be deleted and the user will need to upload it again.',
'dsgvo_rejected' => 'Consent declaration has been rejected.',
'log_dsgvo_rejected' => 'Consent declaration of :name has been rejected',
'dsgvo_action_dsgvo_consent_rejected' => 'Rejected',
'dsgvo_preview_not_available' => 'Preview not available for this file type.',
// Factory Reset
'factory_reset_title' => 'Complete Reset',
'factory_reset_description' => 'Resets the entire WebApp to its initial state. After the reset, the installation wizard will start again.',
'factory_reset_deletes' => 'The following will be permanently deleted',
'factory_reset_item_users' => 'All users (including administrator)',
'factory_reset_item_data' => 'All teams, players, events, comments',
'factory_reset_item_settings' => 'All settings and file categories',
'factory_reset_item_files' => 'All uploaded files and profile pictures',
'factory_reset_warning' => 'This action CANNOT be undone! The app will be completely reset and the installation wizard will start.',
'factory_reset_confirm' => 'WARNING: The entire WebApp will be irreversibly reset and all data deleted. The installation wizard will start again. Are you sure?',
'factory_reset_button' => 'Reset WebApp completely',
// License & Support
'settings_tab_license' => 'License & Support',
'license_title' => 'License Key',
'license_description' => 'Enter your license key to receive support and updates.',
'license_key_label' => 'License Key',
'license_invalid' => 'The entered license key is invalid.',
'registration_status' => 'Registration Status',
'registration_active' => 'Registered',
'registration_inactive' => 'Not registered',
'register_now' => 'Register now',
'registration_success' => 'Installation registered successfully.',
'registration_failed' => 'Registration failed. Please try again later.',
'version_info' => 'System Information',
'update_available' => 'Update available: Version :version',
'update_details' => 'Show details',
'download_update' => 'Download update',
'installation_id_label' => 'Installation ID',
'nav_support' => 'Support',
'support_title' => 'Support Tickets',
'support_not_registered' => 'Installation not registered',
'support_register_hint' => 'The installation must be registered to use support. Only technical data (app name, URL, PHP version) will be transmitted.',
'support_new_ticket' => 'Create new ticket',
'support_subject' => 'Subject',
'support_category' => 'Category',
'support_category_bug' => 'Bug Report',
'support_category_feature' => 'Feature Request',
'support_category_question' => 'Question',
'support_category_other' => 'Other',
'support_message' => 'Message',
'support_submit' => 'Submit ticket',
'support_reply' => 'Reply',
'support_send_reply' => 'Send reply',
'support_reply_placeholder' => 'Write your reply...',
'support_ticket_created' => 'Ticket created successfully.',
'support_reply_sent' => 'Reply has been sent.',
'support_submit_failed' => 'Ticket could not be created. Please try again later.',
'support_reply_failed' => 'Reply could not be sent. Please try again later.',
'support_ticket_not_found' => 'Ticket not found.',
'support_no_tickets' => 'No tickets yet.',
'support_no_messages' => 'No messages yet.',
'support_ticket_id' => 'Ticket No.',
'support_status' => 'Status',
'support_status_open' => 'Open',
'support_status_in_progress' => 'In Progress',
'support_status_waiting' => 'Waiting',
'support_status_closed' => 'Closed',
'support_created_at' => 'Created',
'support_last_reply' => 'Last Reply',
'support_back_to_list' => 'Back to overview',
'support_system_info_note' => 'System information will be sent automatically.',
'support_sender_support' => 'Support',
'support_sender_you' => 'You',
'support_ticket_closed' => 'This ticket is closed.',
'installer_register_label' => 'Register installation',
'installer_register_hint' => 'Enables update notifications and support. Only technical data is transmitted (app name, URL, PHP version, app version).',
'installer_license_label' => 'License key (optional)',
'installer_license_hint' => 'Can also be entered later in the settings.',
// Password Reset (Admin + Self-Service)
'settings_tab_maintenance' => 'Maintenance',
'factory_reset_password_label' => 'Your password for confirmation',
'factory_reset_confirmation_label' => 'Security confirmation',
'factory_reset_confirmation_hint' => 'Type RESET-BESTÄTIGT to confirm the action.',
'password_reset_link_sent' => 'A password reset link has been sent via email.',
'password_reset_email_label' => 'Password Reset Email Template',
'password_reset_email_hint' => 'Placeholders: {name} = Username, {link} = Reset link, {app_name} = App name',
'log_password_reset_requested' => 'Password reset requested',
'log_password_changed_self' => ':name changed their password',
'log_dsgvo_viewed' => 'GDPR document of :name viewed',
// Multi-Language Legal Editor
'legal_language_label' => 'Language',
'legal_impressum_label' => 'Legal Notice',
'legal_datenschutz_label' => 'Privacy Policy',
'legal_password_reset_email_label' => 'Password Reset Email',
// Email Tab
'settings_tab_mail' => 'Email',
'mail_config_title' => 'Email Configuration',
'mail_config_hint' => 'SMTP settings for sending emails (e.g. password reset, notifications).',
'mail_mailer_label' => 'Sending Method',
'mail_log_mode' => 'No sending (Log)',
'mail_host_label' => 'SMTP Host',
'mail_port_label' => 'Port',
'mail_username_label' => 'Username',
'mail_password_label' => 'Password',
'mail_from_address_label' => 'Sender Address',
'mail_from_name_label' => 'Sender Name',
'mail_encryption_label' => 'Encryption',
'mail_encryption_none' => 'None',
'mail_save' => 'Save Mail Settings',
'mail_saved' => 'Mail settings have been saved.',
'mail_test_button' => 'Test Connection',
'mail_testing' => 'Testing connection...',
'mail_test_success' => 'SMTP connection successful!',
];

6
lang/en/auth.php Executable file
View File

@@ -0,0 +1,6 @@
<?php
return [
'failed' => 'These credentials do not match our records.',
'password' => 'The provided password is incorrect.',
'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',
];

33
lang/en/auth_ui.php Executable file
View File

@@ -0,0 +1,33 @@
<?php
return [
'login_title' => 'Login',
'email_label' => 'Email',
'password_label' => 'Password',
'remember_me' => 'Remember me',
'login_button' => 'Login',
'register_title' => 'Register',
'name_label' => 'Name',
'children_assigned' => 'Your account will be assigned to the following children:',
'password_min' => '(min. 8 characters)',
'password_confirm_label' => 'Confirm password',
'create_account' => 'Create account',
'already_registered' => 'Already registered?',
'go_to_login' => 'Go to login',
'email_fixed_by_invitation' => 'The email address is set by the invitation.',
'invalid_invitation' => 'This invitation link is invalid or expired.',
'welcome' => 'Welcome! Your account has been created.',
'forgot_password_link' => 'Forgot password?',
'forgot_password_title' => 'Reset Password',
'forgot_password_description' => 'Enter your email address and we will send you a link to reset your password.',
'send_reset_link' => 'Send link',
'back_to_login' => 'Back to login',
'reset_password_title' => 'Set New Password',
'reset_password_button' => 'Reset Password',
'new_password_label' => 'New Password',
'confirm_password_label' => 'Confirm Password',
'login_failed' => 'These credentials are invalid.',
'email_must_match_invitation' => 'The email address must match the invitation: :email',
'cookie_notice' => 'This site only uses a technically necessary session cookie. No tracking.',
'cookie_notice_link' => 'Learn more',
'account_deactivated' => 'Your account has been deactivated. Please contact the administrator.',
];

63
lang/en/events.php Executable file
View File

@@ -0,0 +1,63 @@
<?php
return [
'title' => 'Events',
'no_events' => 'No events found.',
'no_upcoming' => 'No upcoming events.',
'upcoming_title' => 'Upcoming Events',
'cancelled_label' => 'Cancelled',
'draft_label' => 'Draft',
'cancelled_banner' => 'This event has been cancelled.',
'draft_banner' => 'Draft — only visible to admins.',
'back_to_list' => 'Back to event list',
'description' => 'Description',
'plan_route' => 'Plan route',
'start_navigation' => 'Start navigation',
'participants' => 'Participants',
'confirmations' => 'Accepted',
'rejections' => 'Declined',
'open_responses' => 'Open',
'participation_updated' => 'Participation updated.',
'catering' => 'Catering / Food',
'bring_something' => 'Bringing something',
'bring_nothing' => 'Not bringing anything',
'catering_note_placeholder' => 'e.g. Bringing cake',
'catering_updated' => 'Catering status updated.',
'no_catering_yet' => 'No catering commitments yet.',
'timekeeper' => 'Timekeeper',
'timekeeper_yes' => 'Yes, I can',
'timekeeper_no' => 'No',
'catering_short' => 'Catering',
'timekeeper_short' => 'Timekeeper',
'no_timekeeper_yet' => 'No timekeeper assigned yet.',
'timekeeper_updated' => 'Timekeeper status updated.',
'comments' => 'Comments',
'comment_placeholder' => 'Write a comment...',
'no_comments' => 'No comments yet.',
'comment_deleted' => '[Deleted]',
'confirm_delete_comment' => 'Delete comment?',
'comment_added' => 'Comment added.',
'comment_removed' => 'Comment deleted.',
'hello_user' => 'Hello, :name!',
'upcoming_events' => 'Upcoming Events',
'calendar' => 'Calendar',
'today' => 'Today',
'month_view' => 'Month',
'year_view' => 'Year',
// Files
'files' => 'Files',
'download' => 'Download',
'no_files' => 'No files attached.',
// Opponent & Score
'opponent' => 'Opponent',
'score' => 'Score',
'score_home' => 'Home',
'score_away' => 'Away',
'vs' => 'vs.',
// Staff visibility
'signed_up' => 'signed up',
'withdrawn' => 'withdrawn',
'deleted_label' => 'deleted',
];

5
lang/en/pagination.php Executable file
View File

@@ -0,0 +1,5 @@
<?php
return [
'previous' => '&laquo; Previous',
'next' => 'Next &raquo;',
];

13
lang/en/passwords.php Executable file
View File

@@ -0,0 +1,13 @@
<?php
return [
'reset' => 'Your password has been reset.',
'sent' => 'We have sent you a password reset link.',
'throttled' => 'Please wait before trying again.',
'token' => 'This password reset token is invalid.',
'user' => 'No user could be found with this email address.',
'reset_subject' => 'Reset Password — :app',
'reset_greeting' => 'Hello :name,',
'reset_line1' => 'You are receiving this email because a password reset request was made for your account.',
'reset_line2' => 'This password reset link will expire in :count minutes.',
'reset_line3' => 'If you did not request a password reset, no further action is required.',
];

43
lang/en/profile.php Executable file
View File

@@ -0,0 +1,43 @@
<?php
return [
'title' => 'My Profile',
'name_label' => 'Name',
'email_label' => 'Email',
'email_readonly' => 'The email address cannot be changed.',
'phone_label' => 'Phone (mobile)',
'role_label' => 'Role',
'language_label' => 'Language',
'my_children' => 'My Children',
'updated' => 'Profile updated.',
// Profile picture
'profile_picture' => 'Profile Picture',
'upload_picture' => 'Upload picture',
'remove_picture' => 'Remove picture',
'max_picture_size' => 'Max. 2 MB (JPG, PNG, GIF, WEBP)',
// GDPR consent declaration
'dsgvo_title' => 'GDPR Consent Declaration',
'dsgvo_description' => 'Upload the signed consent declaration as a photo or PDF here. One declaration applies for both parents jointly.',
'dsgvo_upload' => 'Upload declaration',
'dsgvo_replace' => 'Replace',
'dsgvo_remove' => 'Remove declaration',
'dsgvo_file_hint' => 'PDF or image (max. 10 MB)',
'dsgvo_uploaded' => 'Consent declaration has been uploaded.',
'dsgvo_removed' => 'Consent declaration has been removed.',
'dsgvo_view' => 'View',
'dsgvo_confirmed' => 'Confirmed',
'dsgvo_pending' => 'Waiting for confirmation by admin/coach',
'dsgvo_confirmed_by' => 'Confirmed by :name on :date',
'dsgvo_confirm_remove' => 'Really remove the consent declaration? Any existing confirmation will also be reset.',
// Delete account
'danger_zone' => 'Danger Zone',
'delete_account' => 'Delete Account',
'delete_account_hint' => 'Your profile will be deactivated and can be restored by an administrator within 7 days. Historical data (comments, participations) will be preserved.',
'delete_warning_children' => 'Warning: You are the only parent for the following children. They will also be deactivated:',
'delete_confirm' => 'Do you really want to delete your account? This can only be undone by an administrator.',
'account_deleted' => 'Your account has been deleted.',
'cannot_delete_admin' => 'The administrator account cannot be deleted.',
'cannot_delete_staff' => 'Coaches and admins cannot delete their account via the profile page.',
];

108
lang/en/ui.php Executable file
View File

@@ -0,0 +1,108 @@
<?php
return [
'dashboard' => 'Dashboard',
'events' => 'Events',
'admin' => 'Admin',
'profile' => 'Profile',
'logout' => 'Logout',
'back_to_app' => 'Back to App',
'login' => 'Login',
'save' => 'Save',
'cancel' => 'Cancel',
'edit' => 'Edit',
'delete' => 'Delete',
'create' => 'Create',
'filter' => 'Filter',
'send' => 'Send',
'back' => 'Back',
'yes' => 'Yes',
'no' => 'No',
'open' => 'Open',
'all_teams' => 'All Teams',
'all_types' => 'All Types',
'upcoming' => 'Upcoming',
'past' => 'Past',
'period' => 'Period',
'team' => 'Team',
'type' => 'Type',
'name' => 'Name',
'email' => 'Email',
'password' => 'Password',
'role' => 'Role',
'language' => 'Language',
'impressum' => 'Imprint',
'privacy' => 'Privacy',
'no_entries' => 'No entries available.',
'clock' => '',
'date_format' => 'D, m/d/Y, H:i',
'date_format_long' => 'l, F d, Y, H:i',
'date_format_short' => 'm/d/Y H:i',
'date_format_date' => 'm/d/Y',
'footer_impressum' => 'Imprint',
'footer_privacy' => 'Privacy',
'pwa_install_title' => 'Install App',
'pwa_install_text' => 'Add the app to your home screen for quick access.',
'pwa_install_btn' => 'Install',
'pwa_ios_steps' => 'Tap <strong>⋯</strong> (Menu), then <strong>⬆</strong> (Share) and select "Add to Home Screen".',
'error_403_title' => 'Access Denied',
'error_403_text' => 'You do not have permission to access this page.',
'error_404_title' => 'Page Not Found',
'error_404_text' => 'The requested page could not be found.',
'error_500_title' => 'Server Error',
'error_500_text' => 'An internal error has occurred. Please try again later.',
'back_to_dashboard' => 'Back to Dashboard',
'enums' => [
'event_type' => [
'home_game' => 'Home Game',
'away_game' => 'Away Game',
'training' => 'Training',
'tournament' => 'Tournament',
'meeting' => 'Meeting',
'other' => 'Other',
],
'event_status' => [
'published' => 'Published',
'cancelled' => 'Cancelled',
'draft' => 'Draft',
],
'participant_status' => [
'yes' => 'Accepted',
'no' => 'Declined',
'unknown' => 'Open',
],
'catering_status' => [
'yes' => 'Yes',
'no' => 'No',
'unknown' => 'Open',
],
'user_role' => [
'admin' => 'Administrator',
'coach' => 'Coach',
'parent_rep' => 'Parent Representative',
'user' => 'Parent',
],
],
'locales' => [
'de' => 'Deutsch',
'en' => 'English',
'pl' => 'Polski',
'ru' => 'Русский',
'ar' => 'العربية',
'tr' => 'Türkçe',
],
// GDPR banner
'dsgvo_banner_title' => 'GDPR Consent Declaration Required',
'dsgvo_banner_text' => 'A signed GDPR consent declaration is required to use this app. Please upload the declaration as a photo or PDF in your profile. The app can only be fully used after the upload.',
'dsgvo_banner_action' => 'Upload in profile now',
'dsgvo_banner_pending_title' => 'Consent declaration under review',
'dsgvo_banner_pending_text' => 'Your GDPR consent declaration has been submitted and is under review. Until confirmed by an administrator, the app is in read-only mode — participation, catering, timekeeping, and comments are locked.',
'dsgvo_restricted' => 'Your GDPR consent declaration has not been confirmed yet. Please wait for approval by an administrator.',
'dsgvo_restricted_hint' => 'GDPR consent not yet confirmed — actions locked.',
// Files
'files' => 'Files',
'download' => 'Download',
'all' => 'All',
'close' => 'Close',
];

129
lang/en/validation.php Executable file
View File

@@ -0,0 +1,129 @@
<?php
return [
'accepted' => ':attribute must be accepted.',
'active_url' => ':attribute is not a valid URL.',
'after' => ':attribute must be a date after :date.',
'after_or_equal' => ':attribute must be a date after or equal to :date.',
'alpha' => ':attribute may only contain letters.',
'alpha_dash' => ':attribute may only contain letters, numbers, dashes, and underscores.',
'alpha_num' => ':attribute may only contain letters and numbers.',
'array' => ':attribute must be an array.',
'before' => ':attribute must be a date before :date.',
'before_or_equal' => ':attribute must be a date before or equal to :date.',
'between' => [
'numeric' => ':attribute must be between :min and :max.',
'file' => ':attribute must be between :min and :max kilobytes.',
'string' => ':attribute must be between :min and :max characters.',
'array' => ':attribute must have between :min and :max items.',
],
'boolean' => ':attribute must be true or false.',
'confirmed' => ':attribute confirmation does not match.',
'date' => ':attribute is not a valid date.',
'date_equals' => ':attribute must be a date equal to :date.',
'date_format' => ':attribute does not match the format :format.',
'different' => ':attribute and :other must be different.',
'digits' => ':attribute must be :digits digits.',
'digits_between' => ':attribute must be between :min and :max digits.',
'email' => ':attribute must be a valid email address.',
'exists' => 'The selected :attribute is invalid.',
'file' => ':attribute must be a file.',
'filled' => ':attribute must have a value.',
'gt' => [
'numeric' => ':attribute must be greater than :value.',
'file' => ':attribute must be greater than :value kilobytes.',
'string' => ':attribute must be greater than :value characters.',
'array' => ':attribute must have more than :value items.',
],
'gte' => [
'numeric' => ':attribute must be greater than or equal to :value.',
'file' => ':attribute must be greater than or equal to :value kilobytes.',
'string' => ':attribute must be at least :value characters.',
'array' => ':attribute must have at least :value items.',
],
'image' => ':attribute must be an image.',
'in' => 'The selected :attribute is invalid.',
'in_array' => ':attribute does not exist in :other.',
'integer' => ':attribute must be an integer.',
'ip' => ':attribute must be a valid IP address.',
'json' => ':attribute must be a valid JSON string.',
'lt' => [
'numeric' => ':attribute must be less than :value.',
'file' => ':attribute must be less than :value kilobytes.',
'string' => ':attribute must be fewer than :value characters.',
'array' => ':attribute must have fewer than :value items.',
],
'lte' => [
'numeric' => ':attribute must be less than or equal to :value.',
'file' => ':attribute must be less than or equal to :value kilobytes.',
'string' => ':attribute may not have more than :value characters.',
'array' => ':attribute may not have more than :value items.',
],
'max' => [
'numeric' => ':attribute may not be greater than :max.',
'file' => ':attribute may not be greater than :max kilobytes.',
'string' => ':attribute may not have more than :max characters.',
'array' => ':attribute may not have more than :max items.',
],
'min' => [
'numeric' => ':attribute must be at least :min.',
'file' => ':attribute must be at least :min kilobytes.',
'string' => ':attribute must be at least :min characters.',
'array' => ':attribute must have at least :min items.',
],
'not_in' => 'The selected :attribute is invalid.',
'numeric' => ':attribute must be a number.',
'present' => ':attribute must be present.',
'regex' => ':attribute format is invalid.',
'required' => ':attribute is required.',
'required_if' => ':attribute is required when :other is :value.',
'required_unless' => ':attribute is required unless :other is in :values.',
'required_with' => ':attribute is required when :values is present.',
'required_with_all' => ':attribute is required when :values are present.',
'required_without' => ':attribute is required when :values is not present.',
'required_without_all' => ':attribute is required when none of :values are present.',
'same' => ':attribute and :other must match.',
'size' => [
'numeric' => ':attribute must be :size.',
'file' => ':attribute must be :size kilobytes.',
'string' => ':attribute must be :size characters.',
'array' => ':attribute must contain :size items.',
],
'string' => ':attribute must be a string.',
'timezone' => ':attribute must be a valid timezone.',
'unique' => ':attribute has already been taken.',
'url' => ':attribute must be a valid URL.',
'password' => [
'letters' => ':attribute must contain at least one letter.',
'mixed' => ':attribute must contain at least one uppercase and one lowercase letter.',
'numbers' => ':attribute must contain at least one number.',
'symbols' => ':attribute must contain at least one symbol.',
'uncompromised' => ':attribute has appeared in a data leak. Please choose a different password.',
],
'attributes' => [
'name' => 'Name',
'email' => 'Email',
'password' => 'Password',
'password_confirmation' => 'Password Confirmation',
'title' => 'Title',
'body' => 'Message',
'type' => 'Type',
'status' => 'Status',
'team_id' => 'Team',
'start_date' => 'Date',
'start_time' => 'Time',
'location_name' => 'Location',
'address_text' => 'Address',
'description_html' => 'Description',
'first_name' => 'First Name',
'last_name' => 'Last Name',
'birth_year' => 'Birth Year',
'jersey_number' => 'Jersey Number',
'note' => 'Note',
'season' => 'Season',
'player_id' => 'Player',
'parent_id' => 'Parent',
'relationship_label' => 'Relationship',
],
];

549
lang/pl/admin.php Executable file
View File

@@ -0,0 +1,549 @@
<?php
return [
'dashboard_title' => 'Panel administratora',
'stat_users' => 'Użytkownicy',
'stat_players' => 'Zawodnicy',
'stat_upcoming' => 'Nadchodzące terminy',
'stat_invitations' => 'Otwarte zaproszenia',
'quick_links' => 'Szybki dostęp',
'new_event' => 'Nowy termin',
'new_player' => 'Nowy zawodnik',
'new_invitation' => 'Nowe zaproszenie',
'new_team' => 'Nowa drużyna',
'open_responses_title' => 'Terminy z otwartymi odpowiedziami',
'x_open' => ':count otwarte',
'nav_teams' => 'Drużyny',
'nav_players' => 'Zawodnicy',
'nav_users' => 'Użytkownicy',
'nav_invitations' => 'Zaproszenia',
'nav_events' => 'Wydarzenia',
'nav_settings' => 'Ustawienia',
'nav_verwaltung' => 'Zarządzanie',
'actions' => 'Akcje',
'action' => 'Akcja',
'please_select' => 'Proszę wybrać',
'back_to_list' => 'Powrót do listy',
'inactive' => 'Nieaktywny',
'nr' => 'Nr',
'photo' => 'Zdjęcie',
'date' => 'Data',
'location' => 'Miejsce',
'all_status' => 'Wszystkie statusy',
'copied' => 'Skopiowano!',
'copy' => 'Kopiuj',
'created_by' => 'od',
'valid_until' => 'ważne do',
'teams_title' => 'Drużyny',
'team_created' => 'Drużyna została utworzona.',
'team_updated' => 'Drużyna została zaktualizowana.',
'team_name' => 'Nazwa drużyny',
'year_group' => 'Rocznik',
'year_group_placeholder' => 'np. 2017/18',
'active' => 'Aktywny',
'team_is_active' => 'Drużyna jest aktywna',
'create_team' => 'Utwórz drużynę',
'edit_team' => 'Edytuj drużynę',
'no_teams_yet' => 'Brak drużyn.',
'team_notes' => 'Notatki',
'team_notes_placeholder' => 'Notatki o drużynie (wewnętrzne, widoczne tylko dla administratorów)...',
'team_coaches' => 'Trenerzy',
'no_coaches_available' => 'Brak trenerów w systemie.',
'team_players' => 'Zawodnicy',
'team_parent_reps' => 'Przedstawiciele rodziców',
'team_parent_reps_hint' => 'Rodzice z rolą "Przedstawiciel rodziców", którzy mają dzieci w tej drużynie.',
'no_parent_reps' => 'Brak przedstawicieli rodziców dla tej drużyny.',
'log_team_updated' => 'Drużyna ":name" została zaktualizowana',
'log_player_team_changed' => 'Zawodnik :name został przeniesiony do innej drużyny',
'players_title' => 'Zawodnicy',
'player_created' => 'Zawodnik został utworzony.',
'player_updated' => 'Zawodnik został zaktualizowany.',
'first_name' => 'Imię',
'last_name' => 'Nazwisko',
'birth_year' => 'Rok urodzenia',
'jersey_number' => 'Numer na koszulce',
'photo_permission' => 'Zgoda na zdjęcia',
'notes' => 'Notatki',
'parent_assigned' => 'Rodzic został przypisany.',
'parent_removed' => 'Przypisanie zostało usunięte.',
'assign_parent' => 'Przypisz rodzica',
'add_parent' => 'Dodaj rodzica',
'select_user' => 'Wybierz użytkownika',
'assign' => 'Przypisz',
'relationship_label' => 'Relacja',
'relationship_placeholder' => 'np. Matka, Ojciec',
'parents' => 'Rodzice',
'player_data' => 'Dane zawodnika',
'parent_assignment' => 'Przypisanie rodziców',
'no_parents_yet' => 'Brak przypisanych rodziców.',
'confirm_remove_parent' => 'Na pewno usunąć przypisanie?',
'remove' => 'Usuń',
'no_players_yet' => 'Brak zawodników.',
'users_title' => 'Użytkownicy',
'user_toggled' => 'Użytkownik został :status.',
'role_updated' => 'Rola została zaktualizowana.',
'cannot_deactivate_self' => 'Nie możesz dezaktywować własnego konta.',
'cannot_change_own_role' => 'Nie możesz zmienić własnej roli.',
'activated' => 'aktywowany',
'deactivated' => 'dezaktywowany',
'deactivated_label' => 'Dezaktywowany',
'children' => 'Dzieci',
'phone' => 'Telefon',
'last_login' => 'Ostatnie logowanie',
'never' => 'Nigdy',
'deactivate' => 'Dezaktywuj',
'activate' => 'Aktywuj',
'you_suffix' => '(ty)',
'edit' => 'Edytuj',
'edit_user' => 'Edytuj użytkownika',
'user_data' => 'Dane użytkownika',
'user_updated' => 'Użytkownik został zaktualizowany.',
'reset_password' => 'Zresetuj hasło',
'reset_password_hint' => 'Generuje nowe losowe hasło. Stare hasło stanie się nieważne.',
'reset_password_confirm' => 'Wygenerować nowe losowe hasło? Stare hasło stanie się nieważne.',
'password_reset_success' => 'Nowe hasło zostało wygenerowane.',
'new_password_label' => 'Nowe hasło (widoczne tylko raz):',
'password_only_visible_now' => 'To hasło jest wyświetlane tylko teraz. Przekaż je i nie odświeżaj strony.',
'cannot_edit_own_role' => 'Nie możesz tutaj zmienić swojej roli.',
'cannot_assign_admin_role' => 'Nie możesz przypisać roli administratora.',
'cannot_reset_own_password' => 'Nie możesz zresetować własnego hasła przez panel administracyjny.',
'registered_at' => 'Zarejestrowany',
'invitations_title' => 'Zaproszenia',
'invitation_created' => 'Zaproszenie utworzone. Link: :link',
'invitation_deleted' => 'Zaproszenie zostało usunięte.',
'invitation_already_used' => 'Wykorzystane zaproszenia nie mogą zostać usunięte.',
'create_invitation' => 'Utwórz zaproszenie',
'assign_players' => 'Przypisz zawodników',
'email_optional' => 'Adres e-mail (opcjonalnie)',
'email_optional_hint' => 'Jeśli podany, tylko ten adres e-mail może się zarejestrować',
'expires_at' => 'Ważne do',
'valid_for_days' => 'Ważne przez (dni)',
'token' => 'Token',
'status' => 'Status',
'used' => 'Wykorzystane',
'expired' => 'Wygasłe',
'pending' => 'Otwarte',
'copy_link' => 'Kopiuj link',
'invite_link' => 'Link zaproszenia',
'no_assignment' => 'Brak przypisania',
'no_invitations_yet' => 'Brak zaproszień.',
'no_active_players' => 'Brak aktywnych zawodników.',
'confirm_delete_invitation' => 'Na pewno usunąć zaproszenie?',
'created_label' => 'Utworzono',
'player_assignment_hint' => 'Wybierz dzieci, które mają zostać automatycznie przypisane do nowego konta rodzica.',
'events_title' => 'Wydarzenia',
'event_created' => 'Wydarzenie zostało utworzone.',
'event_updated' => 'Wydarzenie zostało zaktualizowane.',
'event_deleted' => 'Wydarzenie zostało usunięte.',
'event_title' => 'Tytuł',
'start_at' => 'Początek',
'date' => 'Data',
'time' => 'Godzina',
'end_at' => 'Koniec',
'location_name' => 'Nazwa miejsca',
'address' => 'Adres',
'description' => 'Opis',
'search_address' => 'Szukaj adresu...',
'new_event_title' => 'Nowe wydarzenie',
'edit_event_title' => 'Edytuj wydarzenie',
'no_events_yet' => 'Brak wydarzeń.',
'confirm_delete_event' => 'Na pewno usunąć wydarzenie?',
'location_address' => 'Miejsce / Adres',
'location_name_hint' => 'Nazwa miejsca (np. Hala sportowa Północ)',
'search_by_name' => 'Znajdź adres',
'location_name_placeholder' => 'np. Stadion BVB, Hala Sportowa...',
'search_address_hint' => 'Wpisz adres (min. 3 znaki)...',
'description_placeholder' => 'Wpisz opis...',
'assignments' => 'Przypisania',
'catering_assignment' => 'Catering',
'timekeeper_assignment' => 'Chronometrażysta',
'geocoding_error' => 'Wyszukiwanie adresu nie powiodło się. Spróbuj ponownie.',
'geocoding_rate_limit' => 'Zbyt wiele zapytań. Poczekaj chwilę.',
'geocoding_no_results' => 'Nie znaleziono adresu. Wpisz dokładniej.',
'min_requirements' => 'Minimalne wymagania',
'min_players' => 'Min. zawodnicy',
'min_parents' => 'Min. rodzice',
'min_catering' => 'Min. catering',
'min_timekeepers' => 'Min. chronometrażyści',
'event_defaults_title' => 'Domyślne minimalne wartości wydarzeń',
'event_defaults_description' => 'Ustaw domyślne minimalne wartości dla nowych wydarzeń. Admini mogą je zmienić podczas tworzenia.',
// Zarządzanie lokalizacjami
'nav_locations' => 'Lokalizacje',
'locations_title' => 'Zarządzanie lokalizacjami',
'location_add' => 'Dodaj nową lokalizację',
'location_name_label' => 'Nazwa',
'location_save' => 'Zapisz',
'location_created' => 'Lokalizacja została utworzona.',
'location_updated' => 'Lokalizacja została zaktualizowana.',
'location_deleted' => 'Lokalizacja została usunięta.',
'location_confirm_delete' => 'Naprawdę usunąć tę lokalizację?',
'locations_empty' => 'Brak lokalizacji.',
'known_locations' => 'Znane lokalizacje',
'address_manual_hint' => 'Wpisz adres ręcznie...',
// Ustawienia
'settings_title' => 'Ustawienia',
'settings_saved' => 'Ustawienia zapisane.',
'settings_tab_general' => 'Ogólne',
'settings_tab_legal' => 'Prawne',
'settings_tab_defaults' => 'Domyślne dla wydarzeń',
'settings_tab_categories' => 'Kategorie plików',
// Zarządzanie plikami
'nav_files' => 'Pliki',
'files_title' => 'Zarządzanie plikami',
'upload_file' => 'Prześlij plik',
'file_uploaded' => 'Plik został przesłany.',
'file_deleted' => 'Plik został usunięty.',
'file_category' => 'Kategoria',
'select_category' => 'Wybierz kategorię',
'no_files_yet' => 'Brak plików w tej kategorii.',
'no_files_at_all' => 'Nie przesłano jeszcze żadnych plików.',
'file_size' => 'Rozmiar',
'uploaded_by' => 'Przesłane przez',
'uploaded_at' => 'Przesłano dnia',
'confirm_delete_file' => 'Naprawdę usunąć ten plik? Wszystkie powiązania z wydarzeniami zostaną usunięte.',
'allowed_file_types' => 'Dozwolone typy plików: PDF, DOCX, XLSX, Obrazy (JPG, PNG, GIF, WEBP)',
'max_file_size' => 'Maksymalny rozmiar pliku: 10 MB',
'file_categories' => 'Kategorie plików',
'file_categories_description' => 'Zarządzaj kategoriami plików.',
'new_category' => 'Nowa kategoria',
'category_name' => 'Nazwa kategorii',
'category_created' => 'Kategoria została utworzona.',
'category_updated' => 'Kategoria została zaktualizowana.',
'category_deleted' => 'Kategoria została usunięta.',
'category_not_empty' => 'Nie można usunąć kategorii, ponieważ zawiera pliki.',
'confirm_delete_category' => 'Naprawdę usunąć tę kategorię?',
'event_files' => 'Pliki',
'attach_from_library' => 'Dołącz z biblioteki',
'upload_new_file' => 'Prześlij nowy plik',
'attached_files' => 'Dołączone pliki',
'detach_file' => 'Usuń',
'no_attached_files' => 'Brak dołączonych plików.',
'profile_picture' => 'Zdjęcie profilowe',
'upload_picture' => 'Prześlij zdjęcie',
'remove_picture' => 'Usuń zdjęcie',
'picture_uploaded' => 'Zdjęcie profilowe zostało zaktualizowane.',
'picture_removed' => 'Zdjęcie profilowe zostało usunięte.',
'max_picture_size' => 'Maks. 2 MB (JPG, PNG, GIF, WEBP)',
'html_anchor_hint' => 'Wskazówka: Dodaj kotwice z atrybutem id, np. &lt;h3 id="cookies"&gt;',
// Soft-Delete
'danger_zone' => 'Strefa zagrożenia',
'delete_user' => 'Usuń użytkownika',
'delete_user_hint' => 'Użytkownik zostanie dezaktywowany i może być przywrócony w ciągu 7 dni. Dane historyczne (komentarze, uczestnictwa) zostaną zachowane.',
'delete_player' => 'Usuń zawodnika',
'delete_player_hint' => 'Zawodnik zostanie usunięty i może być przywrócony w ciągu 7 dni. Dane historyczne (uczestnictwa, wydarzenia) zostaną zachowane.',
'user_status_label' => 'Status użytkownika',
'player_status_label' => 'Status zawodnika',
'deactivate_user_hint' => 'Użytkownik nie będzie mógł się zalogować.',
'activate_user_hint' => 'Użytkownik będzie mógł się ponownie zalogować.',
'deactivate_player_hint' => 'Zawodnik nie będzie wyświetlany na listach terminów.',
'activate_player_hint' => 'Zawodnik będzie ponownie wyświetlany na listach terminów.',
'player_toggled' => 'Zawodnik :status.',
'log_player_toggled' => 'Zawodnik :name :status',
'confirm_delete_user' => 'Czy na pewno chcesz usunąć tego użytkownika? Można go przywrócić w ciągu 7 dni.',
'confirm_delete_player' => 'Czy na pewno chcesz usunąć tego gracza? Można go przywrócić w ciągu 7 dni.',
'user_deleted' => 'Użytkownik został usunięty.',
'user_restored' => 'Użytkownik został przywrócony.',
'player_deleted' => 'Gracz został usunięty.',
'player_restored' => 'Gracz został przywrócony.',
'cannot_delete_self' => 'Nie możesz usunąć samego siebie.',
'cannot_delete_main_admin' => 'Główny administrator nie może zostać usunięty.',
'restore_expired' => 'Okres przywracania wygasł.',
'trash' => 'Kosz',
'restore' => 'Przywróć',
'delete' => 'Usuń',
'deleted_at' => 'Usunięto',
// Activity Log
'activity_log_title' => 'Dziennik aktywności',
'nav_activity_log' => 'Dziennik aktywności',
'log_category' => 'Kategoria',
'log_all_categories' => 'Wszystkie kategorie',
'log_cat_auth' => 'Uwierzytelnianie',
'log_cat_users' => 'Użytkownicy',
'log_cat_players' => 'Gracze',
'log_cat_events' => 'Terminy',
'log_cat_files' => 'Pliki',
'log_cat_settings' => 'Ustawienia',
'log_cat_dsgvo' => 'RODO',
'log_from' => 'Od',
'log_to' => 'Do',
'log_filter' => 'Filtruj',
'log_reset' => 'Resetuj',
'log_time' => 'Czas',
'log_user' => 'Użytkownik',
'log_action' => 'Akcja',
'log_description' => 'Opis',
'log_ip' => 'Adres IP',
'log_system' => 'System',
'log_empty' => 'Brak wpisów.',
'log_details' => 'Szczegóły',
'log_field' => 'Pole',
'log_old_value' => 'Przed',
'log_new_value' => 'Po',
// Log descriptions
'log_login' => ':name zalogował się',
'log_logout' => ':name wylogował się',
'log_login_failed' => 'Nieudana próba logowania dla :email',
'log_registered' => ':name zarejestrował się',
'log_user_updated' => 'Użytkownik :name został zaktualizowany',
'log_user_toggled' => 'Użytkownik :name: status zmieniony na :status',
'log_role_changed' => 'Rola :name zmieniona na :role',
'log_password_reset' => 'Hasło :name zostało zresetowane',
'log_user_deleted' => 'Użytkownik :name został usunięty',
'log_user_restored' => 'Użytkownik :name został przywrócony',
'log_player_created' => 'Gracz :name został utworzony',
'log_player_updated' => 'Gracz :name został zaktualizowany',
'log_player_deleted' => 'Gracz :name został usunięty',
'log_player_restored' => 'Gracz :name został przywrócony',
'log_parent_assigned' => ':parent został przypisany jako rodzic :player',
'log_parent_removed' => ':parent został usunięty jako rodzic :player',
'log_event_created' => 'Termin ":title" został utworzony',
'log_event_updated' => 'Termin ":title" został zaktualizowany',
'log_event_deleted' => 'Termin ":title" został usunięty',
'log_participant_changed' => 'Status uczestnictwa dla ":event" zmieniony na :status',
'log_catering_changed' => 'Status cateringu dla ":event" zmieniony na :status',
'log_timekeeper_changed' => 'Status chronometrażysty dla ":event" zmieniony na :status',
'log_comment_created' => 'Dodano komentarz do ":event"',
'log_comment_deleted' => 'Usunięto komentarz z ":event"',
'log_file_uploaded' => 'Plik ":name" przesłany',
'log_file_deleted' => 'Plik ":name" usunięty',
'log_settings_updated' => 'Ustawienia zostały zaktualizowane',
'log_invitation_created' => 'Zaproszenie utworzone dla :email',
// Statystyki
'nav_statistics' => 'Statystyki',
'statistics_title' => 'Statystyki meczów',
'total_games' => 'Wszystkie mecze',
'wins' => 'Wygrane',
'losses' => 'Przegrane',
'draws' => 'Remisy',
'win_rate' => '% wygranych',
'chart_win_loss' => 'Wygrane / Przegrane',
'chart_player_participation' => 'Udział zawodników',
'chart_parent_involvement' => 'Zaangażowanie rodziców',
'no_games_yet' => 'Brak meczów.',
'filter_from' => 'Od',
'filter_to' => 'Do',
'filter_apply' => 'Filtruj',
'filter_reset' => 'Resetuj',
'all_teams' => 'Wszystkie drużyny',
'not_applicable' => 'N/D',
'min_users' => 'Min. użytkowników',
'home_short' => 'D',
'away_short' => 'W',
'player_ranking_title' => 'Udział zawodników',
'player_ranking_desc' => 'Frekwencja zawodników w :count meczach (domowe i wyjazdowe).',
'games_played' => 'Rozegrane',
'games_assigned' => 'Wyznaczeni',
'participation_rate' => 'Procent',
'parent_ranking_title' => 'Zaangażowanie rodziców',
'parent_ranking_desc' => 'Catering (:catering wydarzeń) i sędziowanie czasu (:timekeeper wydarzeń) — wszystkie opublikowane wydarzenia.',
'total_contributions' => 'Łącznie',
'statistics_enabled_label' => 'Włącz stronę statystyk',
'statistics_enabled_hint' => 'Po wyłączeniu strona statystyk jest widoczna tylko dla administratora.',
// Slogan & Favicon
'slogan_label' => 'Slogan',
'slogan_hint' => 'Wyświetlany na stronie logowania i w stopce.',
'favicon_label' => 'Favicon',
'favicon_hint' => 'ICO, PNG, SVG, JPG (maks. 512 KB)',
'favicon_current' => 'Aktualna ikona',
'favicon_remove' => 'Usuń ikonę',
'favicon_uploaded' => 'Ikona została zaktualizowana.',
'favicon_removed' => 'Ikona została usunięta.',
// Undo / Revert
'log_revert' => 'Cofnij',
'log_revert_confirm' => 'Czy na pewno chcesz cofnąć tę akcję?',
'log_revert_success' => 'Akcja została pomyślnie cofnięta.',
'log_revert_not_possible' => 'Tej akcji nie można cofnąć.',
'log_reverted' => 'Cofnięto: ":desc"',
'event_restored' => 'Wydarzenie zostało przywrócone.',
'log_event_restored' => 'Wydarzenie ":title" zostało przywrócone',
// Widoczność
'settings_tab_visibility' => 'Widoczność',
'visibility_description' => 'Kontroluj, które funkcje są widoczne dla poszczególnych ról. Administratorzy zawsze widzą wszystko.',
'visibility_feature_statistics' => 'Strona statystyk',
'visibility_feature_catering_history' => 'Historia cateringu/chronometrażu',
// Generator list
'nav_list_generator' => 'Generator list',
'list_generator_title' => 'Utwórz listę',
'list_title' => 'Temat',
'list_subtitle' => 'Podtytuł (opcjonalnie)',
'list_notes' => 'Notatki / Opis',
'list_source' => 'Źródło wierszy',
'list_source_players' => 'Zawodnicy',
'list_source_parents' => 'Rodzice',
'list_source_freetext' => 'Dowolny tekst',
'list_freetext_hint' => 'Jedna linia na wpis',
'list_columns' => 'Kolumny',
'list_custom_columns' => 'Dodatkowe kolumny',
'list_add_column' => 'Dodaj kolumnę',
'list_column_name' => 'Nazwa kolumny',
'list_generate' => 'Utwórz listę',
'list_result_title' => 'Lista utworzona',
'list_print' => 'Drukuj / Zapisz jako PDF',
'list_new' => 'Utwórz nową listę',
'list_to_library' => 'Do biblioteki plików',
'list_generated_at' => 'Utworzono',
'list_all_teams' => 'Wszystkie drużyny',
'list_saved_info' => 'Plik ":name" został automatycznie zapisany w bibliotece w kategorii "Ogólne".',
'list_download_pdf' => 'Pobierz PDF',
'list_entries_count' => 'wpisów',
'log_list_generated' => 'Lista ":title" została utworzona',
'no_entries' => 'Brak wpisów.',
// RODO
'dsgvo_title' => 'Zgoda RODO',
'dsgvo_short' => 'RODO',
'dsgvo_consent_label' => 'Zgoda potwierdzona',
'dsgvo_view_document' => 'Zobacz dokument',
'dsgvo_confirm' => 'Potwierdź',
'dsgvo_revoke' => 'Cofnij',
'dsgvo_toggled' => 'Status RODO został zaktualizowany.',
'dsgvo_no_file' => 'Nie przesłano jeszcze żadnego dokumentu.',
'dsgvo_no_document' => 'Użytkownik nie przesłał jeszcze zgody.',
'dsgvo_not_confirmed' => 'Jeszcze nie potwierdzone. Proszę sprawdzić dokument i potwierdzić.',
'dsgvo_confirmed_info' => 'Potwierdzone przez :name dnia :date',
'dsgvo_confirmed_tooltip' => 'Zgoda RODO potwierdzona',
'dsgvo_pending_tooltip' => 'Dokument przesłany, potwierdzenie oczekujące',
'dsgvo_missing_tooltip' => 'Brak dokumentu',
'dsgvo_events_title' => 'Zdarzenia RODO (ostatnie 10)',
'dsgvo_action_dsgvo_consent_uploaded' => 'Przesłano',
'dsgvo_action_dsgvo_consent_confirmed' => 'Potwierdzono',
'dsgvo_action_dsgvo_consent_revoked' => 'Cofnięto',
'dsgvo_action_dsgvo_consent_removed' => 'Usunięto',
'dsgvo_action_account_self_deleted' => 'Konto usunięte',
'dsgvo_action_child_auto_deactivated' => 'Dziecko dezaktywowane',
'log_dsgvo_consent_uploaded' => ':name przesłał/a zgodę',
'log_dsgvo_confirmed' => 'Zgoda :name została potwierdzona',
'log_dsgvo_revoked' => 'Potwierdzenie zgody :name zostało cofnięte',
'log_dsgvo_consent_removed' => ':name usunął/ęła zgodę',
'log_account_self_deleted' => ':name usunął/ęła własne konto',
'log_child_auto_deactivated' => 'Gracz :child został automatycznie dezaktywowany (jedyny rodzic :parent usunął konto)',
// RODO Pending Widget
'dsgvo_pending_title' => 'RODO — Potwierdzenie oczekujące',
'dsgvo_pending_count' => ':count deklaracja(e) oczekująca(e)',
'dsgvo_consent_document' => 'Deklaracja zgody RODO',
'dsgvo_reject' => 'Odrzuć',
'dsgvo_reject_confirm' => 'Czy na pewno chcesz odrzucić tę deklarację zgody? Dokument zostanie usunięty, a użytkownik będzie musiał go ponownie przesłać.',
'dsgvo_rejected' => 'Deklaracja zgody została odrzucona.',
'log_dsgvo_rejected' => 'Deklaracja zgody :name została odrzucona',
'dsgvo_action_dsgvo_consent_rejected' => 'Odrzucono',
'dsgvo_preview_not_available' => 'Podgląd niedostępny dla tego typu pliku.',
// Factory Reset
'factory_reset_title' => 'Pełny reset',
'factory_reset_description' => 'Resetuje całą aplikację do stanu początkowego. Po resecie zostanie uruchomiony kreator instalacji.',
'factory_reset_deletes' => 'Następujące dane zostaną trwale usunięte',
'factory_reset_item_users' => 'Wszyscy użytkownicy (łącznie z administratorem)',
'factory_reset_item_data' => 'Wszystkie drużyny, zawodnicy, terminy, komentarze',
'factory_reset_item_settings' => 'Wszystkie ustawienia i kategorie plików',
'factory_reset_item_files' => 'Wszystkie przesłane pliki i zdjęcia profilowe',
'factory_reset_warning' => 'Tej operacji NIE MOŻNA cofnąć! Aplikacja zostanie całkowicie zresetowana i uruchomiony zostanie kreator instalacji.',
'factory_reset_confirm' => 'UWAGA: Cała aplikacja zostanie nieodwracalnie zresetowana i wszystkie dane usunięte. Kreator instalacji zostanie uruchomiony ponownie. Czy na pewno?',
'factory_reset_button' => 'Zresetuj aplikację całkowicie',
// Licencja i wsparcie
'settings_tab_license' => 'Licencja i wsparcie',
'license_title' => 'Klucz licencyjny',
'license_description' => 'Wprowadź klucz licencyjny, aby otrzymywać wsparcie i aktualizacje.',
'license_key_label' => 'Klucz licencyjny',
'license_invalid' => 'Wprowadzony klucz licencyjny jest nieprawidłowy.',
'registration_status' => 'Status rejestracji',
'registration_active' => 'Zarejestrowano',
'registration_inactive' => 'Niezarejestrowano',
'register_now' => 'Zarejestruj teraz',
'registration_success' => 'Instalacja została pomyślnie zarejestrowana.',
'registration_failed' => 'Rejestracja nie powiodła się. Spróbuj ponownie później.',
'version_info' => 'Informacje o systemie',
'update_available' => 'Dostępna aktualizacja: Wersja :version',
'update_details' => 'Pokaż szczegóły',
'download_update' => 'Pobierz aktualizację',
'installation_id_label' => 'ID instalacji',
'nav_support' => 'Wsparcie',
'support_title' => 'Zgłoszenia wsparcia',
'support_not_registered' => 'Instalacja niezarejestrowana',
'support_register_hint' => 'Aby korzystać ze wsparcia, instalacja musi być zarejestrowana. Przesyłane są tylko dane techniczne (nazwa aplikacji, URL, wersja PHP).',
'support_new_ticket' => 'Utwórz nowe zgłoszenie',
'support_subject' => 'Temat',
'support_category' => 'Kategoria',
'support_category_bug' => 'Raport o błędzie',
'support_category_feature' => 'Prośba o funkcję',
'support_category_question' => 'Pytanie',
'support_category_other' => 'Inne',
'support_message' => 'Wiadomość',
'support_submit' => 'Wyślij zgłoszenie',
'support_reply' => 'Odpowiedz',
'support_send_reply' => 'Wyślij odpowiedź',
'support_reply_placeholder' => 'Napisz swoją odpowiedź...',
'support_ticket_created' => 'Zgłoszenie zostało utworzone.',
'support_reply_sent' => 'Odpowiedź została wysłana.',
'support_submit_failed' => 'Nie udało się utworzyć zgłoszenia. Spróbuj ponownie później.',
'support_reply_failed' => 'Nie udało się wysłać odpowiedzi. Spróbuj ponownie później.',
'support_ticket_not_found' => 'Zgłoszenie nie zostało znalezione.',
'support_no_tickets' => 'Brak zgłoszeń.',
'support_no_messages' => 'Brak wiadomości.',
'support_ticket_id' => 'Nr zgłoszenia',
'support_status' => 'Status',
'support_status_open' => 'Otwarte',
'support_status_in_progress' => 'W trakcie',
'support_status_waiting' => 'Oczekujące',
'support_status_closed' => 'Zamknięte',
'support_created_at' => 'Utworzono',
'support_last_reply' => 'Ostatnia odpowiedź',
'support_back_to_list' => 'Powrót do przeglądu',
'support_system_info_note' => 'Informacje o systemie zostaną wysłane automatycznie.',
'support_sender_support' => 'Wsparcie',
'support_sender_you' => 'Ty',
'support_ticket_closed' => 'To zgłoszenie jest zamknięte.',
'installer_register_label' => 'Zarejestruj instalację',
'installer_register_hint' => 'Umożliwia powiadomienia o aktualizacjach i wsparcie. Przesyłane są tylko dane techniczne (nazwa aplikacji, URL, wersja PHP, wersja aplikacji).',
'installer_license_label' => 'Klucz licencyjny (opcjonalnie)',
'installer_license_hint' => 'Można również wprowadzić później w ustawieniach.',
// Password Reset (Admin + Self-Service)
'settings_tab_maintenance' => 'Konserwacja',
'factory_reset_password_label' => 'Twoje hasło do potwierdzenia',
'factory_reset_confirmation_label' => 'Potwierdzenie bezpieczeństwa',
'factory_reset_confirmation_hint' => 'Wpisz RESET-BESTÄTIGT, aby potwierdzić operację.',
'password_reset_link_sent' => 'Link do resetowania hasła został wysłany e-mailem.',
'password_reset_email_label' => 'Szablon e-maila resetowania hasła',
'password_reset_email_hint' => 'Zmienne: {name} = Nazwa użytkownika, {link} = Link resetowania, {app_name} = Nazwa aplikacji',
'log_password_reset_requested' => 'Zażądano resetowania hasła',
'log_password_changed_self' => ':name zmienił hasło',
'log_dsgvo_viewed' => 'Dokument RODO użytkownika :name przeglądany',
// Multi-Language Legal Editor
'legal_language_label' => 'Język',
'legal_impressum_label' => 'Nota prawna',
'legal_datenschutz_label' => 'Polityka prywatności',
'legal_password_reset_email_label' => 'E-mail resetowania hasła',
// E-Mail Tab
'settings_tab_mail' => 'E-mail',
'mail_config_title' => 'Konfiguracja e-mail',
'mail_config_hint' => 'Ustawienia SMTP do wysyłania wiadomości e-mail (np. resetowanie hasła, powiadomienia).',
'mail_mailer_label' => 'Metoda wysyłki',
'mail_log_mode' => 'Brak wysyłki (Log)',
'mail_host_label' => 'Host SMTP',
'mail_port_label' => 'Port',
'mail_username_label' => 'Nazwa użytkownika',
'mail_password_label' => 'Hasło',
'mail_from_address_label' => 'Adres nadawcy',
'mail_from_name_label' => 'Nazwa nadawcy',
'mail_encryption_label' => 'Szyfrowanie',
'mail_encryption_none' => 'Brak',
'mail_save' => 'Zapisz ustawienia e-mail',
'mail_saved' => 'Ustawienia e-mail zostały zapisane.',
'mail_test_button' => 'Testuj połączenie',
'mail_testing' => 'Testowanie połączenia...',
'mail_test_success' => 'Połączenie SMTP udane!',
];

7
lang/pl/auth.php Executable file
View File

@@ -0,0 +1,7 @@
<?php
return [
'failed' => 'Podane dane logowania są nieprawidłowe.',
'password' => 'Podane hasło jest nieprawidłowe.',
'throttle' => 'Zbyt wiele prób logowania. Spróbuj ponownie za :seconds sekund.',
];

34
lang/pl/auth_ui.php Executable file
View File

@@ -0,0 +1,34 @@
<?php
return [
'login_title' => 'Logowanie',
'email_label' => 'E-mail',
'password_label' => 'Hasło',
'remember_me' => 'Zapamiętaj mnie',
'login_button' => 'Zaloguj',
'register_title' => 'Rejestracja',
'name_label' => 'Imię',
'children_assigned' => 'Twoje konto zostanie przypisane do następujących dzieci:',
'password_min' => '(min. 8 znaków)',
'password_confirm_label' => 'Potwierdź hasło',
'create_account' => 'Utwórz konto',
'already_registered' => 'Masz już konto?',
'go_to_login' => 'Zaloguj się',
'email_fixed_by_invitation' => 'Adres e-mail jest określony przez zaproszenie.',
'invalid_invitation' => 'Ten link zaproszenia jest nieprawidłowy lub wygasł.',
'welcome' => 'Witamy! Twoje konto zostało utworzone.',
'forgot_password_link' => 'Zapomniałeś hasła?',
'forgot_password_title' => 'Resetowanie hasła',
'forgot_password_description' => 'Podaj swój adres e-mail, a wyślemy Ci link do zresetowania hasła.',
'send_reset_link' => 'Wyślij link',
'back_to_login' => 'Powrót do logowania',
'reset_password_title' => 'Ustaw nowe hasło',
'reset_password_button' => 'Zresetuj hasło',
'new_password_label' => 'Nowe hasło',
'confirm_password_label' => 'Potwierdź hasło',
'login_failed' => 'Dane logowania są nieprawidłowe.',
'email_must_match_invitation' => 'Adres e-mail musi odpowiadać zaproszeniu: :email',
'cookie_notice' => 'Ta strona używa tylko technicznie niezbędnego pliku cookie sesji. Bez śledzenia.',
'cookie_notice_link' => 'Dowiedz się więcej',
'account_deactivated' => 'Twoje konto zostało dezaktywowane. Skontaktuj się z administratorem.',
];

64
lang/pl/events.php Executable file
View File

@@ -0,0 +1,64 @@
<?php
return [
'title' => 'Terminy',
'no_events' => 'Nie znaleziono terminów.',
'no_upcoming' => 'Brak nadchodzących terminów.',
'upcoming_title' => 'Nadchodzące terminy',
'cancelled_label' => 'Odwołany',
'draft_label' => 'Szkic',
'cancelled_banner' => 'Ten termin został odwołany.',
'draft_banner' => 'Szkic — widoczny tylko dla administratorów.',
'back_to_list' => 'Powrót do listy terminów',
'description' => 'Opis',
'plan_route' => 'Zaplanuj trasę',
'start_navigation' => 'Rozpocznij nawigację',
'participants' => 'Uczestnicy',
'confirmations' => 'Potwierdzenia',
'rejections' => 'Odmowy',
'open_responses' => 'Otwarte',
'participation_updated' => 'Uczestnictwo zaktualizowane.',
'catering' => 'Catering / Wyżywienie',
'bring_something' => 'Przyniosę coś',
'bring_nothing' => 'Nie przynoszę niczego',
'catering_note_placeholder' => 'np. Przyniosę ciasto',
'catering_updated' => 'Status cateringu zaktualizowany.',
'no_catering_yet' => 'Brak potwierdzeń dotyczących wyżywienia.',
'timekeeper' => 'Chronometrażysta',
'timekeeper_yes' => 'Tak, mogę',
'timekeeper_no' => 'Nie',
'catering_short' => 'Catering',
'timekeeper_short' => 'Sędzia czasu',
'no_timekeeper_yet' => 'Brak przypisanego chronometrażysty.',
'timekeeper_updated' => 'Status chronometrażysty zaktualizowany.',
'comments' => 'Komentarze',
'comment_placeholder' => 'Napisz komentarz...',
'no_comments' => 'Brak komentarzy.',
'comment_deleted' => '[Usunięty]',
'confirm_delete_comment' => 'Usunąć komentarz?',
'comment_added' => 'Komentarz dodany.',
'comment_removed' => 'Komentarz usunięty.',
'hello_user' => 'Cześć, :name!',
'upcoming_events' => 'Nadchodzące terminy',
'calendar' => 'Kalendarz',
'today' => 'Dziś',
'month_view' => 'Miesiąc',
'year_view' => 'Rok',
// Pliki
'files' => 'Pliki',
'download' => 'Pobierz',
'no_files' => 'Brak dołączonych plików.',
// Przeciwnik i wynik
'opponent' => 'Przeciwnik',
'score' => 'Wynik',
'score_home' => 'Gospodarze',
'score_away' => 'Goście',
'vs' => 'vs.',
// Staff visibility
'signed_up' => 'zapisany',
'withdrawn' => 'wypisany',
'deleted_label' => 'usunięty',
];

6
lang/pl/pagination.php Executable file
View File

@@ -0,0 +1,6 @@
<?php
return [
'previous' => '&laquo; Wstecz',
'next' => 'Dalej &raquo;',
];

14
lang/pl/passwords.php Executable file
View File

@@ -0,0 +1,14 @@
<?php
return [
'reset' => 'Twoje hasło zostało zresetowane.',
'sent' => 'Wysłaliśmy Ci link do resetowania hasła.',
'throttled' => 'Poczekaj przed ponowną próbą.',
'token' => 'Token resetowania hasła jest nieprawidłowy.',
'user' => 'Nie znaleziono użytkownika z tym adresem e-mail.',
'reset_subject' => 'Resetowanie hasła — :app',
'reset_greeting' => 'Witaj :name,',
'reset_line1' => 'Otrzymujesz tę wiadomość, ponieważ złożono prośbę o zresetowanie hasła.',
'reset_line2' => 'Ten link do resetowania hasła wygaśnie za :count minut.',
'reset_line3' => 'Jeśli nie prosiłeś o resetowanie hasła, zignoruj tę wiadomość.',
];

44
lang/pl/profile.php Executable file
View File

@@ -0,0 +1,44 @@
<?php
return [
'title' => 'Mój profil',
'name_label' => 'Imię',
'email_label' => 'E-mail',
'email_readonly' => 'Adres e-mail nie może zostać zmieniony.',
'phone_label' => 'Telefon (komórkowy)',
'role_label' => 'Rola',
'language_label' => 'Język',
'my_children' => 'Moje dzieci',
'updated' => 'Profil zaktualizowany.',
// Zdjęcie profilowe
'profile_picture' => 'Zdjęcie profilowe',
'upload_picture' => 'Prześlij zdjęcie',
'remove_picture' => 'Usuń zdjęcie',
'max_picture_size' => 'Maks. 2 MB (JPG, PNG, GIF, WEBP)',
// Zgoda RODO
'dsgvo_title' => 'Zgoda RODO',
'dsgvo_description' => 'Prześlij tutaj podpisaną zgodę jako zdjęcie lub PDF. Jedna zgoda obowiązuje dla obojga rodziców wspólnie.',
'dsgvo_upload' => 'Prześlij zgodę',
'dsgvo_replace' => 'Zastąp',
'dsgvo_remove' => 'Usuń zgodę',
'dsgvo_file_hint' => 'PDF lub obraz (maks. 10 MB)',
'dsgvo_uploaded' => 'Zgoda została przesłana.',
'dsgvo_removed' => 'Zgoda została usunięta.',
'dsgvo_view' => 'Podgląd',
'dsgvo_confirmed' => 'Potwierdzone',
'dsgvo_pending' => 'Oczekiwanie na potwierdzenie przez admina/trenera',
'dsgvo_confirmed_by' => 'Potwierdzone przez :name dnia :date',
'dsgvo_confirm_remove' => 'Czy na pewno usunąć zgodę? Istniejące potwierdzenie zostanie również zresetowane.',
// Usuwanie konta
'danger_zone' => 'Strefa zagrożenia',
'delete_account' => 'Usuń konto',
'delete_account_hint' => 'Twój profil zostanie dezaktywowany i może być przywrócony przez administratora w ciągu 7 dni. Dane historyczne (komentarze, uczestnictwo) zostaną zachowane.',
'delete_warning_children' => 'Uwaga: Jesteś jedynym rodzicem następujących dzieci. Zostaną one również dezaktywowane:',
'delete_confirm' => 'Czy na pewno chcesz usunąć swoje konto? Może to cofnąć tylko administrator.',
'account_deleted' => 'Twoje konto zostało usunięte.',
'cannot_delete_admin' => 'Konto administratora nie może zostać usunięte.',
'cannot_delete_staff' => 'Trenerzy i administratorzy nie mogą usunąć konta przez stronę profilu.',
];

109
lang/pl/ui.php Executable file
View File

@@ -0,0 +1,109 @@
<?php
return [
'dashboard' => 'Panel',
'events' => 'Terminy',
'admin' => 'Admin',
'profile' => 'Profil',
'logout' => 'Wyloguj',
'back_to_app' => 'Do aplikacji',
'login' => 'Zaloguj',
'save' => 'Zapisz',
'cancel' => 'Anuluj',
'edit' => 'Edytuj',
'delete' => 'Usuń',
'create' => 'Utwórz',
'filter' => 'Filtruj',
'send' => 'Wyślij',
'back' => 'Wstecz',
'yes' => 'Tak',
'no' => 'Nie',
'open' => 'Otwarte',
'all_teams' => 'Wszystkie drużyny',
'all_types' => 'Wszystkie typy',
'upcoming' => 'Nadchodzące',
'past' => 'Minione',
'period' => 'Okres',
'team' => 'Drużyna',
'type' => 'Typ',
'name' => 'Imię',
'email' => 'E-mail',
'password' => 'Hasło',
'role' => 'Rola',
'language' => 'Język',
'impressum' => 'Impressum',
'privacy' => 'Polityka prywatności',
'no_entries' => 'Brak wpisów.',
'clock' => '',
'date_format' => 'D, d.m.Y, H:i',
'date_format_long' => 'l, d. F Y, H:i',
'date_format_short' => 'd.m.Y H:i',
'date_format_date' => 'd.m.Y',
'footer_impressum' => 'Impressum',
'footer_privacy' => 'Polityka prywatności',
'pwa_install_title' => 'Zainstaluj aplikację',
'pwa_install_text' => 'Dodaj aplikację do ekranu głównego, aby mieć szybki dostęp.',
'pwa_install_btn' => 'Zainstaluj',
'pwa_ios_steps' => 'Kliknij <strong>⋯</strong> (Menu), potem <strong>⬆</strong> (Udostępnij) i wybierz „Dodaj do ekranu głównego".',
'error_403_title' => 'Brak dostępu',
'error_403_text' => 'Nie masz uprawnień do wyświetlenia tej strony.',
'error_404_title' => 'Nie znaleziono strony',
'error_404_text' => 'Żądana strona nie została znaleziona.',
'error_500_title' => 'Błąd serwera',
'error_500_text' => 'Wystąpił błąd wewnętrzny. Spróbuj ponownie później.',
'back_to_dashboard' => 'Do panelu',
'enums' => [
'event_type' => [
'home_game' => 'Mecz u siebie',
'away_game' => 'Mecz wyjazdowy',
'training' => 'Trening',
'tournament' => 'Turniej',
'meeting' => 'Zebranie',
'other' => 'Inne',
],
'event_status' => [
'published' => 'Opublikowany',
'cancelled' => 'Odwołany',
'draft' => 'Szkic',
],
'participant_status' => [
'yes' => 'Potwierdzony',
'no' => 'Odrzucony',
'unknown' => 'Otwarte',
],
'catering_status' => [
'yes' => 'Tak',
'no' => 'Nie',
'unknown' => 'Otwarte',
],
'user_role' => [
'admin' => 'Administrator',
'coach' => 'Trener',
'parent_rep' => 'Przedstawiciel rodziców',
'user' => 'Rodzic',
],
],
'locales' => [
'de' => 'Deutsch',
'en' => 'English',
'pl' => 'Polski',
'ru' => 'Русский',
'ar' => 'العربية',
'tr' => 'Türkçe',
],
// Baner RODO
'dsgvo_banner_title' => 'Wymagana zgoda RODO',
'dsgvo_banner_text' => 'Do korzystania z tej aplikacji wymagana jest podpisana deklaracja zgody RODO. Prześlij deklarację jako zdjęcie lub PDF w swoim profilu. Aplikacja może być w pełni używana dopiero po przesłaniu.',
'dsgvo_banner_action' => 'Prześlij teraz w profilu',
'dsgvo_banner_pending_title' => 'Zgoda jest weryfikowana',
'dsgvo_banner_pending_text' => 'Twoja deklaracja zgody RODO została przesłana i jest weryfikowana. Do czasu potwierdzenia przez administratora aplikacja działa w trybie tylko do odczytu — uczestnictwo, catering, obsługa czasu i komentarze są zablokowane.',
'dsgvo_restricted' => 'Twoja deklaracja zgody RODO nie została jeszcze potwierdzona. Poczekaj na zatwierdzenie przez administratora.',
'dsgvo_restricted_hint' => 'Zgoda RODO niepotwierdzona — działania zablokowane.',
// Pliki
'files' => 'Pliki',
'download' => 'Pobierz',
'all' => 'Wszystkie',
'close' => 'Zamknij',
];

130
lang/pl/validation.php Executable file
View File

@@ -0,0 +1,130 @@
<?php
return [
'accepted' => 'Pole :attribute musi zostać zaakceptowane.',
'active_url' => 'Pole :attribute nie jest prawidłowym adresem URL.',
'after' => 'Pole :attribute musi być datą późniejszą niż :date.',
'after_or_equal' => 'Pole :attribute musi być datą nie wcześniejszą niż :date.',
'alpha' => 'Pole :attribute może zawierać tylko litery.',
'alpha_dash' => 'Pole :attribute może zawierać tylko litery, cyfry, myślniki i podkreślenia.',
'alpha_num' => 'Pole :attribute może zawierać tylko litery i cyfry.',
'array' => 'Pole :attribute musi być tablicą.',
'before' => 'Pole :attribute musi być datą wcześniejszą niż :date.',
'before_or_equal' => 'Pole :attribute musi być datą nie późniejszą niż :date.',
'between' => [
'numeric' => 'Pole :attribute musi mieścić się między :min a :max.',
'file' => 'Pole :attribute musi mieć od :min do :max kilobajtów.',
'string' => 'Pole :attribute musi mieć od :min do :max znaków.',
'array' => 'Pole :attribute musi mieć od :min do :max elementów.',
],
'boolean' => 'Pole :attribute musi mieć wartość prawda lub fałsz.',
'confirmed' => 'Potwierdzenie pola :attribute nie jest zgodne.',
'date' => 'Pole :attribute nie jest prawidłową datą.',
'date_equals' => 'Pole :attribute musi być datą równą :date.',
'date_format' => 'Pole :attribute nie odpowiada formatowi :format.',
'different' => 'Pola :attribute i :other muszą się różnić.',
'digits' => 'Pole :attribute musi mieć :digits cyfr.',
'digits_between' => 'Pole :attribute musi mieć od :min do :max cyfr.',
'email' => 'Pole :attribute musi być prawidłowym adresem e-mail.',
'exists' => 'Wybrana wartość dla :attribute jest nieprawidłowa.',
'file' => 'Pole :attribute musi być plikiem.',
'filled' => 'Pole :attribute musi mieć wartość.',
'gt' => [
'numeric' => 'Pole :attribute musi być większe niż :value.',
'file' => 'Pole :attribute musi być większe niż :value kilobajtów.',
'string' => 'Pole :attribute musi mieć więcej niż :value znaków.',
'array' => 'Pole :attribute musi mieć więcej niż :value elementów.',
],
'gte' => [
'numeric' => 'Pole :attribute musi być większe lub równe :value.',
'file' => 'Pole :attribute musi mieć co najmniej :value kilobajtów.',
'string' => 'Pole :attribute musi mieć co najmniej :value znaków.',
'array' => 'Pole :attribute musi mieć co najmniej :value elementów.',
],
'image' => 'Pole :attribute musi być obrazem.',
'in' => 'Wybrana wartość dla :attribute jest nieprawidłowa.',
'in_array' => 'Pole :attribute nie istnieje w :other.',
'integer' => 'Pole :attribute musi być liczbą całkowitą.',
'ip' => 'Pole :attribute musi być prawidłowym adresem IP.',
'json' => 'Pole :attribute musi być prawidłowym ciągiem JSON.',
'lt' => [
'numeric' => 'Pole :attribute musi być mniejsze niż :value.',
'file' => 'Pole :attribute musi być mniejsze niż :value kilobajtów.',
'string' => 'Pole :attribute musi mieć mniej niż :value znaków.',
'array' => 'Pole :attribute musi mieć mniej niż :value elementów.',
],
'lte' => [
'numeric' => 'Pole :attribute musi być mniejsze lub równe :value.',
'file' => 'Pole :attribute musi mieć co najwyżej :value kilobajtów.',
'string' => 'Pole :attribute może mieć co najwyżej :value znaków.',
'array' => 'Pole :attribute może mieć co najwyżej :value elementów.',
],
'max' => [
'numeric' => 'Pole :attribute nie może być większe niż :max.',
'file' => 'Pole :attribute nie może być większe niż :max kilobajtów.',
'string' => 'Pole :attribute nie może mieć więcej niż :max znaków.',
'array' => 'Pole :attribute nie może mieć więcej niż :max elementów.',
],
'min' => [
'numeric' => 'Pole :attribute musi wynosić co najmniej :min.',
'file' => 'Pole :attribute musi mieć co najmniej :min kilobajtów.',
'string' => 'Pole :attribute musi mieć co najmniej :min znaków.',
'array' => 'Pole :attribute musi mieć co najmniej :min elementów.',
],
'not_in' => 'Wybrana wartość dla :attribute jest nieprawidłowa.',
'numeric' => 'Pole :attribute musi być liczbą.',
'present' => 'Pole :attribute musi być obecne.',
'regex' => 'Pole :attribute ma nieprawidłowy format.',
'required' => 'Pole :attribute jest wymagane.',
'required_if' => 'Pole :attribute jest wymagane, gdy :other ma wartość :value.',
'required_unless' => 'Pole :attribute jest wymagane, chyba że :other ma wartość :values.',
'required_with' => 'Pole :attribute jest wymagane, gdy :values jest obecne.',
'required_with_all' => 'Pole :attribute jest wymagane, gdy :values są obecne.',
'required_without' => 'Pole :attribute jest wymagane, gdy :values nie jest obecne.',
'required_without_all' => 'Pole :attribute jest wymagane, gdy żadne z :values nie jest obecne.',
'same' => 'Pola :attribute i :other muszą być zgodne.',
'size' => [
'numeric' => 'Pole :attribute musi wynosić :size.',
'file' => 'Pole :attribute musi mieć :size kilobajtów.',
'string' => 'Pole :attribute musi mieć :size znaków.',
'array' => 'Pole :attribute musi zawierać :size elementów.',
],
'string' => 'Pole :attribute musi być ciągiem znaków.',
'timezone' => 'Pole :attribute musi być prawidłową strefą czasową.',
'unique' => 'Taka wartość pola :attribute już istnieje.',
'url' => 'Pole :attribute musi być prawidłowym adresem URL.',
'password' => [
'letters' => ':attribute musi zawierać co najmniej jedną literę.',
'mixed' => ':attribute musi zawierać co najmniej jedną wielką i jedną małą literę.',
'numbers' => ':attribute musi zawierać co najmniej jedną cyfrę.',
'symbols' => ':attribute musi zawierać co najmniej jeden znak specjalny.',
'uncompromised' => ':attribute pojawił się w wycieku danych. Proszę wybrać inne hasło.',
],
'attributes' => [
'name' => 'Imię',
'email' => 'E-mail',
'password' => 'Hasło',
'password_confirmation' => 'Potwierdzenie hasła',
'title' => 'Tytuł',
'body' => 'Treść',
'type' => 'Typ',
'status' => 'Status',
'team_id' => 'Drużyna',
'start_date' => 'Data',
'start_time' => 'Godzina',
'location_name' => 'Miejsce',
'address_text' => 'Adres',
'description_html' => 'Opis',
'first_name' => 'Imię',
'last_name' => 'Nazwisko',
'birth_year' => 'Rok urodzenia',
'jersey_number' => 'Numer na koszulce',
'note' => 'Notatka',
'season' => 'Sezon',
'player_id' => 'Zawodnik',
'parent_id' => 'Rodzic',
'relationship_label' => 'Relacja',
],
];

567
lang/ru/admin.php Executable file
View File

@@ -0,0 +1,567 @@
<?php
return [
// Панель управления
'dashboard_title' => 'Панель администратора',
'stat_users' => 'Пользователи',
'stat_players' => 'Игроки',
'stat_upcoming' => 'Предстоящие мероприятия',
'stat_invitations' => 'Открытые приглашения',
'quick_links' => 'Быстрый доступ',
'new_event' => 'Новое мероприятие',
'new_player' => 'Новый игрок',
'new_invitation' => 'Новое приглашение',
'new_team' => 'Новая команда',
'open_responses_title' => 'Мероприятия с ожидающими ответами',
'x_open' => ':count открыто',
// Навигация
'nav_teams' => 'Команды',
'nav_players' => 'Игроки',
'nav_users' => 'Пользователи',
'nav_invitations' => 'Приглашения',
'nav_events' => 'Мероприятия',
'nav_settings' => 'Настройки',
'nav_verwaltung' => 'Управление',
// Общее
'actions' => 'Действия',
'action' => 'Действие',
'please_select' => 'Пожалуйста, выберите',
'back_to_list' => 'Назад к списку',
'inactive' => 'Неактивно',
'nr' => '№',
'photo' => 'Фото',
'date' => 'Дата',
'location' => 'Место',
'all_status' => 'Все статусы',
'copied' => 'Скопировано!',
'copy' => 'Копировать',
'created_by' => 'от',
'valid_until' => 'действ. до',
// Команды
'teams_title' => 'Команды',
'team_created' => 'Команда создана.',
'team_updated' => 'Команда обновлена.',
'team_name' => 'Название команды',
'year_group' => 'Год рождения',
'year_group_placeholder' => 'Например, 2017/18',
'active' => 'Активно',
'team_is_active' => 'Команда активна',
'create_team' => 'Создать команду',
'edit_team' => 'Редактировать команду',
'no_teams_yet' => 'Пока нет команд.',
'team_notes' => 'Заметки',
'team_notes_placeholder' => 'Заметки о команде (внутренние, видны только администраторам)...',
'team_coaches' => 'Тренеры',
'no_coaches_available' => 'В системе нет тренеров.',
'team_players' => 'Игроки',
'team_parent_reps' => 'Представители родителей',
'team_parent_reps_hint' => 'Родители с ролью «Представитель родителей», у которых есть дети в этой команде.',
'no_parent_reps' => 'Нет представителей родителей для этой команды.',
'log_team_updated' => 'Команда ":name" обновлена',
'log_player_team_changed' => 'Игрок :name переведён в другую команду',
// Игроки
'players_title' => 'Игроки',
'player_created' => 'Игрок создан.',
'player_updated' => 'Игрок обновлён.',
'first_name' => 'Имя',
'last_name' => 'Фамилия',
'birth_year' => 'Год рождения',
'jersey_number' => 'Номер на форме',
'photo_permission' => 'Разрешение на фото',
'notes' => 'Заметки',
'parent_assigned' => 'Родитель привязан.',
'parent_removed' => 'Привязка удалена.',
'assign_parent' => 'Привязать родителя',
'add_parent' => 'Добавить родителя',
'select_user' => 'Выбрать пользователя',
'assign' => 'Привязать',
'relationship_label' => 'Родство',
'relationship_placeholder' => 'Например, мать, отец',
'parents' => 'Родители',
'player_data' => 'Данные игрока',
'parent_assignment' => 'Привязка родителей',
'no_parents_yet' => 'Родители пока не привязаны.',
'confirm_remove_parent' => 'Действительно удалить привязку?',
'remove' => 'Удалить',
'no_players_yet' => 'Пока нет игроков.',
// Пользователи
'users_title' => 'Пользователи',
'user_toggled' => 'Пользователь :status.',
'role_updated' => 'Роль обновлена.',
'cannot_deactivate_self' => 'Вы не можете деактивировать свой аккаунт.',
'cannot_change_own_role' => 'Вы не можете изменить свою роль.',
'activated' => 'активирован',
'deactivated' => 'деактивирован',
'deactivated_label' => 'Деактивирован',
'children' => 'Дети',
'phone' => 'Телефон',
'last_login' => 'Последний вход',
'never' => 'Никогда',
'deactivate' => 'Деактивировать',
'activate' => 'Активировать',
'you_suffix' => '(вы)',
'edit' => 'Редактировать',
'edit_user' => 'Редактировать пользователя',
'user_data' => 'Данные пользователя',
'user_updated' => 'Пользователь обновлён.',
'reset_password' => 'Сбросить пароль',
'reset_password_hint' => 'Генерирует новый случайный пароль. Старый пароль станет недействительным.',
'reset_password_confirm' => 'Сгенерировать новый случайный пароль? Старый пароль станет недействительным.',
'password_reset_success' => 'Новый пароль сгенерирован.',
'new_password_label' => 'Новый пароль (виден только один раз):',
'password_only_visible_now' => 'Этот пароль отображается только сейчас. Пожалуйста, передайте его и не перезагружайте страницу.',
'cannot_edit_own_role' => 'Вы не можете изменить свою роль здесь.',
'cannot_assign_admin_role' => 'Вы не можете назначить роль администратора.',
'cannot_reset_own_password' => 'Вы не можете сбросить свой пароль через панель администратора.',
'registered_at' => 'Зарегистрирован',
// Приглашения
'invitations_title' => 'Приглашения',
'invitation_created' => 'Приглашение создано. Ссылка: :link',
'invitation_deleted' => 'Приглашение удалено.',
'invitation_already_used' => 'Использованные приглашения нельзя удалить.',
'create_invitation' => 'Создать приглашение',
'assign_players' => 'Привязать игроков',
'email_optional' => 'Эл. почта (необязательно)',
'email_optional_hint' => 'Если указана, зарегистрироваться сможет только этот адрес',
'expires_at' => 'Действует до',
'valid_for_days' => 'Действительно (дней)',
'token' => 'Токен',
'status' => 'Статус',
'used' => 'Использовано',
'expired' => 'Истекло',
'pending' => 'Ожидает',
'copy_link' => 'Копировать ссылку',
'invite_link' => 'Ссылка-приглашение',
'no_assignment' => 'Нет привязки',
'no_invitations_yet' => 'Приглашений пока нет.',
'no_active_players' => 'Нет активных игроков.',
'confirm_delete_invitation' => 'Действительно удалить приглашение?',
'created_label' => 'Создано',
'player_assignment_hint' => 'Выберите детей, которые будут автоматически привязаны к новому родительскому аккаунту.',
// Мероприятия
'events_title' => 'Мероприятия',
'event_created' => 'Мероприятие создано.',
'event_updated' => 'Мероприятие обновлено.',
'event_deleted' => 'Мероприятие удалено.',
'event_title' => 'Заголовок',
'start_at' => 'Начало',
'date' => 'Дата',
'time' => 'Время',
'end_at' => 'Окончание',
'location_name' => 'Название места',
'address' => 'Адрес',
'description' => 'Описание',
'search_address' => 'Поиск адреса...',
'new_event_title' => 'Новое мероприятие',
'edit_event_title' => 'Редактировать мероприятие',
'no_events_yet' => 'Мероприятий пока нет.',
'confirm_delete_event' => 'Действительно удалить мероприятие?',
'location_address' => 'Место / Адрес',
'location_name_hint' => 'Название места (напр. Спортзал «Север»)',
'search_by_name' => 'Найти адрес',
'location_name_placeholder' => 'напр. Стадион BVB, Спортзал...',
'search_address_hint' => 'Введите адрес (мин. 3 символа)...',
'description_placeholder' => 'Введите описание...',
'assignments' => 'Назначения',
'catering_assignment' => 'Питание',
'timekeeper_assignment' => 'Хронометрист',
'geocoding_error' => 'Ошибка поиска адреса. Попробуйте ещё раз.',
'geocoding_rate_limit' => 'Слишком много запросов. Подождите немного.',
'geocoding_no_results' => 'Адрес не найден. Уточните запрос.',
// Минимальные требования
'min_requirements' => 'Минимальные требования',
'min_players' => 'Мин. игроков',
'min_parents' => 'Мин. родителей',
'min_catering' => 'Мин. питание',
'min_timekeepers' => 'Мин. хронометристов',
'event_defaults_title' => 'Стандартные минимумы для мероприятий',
'event_defaults_description' => 'Задайте стандартные минимальные значения для новых мероприятий по типам. Администраторы могут изменить их при создании.',
// Управление локациями
'nav_locations' => 'Локации',
'locations_title' => 'Управление локациями',
'location_add' => 'Добавить новую локацию',
'location_name_label' => 'Название',
'location_save' => 'Сохранить',
'location_created' => 'Локация создана.',
'location_updated' => 'Локация обновлена.',
'location_deleted' => 'Локация удалена.',
'location_confirm_delete' => 'Действительно удалить эту локацию?',
'locations_empty' => 'Локации пока отсутствуют.',
'known_locations' => 'Известные локации',
'address_manual_hint' => 'Введите адрес вручную...',
// Настройки
'settings_title' => 'Настройки',
'settings_saved' => 'Настройки сохранены.',
'settings_tab_general' => 'Общие',
'settings_tab_legal' => 'Юридическое',
'settings_tab_defaults' => 'Стандарты событий',
'settings_tab_categories' => 'Категории файлов',
// Управление файлами
'nav_files' => 'Файлы',
'files_title' => 'Управление файлами',
'upload_file' => 'Загрузить файл',
'file_uploaded' => 'Файл был загружен.',
'file_deleted' => 'Файл был удалён.',
'file_category' => 'Категория',
'select_category' => 'Выберите категорию',
'no_files_yet' => 'В этой категории пока нет файлов.',
'no_files_at_all' => 'Файлы ещё не загружены.',
'file_size' => 'Размер',
'uploaded_by' => 'Загружено',
'uploaded_at' => 'Дата загрузки',
'confirm_delete_file' => 'Действительно удалить этот файл? Все связи с мероприятиями будут удалены.',
'allowed_file_types' => 'Допустимые типы файлов: PDF, DOCX, XLSX, Изображения (JPG, PNG, GIF, WEBP)',
'max_file_size' => 'Максимальный размер файла: 10 МБ',
'file_categories' => 'Категории файлов',
'file_categories_description' => 'Управление категориями файлов.',
'new_category' => 'Новая категория',
'category_name' => 'Название категории',
'category_created' => 'Категория создана.',
'category_updated' => 'Категория обновлена.',
'category_deleted' => 'Категория удалена.',
'category_not_empty' => 'Категория не может быть удалена, так как содержит файлы.',
'confirm_delete_category' => 'Действительно удалить эту категорию?',
'event_files' => 'Файлы',
'attach_from_library' => 'Прикрепить из библиотеки',
'upload_new_file' => 'Загрузить новый файл',
'attached_files' => 'Прикреплённые файлы',
'detach_file' => 'Удалить',
'no_attached_files' => 'Файлы не прикреплены.',
'profile_picture' => 'Фото профиля',
'upload_picture' => 'Загрузить фото',
'remove_picture' => 'Удалить фото',
'picture_uploaded' => 'Фото профиля обновлено.',
'picture_removed' => 'Фото профиля удалено.',
'max_picture_size' => 'Макс. 2 МБ (JPG, PNG, GIF, WEBP)',
'html_anchor_hint' => 'Совет: Добавьте якоря с атрибутом id, напр. &lt;h3 id="cookies"&gt;',
// Soft-Delete
'danger_zone' => 'Опасная зона',
'delete_user' => 'Удалить пользователя',
'delete_user_hint' => 'Пользователь будет деактивирован и может быть восстановлен в течение 7 дней. Исторические данные (комментарии, участия) сохранятся.',
'delete_player' => 'Удалить игрока',
'delete_player_hint' => 'Игрок будет удалён и может быть восстановлен в течение 7 дней. Исторические данные (участия, события) сохранятся.',
'user_status_label' => 'Статус пользователя',
'player_status_label' => 'Статус игрока',
'deactivate_user_hint' => 'Пользователь больше не сможет войти в систему.',
'activate_user_hint' => 'Пользователь снова сможет войти в систему.',
'deactivate_player_hint' => 'Игрок не будет отображаться в списках мероприятий.',
'activate_player_hint' => 'Игрок снова будет отображаться в списках мероприятий.',
'player_toggled' => 'Игрок :status.',
'log_player_toggled' => 'Игрок :name :status',
'confirm_delete_user' => 'Вы уверены, что хотите удалить этого пользователя? Его можно восстановить в течение 7 дней.',
'confirm_delete_player' => 'Вы уверены, что хотите удалить этого игрока? Его можно восстановить в течение 7 дней.',
'user_deleted' => 'Пользователь удалён.',
'user_restored' => 'Пользователь восстановлен.',
'player_deleted' => 'Игрок удалён.',
'player_restored' => 'Игрок восстановлен.',
'cannot_delete_self' => 'Вы не можете удалить себя.',
'cannot_delete_main_admin' => 'Главный администратор не может быть удалён.',
'restore_expired' => 'Срок восстановления истёк.',
'trash' => 'Корзина',
'restore' => 'Восстановить',
'delete' => 'Удалить',
'deleted_at' => 'Удалено',
// Activity Log
'activity_log_title' => 'Журнал активности',
'nav_activity_log' => 'Журнал активности',
'log_category' => 'Категория',
'log_all_categories' => 'Все категории',
'log_cat_auth' => 'Аутентификация',
'log_cat_users' => 'Пользователи',
'log_cat_players' => 'Игроки',
'log_cat_events' => 'Мероприятия',
'log_cat_files' => 'Файлы',
'log_cat_settings' => 'Настройки',
'log_cat_dsgvo' => 'GDPR',
'log_from' => 'С',
'log_to' => 'По',
'log_filter' => 'Фильтр',
'log_reset' => 'Сброс',
'log_time' => 'Время',
'log_user' => 'Пользователь',
'log_action' => 'Действие',
'log_description' => 'Описание',
'log_ip' => 'IP-адрес',
'log_system' => 'Система',
'log_empty' => 'Записи не найдены.',
'log_details' => 'Подробности',
'log_field' => 'Поле',
'log_old_value' => 'До',
'log_new_value' => 'После',
// Log descriptions
'log_login' => ':name вошёл в систему',
'log_logout' => ':name вышел из системы',
'log_login_failed' => 'Неудачная попытка входа для :email',
'log_registered' => ':name зарегистрировался',
'log_user_updated' => 'Пользователь :name обновлён',
'log_user_toggled' => 'Пользователь :name: статус изменён на :status',
'log_role_changed' => 'Роль :name изменена на :role',
'log_password_reset' => 'Пароль :name сброшен',
'log_user_deleted' => 'Пользователь :name удалён',
'log_user_restored' => 'Пользователь :name восстановлен',
'log_player_created' => 'Игрок :name создан',
'log_player_updated' => 'Игрок :name обновлён',
'log_player_deleted' => 'Игрок :name удалён',
'log_player_restored' => 'Игрок :name восстановлен',
'log_parent_assigned' => ':parent назначен родителем :player',
'log_parent_removed' => ':parent удалён как родитель :player',
'log_event_created' => 'Мероприятие ":title" создано',
'log_event_updated' => 'Мероприятие ":title" обновлено',
'log_event_deleted' => 'Мероприятие ":title" удалено',
'log_participant_changed' => 'Статус участия для ":event" изменён на :status',
'log_catering_changed' => 'Статус кейтеринга для ":event" изменён на :status',
'log_timekeeper_changed' => 'Статус хронометриста для ":event" изменён на :status',
'log_comment_created' => 'Комментарий добавлен к ":event"',
'log_comment_deleted' => 'Комментарий удалён из ":event"',
'log_file_uploaded' => 'Файл ":name" загружен',
'log_file_deleted' => 'Файл ":name" удалён',
'log_settings_updated' => 'Настройки обновлены',
'log_invitation_created' => 'Приглашение создано для :email',
// Статистика
'nav_statistics' => 'Статистика',
'statistics_title' => 'Статистика матчей',
'total_games' => 'Всего матчей',
'wins' => 'Победы',
'losses' => 'Поражения',
'draws' => 'Ничьи',
'win_rate' => '% побед',
'chart_win_loss' => 'Победы / Поражения',
'chart_player_participation' => 'Участие игроков',
'chart_parent_involvement' => 'Участие родителей',
'no_games_yet' => 'Матчей пока нет.',
'filter_from' => 'С',
'filter_to' => 'По',
'filter_apply' => 'Фильтр',
'filter_reset' => 'Сброс',
'all_teams' => 'Все команды',
'not_applicable' => 'Н/Д',
'min_users' => 'Мин. пользователей',
'home_short' => 'Д',
'away_short' => 'В',
'player_ranking_title' => 'Участие игроков',
'player_ranking_desc' => 'Статистика участия игроков в :count играх (домашние и выездные).',
'games_played' => 'Сыграно',
'games_assigned' => 'Назначено',
'participation_rate' => 'Процент',
'parent_ranking_title' => 'Вклад родителей',
'parent_ranking_desc' => 'Кейтеринг (:catering событий) и хронометраж (:timekeeper событий) — все опубликованные события.',
'total_contributions' => 'Итого',
'statistics_enabled_label' => 'Включить страницу статистики',
'statistics_enabled_hint' => 'Если отключено, страница статистики видна только администратору.',
// Slogan & Favicon
'slogan_label' => 'Слоган',
'slogan_hint' => 'Отображается на странице входа и в подвале.',
'favicon_label' => 'Фавикон',
'favicon_hint' => 'ICO, PNG, SVG, JPG (макс. 512 КБ)',
'favicon_current' => 'Текущий фавикон',
'favicon_remove' => 'Удалить фавикон',
'favicon_uploaded' => 'Фавикон обновлён.',
'favicon_removed' => 'Фавикон удалён.',
// Undo / Revert
'log_revert' => 'Отменить',
'log_revert_confirm' => 'Вы действительно хотите отменить это действие?',
'log_revert_success' => 'Действие успешно отменено.',
'log_revert_not_possible' => 'Это действие невозможно отменить.',
'log_reverted' => 'Отменено: ":desc"',
'event_restored' => 'Событие восстановлено.',
'log_event_restored' => 'Событие ":title" восстановлено',
// Видимость
'settings_tab_visibility' => 'Видимость',
'visibility_description' => 'Управляйте видимостью функций для различных ролей. Администраторы всегда видят всё.',
'visibility_feature_statistics' => 'Страница статистики',
'visibility_feature_catering_history' => 'История кейтеринга/хронометража',
// Генератор списков
'nav_list_generator' => 'Генератор списков',
'list_generator_title' => 'Создать список',
'list_title' => 'Тема',
'list_subtitle' => 'Подзаголовок (необязательно)',
'list_notes' => 'Заметки / Описание',
'list_source' => 'Источник строк',
'list_source_players' => 'Игроки',
'list_source_parents' => 'Родители',
'list_source_freetext' => 'Свободный текст',
'list_freetext_hint' => 'Одна строка на запись',
'list_columns' => 'Столбцы',
'list_custom_columns' => 'Дополнительные столбцы',
'list_add_column' => 'Добавить столбец',
'list_column_name' => 'Название столбца',
'list_generate' => 'Создать список',
'list_result_title' => 'Список создан',
'list_print' => 'Печать / Сохранить как PDF',
'list_new' => 'Создать новый список',
'list_to_library' => 'В библиотеку файлов',
'list_generated_at' => 'Создано',
'list_all_teams' => 'Все команды',
'list_saved_info' => 'Файл ":name" автоматически сохранён в библиотеке в разделе "Общее".',
'list_download_pdf' => 'Скачать PDF',
'list_entries_count' => 'записей',
'log_list_generated' => 'Список ":title" был создан',
'no_entries' => 'Записей нет.',
// GDPR
'dsgvo_title' => 'Согласие на обработку данных (GDPR)',
'dsgvo_short' => 'GDPR',
'dsgvo_consent_label' => 'Согласие подтверждено',
'dsgvo_view_document' => 'Просмотреть документ',
'dsgvo_confirm' => 'Подтвердить',
'dsgvo_revoke' => 'Отозвать',
'dsgvo_toggled' => 'Статус GDPR обновлён.',
'dsgvo_no_file' => 'Документ ещё не загружен.',
'dsgvo_no_document' => 'Пользователь ещё не загрузил согласие.',
'dsgvo_not_confirmed' => 'Ещё не подтверждено. Проверьте документ и подтвердите.',
'dsgvo_confirmed_info' => 'Подтверждено :name :date',
'dsgvo_confirmed_tooltip' => 'Согласие GDPR подтверждено',
'dsgvo_pending_tooltip' => 'Документ загружен, подтверждение ожидается',
'dsgvo_missing_tooltip' => 'Документ не загружен',
'dsgvo_events_title' => 'События GDPR (последние 10)',
'dsgvo_action_dsgvo_consent_uploaded' => 'Загружено',
'dsgvo_action_dsgvo_consent_confirmed' => 'Подтверждено',
'dsgvo_action_dsgvo_consent_revoked' => 'Отозвано',
'dsgvo_action_dsgvo_consent_removed' => 'Удалено',
'dsgvo_action_account_self_deleted' => 'Аккаунт удалён',
'dsgvo_action_child_auto_deactivated' => 'Ребёнок деактивирован',
'log_dsgvo_consent_uploaded' => ':name загрузил(а) согласие',
'log_dsgvo_confirmed' => 'Согласие :name подтверждено',
'log_dsgvo_revoked' => 'Подтверждение согласия :name отозвано',
'log_dsgvo_consent_removed' => ':name удалил(а) согласие',
'log_account_self_deleted' => ':name удалил(а) собственный аккаунт',
'log_child_auto_deactivated' => 'Игрок :child автоматически деактивирован (единственный родитель :parent удалил аккаунт)',
// GDPR Pending Widget
'dsgvo_pending_title' => 'GDPR — Подтверждение ожидается',
'dsgvo_pending_count' => ':count заявление(й) ожидает подтверждения',
'dsgvo_consent_document' => 'Заявление о согласии на обработку данных',
'dsgvo_reject' => 'Отклонить',
'dsgvo_reject_confirm' => 'Вы уверены, что хотите отклонить это заявление о согласии? Документ будет удалён, и пользователю потребуется загрузить его снова.',
'dsgvo_rejected' => 'Заявление о согласии отклонено.',
'log_dsgvo_rejected' => 'Заявление о согласии :name было отклонено',
'dsgvo_action_dsgvo_consent_rejected' => 'Отклонено',
'dsgvo_preview_not_available' => 'Предпросмотр недоступен для этого типа файла.',
// Factory Reset
'factory_reset_title' => 'Полный сброс',
'factory_reset_description' => 'Сбрасывает всё приложение в исходное состояние. После сброса будет запущен мастер установки.',
'factory_reset_deletes' => 'Следующие данные будут безвозвратно удалены',
'factory_reset_item_users' => 'Все пользователи (включая администратора)',
'factory_reset_item_data' => 'Все команды, игроки, мероприятия, комментарии',
'factory_reset_item_settings' => 'Все настройки и категории файлов',
'factory_reset_item_files' => 'Все загруженные файлы и фотографии профилей',
'factory_reset_warning' => 'Это действие НЕЛЬЗЯ отменить! Приложение будет полностью сброшено и запущен мастер установки.',
'factory_reset_confirm' => 'ВНИМАНИЕ: Всё приложение будет необратимо сброшено и все данные удалены. Мастер установки будет запущен заново. Вы уверены?',
'factory_reset_button' => 'Полностью сбросить приложение',
// Лицензия и поддержка
'settings_tab_license' => 'Лицензия и поддержка',
'license_title' => 'Лицензионный ключ',
'license_description' => 'Введите лицензионный ключ для получения поддержки и обновлений.',
'license_key_label' => 'Лицензионный ключ',
'license_invalid' => 'Введённый лицензионный ключ недействителен.',
'registration_status' => 'Статус регистрации',
'registration_active' => 'Зарегистрировано',
'registration_inactive' => 'Не зарегистрировано',
'register_now' => 'Зарегистрировать сейчас',
'registration_success' => 'Установка успешно зарегистрирована.',
'registration_failed' => 'Регистрация не удалась. Попробуйте позже.',
'version_info' => 'Системная информация',
'update_available' => 'Доступно обновление: Версия :version',
'update_details' => 'Показать подробности',
'download_update' => 'Скачать обновление',
'installation_id_label' => 'ID установки',
'nav_support' => 'Поддержка',
'support_title' => 'Тикеты поддержки',
'support_not_registered' => 'Установка не зарегистрирована',
'support_register_hint' => 'Для использования поддержки установка должна быть зарегистрирована. Передаются только технические данные (название приложения, URL, версия PHP).',
'support_new_ticket' => 'Создать новый тикет',
'support_subject' => 'Тема',
'support_category' => 'Категория',
'support_category_bug' => 'Отчёт об ошибке',
'support_category_feature' => 'Запрос функции',
'support_category_question' => 'Вопрос',
'support_category_other' => 'Прочее',
'support_message' => 'Сообщение',
'support_submit' => 'Отправить тикет',
'support_reply' => 'Ответить',
'support_send_reply' => 'Отправить ответ',
'support_reply_placeholder' => 'Напишите ваш ответ...',
'support_ticket_created' => 'Тикет успешно создан.',
'support_reply_sent' => 'Ответ отправлен.',
'support_submit_failed' => 'Не удалось создать тикет. Попробуйте позже.',
'support_reply_failed' => 'Не удалось отправить ответ. Попробуйте позже.',
'support_ticket_not_found' => 'Тикет не найден.',
'support_no_tickets' => 'Тикетов пока нет.',
'support_no_messages' => 'Сообщений пока нет.',
'support_ticket_id' => '№ тикета',
'support_status' => 'Статус',
'support_status_open' => 'Открыт',
'support_status_in_progress' => 'В работе',
'support_status_waiting' => 'Ожидание',
'support_status_closed' => 'Закрыт',
'support_created_at' => 'Создан',
'support_last_reply' => 'Последний ответ',
'support_back_to_list' => 'Назад к списку',
'support_system_info_note' => 'Системная информация отправляется автоматически.',
'support_sender_support' => 'Поддержка',
'support_sender_you' => 'Вы',
'support_ticket_closed' => 'Этот тикет закрыт.',
'installer_register_label' => 'Зарегистрировать установку',
'installer_register_hint' => 'Включает уведомления об обновлениях и поддержку. Передаются только технические данные (название приложения, URL, версия PHP, версия приложения).',
'installer_license_label' => 'Лицензионный ключ (необязательно)',
'installer_license_hint' => 'Можно ввести позже в настройках.',
// Сброс пароля (Администратор + Самообслуживание)
'settings_tab_maintenance' => 'Обслуживание',
'factory_reset_password_label' => 'Ваш пароль для подтверждения',
'factory_reset_confirmation_label' => 'Подтверждение безопасности',
'factory_reset_confirmation_hint' => 'Введите RESET-BESTÄTIGT для подтверждения действия.',
'password_reset_link_sent' => 'Ссылка для сброса пароля отправлена по электронной почте.',
'password_reset_email_label' => 'Шаблон письма для сброса пароля',
'password_reset_email_hint' => 'Заполнители: {name} = Имя пользователя, {link} = Ссылка сброса, {app_name} = Название приложения',
'log_password_reset_requested' => 'Запрошен сброс пароля',
'log_password_changed_self' => ':name изменил пароль',
'log_dsgvo_viewed' => 'Документ GDPR пользователя :name просмотрен',
// Многоязычный редактор правовых текстов
'legal_language_label' => 'Язык',
'legal_impressum_label' => 'Импрессум',
'legal_datenschutz_label' => 'Политика конфиденциальности',
'legal_password_reset_email_label' => 'Письмо для сброса пароля',
// Вкладка E-Mail
'settings_tab_mail' => 'E-Mail',
'mail_config_title' => 'Настройки электронной почты',
'mail_config_hint' => 'Настройки SMTP для отправки электронной почты (напр. сброс пароля, уведомления).',
'mail_mailer_label' => 'Способ отправки',
'mail_log_mode' => 'Без отправки (Лог)',
'mail_host_label' => 'SMTP-хост',
'mail_port_label' => 'Порт',
'mail_username_label' => 'Имя пользователя',
'mail_password_label' => 'Пароль',
'mail_from_address_label' => 'Адрес отправителя',
'mail_from_name_label' => 'Имя отправителя',
'mail_encryption_label' => 'Шифрование',
'mail_encryption_none' => 'Нет',
'mail_save' => 'Сохранить настройки почты',
'mail_saved' => 'Настройки почты сохранены.',
'mail_test_button' => 'Проверить соединение',
'mail_testing' => 'Проверка соединения...',
'mail_test_success' => 'SMTP-соединение успешно!',
];

7
lang/ru/auth.php Executable file
View File

@@ -0,0 +1,7 @@
<?php
return [
'failed' => 'Неверные учётные данные.',
'password' => 'Указанный пароль неверен.',
'throttle' => 'Слишком много попыток входа. Пожалуйста, повторите через :seconds секунд.',
];

37
lang/ru/auth_ui.php Executable file
View File

@@ -0,0 +1,37 @@
<?php
return [
// Вход
'login_title' => 'Вход',
'email_label' => 'Эл. почта',
'password_label' => 'Пароль',
'remember_me' => 'Запомнить меня',
'login_button' => 'Войти',
// Регистрация
'register_title' => 'Регистрация',
'name_label' => 'Имя',
'children_assigned' => 'Ваш аккаунт будет привязан к следующим детям:',
'password_min' => '(мин. 8 символов)',
'password_confirm_label' => 'Подтвердить пароль',
'create_account' => 'Создать аккаунт',
'already_registered' => 'Уже зарегистрированы?',
'go_to_login' => 'Войти',
'email_fixed_by_invitation' => 'Адрес электронной почты определён приглашением.',
'invalid_invitation' => 'Ссылка приглашения недействительна или истекла.',
'welcome' => 'Добро пожаловать! Ваш аккаунт создан.',
'forgot_password_link' => 'Забыли пароль?',
'forgot_password_title' => 'Сброс пароля',
'forgot_password_description' => 'Введите адрес электронной почты, и мы отправим вам ссылку для сброса пароля.',
'send_reset_link' => 'Отправить ссылку',
'back_to_login' => 'Вернуться к входу',
'reset_password_title' => 'Установить новый пароль',
'reset_password_button' => 'Сбросить пароль',
'new_password_label' => 'Новый пароль',
'confirm_password_label' => 'Подтвердить пароль',
'login_failed' => 'Неверные учетные данные.',
'email_must_match_invitation' => 'Адрес электронной почты должен совпадать с приглашением: :email',
'cookie_notice' => 'Этот сайт использует только технически необходимый сессионный файл cookie. Без отслеживания.',
'cookie_notice_link' => 'Подробнее',
'account_deactivated' => 'Ваш аккаунт был деактивирован. Пожалуйста, обратитесь к администратору.',
];

78
lang/ru/events.php Executable file
View File

@@ -0,0 +1,78 @@
<?php
return [
'title' => 'Мероприятия',
'no_events' => 'Мероприятия не найдены.',
'no_upcoming' => 'Нет предстоящих мероприятий.',
'upcoming_title' => 'Ближайшие мероприятия',
'cancelled_label' => 'Отменено',
'draft_label' => 'Черновик',
'cancelled_banner' => 'Это мероприятие отменено.',
'draft_banner' => 'Черновик — виден только администраторам.',
'back_to_list' => 'К списку мероприятий',
// Детали
'description' => 'Описание',
'plan_route' => 'Построить маршрут',
'start_navigation' => 'Начать навигацию',
// Участники
'participants' => 'Участники',
'confirmations' => 'Подтвердили',
'rejections' => 'Отклонили',
'open_responses' => 'Ожидают ответа',
'participation_updated' => 'Участие обновлено.',
// Питание
'catering' => 'Питание / Снабжение',
'bring_something' => 'Принесу что-нибудь',
'bring_nothing' => 'Ничего не принесу',
'catering_note_placeholder' => 'Например, принесу торт',
'no_catering_yet' => 'Пока никто не записался на питание.',
'catering_updated' => 'Статус питания обновлён.',
// Хронометрист
'timekeeper' => 'Хронометрист',
'timekeeper_yes' => 'Да, могу',
'timekeeper_no' => 'Нет',
'catering_short' => 'Кейтеринг',
'timekeeper_short' => 'Хронометрист',
'no_timekeeper_yet' => 'Хронометрист ещё не назначен.',
'timekeeper_updated' => 'Статус хронометриста обновлён.',
// Комментарии
'comments' => 'Комментарии',
'comment_placeholder' => 'Написать комментарий...',
'no_comments' => 'Пока нет комментариев.',
'comment_deleted' => '[Удалён]',
'confirm_delete_comment' => 'Удалить комментарий?',
'comment_added' => 'Комментарий добавлен.',
'comment_removed' => 'Комментарий удалён.',
// Главная
'hello_user' => 'Привет, :name!',
'upcoming_events' => 'Ближайшие мероприятия',
// Календарь
'calendar' => 'Календарь',
'today' => 'Сегодня',
'month_view' => 'Месяц',
'year_view' => 'Год',
// Файлы
'files' => 'Файлы',
'download' => 'Скачать',
'no_files' => 'Файлы не прикреплены.',
// Соперник и счёт
'opponent' => 'Соперник',
'score' => 'Счёт',
'score_home' => 'Хозяева',
'score_away' => 'Гости',
'vs' => 'против',
// Staff visibility
'signed_up' => 'записался',
'withdrawn' => 'отказался',
'deleted_label' => 'удалён',
];

6
lang/ru/pagination.php Executable file
View File

@@ -0,0 +1,6 @@
<?php
return [
'previous' => '&laquo; Назад',
'next' => 'Далее &raquo;',
];

14
lang/ru/passwords.php Executable file
View File

@@ -0,0 +1,14 @@
<?php
return [
'reset' => 'Ваш пароль был сброшен.',
'sent' => 'Мы отправили вам ссылку для сброса пароля.',
'throttled' => 'Пожалуйста, подождите перед повторной попыткой.',
'token' => 'Токен сброса пароля недействителен.',
'user' => 'Пользователь с таким адресом электронной почты не найден.',
'reset_subject' => 'Сброс пароля — :app',
'reset_greeting' => 'Здравствуйте, :name,',
'reset_line1' => 'Вы получили это письмо, потому что был отправлен запрос на сброс пароля вашей учётной записи.',
'reset_line2' => 'Эта ссылка для сброса пароля действительна :count минут.',
'reset_line3' => 'Если вы не запрашивали сброс пароля, просто проигнорируйте это письмо.',
];

44
lang/ru/profile.php Executable file
View File

@@ -0,0 +1,44 @@
<?php
return [
'title' => 'Мой профиль',
'name_label' => 'Имя',
'email_label' => 'Эл. почта',
'email_readonly' => 'Адрес электронной почты нельзя изменить.',
'phone_label' => 'Телефон (мобильный)',
'role_label' => 'Роль',
'language_label' => 'Язык',
'my_children' => 'Мои дети',
'updated' => 'Профиль обновлён.',
// Фото профиля
'profile_picture' => 'Фото профиля',
'upload_picture' => 'Загрузить фото',
'remove_picture' => 'Удалить фото',
'max_picture_size' => 'Макс. 2 МБ (JPG, PNG, GIF, WEBP)',
// Согласие GDPR
'dsgvo_title' => 'Согласие на обработку данных (GDPR)',
'dsgvo_description' => 'Загрузите подписанное согласие в виде фото или PDF. Одно согласие действует для обоих родителей совместно.',
'dsgvo_upload' => 'Загрузить согласие',
'dsgvo_replace' => 'Заменить',
'dsgvo_remove' => 'Удалить согласие',
'dsgvo_file_hint' => 'PDF или изображение (макс. 10 МБ)',
'dsgvo_uploaded' => 'Согласие загружено.',
'dsgvo_removed' => 'Согласие удалено.',
'dsgvo_view' => 'Просмотр',
'dsgvo_confirmed' => 'Подтверждено',
'dsgvo_pending' => 'Ожидание подтверждения админом/тренером',
'dsgvo_confirmed_by' => 'Подтверждено :name :date',
'dsgvo_confirm_remove' => 'Действительно удалить согласие? Существующее подтверждение также будет сброшено.',
// Удаление аккаунта
'danger_zone' => 'Опасная зона',
'delete_account' => 'Удалить аккаунт',
'delete_account_hint' => 'Ваш профиль будет деактивирован и может быть восстановлен администратором в течение 7 дней. Исторические данные (комментарии, участие) сохраняются.',
'delete_warning_children' => 'Внимание: Вы единственный родитель следующих детей. Они тоже будут деактивированы:',
'delete_confirm' => 'Вы действительно хотите удалить свой аккаунт? Это может отменить только администратор.',
'account_deleted' => 'Ваш аккаунт удалён.',
'cannot_delete_admin' => 'Аккаунт администратора не может быть удалён.',
'cannot_delete_staff' => 'Тренеры и администраторы не могут удалить аккаунт через профиль.',
];

109
lang/ru/ui.php Executable file
View File

@@ -0,0 +1,109 @@
<?php
return [
'dashboard' => 'Главная',
'events' => 'Мероприятия',
'admin' => 'Админ',
'profile' => 'Профиль',
'logout' => 'Выйти',
'back_to_app' => 'К приложению',
'login' => 'Войти',
'save' => 'Сохранить',
'cancel' => 'Отмена',
'edit' => 'Редактировать',
'delete' => 'Удалить',
'create' => 'Создать',
'filter' => 'Фильтр',
'send' => 'Отправить',
'back' => 'Назад',
'yes' => 'Да',
'no' => 'Нет',
'open' => 'Открыто',
'all_teams' => 'Все команды',
'all_types' => 'Все типы',
'upcoming' => 'Предстоящие',
'past' => 'Прошедшие',
'period' => 'Период',
'team' => 'Команда',
'type' => 'Тип',
'name' => 'Имя',
'email' => 'Эл. почта',
'password' => 'Пароль',
'role' => 'Роль',
'language' => 'Язык',
'impressum' => 'Импрессум',
'privacy' => 'Политика конфиденциальности',
'no_entries' => 'Записи отсутствуют.',
'clock' => '',
'date_format' => 'D, d.m.Y, H:i',
'date_format_long' => 'l, d. F Y, H:i',
'date_format_short' => 'd.m.Y H:i',
'date_format_date' => 'd.m.Y',
'footer_impressum' => 'Импрессум',
'footer_privacy' => 'Политика конфиденциальности',
'pwa_install_title' => 'Установить приложение',
'pwa_install_text' => 'Добавьте приложение на главный экран для быстрого доступа.',
'pwa_install_btn' => 'Установить',
'pwa_ios_steps' => 'Нажмите <strong>⋯</strong> (Меню), затем <strong>⬆</strong> (Поделиться) и выберите «На экран Домой».',
'error_403_title' => 'Доступ запрещён',
'error_403_text' => 'У вас нет прав для просмотра этой страницы.',
'error_404_title' => 'Страница не найдена',
'error_404_text' => 'Запрашиваемая страница не найдена.',
'error_500_title' => 'Ошибка сервера',
'error_500_text' => 'Произошла внутренняя ошибка. Пожалуйста, попробуйте позже.',
'back_to_dashboard' => 'На главную',
'enums' => [
'event_type' => [
'home_game' => 'Домашняя игра',
'away_game' => 'Выездная игра',
'training' => 'Тренировка',
'tournament' => 'Турнир',
'meeting' => 'Собрание',
'other' => 'Прочее',
],
'event_status' => [
'published' => 'Опубликовано',
'cancelled' => 'Отменено',
'draft' => 'Черновик',
],
'participant_status' => [
'yes' => 'Подтверждено',
'no' => 'Отклонено',
'unknown' => 'Открыто',
],
'catering_status' => [
'yes' => 'Да',
'no' => 'Нет',
'unknown' => 'Открыто',
],
'user_role' => [
'admin' => 'Администратор',
'coach' => 'Тренер',
'parent_rep' => 'Представитель родителей',
'user' => 'Родитель',
],
],
'locales' => [
'de' => 'Deutsch',
'en' => 'English',
'pl' => 'Polski',
'ru' => 'Русский',
'ar' => 'العربية',
'tr' => 'Türkçe',
],
// Баннер GDPR
'dsgvo_banner_title' => 'Требуется согласие на обработку данных (DSGVO)',
'dsgvo_banner_text' => 'Для использования этого приложения необходимо подписанное заявление о согласии на обработку данных. Пожалуйста, загрузите заявление как фото или PDF в вашем профиле. Приложение можно полноценно использовать только после загрузки.',
'dsgvo_banner_action' => 'Загрузить в профиле',
'dsgvo_banner_pending_title' => 'Согласие проверяется',
'dsgvo_banner_pending_text' => 'Ваше заявление о согласии на обработку данных отправлено и проверяется. До подтверждения администратором приложение работает в режиме чтения — участие, кейтеринг, хронометраж и комментарии заблокированы.',
'dsgvo_restricted' => 'Ваше заявление о согласии на обработку данных ещё не подтверждено. Пожалуйста, дождитесь одобрения администратором.',
'dsgvo_restricted_hint' => 'Согласие на обработку данных не подтверждено — действия заблокированы.',
// Файлы
'files' => 'Файлы',
'download' => 'Скачать',
'all' => 'Все',
'close' => 'Закрыть',
];

130
lang/ru/validation.php Executable file
View File

@@ -0,0 +1,130 @@
<?php
return [
'accepted' => ':attribute должен быть принят.',
'active_url' => ':attribute не является допустимым URL.',
'after' => ':attribute должен быть датой после :date.',
'after_or_equal' => ':attribute должен быть датой после или равной :date.',
'alpha' => ':attribute может содержать только буквы.',
'alpha_dash' => ':attribute может содержать только буквы, цифры, дефисы и подчёркивания.',
'alpha_num' => ':attribute может содержать только буквы и цифры.',
'array' => ':attribute должен быть массивом.',
'before' => ':attribute должен быть датой до :date.',
'before_or_equal' => ':attribute должен быть датой до или равной :date.',
'between' => [
'numeric' => ':attribute должен быть между :min и :max.',
'file' => ':attribute должен быть от :min до :max килобайт.',
'string' => ':attribute должен содержать от :min до :max символов.',
'array' => ':attribute должен содержать от :min до :max элементов.',
],
'boolean' => ':attribute должен быть true или false.',
'confirmed' => 'Подтверждение :attribute не совпадает.',
'date' => ':attribute не является допустимой датой.',
'date_equals' => ':attribute должен быть датой, равной :date.',
'date_format' => ':attribute не соответствует формату :format.',
'different' => ':attribute и :other должны различаться.',
'digits' => ':attribute должен содержать :digits цифр.',
'digits_between' => ':attribute должен содержать от :min до :max цифр.',
'email' => ':attribute должен быть действительным адресом электронной почты.',
'exists' => 'Выбранное значение для :attribute недопустимо.',
'file' => ':attribute должен быть файлом.',
'filled' => ':attribute должен иметь значение.',
'gt' => [
'numeric' => ':attribute должен быть больше :value.',
'file' => ':attribute должен быть больше :value килобайт.',
'string' => ':attribute должен содержать больше :value символов.',
'array' => ':attribute должен содержать больше :value элементов.',
],
'gte' => [
'numeric' => ':attribute должен быть больше или равен :value.',
'file' => ':attribute должен быть не менее :value килобайт.',
'string' => ':attribute должен содержать не менее :value символов.',
'array' => ':attribute должен содержать не менее :value элементов.',
],
'image' => ':attribute должен быть изображением.',
'in' => 'Выбранное значение для :attribute недопустимо.',
'in_array' => ':attribute не существует в :other.',
'integer' => ':attribute должен быть целым числом.',
'ip' => ':attribute должен быть действительным IP-адресом.',
'json' => ':attribute должен быть допустимой строкой JSON.',
'lt' => [
'numeric' => ':attribute должен быть меньше :value.',
'file' => ':attribute должен быть меньше :value килобайт.',
'string' => ':attribute должен содержать менее :value символов.',
'array' => ':attribute должен содержать менее :value элементов.',
],
'lte' => [
'numeric' => ':attribute должен быть меньше или равен :value.',
'file' => ':attribute должен быть не более :value килобайт.',
'string' => ':attribute должен содержать не более :value символов.',
'array' => ':attribute должен содержать не более :value элементов.',
],
'max' => [
'numeric' => ':attribute не должен превышать :max.',
'file' => ':attribute не должен превышать :max килобайт.',
'string' => ':attribute не должен содержать более :max символов.',
'array' => ':attribute не должен содержать более :max элементов.',
],
'min' => [
'numeric' => ':attribute должен быть не менее :min.',
'file' => ':attribute должен быть не менее :min килобайт.',
'string' => ':attribute должен содержать не менее :min символов.',
'array' => ':attribute должен содержать не менее :min элементов.',
],
'not_in' => 'Выбранное значение для :attribute недопустимо.',
'numeric' => ':attribute должен быть числом.',
'present' => ':attribute должен присутствовать.',
'regex' => ':attribute имеет недопустимый формат.',
'required' => ':attribute обязателен для заполнения.',
'required_if' => ':attribute обязателен, когда :other равно :value.',
'required_unless' => ':attribute обязателен, если :other не равно :values.',
'required_with' => ':attribute обязателен, когда :values указано.',
'required_with_all' => ':attribute обязателен, когда указаны :values.',
'required_without' => ':attribute обязателен, когда :values не указано.',
'required_without_all' => ':attribute обязателен, когда ни одно из :values не указано.',
'same' => ':attribute и :other должны совпадать.',
'size' => [
'numeric' => ':attribute должен быть :size.',
'file' => ':attribute должен быть :size килобайт.',
'string' => ':attribute должен содержать :size символов.',
'array' => ':attribute должен содержать :size элементов.',
],
'string' => ':attribute должен быть строкой.',
'timezone' => ':attribute должен быть допустимым часовым поясом.',
'unique' => ':attribute уже занят.',
'url' => ':attribute должен быть допустимым URL.',
'password' => [
'letters' => ':attribute должен содержать хотя бы одну букву.',
'mixed' => ':attribute должен содержать хотя бы одну заглавную и одну строчную букву.',
'numbers' => ':attribute должен содержать хотя бы одну цифру.',
'symbols' => ':attribute должен содержать хотя бы один специальный символ.',
'uncompromised' => ':attribute был найден в утечке данных. Пожалуйста, выберите другой пароль.',
],
'attributes' => [
'name' => 'Имя',
'email' => 'Эл. почта',
'password' => 'Пароль',
'password_confirmation' => 'Подтверждение пароля',
'title' => 'Заголовок',
'body' => 'Сообщение',
'type' => 'Тип',
'status' => 'Статус',
'team_id' => 'Команда',
'start_date' => 'Дата',
'start_time' => 'Время',
'location_name' => 'Место',
'address_text' => 'Адрес',
'description_html' => 'Описание',
'first_name' => 'Имя',
'last_name' => 'Фамилия',
'birth_year' => 'Год рождения',
'jersey_number' => 'Номер на форме',
'note' => 'Заметка',
'season' => 'Сезон',
'player_id' => 'Игрок',
'parent_id' => 'Родитель',
'relationship_label' => 'Родство',
],
];

567
lang/tr/admin.php Executable file
View File

@@ -0,0 +1,567 @@
<?php
return [
// Gösterge Paneli
'dashboard_title' => 'Yönetim Paneli',
'stat_users' => 'Kullanıcılar',
'stat_players' => 'Oyuncular',
'stat_upcoming' => 'Yaklaşan Etkinlikler',
'stat_invitations' => 'Açık Davetiyeler',
'quick_links' => 'Hızlı Erişim',
'new_event' => 'Yeni Etkinlik',
'new_player' => 'Yeni Oyuncu',
'new_invitation' => 'Yeni Davetiye',
'new_team' => 'Yeni Takım',
'open_responses_title' => 'Bekleyen Yanıtları Olan Etkinlikler',
'x_open' => ':count açık',
// Navigasyon
'nav_teams' => 'Takımlar',
'nav_players' => 'Oyuncular',
'nav_users' => 'Kullanıcılar',
'nav_invitations' => 'Davetiyeler',
'nav_events' => 'Etkinlikler',
'nav_settings' => 'Ayarlar',
'nav_verwaltung' => 'Yönetim',
// Genel
'actions' => 'İşlemler',
'action' => 'İşlem',
'please_select' => 'Lütfen seçin',
'back_to_list' => 'Listeye Dön',
'inactive' => 'Pasif',
'nr' => 'No.',
'photo' => 'Fotoğraf',
'date' => 'Tarih',
'location' => 'Konum',
'all_status' => 'Tüm Durumlar',
'copied' => 'Kopyalandı!',
'copy' => 'Kopyala',
'created_by' => 'oluşturan',
'valid_until' => 'geçerlilik',
// Takımlar
'teams_title' => 'Takımlar',
'team_created' => 'Takım oluşturuldu.',
'team_updated' => 'Takım güncellendi.',
'team_name' => 'Takım Adı',
'year_group' => 'Yaş Grubu',
'year_group_placeholder' => 'Örn. 2017/18',
'active' => 'Aktif',
'team_is_active' => 'Takım aktif',
'create_team' => 'Takım Oluştur',
'edit_team' => 'Takımı Düzenle',
'no_teams_yet' => 'Henüz takım yok.',
'team_notes' => 'Notlar',
'team_notes_placeholder' => 'Takım hakkında notlar (dahili, yalnızca yöneticiler tarafından görülebilir)...',
'team_coaches' => 'Antrenörler',
'no_coaches_available' => 'Sistemde antrenör bulunmuyor.',
'team_players' => 'Oyuncular',
'team_parent_reps' => 'Veli Temsilcileri',
'team_parent_reps_hint' => '"Veli Temsilcisi" rolüne sahip ve bu takımda çocukları olan veliler.',
'no_parent_reps' => 'Bu takım için veli temsilcisi yok.',
'log_team_updated' => 'Takım ":name" güncellendi',
'log_player_team_changed' => 'Oyuncu :name başka bir takıma taşındı',
// Oyuncular
'players_title' => 'Oyuncular',
'player_created' => 'Oyuncu oluşturuldu.',
'player_updated' => 'Oyuncu güncellendi.',
'first_name' => 'Ad',
'last_name' => 'Soyad',
'birth_year' => 'Doğum Yılı',
'jersey_number' => 'Forma Numarası',
'photo_permission' => 'Fotoğraf İzni',
'notes' => 'Notlar',
'parent_assigned' => 'Veli atandı.',
'parent_removed' => 'Atama kaldırıldı.',
'assign_parent' => 'Veli Ata',
'add_parent' => 'Veli Ekle',
'select_user' => 'Kullanıcı Seç',
'assign' => 'Ata',
'relationship_label' => 'İlişki',
'relationship_placeholder' => 'Örn. Anne, Baba',
'parents' => 'Veliler',
'player_data' => 'Oyuncu Bilgileri',
'parent_assignment' => 'Veli Ataması',
'no_parents_yet' => 'Henüz veli atanmadı.',
'confirm_remove_parent' => 'Atamayı kaldırmak istediğinize emin misiniz?',
'remove' => 'Kaldır',
'no_players_yet' => 'Henüz oyuncu yok.',
// Kullanıcılar
'users_title' => 'Kullanıcılar',
'user_toggled' => 'Kullanıcı :status.',
'role_updated' => 'Rol güncellendi.',
'cannot_deactivate_self' => 'Kendi hesabınızı devre dışı bırakamazsınız.',
'cannot_change_own_role' => 'Kendi rolünüzü değiştiremezsiniz.',
'activated' => 'etkinleştirildi',
'deactivated' => 'devre dışı bırakıldı',
'deactivated_label' => 'Devre Dışı',
'children' => 'Çocuklar',
'phone' => 'Telefon',
'last_login' => 'Son Giriş',
'never' => 'Hiç',
'deactivate' => 'Devre Dışı Bırak',
'activate' => 'Etkinleştir',
'you_suffix' => '(siz)',
'edit' => 'Düzenle',
'edit_user' => 'Kullanıcıyı Düzenle',
'user_data' => 'Kullanıcı Verileri',
'user_updated' => 'Kullanıcı güncellendi.',
'reset_password' => 'Şifre Sıfırla',
'reset_password_hint' => 'Yeni rastgele bir şifre oluşturur. Eski şifre geçersiz olur.',
'reset_password_confirm' => 'Yeni rastgele şifre oluşturulsun mu? Eski şifre geçersiz olacaktır.',
'password_reset_success' => 'Yeni şifre oluşturuldu.',
'new_password_label' => 'Yeni şifre (yalnızca bir kez görünür):',
'password_only_visible_now' => 'Bu şifre yalnızca şimdi gösterilmektedir. Lütfen paylaşın ve sayfayı yeniden yüklemeyin.',
'cannot_edit_own_role' => 'Kendi rolünüzü burada değiştiremezsiniz.',
'cannot_assign_admin_role' => 'Yönetici rolünü atayamazsınız.',
'cannot_reset_own_password' => 'Kendi şifrenizi yönetim panelinden sıfırlayamazsınız.',
'registered_at' => 'Kayıt tarihi',
// Davetiyeler
'invitations_title' => 'Davetiyeler',
'invitation_created' => 'Davetiye oluşturuldu. Bağlantı: :link',
'invitation_deleted' => 'Davetiye silindi.',
'invitation_already_used' => 'Kullanılmış davetiyeler silinemez.',
'create_invitation' => 'Davetiye Oluştur',
'assign_players' => 'Oyuncu Ata',
'email_optional' => 'E-Posta (isteğe bağlı)',
'email_optional_hint' => 'Belirtilirse yalnızca bu e-posta ile kayıt olunabilir',
'expires_at' => 'Geçerlilik Tarihi',
'valid_for_days' => 'Geçerlilik Süresi (gün)',
'token' => 'Token',
'status' => 'Durum',
'used' => 'Kullanıldı',
'expired' => 'Süresi Doldu',
'pending' => 'Beklemede',
'copy_link' => 'Bağlantıyı Kopyala',
'invite_link' => 'Davet Bağlantısı',
'no_assignment' => 'Atama yok',
'no_invitations_yet' => 'Henüz davetiye yok.',
'no_active_players' => 'Aktif oyuncu yok.',
'confirm_delete_invitation' => 'Davetiyeyi silmek istediğinize emin misiniz?',
'created_label' => 'Oluşturulma',
'player_assignment_hint' => 'Yeni veli hesabına otomatik olarak atanacak çocukları seçin.',
// Etkinlikler
'events_title' => 'Etkinlikler',
'event_created' => 'Etkinlik oluşturuldu.',
'event_updated' => 'Etkinlik güncellendi.',
'event_deleted' => 'Etkinlik silindi.',
'event_title' => 'Başlık',
'start_at' => 'Başlangıç',
'date' => 'Tarih',
'time' => 'Saat',
'end_at' => 'Bitiş',
'location_name' => 'Konum Adı',
'address' => 'Adres',
'description' => 'Açıklama',
'search_address' => 'Adres ara...',
'new_event_title' => 'Yeni Etkinlik',
'edit_event_title' => 'Etkinliği Düzenle',
'no_events_yet' => 'Henüz etkinlik yok.',
'confirm_delete_event' => 'Etkinliği silmek istediğinize emin misiniz?',
'location_address' => 'Konum / Adres',
'location_name_hint' => 'Konum adı (örn. Kuzey Spor Salonu)',
'search_by_name' => 'Adres bul',
'location_name_placeholder' => 'örn. BVB Stadyumu, Spor Salonu...',
'search_address_hint' => 'Adres girin (min. 3 karakter)...',
'description_placeholder' => 'Açıklama girin...',
'assignments' => 'Atamalar',
'catering_assignment' => 'İkram',
'timekeeper_assignment' => 'Zaman Tutucusu',
'geocoding_error' => 'Adres araması başarısız. Lütfen tekrar deneyin.',
'geocoding_rate_limit' => 'Çok fazla istek. Lütfen biraz bekleyin.',
'geocoding_no_results' => 'Adres bulunamadı. Daha spesifik girin.',
// Minimum Gereksinimler
'min_requirements' => 'Minimum Gereksinimler',
'min_players' => 'Min. Oyuncu',
'min_parents' => 'Min. Ebeveyn',
'min_catering' => 'Min. İkram',
'min_timekeepers' => 'Min. Zaman Tutucusu',
'event_defaults_title' => 'Etkinlik Varsayılan Minimum Değerler',
'event_defaults_description' => 'Yeni etkinlikler için türe göre varsayılan minimum değerleri belirleyin. Yöneticiler oluştururken değiştirebilir.',
// Konum yönetimi
'nav_locations' => 'Konumlar',
'locations_title' => 'Konumları Yönet',
'location_add' => 'Yeni Konum Ekle',
'location_name_label' => 'Ad',
'location_save' => 'Kaydet',
'location_created' => 'Konum oluşturuldu.',
'location_updated' => 'Konum güncellendi.',
'location_deleted' => 'Konum silindi.',
'location_confirm_delete' => 'Bu konumu gerçekten silmek istiyor musunuz?',
'locations_empty' => 'Henüz konum bulunmuyor.',
'known_locations' => 'Bilinen Konumlar',
'address_manual_hint' => 'Adresi manuel girin...',
// Ayarlar
'settings_title' => 'Ayarlar',
'settings_saved' => 'Ayarlar kaydedildi.',
'settings_tab_general' => 'Genel',
'settings_tab_legal' => 'Yasal',
'settings_tab_defaults' => 'Etkinlik Varsayılanları',
'settings_tab_categories' => 'Dosya Kategorileri',
// Dosya Yönetimi
'nav_files' => 'Dosyalar',
'files_title' => 'Dosya Yönetimi',
'upload_file' => 'Dosya Yükle',
'file_uploaded' => 'Dosya yüklendi.',
'file_deleted' => 'Dosya silindi.',
'file_category' => 'Kategori',
'select_category' => 'Kategori seçin',
'no_files_yet' => 'Bu kategoride henüz dosya yok.',
'no_files_at_all' => 'Henüz dosya yüklenmedi.',
'file_size' => 'Boyut',
'uploaded_by' => 'Yükleyen',
'uploaded_at' => 'Yükleme tarihi',
'confirm_delete_file' => 'Bu dosyayı gerçekten silmek istiyor musunuz? Tüm etkinlik bağlantıları kaldırılacak.',
'allowed_file_types' => 'İzin verilen dosya türleri: PDF, DOCX, XLSX, Resimler (JPG, PNG, GIF, WEBP)',
'max_file_size' => 'Maksimum dosya boyutu: 10 MB',
'file_categories' => 'Dosya Kategorileri',
'file_categories_description' => 'Dosya kategorilerini yönetin.',
'new_category' => 'Yeni Kategori',
'category_name' => 'Kategori Adı',
'category_created' => 'Kategori oluşturuldu.',
'category_updated' => 'Kategori güncellendi.',
'category_deleted' => 'Kategori silindi.',
'category_not_empty' => 'Kategori dosya içerdiği için silinemez.',
'confirm_delete_category' => 'Bu kategoriyi gerçekten silmek istiyor musunuz?',
'event_files' => 'Dosyalar',
'attach_from_library' => 'Kütüphaneden ekle',
'upload_new_file' => 'Yeni dosya yükle',
'attached_files' => 'Ekli Dosyalar',
'detach_file' => 'Kaldır',
'no_attached_files' => 'Ekli dosya yok.',
'profile_picture' => 'Profil Fotoğrafı',
'upload_picture' => 'Fotoğraf yükle',
'remove_picture' => 'Fotoğrafı kaldır',
'picture_uploaded' => 'Profil fotoğrafı güncellendi.',
'picture_removed' => 'Profil fotoğrafı kaldırıldı.',
'max_picture_size' => 'Maks. 2 MB (JPG, PNG, GIF, WEBP)',
'html_anchor_hint' => 'İpucu: id özelliği ile bağlantı noktaları ekleyin, örn. &lt;h3 id="cookies"&gt;',
// Soft-Delete
'danger_zone' => 'Tehlikeli bölge',
'delete_user' => 'Kullanıcıyı sil',
'delete_user_hint' => 'Kullanıcı devre dışı bırakılacak ve 7 gün içinde geri yüklenebilir. Geçmiş veriler (yorumlar, katılımlar) korunacaktır.',
'delete_player' => 'Oyuncuyu sil',
'delete_player_hint' => 'Oyuncu kaldırılacak ve 7 gün içinde geri yüklenebilir. Geçmiş veriler (katılımlar, etkinlikler) korunacaktır.',
'user_status_label' => 'Kullanıcı durumu',
'player_status_label' => 'Oyuncu durumu',
'deactivate_user_hint' => 'Kullanıcı artık giriş yapamayacak.',
'activate_user_hint' => 'Kullanıcı tekrar giriş yapabilecek.',
'deactivate_player_hint' => 'Oyuncu artık etkinlik listelerinde görünmeyecek.',
'activate_player_hint' => 'Oyuncu tekrar etkinlik listelerinde görünecek.',
'player_toggled' => 'Oyuncu :status.',
'log_player_toggled' => 'Oyuncu :name :status',
'confirm_delete_user' => 'Bu kullanıcıyı silmek istediğinizden emin misiniz? 7 gün içinde geri yüklenebilir.',
'confirm_delete_player' => 'Bu oyuncuyu silmek istediğinizden emin misiniz? 7 gün içinde geri yüklenebilir.',
'user_deleted' => 'Kullanıcı silindi.',
'user_restored' => 'Kullanıcı geri yüklendi.',
'player_deleted' => 'Oyuncu silindi.',
'player_restored' => 'Oyuncu geri yüklendi.',
'cannot_delete_self' => 'Kendinizi silemezsiniz.',
'cannot_delete_main_admin' => 'Ana yönetici silinemez.',
'restore_expired' => 'Geri yükleme süresi doldu.',
'trash' => 'Çöp Kutusu',
'restore' => 'Geri Yükle',
'delete' => 'Sil',
'deleted_at' => 'Silinme tarihi',
// Activity Log
'activity_log_title' => 'Etkinlik Günlüğü',
'nav_activity_log' => 'Etkinlik Günlüğü',
'log_category' => 'Kategori',
'log_all_categories' => 'Tüm kategoriler',
'log_cat_auth' => 'Kimlik Doğrulama',
'log_cat_users' => 'Kullanıcılar',
'log_cat_players' => 'Oyuncular',
'log_cat_events' => 'Etkinlikler',
'log_cat_files' => 'Dosyalar',
'log_cat_settings' => 'Ayarlar',
'log_cat_dsgvo' => 'KVKK',
'log_from' => 'Başlangıç',
'log_to' => 'Bitiş',
'log_filter' => 'Filtrele',
'log_reset' => 'Sıfırla',
'log_time' => 'Zaman',
'log_user' => 'Kullanıcı',
'log_action' => 'İşlem',
'log_description' => 'Açıklama',
'log_ip' => 'IP Adresi',
'log_system' => 'Sistem',
'log_empty' => 'Kayıt bulunamadı.',
'log_details' => 'Detaylar',
'log_field' => 'Alan',
'log_old_value' => 'Önce',
'log_new_value' => 'Sonra',
// Log descriptions
'log_login' => ':name giriş yaptı',
'log_logout' => ':name çıkış yaptı',
'log_login_failed' => ':email için başarısız giriş denemesi',
'log_registered' => ':name kayıt oldu',
'log_user_updated' => 'Kullanıcı :name güncellendi',
'log_user_toggled' => 'Kullanıcı :name: durum :status olarak değiştirildi',
'log_role_changed' => ':name rolü :role olarak değiştirildi',
'log_password_reset' => ':name şifresi sıfırlandı',
'log_user_deleted' => 'Kullanıcı :name silindi',
'log_user_restored' => 'Kullanıcı :name geri yüklendi',
'log_player_created' => 'Oyuncu :name oluşturuldu',
'log_player_updated' => 'Oyuncu :name güncellendi',
'log_player_deleted' => 'Oyuncu :name silindi',
'log_player_restored' => 'Oyuncu :name geri yüklendi',
'log_parent_assigned' => ':parent, :player için veli olarak atandı',
'log_parent_removed' => ':parent, :player için veli olarak kaldırıldı',
'log_event_created' => 'Etkinlik ":title" oluşturuldu',
'log_event_updated' => 'Etkinlik ":title" güncellendi',
'log_event_deleted' => 'Etkinlik ":title" silindi',
'log_participant_changed' => '":event" için katılım durumu :status olarak değiştirildi',
'log_catering_changed' => '":event" için ikram durumu :status olarak değiştirildi',
'log_timekeeper_changed' => '":event" için zaman tutucu durumu :status olarak değiştirildi',
'log_comment_created' => '":event" için yorum eklendi',
'log_comment_deleted' => '":event" için yorum silindi',
'log_file_uploaded' => '":name" dosyası yüklendi',
'log_file_deleted' => '":name" dosyası silindi',
'log_settings_updated' => 'Ayarlar güncellendi',
'log_invitation_created' => ':email için davet oluşturuldu',
// İstatistik
'nav_statistics' => 'İstatistik',
'statistics_title' => 'Maç İstatistikleri',
'total_games' => 'Toplam Maç',
'wins' => 'Galibiyet',
'losses' => 'Mağlubiyet',
'draws' => 'Beraberlik',
'win_rate' => 'Galibiyet Oranı',
'chart_win_loss' => 'Galibiyet / Mağlubiyet',
'chart_player_participation' => 'Oyuncu Katılımı',
'chart_parent_involvement' => 'Veli Katılımı',
'no_games_yet' => 'Henüz maç bulunmuyor.',
'filter_from' => 'Başlangıç',
'filter_to' => 'Bitiş',
'filter_apply' => 'Filtrele',
'filter_reset' => 'Sıfırla',
'all_teams' => 'Tüm Takımlar',
'not_applicable' => 'N/A',
'min_users' => 'Min. Kullanıcı',
'home_short' => 'İ',
'away_short' => 'D',
'player_ranking_title' => 'Oyuncu Katılımı',
'player_ranking_desc' => ':count maçta oyuncu katılım oranı (ev sahibi ve deplasman).',
'games_played' => 'Oynadı',
'games_assigned' => 'Atandı',
'participation_rate' => 'Oran',
'parent_ranking_title' => 'Ebeveyn Katkısı',
'parent_ranking_desc' => 'İkram (:catering etkinlik) ve zaman tutma (:timekeeper etkinlik) — tüm yayınlanmış etkinlikler.',
'total_contributions' => 'Toplam',
'statistics_enabled_label' => 'İstatistik sayfasını etkinleştir',
'statistics_enabled_hint' => 'Devre dışı bırakıldığında istatistik sayfası yalnızca yönetici tarafından görülebilir.',
// Slogan & Favicon
'slogan_label' => 'Slogan',
'slogan_hint' => 'Giriş sayfasında ve alt bilgide görüntülenir.',
'favicon_label' => 'Favicon',
'favicon_hint' => 'ICO, PNG, SVG, JPG (maks. 512 KB)',
'favicon_current' => 'Mevcut favicon',
'favicon_remove' => 'Favicon\'ı kaldır',
'favicon_uploaded' => 'Favicon güncellendi.',
'favicon_removed' => 'Favicon kaldırıldı.',
// Undo / Revert
'log_revert' => 'Geri al',
'log_revert_confirm' => 'Bu işlemi gerçekten geri almak istiyor musunuz?',
'log_revert_success' => 'İşlem başarıyla geri alındı.',
'log_revert_not_possible' => 'Bu işlem geri alınamaz.',
'log_reverted' => 'Geri alındı: ":desc"',
'event_restored' => 'Etkinlik geri yüklendi.',
'log_event_restored' => 'Etkinlik ":title" geri yüklendi',
// Görünürlük
'settings_tab_visibility' => 'Görünürlük',
'visibility_description' => 'Hangi özelliklerin hangi roller için görünür olduğunu kontrol edin. Yöneticiler her şeyi her zaman görür.',
'visibility_feature_statistics' => 'İstatistik sayfası',
'visibility_feature_catering_history' => 'İkram/zaman tutucu geçmişi',
// Liste Oluşturucu
'nav_list_generator' => 'Liste Oluşturucu',
'list_generator_title' => 'Liste Oluştur',
'list_title' => 'Konu',
'list_subtitle' => 'Alt başlık (isteğe bağlı)',
'list_notes' => 'Notlar / Açıklama',
'list_source' => 'Satır Kaynağı',
'list_source_players' => 'Oyuncular',
'list_source_parents' => 'Veliler',
'list_source_freetext' => 'Serbest Metin',
'list_freetext_hint' => 'Her giriş için bir satır',
'list_columns' => 'Sütunlar',
'list_custom_columns' => 'Ek Sütunlar',
'list_add_column' => 'Sütun Ekle',
'list_column_name' => 'Sütun Adı',
'list_generate' => 'Liste Oluştur',
'list_result_title' => 'Liste Oluşturuldu',
'list_print' => 'Yazdır / PDF Olarak Kaydet',
'list_new' => 'Yeni Liste Oluştur',
'list_to_library' => 'Dosya Kütüphanesine Git',
'list_generated_at' => 'Oluşturulma tarihi',
'list_all_teams' => 'Tüm Takımlar',
'list_saved_info' => '":name" dosyası otomatik olarak kütüphanede "Genel" altında kaydedildi.',
'list_download_pdf' => 'PDF İndir',
'list_entries_count' => 'kayıt',
'log_list_generated' => '":title" listesi oluşturuldu',
'no_entries' => 'Kayıt bulunamadı.',
// KVKK
'dsgvo_title' => 'KVKK Onay Beyanı',
'dsgvo_short' => 'KVKK',
'dsgvo_consent_label' => 'Onay beyanı onaylandı',
'dsgvo_view_document' => 'Belgeyi görüntüle',
'dsgvo_confirm' => 'Onayla',
'dsgvo_revoke' => 'İptal Et',
'dsgvo_toggled' => 'KVKK durumu güncellendi.',
'dsgvo_no_file' => 'Henüz bir belge yüklenmedi.',
'dsgvo_no_document' => 'Kullanıcı henüz bir onay beyanı yüklemedi.',
'dsgvo_not_confirmed' => 'Henüz onaylanmadı. Lütfen belgeyi kontrol edin ve onaylayın.',
'dsgvo_confirmed_info' => ':name tarafından :date tarihinde onaylandı',
'dsgvo_confirmed_tooltip' => 'KVKK onayı onaylandı',
'dsgvo_pending_tooltip' => 'Belge yüklendi, onay bekliyor',
'dsgvo_missing_tooltip' => 'Belge yüklenmedi',
'dsgvo_events_title' => 'KVKK Olayları (son 10)',
'dsgvo_action_dsgvo_consent_uploaded' => 'Yüklendi',
'dsgvo_action_dsgvo_consent_confirmed' => 'Onaylandı',
'dsgvo_action_dsgvo_consent_revoked' => 'İptal Edildi',
'dsgvo_action_dsgvo_consent_removed' => 'Kaldırıldı',
'dsgvo_action_account_self_deleted' => 'Hesap silindi',
'dsgvo_action_child_auto_deactivated' => 'Çocuk devre dışı',
'log_dsgvo_consent_uploaded' => ':name bir onay beyanı yükledi',
'log_dsgvo_confirmed' => ':name adlı kullanıcının onay beyanı onaylandı',
'log_dsgvo_revoked' => ':name adlı kullanıcının onay beyanı onayı iptal edildi',
'log_dsgvo_consent_removed' => ':name onay beyanını kaldırdı',
'log_account_self_deleted' => ':name kendi hesabını sildi',
'log_child_auto_deactivated' => 'Oyuncu :child otomatik olarak devre dışı bırakıldı (tek ebeveyn :parent hesabını sildi)',
// KVKK Bekleyen Widget
'dsgvo_pending_title' => 'KVKK — Onay Bekliyor',
'dsgvo_pending_count' => ':count beyan beklemede',
'dsgvo_consent_document' => 'KVKK Onay Beyanı',
'dsgvo_reject' => 'Reddet',
'dsgvo_reject_confirm' => 'Bu onay beyanını reddetmek istediğinizden emin misiniz? Belge silinecek ve kullanıcının tekrar yüklemesi gerekecektir.',
'dsgvo_rejected' => 'Onay beyanı reddedildi.',
'log_dsgvo_rejected' => ':name adlı kullanıcının onay beyanı reddedildi',
'dsgvo_action_dsgvo_consent_rejected' => 'Reddedildi',
'dsgvo_preview_not_available' => 'Bu dosya türü için önizleme mevcut değil.',
// Factory Reset
'factory_reset_title' => 'Tam sıfırlama',
'factory_reset_description' => 'Tüm uygulamayı başlangıç durumuna sıfırlar. Sıfırlamadan sonra kurulum sihirbazı yeniden başlatılır.',
'factory_reset_deletes' => 'Aşağıdakiler kalıcı olarak silinecektir',
'factory_reset_item_users' => 'Tüm kullanıcılar (yönetici dahil)',
'factory_reset_item_data' => 'Tüm takımlar, oyuncular, etkinlikler, yorumlar',
'factory_reset_item_settings' => 'Tüm ayarlar ve dosya kategorileri',
'factory_reset_item_files' => 'Tüm yüklenen dosyalar ve profil fotoğrafları',
'factory_reset_warning' => 'Bu işlem GERİ ALINAMAZ! Uygulama tamamen sıfırlanacak ve kurulum sihirbazı başlatılacaktır.',
'factory_reset_confirm' => 'DİKKAT: Tüm uygulama geri dönüşü olmayacak şekilde sıfırlanacak ve tüm veriler silinecektir. Kurulum sihirbazı yeniden başlatılacaktır. Emin misiniz?',
'factory_reset_button' => 'Uygulamayı tamamen sıfırla',
// Lisans ve Destek
'settings_tab_license' => 'Lisans ve Destek',
'license_title' => 'Lisans Anahtarı',
'license_description' => 'Destek ve güncellemeler almak için lisans anahtarınızı girin.',
'license_key_label' => 'Lisans Anahtarı',
'license_invalid' => 'Girilen lisans anahtarı geçersiz.',
'registration_status' => 'Kayıt Durumu',
'registration_active' => 'Kayıtlı',
'registration_inactive' => 'Kayıtlı değil',
'register_now' => 'Şimdi kayıt ol',
'registration_success' => 'Kurulum başarıyla kaydedildi.',
'registration_failed' => 'Kayıt başarısız oldu. Lütfen daha sonra tekrar deneyin.',
'version_info' => 'Sistem Bilgileri',
'update_available' => 'Güncelleme mevcut: Sürüm :version',
'update_details' => 'Detayları göster',
'download_update' => 'Güncellemeyi indir',
'installation_id_label' => 'Kurulum Kimliği',
'nav_support' => 'Destek',
'support_title' => 'Destek Talepleri',
'support_not_registered' => 'Kurulum kayıtlı değil',
'support_register_hint' => 'Desteği kullanmak için kurulumun kayıtlı olması gerekir. Yalnızca teknik veriler (uygulama adı, URL, PHP sürümü) iletilir.',
'support_new_ticket' => 'Yeni talep oluştur',
'support_subject' => 'Konu',
'support_category' => 'Kategori',
'support_category_bug' => 'Hata Raporu',
'support_category_feature' => 'Özellik İsteği',
'support_category_question' => 'Soru',
'support_category_other' => 'Diğer',
'support_message' => 'Mesaj',
'support_submit' => 'Talep gönder',
'support_reply' => 'Yanıtla',
'support_send_reply' => 'Yanıt gönder',
'support_reply_placeholder' => 'Yanıtınızı yazın...',
'support_ticket_created' => 'Talep başarıyla oluşturuldu.',
'support_reply_sent' => 'Yanıt gönderildi.',
'support_submit_failed' => 'Talep oluşturulamadı. Lütfen daha sonra tekrar deneyin.',
'support_reply_failed' => 'Yanıt gönderilemedi. Lütfen daha sonra tekrar deneyin.',
'support_ticket_not_found' => 'Talep bulunamadı.',
'support_no_tickets' => 'Henüz talep yok.',
'support_no_messages' => 'Henüz mesaj yok.',
'support_ticket_id' => 'Talep No.',
'support_status' => 'Durum',
'support_status_open' => 'Açık',
'support_status_in_progress' => 'İşlemde',
'support_status_waiting' => 'Bekliyor',
'support_status_closed' => 'Kapalı',
'support_created_at' => 'Oluşturulma',
'support_last_reply' => 'Son Yanıt',
'support_back_to_list' => 'Genel bakışa dön',
'support_system_info_note' => 'Sistem bilgileri otomatik olarak gönderilir.',
'support_sender_support' => 'Destek',
'support_sender_you' => 'Siz',
'support_ticket_closed' => 'Bu talep kapalıdır.',
'installer_register_label' => 'Kurulumu kaydet',
'installer_register_hint' => 'Güncelleme bildirimlerini ve desteği etkinleştirir. Yalnızca teknik veriler iletilir (uygulama adı, URL, PHP sürümü, uygulama sürümü).',
'installer_license_label' => 'Lisans anahtarı (isteğe bağlı)',
'installer_license_hint' => 'Daha sonra ayarlardan da girilebilir.',
// Şifre Sıfırlama (Yönetici + Self Servis)
'settings_tab_maintenance' => 'Bakım',
'factory_reset_password_label' => 'Onay için şifreniz',
'factory_reset_confirmation_label' => 'Güvenlik onayı',
'factory_reset_confirmation_hint' => 'İşlemi onaylamak için RESET-BESTÄTIGT yazın.',
'password_reset_link_sent' => 'Şifre sıfırlama bağlantısı e-posta ile gönderildi.',
'password_reset_email_label' => 'Şifre Sıfırlama E-posta Şablonu',
'password_reset_email_hint' => 'Yer tutucular: {name} = Kullanıcı adı, {link} = Sıfırlama bağlantısı, {app_name} = Uygulama adı',
'log_password_reset_requested' => 'Şifre sıfırlama talep edildi',
'log_password_changed_self' => ':name şifresini değiştirdi',
'log_dsgvo_viewed' => ':name kullanıcısının KVKK belgesi görüntülendi',
// Çok Dilli Yasal Metin Editörü
'legal_language_label' => 'Dil',
'legal_impressum_label' => 'Yasal Bildirim',
'legal_datenschutz_label' => 'Gizlilik Politikası',
'legal_password_reset_email_label' => 'Şifre Sıfırlama E-postası',
// E-Posta Sekmesi
'settings_tab_mail' => 'E-Posta',
'mail_config_title' => 'E-Posta Yapılandırması',
'mail_config_hint' => 'E-posta göndermek için SMTP ayarları (ör. şifre sıfırlama, bildirimler).',
'mail_mailer_label' => 'Gönderim Yöntemi',
'mail_log_mode' => 'Gönderim yok (Log)',
'mail_host_label' => 'SMTP Sunucu',
'mail_port_label' => 'Port',
'mail_username_label' => 'Kullanıcı Adı',
'mail_password_label' => 'Şifre',
'mail_from_address_label' => 'Gönderen Adresi',
'mail_from_name_label' => 'Gönderen Adı',
'mail_encryption_label' => 'Şifreleme',
'mail_encryption_none' => 'Yok',
'mail_save' => 'E-Posta Ayarlarını Kaydet',
'mail_saved' => 'E-posta ayarları kaydedildi.',
'mail_test_button' => 'Bağlantıyı Test Et',
'mail_testing' => 'Bağlantı test ediliyor...',
'mail_test_success' => 'SMTP bağlantısı başarılı!',
];

7
lang/tr/auth.php Executable file
View File

@@ -0,0 +1,7 @@
<?php
return [
'failed' => 'Bu kimlik bilgileri kayıtlarımızla eşleşmiyor.',
'password' => 'Girilen şifre yanlış.',
'throttle' => 'Çok fazla giriş denemesi. Lütfen :seconds saniye sonra tekrar deneyin.',
];

34
lang/tr/auth_ui.php Executable file
View File

@@ -0,0 +1,34 @@
<?php
return [
'login_title' => 'Giriş Yap',
'email_label' => 'E-Posta',
'password_label' => 'Şifre',
'remember_me' => 'Beni hatırla',
'login_button' => 'Giriş Yap',
'register_title' => 'Kayıt Ol',
'name_label' => 'Ad',
'children_assigned' => 'Hesabınız aşağıdaki çocuklara atanacaktır:',
'password_min' => '(en az 8 karakter)',
'password_confirm_label' => 'Şifre Onayı',
'create_account' => 'Hesap Oluştur',
'already_registered' => 'Zaten kayıtlı mısınız?',
'go_to_login' => 'Giriş Yap',
'email_fixed_by_invitation' => 'E-posta adresi davetiye ile belirlenmiştir.',
'invalid_invitation' => 'Bu davet bağlantısı geçersiz veya süresi dolmuş.',
'welcome' => 'Hoş geldiniz! Hesabınız oluşturuldu.',
'forgot_password_link' => 'Şifrenizi mi unuttunuz?',
'forgot_password_title' => 'Şifre Sıfırlama',
'forgot_password_description' => 'E-posta adresinizi girin, size şifrenizi sıfırlamak için bir bağlantı göndereceğiz.',
'send_reset_link' => 'Bağlantı gönder',
'back_to_login' => 'Girişe dön',
'reset_password_title' => 'Yeni Şifre Belirle',
'reset_password_button' => 'Şifreyi Sıfırla',
'new_password_label' => 'Yeni Şifre',
'confirm_password_label' => 'Şifre Onayı',
'login_failed' => 'Giriş bilgileri geçersiz.',
'email_must_match_invitation' => 'E-posta adresi davetle eşleşmelidir: :email',
'cookie_notice' => 'Bu site yalnızca teknik olarak gerekli bir oturum çerezi kullanır. İzleme yok.',
'cookie_notice_link' => 'Daha fazla bilgi',
'account_deactivated' => 'Hesabınız devre dışı bırakıldı. Lütfen yönetici ile iletişime geçin.',
];

64
lang/tr/events.php Executable file
View File

@@ -0,0 +1,64 @@
<?php
return [
'title' => 'Etkinlikler',
'no_events' => 'Etkinlik bulunamadı.',
'no_upcoming' => 'Yaklaşan etkinlik yok.',
'upcoming_title' => 'Yaklaşan Etkinlikler',
'cancelled_label' => 'İptal Edildi',
'draft_label' => 'Taslak',
'cancelled_banner' => 'Bu etkinlik iptal edildi.',
'draft_banner' => 'Taslak — yalnızca yöneticiler görebilir.',
'back_to_list' => 'Etkinlik listesine dön',
'description' => 'Açıklama',
'plan_route' => 'Rota planla',
'start_navigation' => 'Navigasyonu başlat',
'participants' => 'Katılımcılar',
'confirmations' => 'Katılımlar',
'rejections' => 'İptaller',
'open_responses' => 'Açık',
'participation_updated' => 'Katılım güncellendi.',
'catering' => 'İkram / Yiyecek',
'bring_something' => 'Bir şey getireceğim',
'bring_nothing' => 'Bir şey getirmeyeceğim',
'catering_note_placeholder' => 'örn. Kek getireceğim',
'catering_updated' => 'İkram durumu güncellendi.',
'no_catering_yet' => 'Henüz ikram taahhüdü yok.',
'timekeeper' => 'Zaman Tutucusu',
'timekeeper_yes' => 'Evet, yapabilirim',
'timekeeper_no' => 'Hayır',
'catering_short' => 'İkram',
'timekeeper_short' => 'Zaman Tutucusu',
'no_timekeeper_yet' => 'Henüz zaman tutucusu atanmadı.',
'timekeeper_updated' => 'Zaman tutucusu durumu güncellendi.',
'comments' => 'Yorumlar',
'comment_placeholder' => 'Yorum yaz...',
'no_comments' => 'Henüz yorum yok.',
'comment_deleted' => '[Silindi]',
'confirm_delete_comment' => 'Yorum silinsin mi?',
'comment_added' => 'Yorum eklendi.',
'comment_removed' => 'Yorum silindi.',
'hello_user' => 'Merhaba, :name!',
'upcoming_events' => 'Yaklaşan Etkinlikler',
'calendar' => 'Takvim',
'today' => 'Bugün',
'month_view' => 'Ay',
'year_view' => 'Yıl',
// Dosyalar
'files' => 'Dosyalar',
'download' => 'İndir',
'no_files' => 'Ekli dosya yok.',
// Rakip ve Skor
'opponent' => 'Rakip',
'score' => 'Skor',
'score_home' => 'Ev Sahibi',
'score_away' => 'Deplasman',
'vs' => 'vs.',
// Staff visibility
'signed_up' => 'kaydoldu',
'withdrawn' => 'çekildi',
'deleted_label' => 'silindi',
];

6
lang/tr/pagination.php Executable file
View File

@@ -0,0 +1,6 @@
<?php
return [
'previous' => '&laquo; Önceki',
'next' => 'Sonraki &raquo;',
];

14
lang/tr/passwords.php Executable file
View File

@@ -0,0 +1,14 @@
<?php
return [
'reset' => 'Şifreniz sıfırlandı.',
'sent' => 'Şifre sıfırlama bağlantısı e-posta adresinize gönderildi.',
'throttled' => 'Lütfen tekrar denemeden önce bekleyin.',
'token' => 'Bu şifre sıfırlama kodu geçersiz.',
'user' => 'Bu e-posta adresine sahip bir kullanıcı bulunamadı.',
'reset_subject' => 'Şifre Sıfırlama — :app',
'reset_greeting' => 'Merhaba :name,',
'reset_line1' => 'Bu e-postayı hesabınız için şifre sıfırlama talebi yapıldığı için alıyorsunuz.',
'reset_line2' => 'Bu şifre sıfırlama bağlantısının süresi :count dakika içinde dolacaktır.',
'reset_line3' => 'Şifre sıfırlama talebinde bulunmadıysanız, bu e-postayı görmezden gelebilirsiniz.',
];

44
lang/tr/profile.php Executable file
View File

@@ -0,0 +1,44 @@
<?php
return [
'title' => 'Profilim',
'name_label' => 'Ad',
'email_label' => 'E-Posta',
'email_readonly' => 'E-posta adresi değiştirilemez.',
'phone_label' => 'Telefon (cep)',
'role_label' => 'Rol',
'language_label' => 'Dil',
'my_children' => 'Çocuklarım',
'updated' => 'Profil güncellendi.',
// Profil Fotoğrafı
'profile_picture' => 'Profil Fotoğrafı',
'upload_picture' => 'Fotoğraf yükle',
'remove_picture' => 'Fotoğrafı kaldır',
'max_picture_size' => 'Maks. 2 MB (JPG, PNG, GIF, WEBP)',
// KVKK onayı
'dsgvo_title' => 'KVKK Onay Beyanı',
'dsgvo_description' => 'İmzalanmış onay beyanını fotoğraf veya PDF olarak buraya yükleyin. Bir beyan her iki ebeveyn için ortaklaşa geçerlidir.',
'dsgvo_upload' => 'Beyanı yükle',
'dsgvo_replace' => 'Değiştir',
'dsgvo_remove' => 'Beyanı kaldır',
'dsgvo_file_hint' => 'PDF veya resim (maks. 10 MB)',
'dsgvo_uploaded' => 'Onay beyanı yüklendi.',
'dsgvo_removed' => 'Onay beyanı kaldırıldı.',
'dsgvo_view' => 'Görüntüle',
'dsgvo_confirmed' => 'Onaylandı',
'dsgvo_pending' => 'Yönetici/antrenör tarafından onay bekleniyor',
'dsgvo_confirmed_by' => ':name tarafından :date tarihinde onaylandı',
'dsgvo_confirm_remove' => 'Onay beyanını gerçekten kaldırmak istiyor musunuz? Mevcut onay da sıfırlanacak.',
// Hesap silme
'danger_zone' => 'Tehlikeli Bölge',
'delete_account' => 'Hesabı Sil',
'delete_account_hint' => 'Profiliniz devre dışı bırakılacak ve 7 gün içinde yönetici tarafından geri yüklenebilir. Geçmiş veriler (yorumlar, katılımlar) korunacaktır.',
'delete_warning_children' => 'Dikkat: Aşağıdaki çocukların tek ebeveynisiniz. Onlar da devre dışı bırakılacak:',
'delete_confirm' => 'Hesabınızı gerçekten silmek istiyor musunuz? Bu işlem yalnızca yönetici tarafından geri alınabilir.',
'account_deleted' => 'Hesabınız silindi.',
'cannot_delete_admin' => 'Yönetici hesabı silinemez.',
'cannot_delete_staff' => 'Antrenörler ve yöneticiler hesaplarını profil sayfasından silemez.',
];

109
lang/tr/ui.php Executable file
View File

@@ -0,0 +1,109 @@
<?php
return [
'dashboard' => 'Pano',
'events' => 'Etkinlikler',
'admin' => 'Yönetim',
'profile' => 'Profil',
'logout' => ıkış Yap',
'back_to_app' => 'Uygulamaya Dön',
'login' => 'Giriş Yap',
'save' => 'Kaydet',
'cancel' => 'İptal',
'edit' => 'Düzenle',
'delete' => 'Sil',
'create' => 'Oluştur',
'filter' => 'Filtrele',
'send' => 'Gönder',
'back' => 'Geri',
'yes' => 'Evet',
'no' => 'Hayır',
'open' => 'Açık',
'all_teams' => 'Tüm Takımlar',
'all_types' => 'Tüm Türler',
'upcoming' => 'Yaklaşan',
'past' => 'Geçmiş',
'period' => 'Dönem',
'team' => 'Takım',
'type' => 'Tür',
'name' => 'Ad',
'email' => 'E-Posta',
'password' => 'Şifre',
'role' => 'Rol',
'language' => 'Dil',
'impressum' => 'Künye',
'privacy' => 'Gizlilik Politikası',
'no_entries' => 'Kayıt bulunamadı.',
'clock' => '',
'date_format' => 'D, d.m.Y, H:i',
'date_format_long' => 'l, d. F Y, H:i',
'date_format_short' => 'd.m.Y H:i',
'date_format_date' => 'd.m.Y',
'footer_impressum' => 'Künye',
'footer_privacy' => 'Gizlilik Politikası',
'pwa_install_title' => 'Uygulamayı Yükle',
'pwa_install_text' => 'Hızlı erişim için uygulamayı ana ekranınıza ekleyin.',
'pwa_install_btn' => 'Yükle',
'pwa_ios_steps' => '<strong>⋯</strong> (Menü) öğesine, ardından <strong>⬆</strong> (Paylaş) öğesine dokunun ve „Ana Ekrana Ekle" seçin.',
'error_403_title' => 'Erişim Engellendi',
'error_403_text' => 'Bu sayfayı görüntüleme yetkiniz yok.',
'error_404_title' => 'Sayfa Bulunamadı',
'error_404_text' => 'İstenen sayfa bulunamadı.',
'error_500_title' => 'Sunucu Hatası',
'error_500_text' => 'Dahili bir hata oluştu. Lütfen daha sonra tekrar deneyin.',
'back_to_dashboard' => 'Panoya Dön',
'enums' => [
'event_type' => [
'home_game' => 'İç Saha Maçı',
'away_game' => 'Deplasman Maçı',
'training' => 'Antrenman',
'tournament' => 'Turnuva',
'meeting' => 'Toplantı',
'other' => 'Diğer',
],
'event_status' => [
'published' => 'Yayında',
'cancelled' => 'İptal Edildi',
'draft' => 'Taslak',
],
'participant_status' => [
'yes' => 'Katılıyor',
'no' => 'Katılmıyor',
'unknown' => 'Açık',
],
'catering_status' => [
'yes' => 'Evet',
'no' => 'Hayır',
'unknown' => 'Açık',
],
'user_role' => [
'admin' => 'Yönetici',
'coach' => 'Antrenör',
'parent_rep' => 'Veli Temsilcisi',
'user' => 'Veli',
],
],
'locales' => [
'de' => 'Deutsch',
'en' => 'English',
'pl' => 'Polski',
'ru' => 'Русский',
'ar' => 'العربية',
'tr' => 'Türkçe',
],
// KVKK Banner
'dsgvo_banner_title' => 'KVKK Onay Beyanı Gerekli',
'dsgvo_banner_text' => 'Bu uygulamayı kullanmak için imzalanmış bir KVKK onay beyanı gereklidir. Lütfen beyanı profilinize fotoğraf veya PDF olarak yükleyin. Uygulama ancak yükleme sonrasında tam olarak kullanılabilir.',
'dsgvo_banner_action' => 'Şimdi profilde yükle',
'dsgvo_banner_pending_title' => 'Onay beyanı inceleniyor',
'dsgvo_banner_pending_text' => 'KVKK onay beyanınız gönderildi ve inceleniyor. Bir yönetici tarafından onaylanana kadar uygulama salt okunur modda — katılım, ikram, zaman tutma ve yorumlar kilitlidir.',
'dsgvo_restricted' => 'KVKK onay beyanınız henüz onaylanmadı. Lütfen bir yönetici tarafından onaylanmasını bekleyin.',
'dsgvo_restricted_hint' => 'KVKK onayı henüz onaylanmadı — işlemler kilitli.',
// Dosyalar
'files' => 'Dosyalar',
'download' => 'İndir',
'all' => 'Tümü',
'close' => 'Kapat',
];

130
lang/tr/validation.php Executable file
View File

@@ -0,0 +1,130 @@
<?php
return [
'accepted' => ':attribute kabul edilmelidir.',
'active_url' => ':attribute geçerli bir URL değil.',
'after' => ':attribute, :date tarihinden sonra olmalıdır.',
'after_or_equal' => ':attribute, :date tarihi veya sonrası olmalıdır.',
'alpha' => ':attribute yalnızca harf içerebilir.',
'alpha_dash' => ':attribute yalnızca harf, rakam, tire ve alt çizgi içerebilir.',
'alpha_num' => ':attribute yalnızca harf ve rakam içerebilir.',
'array' => ':attribute bir dizi olmalıdır.',
'before' => ':attribute, :date tarihinden önce olmalıdır.',
'before_or_equal' => ':attribute, :date tarihi veya öncesi olmalıdır.',
'between' => [
'numeric' => ':attribute, :min ile :max arasında olmalıdır.',
'file' => ':attribute, :min ile :max kilobayt arasında olmalıdır.',
'string' => ':attribute, :min ile :max karakter arasında olmalıdır.',
'array' => ':attribute, :min ile :max öğe arasında olmalıdır.',
],
'boolean' => ':attribute doğru veya yanlış olmalıdır.',
'confirmed' => ':attribute onayı eşleşmiyor.',
'date' => ':attribute geçerli bir tarih değil.',
'date_equals' => ':attribute, :date tarihine eşit olmalıdır.',
'date_format' => ':attribute, :format biçimiyle eşleşmiyor.',
'different' => ':attribute ve :other farklı olmalıdır.',
'digits' => ':attribute, :digits basamak olmalıdır.',
'digits_between' => ':attribute, :min ile :max basamak arasında olmalıdır.',
'email' => ':attribute geçerli bir e-posta adresi olmalıdır.',
'exists' => 'Seçilen :attribute geçersiz.',
'file' => ':attribute bir dosya olmalıdır.',
'filled' => ':attribute bir değere sahip olmalıdır.',
'gt' => [
'numeric' => ':attribute, :value değerinden büyük olmalıdır.',
'file' => ':attribute, :value kilobayttan büyük olmalıdır.',
'string' => ':attribute, :value karakterden fazla olmalıdır.',
'array' => ':attribute, :value öğeden fazla olmalıdır.',
],
'gte' => [
'numeric' => ':attribute, :value veya daha büyük olmalıdır.',
'file' => ':attribute, en az :value kilobayt olmalıdır.',
'string' => ':attribute, en az :value karakter olmalıdır.',
'array' => ':attribute, en az :value öğe içermelidir.',
],
'image' => ':attribute bir resim olmalıdır.',
'in' => 'Seçilen :attribute geçersiz.',
'in_array' => ':attribute, :other içinde mevcut değil.',
'integer' => ':attribute bir tam sayı olmalıdır.',
'ip' => ':attribute geçerli bir IP adresi olmalıdır.',
'json' => ':attribute geçerli bir JSON dizesi olmalıdır.',
'lt' => [
'numeric' => ':attribute, :value değerinden küçük olmalıdır.',
'file' => ':attribute, :value kilobayttan küçük olmalıdır.',
'string' => ':attribute, :value karakterden az olmalıdır.',
'array' => ':attribute, :value öğeden az olmalıdır.',
],
'lte' => [
'numeric' => ':attribute, :value veya daha küçük olmalıdır.',
'file' => ':attribute, en fazla :value kilobayt olmalıdır.',
'string' => ':attribute, en fazla :value karakter olmalıdır.',
'array' => ':attribute, en fazla :value öğe içermelidir.',
],
'max' => [
'numeric' => ':attribute, :max değerinden büyük olamaz.',
'file' => ':attribute, :max kilobayttan büyük olamaz.',
'string' => ':attribute, :max karakterden fazla olamaz.',
'array' => ':attribute, :max öğeden fazla olamaz.',
],
'min' => [
'numeric' => ':attribute en az :min olmalıdır.',
'file' => ':attribute en az :min kilobayt olmalıdır.',
'string' => ':attribute en az :min karakter olmalıdır.',
'array' => ':attribute en az :min öğe içermelidir.',
],
'not_in' => 'Seçilen :attribute geçersiz.',
'numeric' => ':attribute bir sayı olmalıdır.',
'present' => ':attribute alanı mevcut olmalıdır.',
'regex' => ':attribute biçimi geçersiz.',
'required' => ':attribute alanı zorunludur.',
'required_if' => ':other :value olduğunda :attribute alanı zorunludur.',
'required_unless' => ':other :values olmadığında :attribute alanı zorunludur.',
'required_with' => ':values mevcut olduğunda :attribute alanı zorunludur.',
'required_with_all' => ':values mevcut olduğunda :attribute alanı zorunludur.',
'required_without' => ':values mevcut olmadığında :attribute alanı zorunludur.',
'required_without_all' => ':values hiçbiri mevcut olmadığında :attribute alanı zorunludur.',
'same' => ':attribute ve :other eşleşmelidir.',
'size' => [
'numeric' => ':attribute, :size olmalıdır.',
'file' => ':attribute, :size kilobayt olmalıdır.',
'string' => ':attribute, :size karakter olmalıdır.',
'array' => ':attribute, :size öğe içermelidir.',
],
'string' => ':attribute bir metin olmalıdır.',
'timezone' => ':attribute geçerli bir saat dilimi olmalıdır.',
'unique' => ':attribute zaten alınmış.',
'url' => ':attribute geçerli bir URL olmalıdır.',
'password' => [
'letters' => ':attribute en az bir harf içermelidir.',
'mixed' => ':attribute en az bir büyük ve bir küçük harf içermelidir.',
'numbers' => ':attribute en az bir rakam içermelidir.',
'symbols' => ':attribute en az bir özel karakter içermelidir.',
'uncompromised' => ':attribute bir veri ihlalinde bulundu. Lütfen farklı bir şifre seçin.',
],
'attributes' => [
'name' => 'Ad',
'email' => 'E-Posta',
'password' => 'Şifre',
'password_confirmation' => 'Şifre Onayı',
'title' => 'Başlık',
'body' => 'Mesaj',
'type' => 'Tür',
'status' => 'Durum',
'team_id' => 'Takım',
'start_date' => 'Tarih',
'start_time' => 'Saat',
'location_name' => 'Konum',
'address_text' => 'Adres',
'description_html' => 'Açıklama',
'first_name' => 'Ad',
'last_name' => 'Soyad',
'birth_year' => 'Doğum Yılı',
'jersey_number' => 'Forma Numarası',
'note' => 'Not',
'season' => 'Sezon',
'player_id' => 'Oyuncu',
'parent_id' => 'Veli',
'relationship_label' => 'İlişki',
],
];