Merge branch '4.x' into optimize-table-blade-components

This commit is contained in:
Dan Harrin
2024-10-16 13:01:19 +01:00
51 changed files with 2552 additions and 52 deletions
@@ -0,0 +1,45 @@
<?php
return [
'single' => [
'label' => 'დაკავშირება',
'modal' => [
'heading' => 'აკავშირებ :label',
'fields' => [
'record_id' => [
'label' => 'ჩანაწერი',
],
],
'actions' => [
'associate' => [
'label' => 'დაკავშირება',
],
'associate_another' => [
'label' => 'დაკავშირება და ახალი დაკავშირება',
],
],
],
'notifications' => [
'associated' => [
'title' => 'დაკავშირებულია',
],
],
],
];
@@ -0,0 +1,45 @@
<?php
return [
'single' => [
'label' => 'მიმაგრება',
'modal' => [
'heading' => 'ამაგრებთ :label',
'fields' => [
'record_id' => [
'label' => 'ჩანაწერი',
],
],
'actions' => [
'attach' => [
'label' => 'მიმაგრება',
],
'attach_another' => [
'label' => 'მიმაგრება და ახალი მიმაგრება',
],
],
],
'notifications' => [
'attached' => [
'title' => 'მიმაგრება',
],
],
],
];
@@ -0,0 +1,37 @@
<?php
return [
'single' => [
'label' => 'ახალი :label',
'modal' => [
'heading' => 'ქმნით :label',
'actions' => [
'create' => [
'label' => 'შექმნა',
],
'create_another' => [
'label' => 'შექმნა და ახალი შექმნა',
],
],
],
'notifications' => [
'created' => [
'title' => 'შექმნილია',
],
],
],
];
@@ -0,0 +1,61 @@
<?php
return [
'single' => [
'label' => 'წაშლა',
'modal' => [
'heading' => 'შლით :label',
'actions' => [
'delete' => [
'label' => 'წაშლა',
],
],
],
'notifications' => [
'deleted' => [
'title' => 'წაშლილია',
],
],
],
'multiple' => [
'label' => 'არჩეულიების წაშლა',
'modal' => [
'heading' => 'მონიშნულების წაშლა :label',
'actions' => [
'delete' => [
'label' => 'წაშლა',
],
],
],
'notifications' => [
'deleted' => [
'title' => 'წაშლილია',
],
],
],
];
@@ -0,0 +1,61 @@
<?php
return [
'single' => [
'label' => 'მოშორება',
'modal' => [
'heading' => 'აშორებთ :label',
'actions' => [
'detach' => [
'label' => 'მოშორება',
],
],
],
'notifications' => [
'detached' => [
'title' => 'მოშორებულია',
],
],
],
'multiple' => [
'label' => 'არჩეულიების მოშორება',
'modal' => [
'heading' => 'არჩეულიების მოშორება :label',
'actions' => [
'detach' => [
'label' => 'მოშორება',
],
],
],
'notifications' => [
'detached' => [
'title' => 'მოშორებულია',
],
],
],
];
@@ -0,0 +1,61 @@
<?php
return [
'single' => [
'label' => 'განკავშირება',
'modal' => [
'heading' => 'განკავშირება :label',
'actions' => [
'dissociate' => [
'label' => 'განკავშირება',
],
],
],
'notifications' => [
'dissociated' => [
'title' => 'განკავშირებულია',
],
],
],
'multiple' => [
'label' => 'არჩეულიების განკავშირება',
'modal' => [
'heading' => 'არჩეულიების განკავშირება :label',
'actions' => [
'dissociate' => [
'label' => 'განკავშირება',
],
],
],
'notifications' => [
'dissociated' => [
'title' => 'განკავშირებულია',
],
],
],
];
@@ -0,0 +1,33 @@
<?php
return [
'single' => [
'label' => 'რედაქტირება',
'modal' => [
'heading' => 'არედაქტირებ :label',
'actions' => [
'save' => [
'label' => 'ცვლილებების შენახვა',
],
],
],
'notifications' => [
'saved' => [
'title' => 'შენახულია',
],
],
],
];
@@ -0,0 +1,77 @@
<?php
return [
'label' => 'ექსპორტი :label',
'modal' => [
'heading' => 'ექსპორტდება :label',
'form' => [
'columns' => [
'label' => 'სვეტები',
'form' => [
'is_enabled' => [
'label' => ':column ჩართულია',
],
'label' => [
'label' => ':column დასახელება',
],
],
],
],
'actions' => [
'export' => [
'label' => 'ექსპორტი',
],
],
],
'notifications' => [
'completed' => [
'title' => 'ექსპორტი დასრულებულია',
'actions' => [
'download_csv' => [
'label' => 'გადმოწერეთ .csv',
],
'download_xlsx' => [
'label' => 'გადმოწერეთ .xlsx',
],
],
],
'max_rows' => [
'title' => 'ექსპორტი ზედმეტად დიდია',
'body' => 'შეგიძლიათ მაქსიმუმ 1 ჩანაწერის ექსპორტი ერთდროულად.|შეგიძლიათ მაქსიმუმ :count ჩანაწერის ექსპორტი ერთდროულად.',
],
'started' => [
'title' => 'ექსპორტი დაწყებულია',
'body' => 'თქვენი ექსპორტი დაიწყო და 1 ჩანაწერი დამუშავდება სერვერის მიერ. თქვენ მიიღებთ შეტყობინებას გადმოწერის ბმულთან ერთად, როდესაც ის დასრულდება.|თქვენი ექსპორტი დაიწყო და :count ჩანაწერი დამუშავდება სერვერზე. თქვენ მიიღებთ შეტყობინებას გადმოწერის ბმულთან ერთად, როდესაც ის დასრულდება.',
],
],
'file_name' => 'ექსპორტი-:export_id-:model',
];
@@ -0,0 +1,61 @@
<?php
return [
'single' => [
'label' => 'ფორსირებული წაშლა',
'modal' => [
'heading' => 'ფორსირებით შლით :label',
'actions' => [
'delete' => [
'label' => 'წაშლა',
],
],
],
'notifications' => [
'deleted' => [
'title' => 'წაშლილია',
],
],
],
'multiple' => [
'label' => 'ფორსირებით წასაშლელად არჩეულია',
'modal' => [
'heading' => 'ფორსირებით წასაშლელად არჩეულია :label',
'actions' => [
'delete' => [
'label' => 'წაშლა',
],
],
],
'notifications' => [
'deleted' => [
'title' => 'წაშლილია',
],
],
],
];
@@ -0,0 +1,9 @@
<?php
return [
'trigger' => [
'label' => 'ქმედება',
],
];
@@ -0,0 +1,85 @@
<?php
return [
'label' => 'იმპორტი :label',
'modal' => [
'heading' => 'იმპორტი :label',
'form' => [
'file' => [
'label' => 'ფაილი',
'placeholder' => 'ატვირთეთ CSV ფაილი',
'rules' => [
'duplicate_columns' => '{0} ფაილში არ უნდა იყოს ერთზე მეტი ცარიელი სვეტი სათაურში.|{1,*} ფაილში არ უნდა იყოს დუბლირებული სვეტის სათაურები: :columns.',
],
],
'columns' => [
'label' => 'სვეტები',
'placeholder' => 'აირჩიეთ სვეტი',
],
],
'actions' => [
'download_example' => [
'label' => 'გადმოწერეთ მაგალითი(CSV ფაილი)',
],
'import' => [
'label' => 'იმპორტი',
],
],
],
'notifications' => [
'completed' => [
'title' => 'იმპორტი დასრულდა',
'actions' => [
'download_failed_rows_csv' => [
'label' => 'გადმოწერეთ ინფორმაცია შეცდომით ჩანაწერის შესახებ|გადმოწერეთ ინფორმაცია შეცდომით ჩანაწერების შესახებ',
],
],
],
'max_rows' => [
'title' => 'ატვირთული CSV ფაილი ზედმეტად დიდია',
'body' => 'თქვენ არ შეგიძლიათ ერთდროულად ერთზე მეტი ჩანაწერის იმპორტი.|თქვენ არ შეგიძლიათ ერთდროულად :count -ზე მეტი ჩანაწერის იმპორტი.',
],
'started' => [
'title' => 'იმპორტი დაწყებულია',
'body' => 'იმპორტი დაიწყო და 1 ჩანაწერი დამუშავდება სერვერზე.|იმპორტი დაიწყო და :count ჩანაწერი დამუშავდება სერვერზე.',
],
],
'example_csv' => [
'file_name' => ':importer-example',
],
'failure_csv' => [
'file_name' => 'იმპორტი-:import_id-:csv_name-შეცდომები',
'error_header' => 'შეცდომა',
'system_error' => 'სისტემური შეცდომა, გთხოვთ დაუკავშირდეთ მხარდაჭერის სამსახურს.',
'column_mapping_required_for_new_record' => ':attribute სვეტი არ მიესადაგებული ფაილის სვეტს, მაგრამ ის საჭიროა ახალი ჩანაწერების შესაქმნელად.',
],
];
@@ -0,0 +1,23 @@
<?php
return [
'confirmation' => 'დარწმუნებული ხართ, რომ გსურთ ამის გაკეთება?',
'actions' => [
'cancel' => [
'label' => 'გაუქმება',
],
'confirm' => [
'label' => 'დადასტურება',
],
'submit' => [
'label' => 'დადასტურება',
],
],
];
@@ -0,0 +1,33 @@
<?php
return [
'single' => [
'label' => 'დუბლირება',
'modal' => [
'heading' => 'ადუბლირებთ :label',
'actions' => [
'replicate' => [
'label' => 'დუბლირება',
],
],
],
'notifications' => [
'replicated' => [
'title' => 'დუბლირებულია',
],
],
],
];
@@ -0,0 +1,61 @@
<?php
return [
'single' => [
'label' => 'აღდგენა',
'modal' => [
'heading' => 'აღადგენთ :label',
'actions' => [
'restore' => [
'label' => 'აღდგენა',
],
],
],
'notifications' => [
'restored' => [
'title' => 'აღდგენილია',
],
],
],
'multiple' => [
'label' => 'არჩეულიების აღდგენა',
'modal' => [
'heading' => 'არჩეულიების აღდგენა :label',
'actions' => [
'restore' => [
'label' => 'აღდგენა',
],
],
],
'notifications' => [
'restored' => [
'title' => 'აღდგენილია',
],
],
],
];
@@ -0,0 +1,25 @@
<?php
return [
'single' => [
'label' => 'დათვალიერება',
'modal' => [
'heading' => 'ათვალიერებთ :label',
'actions' => [
'close' => [
'label' => 'დახურვა',
],
],
],
],
];
@@ -15,6 +15,16 @@ RichEditor::make('content')
<AutoScreenshot name="forms/fields/rich-editor/simple" alt="Rich editor" version="4.x" />
## Security
By default, the editor outputs raw HTML, and sends it to the backend. Attackers are able to intercept the value of the component and send a different raw HTML string to the backend. As such, it is important that when outputting the HTML from a rich editor, it is sanitized; otherwise your site may be exposed to Cross-Site Scripting (XSS) vulnerabilities.
When Filament outputs raw HTML from the database in components such as `TextColumn` and `TextEntry`, it sanitizes it to remove any dangerous JavaScript. However, if you are outputting the HTML from a rich editor in your own Blade view, this is your responsibility. One option is to use Filament's `sanitizeHtml()` helper to do this, which is the same tool we use to sanitize HTML in the components mentioned above:
```blade
{!! str($record->content)->sanitizeHtml() !!}
```
## Customizing the toolbar buttons
You may set the toolbar buttons for the editor using the `toolbarButtons()` method. The options shown here are the defaults. In addition to these, `'h1'` is also available:
@@ -15,6 +15,16 @@ MarkdownEditor::make('content')
<AutoScreenshot name="forms/fields/markdown-editor/simple" alt="Markdown editor" version="4.x" />
## Security
By default, the editor outputs raw Markdown and HTML, and sends it to the backend. Attackers are able to intercept the value of the component and send a different raw HTML string to the backend. As such, it is important that when outputting the HTML from a Markdown editor, it is sanitized; otherwise your site may be exposed to Cross-Site Scripting (XSS) vulnerabilities.
When Filament outputs raw HTML from the database in components such as `TextColumn` and `TextEntry`, it sanitizes it to remove any dangerous JavaScript. However, if you are outputting the HTML from a Markdown editor in your own Blade view, this is your responsibility. One option is to use Filament's `sanitizeHtml()` helper to do this, which is the same tool we use to sanitize HTML in the components mentioned above:
```blade
{!! str($record->content)->markdown()->sanitizeHtml() !!}
```
## Customizing the toolbar buttons
You may set the toolbar buttons for the editor using the `toolbarButtons()` method. The options shown here are the defaults:
+465 -18
View File
@@ -2,6 +2,368 @@
return [
'builder' => [
'actions' => [
'clone' => [
'label' => 'კლონირება',
],
'add' => [
'label' => 'დამატება :label-ში',
'modal' => [
'heading' => 'დამატება :label-ში',
'actions' => [
'add' => [
'label' => 'დამატება',
],
],
],
],
'add_between' => [
'label' => 'ბლოკებს შორის ჩასმა',
'modal' => [
'heading' => 'დამატება :label-ში',
'actions' => [
'add' => [
'label' => 'დამატება',
],
],
],
],
'delete' => [
'label' => 'წაშლა',
],
'edit' => [
'label' => 'რედაქტირება',
'modal' => [
'heading' => 'ბლოკის რედაქტირება',
'actions' => [
'save' => [
'label' => 'ცვლილებების შენახვა',
],
],
],
],
'reorder' => [
'label' => 'გადაადგილება',
],
'move_down' => [
'label' => 'გადაადგილება ქვემოთ',
],
'move_up' => [
'label' => 'გადაადგილება ზემოთ',
],
'collapse' => [
'label' => 'შეკუმშვა',
],
'expand' => [
'label' => 'გაფართოება',
],
'collapse_all' => [
'label' => 'ყველას შეკუმშვა',
],
'expand_all' => [
'label' => 'ყველას გაფართოება',
],
],
],
'checkbox_list' => [
'actions' => [
'deselect_all' => [
'label' => 'ყველას არჩევის გაუქმება',
],
'select_all' => [
'label' => 'ყველას არჩევა',
],
],
],
'file_upload' => [
'editor' => [
'actions' => [
'cancel' => [
'label' => 'გაუქმება',
],
'drag_crop' => [
'label' => 'რეჟიმი "მოჭრა"',
],
'drag_move' => [
'label' => 'რეჟიმი "გადაადგილება"',
],
'flip_horizontal' => [
'label' => 'სურათის ჰორიზონტალური გადატრიალება',
],
'flip_vertical' => [
'label' => 'სურათის ვერტიკალური გადატრიალება',
],
'move_down' => [
'label' => 'სურათის გადაადგილება ქვემოთ',
],
'move_left' => [
'label' => 'სურათის გადაადგილება მარცხნივ',
],
'move_right' => [
'label' => 'სურათის გადაადგილება მარჯვნივ',
],
'move_up' => [
'label' => 'სურათის გადაადგილება ზემოთ',
],
'reset' => [
'label' => 'გადატვირთვა',
],
'rotate_left' => [
'label' => 'სურათის მარცხნივ გადატრიალება',
],
'rotate_right' => [
'label' => 'სურათის მარჯვნივ გადატრიალება',
],
'set_aspect_ratio' => [
'label' => 'პროპორციის დაყენება :ratio',
],
'save' => [
'label' => 'შენახვა',
],
'zoom_100' => [
'label' => 'ზუმი 100%',
],
'zoom_in' => [
'label' => 'ზუმირება',
],
'zoom_out' => [
'label' => 'გამოზუმვა',
],
],
'fields' => [
'height' => [
'label' => 'სიმაღლე',
'unit' => 'px',
],
'rotation' => [
'label' => 'ბრუნვა',
'unit' => 'გრად',
],
'width' => [
'label' => 'სიგანე',
'unit' => 'px',
],
'x_position' => [
'label' => 'X',
'unit' => 'px',
],
'y_position' => [
'label' => 'Y',
'unit' => 'px',
],
],
'aspect_ratios' => [
'label' => 'პროპორციები',
'no_fixed' => [
'label' => 'თავისუფალი',
],
],
'svg' => [
'messages' => [
'confirmation' => 'SVG ფაილების რედაქტირება არ არის რეკომენდებული, რადგან მასშტაბირებისას შეიძლება ხარისხის დაკარგვა.
დარწმუნებული ხართ, რომ გსურთ გაგრძელება?',
'disabled' => 'SVG ფაილების რედაქტირება გამორთულია, რადგან მასშტაბირებისას შეიძლება ხარისხის დაკარგვა.',
],
],
],
],
'key_value' => [
'actions' => [
'add' => [
'label' => 'ჩანაწერის დამატება',
],
'delete' => [
'label' => 'ჩანაწერის წაშლა',
],
'reorder' => [
'label' => 'ჩანაწერის გადალაგება',
],
],
'fields' => [
'key' => [
'label' => 'იდენტიფიკატორი',
],
'value' => [
'label' => 'მნიშვნელობა',
],
],
],
'markdown_editor' => [
'toolbar_buttons' => [
'attach_files' => 'ფაილების მიმაგრება',
'blockquote' => 'ციტატა',
'bold' => 'მსხვილი',
'bullet_list' => 'მარკირებული სია',
'code_block' => 'კოდის ბლოკი',
'heading' => 'სათაური',
'italic' => 'ტალღოვანი',
'link' => 'ბმული',
'ordered_list' => 'ნუმერირებული სია',
'redo' => 'გადამეორება',
'strike' => 'გადახაზული',
'table' => 'ცხრილი',
'undo' => 'გაუქმება',
],
],
'radio' => [
'boolean' => [
'true' => 'კი',
'false' => 'არა',
],
],
'repeater' => [
'actions' => [
'add' => [
'label' => 'დამატება :label-ში',
],
'add_between' => [
'label' => 'ჩასმა შორის',
],
'delete' => [
'label' => 'წაშლა',
],
'clone' => [
'label' => 'კლონირება',
],
'reorder' => [
'label' => 'გადაადგილება',
],
'move_down' => [
'label' => 'გადაადგილება ქვემოთ',
],
'move_up' => [
'label' => 'გადაადგილება ზემოთ',
],
'collapse' => [
'label' => 'შეკუმშვა',
],
'expand' => [
'label' => 'გაფართოება',
],
'collapse_all' => [
'label' => 'ყველას შეკუმშვა',
],
'expand_all' => [
'label' => 'ყველას გაფართოება',
],
],
],
'rich_editor' => [
'dialogs' => [
@@ -9,45 +371,130 @@ return [
'link' => [
'actions' => [
'link' => 'დამატება',
'unlink' => 'გაუქმება',
'link' => 'ბმული',
'unlink' => 'ბმულის მოხსნა',
],
'label' => 'ლინკი',
'label' => 'URL',
'placeholder' => 'ჩაწერეთ URL მისამართი',
'placeholder' => 'შეიყვანეთ URL',
],
],
'toolbar_buttons' => [
'attach_files' => 'ფაილების დამატება',
'attach_files' => 'ფაილების მიმაგრება',
'blockquote' => 'ციტატა',
'bold' => 'მსხვილი',
'bullet_list' => 'სია',
'code_block' => 'კოდი',
'bullet_list' => 'მარკირებული სია',
'code_block' => 'კოდის ბლოკი',
'h1' => 'სათაური',
'h2' => 'სათაური',
'h2' => 'სათაური 2',
'h3' => 'ქვესათაური',
'italic' => 'დახრილი',
'link' => 'ლინკი',
'ordered_list' => 'რიცხვები',
'redo' => 'Redo',
'strike' => 'ხაზგადასმული',
'undo' => 'Undo',
'italic' => 'ტალღოვანი',
'link' => 'ბმული',
'ordered_list' => 'ნუმერირებული სია',
'redo' => 'გადამეორება',
'strike' => 'გადახაზული',
'underline' => 'დახაზული',
'undo' => 'გაუქმება',
],
],
'select' => [
'no_search_results_message' => 'ამ პარამეტრებით არცერთი ჩანაწერი არ მოიძებნა.',
'placeholder' => 'აირჩიეთ ჩანაწერი',
'search_prompt' => 'ძიება...',
'actions' => [
'create_option' => [
'modal' => [
'heading' => 'შექმნა',
'actions' => [
'create' => [
'label' => 'შექმნა',
],
'create_another' => [
'label' => 'შექმნა & ახალი შექმნა',
],
],
],
],
'edit_option' => [
'modal' => [
'heading' => 'რედაქტირება',
'actions' => [
'save' => [
'label' => 'შენახვა',
],
],
],
],
],
'boolean' => [
'true' => 'კი',
'false' => 'არა',
],
'loading_message' => 'იტვირთება...',
'max_items_message' => 'შეიძლება მხოლოდ :count აირჩიოთ.',
'no_search_results_message' => 'არჩევანი ვერ მოიძებნა.',
'placeholder' => 'აირჩიეთ ვარიანტი',
'searching_message' => 'ძიება...',
'search_prompt' => 'მოძიების დასაწყებად აკრიფეთ...',
],
'tags_input' => [
'placeholder' => 'ახალი ტეგი',
'placeholder' => 'ახალი თაგი',
],
'text_input' => [
'actions' => [
'hide_password' => [
'label' => 'პაროლის დამალვა',
],
'show_password' => [
'label' => 'პაროლის ჩვენება',
],
],
],
'toggle_buttons' => [
'boolean' => [
'true' => 'კი',
'false' => 'არა',
],
],
];
@@ -0,0 +1,10 @@
<?php
return [
'distinct' => [
'must_be_selected' => 'უნდა აირჩეს მინიმუმ ერთი :attribute ველი.',
'only_one_must_be_selected' => 'უნდა აირჩეს მხოლოდ ერთი :attribute ველი.',
],
];
@@ -534,7 +534,7 @@ trait CanBeValidated
return $this;
}
public function distinct(): static
public function distinct(bool | Closure $condition = true): static
{
$this->rule(static function (Field $component, mixed $state) {
return function (string $attribute, mixed $value, Closure $fail) use ($component, $state) {
@@ -610,7 +610,7 @@ trait CanBeValidated
$fail(__($validationMessages['distinct'] ?? 'validation.distinct', ['attribute' => $component->getValidationAttribute()]));
};
});
}, $condition);
return $this;
}
@@ -4,16 +4,21 @@ namespace Filament\Forms\Components\Concerns;
use Filament\Schema\Components\Component;
use Filament\Schema\Components\Utilities\Set;
use Closure;
use Illuminate\Support\Arr;
trait CanFixIndistinctState
{
public function fixIndistinctState(): static
public function fixIndistinctState(bool | Closure $condition = true): static
{
$this->distinct();
$this->live();
$this->distinct($condition);
$this->live(condition: $condition);
$this->afterStateUpdated(static function (Component $component, mixed $state, Set $set) use ($condition) {
if (! $component->evaluate($condition)) {
return;
}
$this->afterStateUpdated(static function (Component $component, mixed $state, Set $set) {
if (blank($state)) {
return;
}
@@ -0,0 +1,38 @@
<?php
return [
'entries' => [
'text' => [
'actions' => [
'collapse_list' => 'იხილეთ :count ნაკლები',
'expand_list' => 'იხილეთ :count მეტი',
],
'more_list_items' => 'და კიდევ :count',
],
'key_value' => [
'columns' => [
'key' => [
'label' => 'იდენტიფიკატორი',
],
'value' => [
'label' => 'მნიშვნელობა',
],
],
'placeholder' => 'ჩანაწერები არ არის',
],
],
];
@@ -0,0 +1,28 @@
<?php
return [
'modal' => [
'heading' => 'შეტყობინებები',
'actions' => [
'clear' => [
'label' => 'გასუფთავება',
],
'mark_all_as_read' => [
'label' => 'ყველას წაკითხულად მონიშვნა',
],
],
'empty' => [
'heading' => 'შეტყობინებები არ არის',
'description' => 'გთხოვთ, შეამოწმოთ მოგვიანებით.',
],
],
];
@@ -0,0 +1,12 @@
<?php
return [
'field' => [
'label' => 'გლობალური ძიება',
'placeholder' => 'ძიება',
],
'no_results_message' => 'შედეგები ვერ მოიძებნა.',
];
@@ -0,0 +1,63 @@
<?php
return [
'direction' => 'ltr',
'actions' => [
'billing' => [
'label' => 'გამოწერის მართვა',
],
'logout' => [
'label' => 'გასვლა',
],
'open_database_notifications' => [
'label' => 'გახსენი შეტყობინებები',
],
'open_user_menu' => [
'label' => 'მომხმარებლის მენიუ',
],
'sidebar' => [
'collapse' => [
'label' => 'გვერდითი პანელის შეკუმშვა',
],
'expand' => [
'label' => 'გვერდითი პანელის გახსნა',
],
],
'theme_switcher' => [
'dark' => [
'label' => 'მუქი თემის ჩართვა',
],
'light' => [
'label' => 'ნათელი თემის ჩართვა',
],
'system' => [
'label' => 'სისტემის თემის ჩართვა',
],
],
],
'avatar' => [
'alt' => ':name-ის ავატარი',
],
'logo' => [
'alt' => ':name-ის ლოგო',
],
];
@@ -0,0 +1,51 @@
<?php
return [
'label' => 'პროფილი',
'form' => [
'email' => [
'label' => 'ელფოსტის მისამართი',
],
'name' => [
'label' => 'სახელი',
],
'password' => [
'label' => 'ახალი პაროლი',
],
'password_confirmation' => [
'label' => 'დაადასტურეთ ახალი პაროლი',
],
'actions' => [
'save' => [
'label' => 'ცვლილებების შენახვა',
],
],
],
'notifications' => [
'saved' => [
'title' => 'შენახულია',
],
],
'actions' => [
'cancel' => [
'label' => 'გაუქმება',
],
],
];
@@ -0,0 +1,35 @@
<?php
return [
'title' => 'დაადასტურეთ თქვენი ელფოსტა',
'heading' => 'დაადასტურეთ თქვენი ელფოსტა',
'actions' => [
'resend_notification' => [
'label' => 'ხელახლა გაგზავნა',
],
],
'messages' => [
'notification_not_received' => 'არ მიგიღიათ ჩვენ მიერ გამოგზავნილი ელფოსტა?',
'notification_sent' => 'ჩვენ გამოვაგზავნეთ ელფოსტა მისამართზე :email, რომელშიც აღწერილია ელფოსტის ვერიფიცირების ინსტრუქცია.',
],
'notifications' => [
'notification_resent' => [
'title' => 'ჩვენ ხელახლა გავგზავნეთ ელფოსტა.',
],
'notification_resend_throttled' => [
'title' => 'ზედმეტად ბევრი ხელახლა გაგზავნის მცდელობა',
'body' => 'გთხოვთ სცადეთ კიდევ :seconds წამში.',
],
],
];
@@ -0,0 +1,61 @@
<?php
return [
'title' => 'ავტორიზაცია',
'heading' => 'ავტორიზაცია',
'actions' => [
'register' => [
'before' => 'ან',
'label' => 'დარეგისტრირდით ანგარიშისთვის',
],
'request_password_reset' => [
'label' => 'დაგავიწყდა პაროლი?',
],
],
'form' => [
'email' => [
'label' => 'ელფოსტის მისამართი',
],
'password' => [
'label' => 'პაროლი',
],
'remember' => [
'label' => 'დამიმახსოვრე',
],
'actions' => [
'authenticate' => [
'label' => 'ავტორიზაცია',
],
],
],
'messages' => [
'failed' => 'ეს მონაცემები არ ემთხვევა ჩვენს ჩანაწერებს.',
],
'notifications' => [
'throttled' => [
'title' => 'ზედმეტად ბევრი შესვლის მცდელობა',
'body' => 'გთხოვთ, სცადეთ ხელახლა :seconds წამში.',
],
],
];
@@ -0,0 +1,42 @@
<?php
return [
'title' => 'პაროლის აღდგენა',
'heading' => 'დაგავიწყდა პაროლი?',
'actions' => [
'login' => [
'label' => 'ავტორიზაციის გვერდზე გადასვლა',
],
],
'form' => [
'email' => [
'label' => 'ელფოსტის მისამართი',
],
'actions' => [
'request' => [
'label' => 'გაგზავნეთ ელფოსტა',
],
],
],
'notifications' => [
'throttled' => [
'title' => 'ზედმეტად ბევრი მოთხოვნა',
'body' => 'გთხოვთ, სცადეთ ხელახლა :seconds წამში.',
],
],
];
@@ -0,0 +1,43 @@
<?php
return [
'title' => 'პაროლის აღდგენა',
'heading' => 'პაროლის აღდგენა',
'form' => [
'email' => [
'label' => 'ელფოსტა',
],
'password' => [
'label' => 'პაროლი',
'validation_attribute' => 'პაროლი',
],
'password_confirmation' => [
'label' => 'დაადასტურეთ პაროლი',
],
'actions' => [
'reset' => [
'label' => 'პაროლის აღდგენა',
],
],
],
'notifications' => [
'throttled' => [
'title' => 'ზედმეტად ბევრი აღდგენის მცდელობა',
'body' => 'გთხოვთ, სცადეთ ხელახლა :seconds წამში.',
],
],
];
@@ -0,0 +1,56 @@
<?php
return [
'title' => 'რეგისტრაცია',
'heading' => 'რეგისტრაცია',
'actions' => [
'login' => [
'before' => 'ან',
'label' => 'ავტორიზაცია თქვენს ანგარიშზე',
],
],
'form' => [
'email' => [
'label' => 'ელფოსტის მისამართი',
],
'name' => [
'label' => 'სახელი',
],
'password' => [
'label' => 'პაროლი',
'validation_attribute' => 'პაროლი',
],
'password_confirmation' => [
'label' => 'დაადასტურეთ პაროლი',
],
'actions' => [
'register' => [
'label' => 'დარეგისტრირება',
],
],
],
'notifications' => [
'throttled' => [
'title' => 'ზედმეტად ბევრი რეგისტრაციის მცდელობა',
'body' => 'გთხოვთ, სცადეთ ხელახლა :seconds წამში.',
],
],
];
@@ -0,0 +1,33 @@
<?php
return [
'title' => 'მიმოხილვა',
'actions' => [
'filter' => [
'label' => 'ფილტრი',
'modal' => [
'heading' => 'ფილტრი',
'actions' => [
'apply' => [
'label' => 'შესრულება',
],
],
],
],
],
];
@@ -0,0 +1,25 @@
<?php
return [
'form' => [
'actions' => [
'save' => [
'label' => 'ცვლილებების შენახვა',
],
],
],
'notifications' => [
'saved' => [
'title' => 'შენახულია',
],
],
];
@@ -0,0 +1,37 @@
<?php
return [
'title' => 'ქმნით :label',
'breadcrumb' => 'შექმნა',
'form' => [
'actions' => [
'cancel' => [
'label' => 'გაუქმება',
],
'create' => [
'label' => 'შექმნა',
],
'create_another' => [
'label' => 'შექმნა და ახლის შექმნა',
],
],
],
'notifications' => [
'created' => [
'title' => 'შექმნილია',
],
],
];
@@ -0,0 +1,41 @@
<?php
return [
'title' => 'არედაქტირებთ :label',
'breadcrumb' => 'რედაქტირება',
'form' => [
'actions' => [
'cancel' => [
'label' => 'გაუქმება',
],
'save' => [
'label' => 'ცვლილებების შენახვა',
],
],
],
'content' => [
'tab' => [
'label' => 'რედაქტირება',
],
],
'notifications' => [
'saved' => [
'title' => 'შენახულია',
],
],
];
@@ -0,0 +1,7 @@
<?php
return [
'breadcrumb' => 'სია',
];
@@ -0,0 +1,17 @@
<?php
return [
'title' => 'ათვალიერებთ :label',
'breadcrumb' => 'დათვალიერება',
'content' => [
'tab' => [
'label' => 'დათვალიერება',
],
],
];
@@ -0,0 +1,7 @@
<?php
return [
'body' => 'ცვლილებები არ არის დამახსოვრებული. დარწმუნებული ხართ, რომ გსურთ ამ გვერდის დატოვება?',
];
@@ -0,0 +1,15 @@
<?php
return [
'actions' => [
'logout' => [
'label' => 'გასვლა',
],
],
'welcome' => 'მოგესალმებით',
];
@@ -0,0 +1,17 @@
<?php
return [
'actions' => [
'open_documentation' => [
'label' => 'დოკუმენტაცია',
],
'open_github' => [
'label' => 'GitHub',
],
],
];
@@ -0,0 +1,21 @@
<?php
return [
'wizard' => [
'actions' => [
'previous_step' => [
'label' => 'უკან',
],
'next_step' => [
'label' => 'შემდეგი',
],
],
],
];
@@ -3,6 +3,7 @@
namespace Filament\Schema\Concerns;
use Filament\Schema\Components\Component;
use Closure;
trait HasStateBindingModifiers
{
@@ -13,11 +14,11 @@ trait HasStateBindingModifiers
protected int | string | null $liveDebounce = null;
protected ?bool $isLive = null;
protected bool | Closure | null $isLive = null;
protected bool $isLiveOnBlur = false;
public function live(bool $onBlur = false, int | string | null $debounce = null, ?bool $condition = true): static
public function live(bool $onBlur = false, int | string | null $debounce = null, bool | Closure | null $condition = true): static
{
$this->isLive = $condition;
$this->isLiveOnBlur = $onBlur;
@@ -85,7 +86,9 @@ trait HasStateBindingModifiers
return $this->stateBindingModifiers;
}
if ($this->isLive === false) {
$isLive = $this->evaluate($this->isLive);
if ($isLive === false) {
return [];
}
@@ -105,7 +108,7 @@ trait HasStateBindingModifiers
return ['live', 'debounce', $this->liveDebounce];
}
if ($this->isLive) {
if ($isLive) {
return ['live'];
}
@@ -122,8 +125,10 @@ trait HasStateBindingModifiers
public function isLive(): bool
{
if ($this->isLive !== null) {
return $this->isLive;
$isLive = $this->evaluate($this->isLive);
if ($isLive !== null) {
return $isLive;
}
if ($this instanceof Component) {
@@ -139,7 +144,9 @@ trait HasStateBindingModifiers
public function isLiveOnBlur(): bool
{
if ($this->isLive !== null) {
$isLive = $this->evaluate($this->isLive);
if ($isLive !== null) {
return $this->isLiveOnBlur;
}
@@ -0,0 +1,25 @@
<?php
return [
'form' => [
'actions' => [
'save' => [
'label' => 'ცვლილებების შენახვა',
],
],
],
'notifications' => [
'saved' => [
'title' => 'შენახულია',
],
],
];
@@ -0,0 +1,9 @@
<?php
return [
'active_locale' => [
'label' => 'ენა',
],
];
@@ -0,0 +1,9 @@
<?php
return [
'messages' => [
'uploading_file' => 'ფაილის ატვირთვა...',
],
];
@@ -0,0 +1,9 @@
<?php
return [
'messages' => [
'copied' => 'დაკოპირდა',
],
];
@@ -0,0 +1,13 @@
<?php
return [
'actions' => [
'close' => [
'label' => 'დახურვა',
],
],
];
@@ -2,15 +2,15 @@
return [
'label' => 'გვერდებზე ნავიგაცია',
'label' => 'გვერდების ნავიგაცია',
'overview' => '{1} ნაჩვენებია ერთი შედეგი|[2,*] ნაჩვენებია :first-დან :last-მდე :total-დან',
'overview' => '{1} ნაჩვენებია 1 შედეგი|[2,*] ნაჩვენებია :first-დან :last-მდე :total შედეგიდან',
'fields' => [
'records_per_page' => [
'label' => 'ჩანაწერი თითო გვერდზე',
'label' => 'გვერდზე',
'options' => [
'all' => 'ყველა',
@@ -22,8 +22,16 @@ return [
'actions' => [
'first' => [
'label' => 'პირველი',
],
'go_to_page' => [
'label' => '{1} :page-ელ გვერდზე გადასვლა|[2,*] მე-:page გვერდზე გადასვლა',
'label' => 'გადადით გვერდზე :page',
],
'last' => [
'label' => 'ბოლო',
],
'next' => [
@@ -27,6 +27,7 @@ class CheckTranslationsCommand extends Command
$this->scan('forms');
$this->scan('infolists');
$this->scan('notifications');
$this->scan('schema');
$this->scan('spark-billing-provider');
$this->scan('spatie-laravel-google-fonts-plugin');
$this->scan('spatie-laravel-media-library-plugin');
@@ -0,0 +1,481 @@
<?php
return [
'label' => 'ქუერი ბილდერი',
'form' => [
'operator' => [
'label' => 'ოპერატორი',
],
'or_groups' => [
'label' => 'ჯგუფები',
'block' => [
'label' => 'დისიუნქცია (OR)',
'or' => 'OR',
],
],
'rules' => [
'label' => 'წესები',
'item' => [
'and' => 'AND',
],
],
],
'no_rules' => '(არ არის წესები)',
'item_separators' => [
'and' => 'AND',
'or' => 'OR',
],
'operators' => [
'is_filled' => [
'label' => [
'direct' => 'შევსებულია',
'inverse' => 'ცარიელია',
],
'summary' => [
'direct' => ':attribute შევსებულია',
'inverse' => ':attribute ცარიელია',
],
],
'boolean' => [
'is_true' => [
'label' => [
'direct' => 'მართალია',
'inverse' => 'მცდარია',
],
'summary' => [
'direct' => ':attribute მართალია',
'inverse' => ':attribute მცდარია',
],
],
],
'date' => [
'is_after' => [
'label' => [
'direct' => 'შემდეგია',
'inverse' => 'არ არის შემდეგი',
],
'summary' => [
'direct' => ':attribute შემდეგია :date-ის შემდეგ',
'inverse' => ':attribute არ არის შემდეგი :date-ის შემდეგ',
],
],
'is_before' => [
'label' => [
'direct' => 'მანამდეა',
'inverse' => 'არ არის მანამდე',
],
'summary' => [
'direct' => ':attribute მანამდეა :date-მდე',
'inverse' => ':attribute არ არის მანამდე :date-მდე',
],
],
'is_date' => [
'label' => [
'direct' => 'არის თარიღი',
'inverse' => 'არ არის თარიღი',
],
'summary' => [
'direct' => ':attribute არის :date',
'inverse' => ':attribute არ არის :date',
],
],
'is_month' => [
'label' => [
'direct' => 'არის თვე',
'inverse' => 'არ არის თვე',
],
'summary' => [
'direct' => ':attribute არის :month',
'inverse' => ':attribute არ არის :month',
],
],
'is_year' => [
'label' => [
'direct' => 'არის წელი',
'inverse' => 'არ არის წელი',
],
'summary' => [
'direct' => ':attribute არის :year',
'inverse' => ':attribute არ არის :year',
],
],
'form' => [
'date' => [
'label' => 'თარიღი',
],
'month' => [
'label' => 'თვე',
],
'year' => [
'label' => 'წელი',
],
],
],
'number' => [
'equals' => [
'label' => [
'direct' => 'თანაბარია',
'inverse' => 'არ არის თანაბარი',
],
'summary' => [
'direct' => ':attribute თანაბარია :number',
'inverse' => ':attribute არ არის თანაბარი :number',
],
],
'is_max' => [
'label' => [
'direct' => 'არის მაქსიმუმი',
'inverse' => 'მეტია ვიდრე',
],
'summary' => [
'direct' => ':attribute არის მაქსიმუმი :number',
'inverse' => ':attribute მეტია ვიდრე :number',
],
],
'is_min' => [
'label' => [
'direct' => 'არის მინიმუმი',
'inverse' => 'ნაკლებია ვიდრე',
],
'summary' => [
'direct' => ':attribute არის მინიმუმი :number',
'inverse' => ':attribute ნაკლებია ვიდრე :number',
],
],
'aggregates' => [
'average' => [
'label' => 'საშუალო',
'summary' => 'საშუალო :attribute',
],
'max' => [
'label' => 'მაქსიმუმი',
'summary' => 'მაქსიმუმი :attribute',
],
'min' => [
'label' => 'მინიმუმი',
'summary' => 'მინიმუმი :attribute',
],
'sum' => [
'label' => 'ჯამი',
'summary' => ':attribute ჯამი',
],
],
'form' => [
'aggregate' => [
'label' => 'აგრეგატი',
],
'number' => [
'label' => 'რიცხვი',
],
],
],
'relationship' => [
'equals' => [
'label' => [
'direct' => 'აქვს',
'inverse' => 'არ აქვს',
],
'summary' => [
'direct' => 'აქვს :count :relationship',
'inverse' => 'არ აქვს :count :relationship',
],
],
'has_max' => [
'label' => [
'direct' => 'აქვს მაქსიმუმი',
'inverse' => 'მეტია ვიდრე',
],
'summary' => [
'direct' => 'აქვს მაქსიმუმი :count :relationship',
'inverse' => 'მეტია ვიდრე :count :relationship',
],
],
'has_min' => [
'label' => [
'direct' => 'აქვს მინიმუმი',
'inverse' => 'ნაკლებია ვიდრე',
],
'summary' => [
'direct' => 'აქვს მინიმუმი :count :relationship',
'inverse' => 'ნაკლებია ვიდრე :count :relationship',
],
],
'is_empty' => [
'label' => [
'direct' => 'ცარიელია',
'inverse' => 'არ არის ცარიელი',
],
'summary' => [
'direct' => ':relationship ცარიელია',
'inverse' => ':relationship არ არის ცარიელი',
],
],
'is_related_to' => [
'label' => [
'single' => [
'direct' => 'არის',
'inverse' => 'არ არის',
],
'multiple' => [
'direct' => 'შეიცავს',
'inverse' => 'არ შეიცავს',
],
],
'summary' => [
'single' => [
'direct' => ':relationship არის :values',
'inverse' => ':relationship არ არის :values',
],
'multiple' => [
'direct' => ':relationship შეიცავს :values',
'inverse' => ':relationship არ შეიცავს :values',
],
'values_glue' => [
0 => ', ',
'final' => ' ან ',
],
],
'form' => [
'value' => [
'label' => 'მნიშვნელობა',
],
'values' => [
'label' => 'მნიშვნელობები',
],
],
],
'form' => [
'count' => [
'label' => 'რაოდენობა',
],
],
],
'select' => [
'is' => [
'label' => [
'direct' => 'არის',
'inverse' => 'არ არის',
],
'summary' => [
'direct' => ':attribute არის :values',
'inverse' => ':attribute არ არის :values',
'values_glue' => [
', ',
'final' => ' ან ',
],
],
'form' => [
'value' => [
'label' => 'მნიშვნელობა',
],
'values' => [
'label' => 'მნიშვნელობები',
],
],
],
],
'text' => [
'contains' => [
'label' => [
'direct' => 'შეიცავს',
'inverse' => 'არ შეიცავს',
],
'summary' => [
'direct' => ':attribute შეიცავს :text',
'inverse' => ':attribute არ შეიცავს :text',
],
],
'ends_with' => [
'label' => [
'direct' => 'მთავრდება',
'inverse' => 'არ მთავრდება',
],
'summary' => [
'direct' => ':attribute მთავრდება :text-ზე',
'inverse' => ':attribute არ მთავრდება :text-ზე',
],
],
'equals' => [
'label' => [
'direct' => 'თანაბარია',
'inverse' => 'არ არის თანაბარი',
],
'summary' => [
'direct' => ':attribute თანაბარია :text',
'inverse' => ':attribute არ არის თანაბარი :text',
],
],
'starts_with' => [
'label' => [
'direct' => 'იწყება',
'inverse' => 'არ იწყება',
],
'summary' => [
'direct' => ':attribute იწყება :text-ით',
'inverse' => ':attribute არ იწყება :text-ით',
],
],
'form' => [
'text' => [
'label' => 'ტექსტი',
],
],
],
],
'actions' => [
'add_rule' => [
'label' => 'დამატება წესის',
],
'add_rule_group' => [
'label' => 'დამატება წესების ჯგუფის',
],
],
];
+107 -17
View File
@@ -2,19 +2,73 @@
return [
'column_toggle' => [
'heading' => 'სვეტები',
],
'columns' => [
'tags' => [
'more' => 'და კიდევ :count',
'text' => [
'actions' => [
'collapse_list' => 'აჩვენე :count ნაკლები',
'expand_list' => 'აჩვენე :count მეტი',
],
'more_list_items' => 'და კიდევ :count',
],
],
'fields' => [
'bulk_select_page' => [
'label' => 'მონიშნეთ/გააუქმეთ ყველა ელემენტი საერთო ქმედებებისთვის.',
],
'bulk_select_record' => [
'label' => 'მონიშნეთ/გააუქმეთ ელემენტი :key საერთო ქმედებებისთვის.',
],
'bulk_select_group' => [
'label' => 'მონიშნეთ/გააუქმეთ ჯგუფი :title საერთო ქმედებებისთვის.',
],
'search' => [
'label' => 'ძიება',
'placeholder' => 'ძიება',
'label' => 'ძებნა',
'placeholder' => 'ძებნა',
'indicator' => 'ძებნა',
],
],
'summary' => [
'heading' => 'შეჯამება',
'subheadings' => [
'all' => 'ყველა :label',
'group' => ':group შეჯამება',
'page' => 'ეს გვერდი',
],
'summarizers' => [
'average' => [
'label' => 'საშუალო',
],
'count' => [
'label' => 'რაოდენობა',
],
'sum' => [
'label' => 'ჯამი',
],
],
],
@@ -22,30 +76,36 @@ return [
'actions' => [
'disable_reordering' => [
'label' => 'ჩანაწერების გადანაცვლების დასრულება',
'label' => 'ჩანაწერების გადალაგების დასრულება',
],
'enable_reordering' => [
'label' => 'ჩანაწერების გადანაცვლება',
'label' => 'ჩანაწერების გადალაგება',
],
'filter' => [
'label' => 'ფილტრი',
],
'open_actions' => [
'label' => 'ქმედებები',
'group' => [
'label' => 'ჯგუფი',
],
'open_bulk_actions' => [
'label' => 'საერთო ქმედებები',
],
'toggle_columns' => [
'label' => 'სვეტების დამალვა/გამოჩენა',
'label' => 'სვეტების გადართვა',
],
],
'empty' => [
'heading' => 'ჩანაწერები ვერ მოიძებნა',
'heading' => 'არაა :model',
'description' => 'შექმენით :model რომ დაიწყოთ.',
],
@@ -53,6 +113,10 @@ return [
'actions' => [
'apply' => [
'label' => 'ფილტრების გამოყენება',
],
'remove' => [
'label' => 'ფილტრის მოხსნა',
],
@@ -63,11 +127,13 @@ return [
],
'reset' => [
'label' => 'ფილტრების გაუქმება',
'label' => 'გასუფთავება',
],
],
'heading' => 'ფილტრები',
'indicator' => 'აქტიური ფილტრები',
'multi_select' => [
@@ -84,7 +150,7 @@ return [
'only_trashed' => 'მხოლოდ წაშლილი ჩანაწერები',
'with_trashed' => 'წაშლილი ჩანაწერებიანა',
'with_trashed' => 'წაშლილ ჩანაწერებთან ერთად',
'without_trashed' => 'წაშლილი ჩანაწერების გარეშე',
@@ -92,20 +158,44 @@ return [
],
'reorder_indicator' => 'გადაადგილე ჩანაწერები.',
'grouping' => [
'fields' => [
'group' => [
'label' => 'დაჯგუფებულია',
'placeholder' => 'დაჯგუფებულია',
],
'direction' => [
'label' => 'ჯგუფის მიმართულება',
'options' => [
'asc' => 'ზრდადი',
'desc' => 'კლებადი',
],
],
],
],
'reorder_indicator' => 'ჩანაწერების გადათრევა და ჩამოშვება რიგში.',
'selection_indicator' => [
'selected_count' => 'მონიშნულია :count ჩანაწერი',
'selected_count' => '1 ჩანაწერი მონიშნულია|:count ჩანაწერები მონიშნულია',
'actions' => [
'select_all' => [
'label' => '{1} მონიშნე ყველა|[2,*] მონიშნე :count-ივე',
'label' => 'მონიშნეთ ყველა :count',
],
'deselect_all' => [
'label' => 'მონიშვნების მოხსნა',
'label' => 'ყველას მონიშვნის გაუქმება',
],
],
@@ -122,7 +212,7 @@ return [
'direction' => [
'label' => 'სორტირების მიმართულება',
'label' => 'სორტირება',
'options' => [
'asc' => 'ზრდადობით',