mirror of
https://github.com/alexjustesen/speedtest-tracker.git
synced 2026-06-23 02:20:09 +00:00
Crowdin support for translations (#2410)
Co-authored-by: Alex Justesen <alexjustesen@users.noreply.github.com>
This commit is contained in:
@@ -11,6 +11,7 @@ body:
|
||||
Please note:
|
||||
- For **feature requests or changes**, use the [feature request form](https://github.com/alexjustesen/speedtest-tracker/issues/new?template=feature_request.yml).
|
||||
- For **general questions**, **setup or configuration help**, or if you’re not sure this is a bug, please use **[GitHub Discussions](https://github.com/alexjustesen/speedtest-tracker/discussions)** instead.
|
||||
- Any isseus with translations should be reported/solved within the [crowdin project](https://crowdin.com/project/speedtest-tracker).
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Pre-work
|
||||
|
||||
@@ -7,6 +7,7 @@ body:
|
||||
attributes:
|
||||
value: |
|
||||
You should only use this form to request a change or new feature, to report a bug or issue use the [bug report form](https://github.com/alexjustesen/speedtest-tracker).
|
||||
Any reqeusts for new translations should be reqeusted within the [crowdin project](https://crowdin.com/project/speedtest-tracker).
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Pre-work
|
||||
|
||||
@@ -10,6 +10,7 @@ Speedtest Tracker is a self-hosted application that monitors the performance and
|
||||
- **Detailed Metrics**: Capture download and upload speeds, ping, packet loss and more.
|
||||
- **Historical Data**: View historical data and trends to identify patterns and issues with your internet connection.
|
||||
- **Notifications**: Receive notifications when your internet performance drops below a certain threshold.
|
||||
- **Multi-Language Support**: Available in multiple languages with community translations via [Crowdin](https://crowdin.com/project/speedtest-tracker).
|
||||
|
||||
## Getting Started
|
||||
|
||||
@@ -20,4 +21,12 @@ Speedtest Tracker is containerized so you can run it anywhere you run your conta
|
||||
- [Notifications](https://docs.speedtest-tracker.dev/settings/notifications) channels alert you when issues happen.
|
||||
- [Frequently Asked Questions](https://docs.speedtest-tracker.dev/help/faqs) are common questions that can help you resolve issues.
|
||||
|
||||
## Translations
|
||||
|
||||
Speedtest Tracker supports multiple languages thanks to our community translators!
|
||||
|
||||
**Request a new language**: Visit our [Crowdin project](https://crowdin.com/project/speedtest-tracker) and request a new language directly in crowdin.
|
||||
|
||||
**Help translate**: Join our [Crowdin project](https://crowdin.com/project/speedtest-tracker) to contribute translations in your language. All translation levels are welcome!
|
||||
|
||||
[](https://star-history.com/#alexjustesen/speedtest-tracker&Date)
|
||||
|
||||
@@ -12,17 +12,15 @@ class SendDatabaseTestNotification
|
||||
|
||||
public function handle(User $user)
|
||||
{
|
||||
$user->notify(
|
||||
Notification::make()
|
||||
->title('Test database notification received!')
|
||||
->body('You say pong')
|
||||
->success()
|
||||
->toDatabase(),
|
||||
);
|
||||
Notification::make()
|
||||
->title(__('settings/notifications.test_notifications.database.received'))
|
||||
->body(__('settings/notifications.test_notifications.database.pong'))
|
||||
->success()
|
||||
->sendToDatabase($user);
|
||||
|
||||
Notification::make()
|
||||
->title('Test database notification sent.')
|
||||
->body('I say ping')
|
||||
->title(__('settings/notifications.test_notifications.database.sent'))
|
||||
->body(__('settings/notifications.test_notifications.database.ping'))
|
||||
->success()
|
||||
->send();
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ class SendMailTestNotification
|
||||
{
|
||||
if (! count($recipients)) {
|
||||
Notification::make()
|
||||
->title('You need to add mail recipients!')
|
||||
->title(__('settings/notifications.test_notifications.mail.add'))
|
||||
->warning()
|
||||
->send();
|
||||
|
||||
@@ -28,7 +28,7 @@ class SendMailTestNotification
|
||||
}
|
||||
|
||||
Notification::make()
|
||||
->title('Test mail notification sent.')
|
||||
->title(__('settings/notifications.test_notifications.mail.sent'))
|
||||
->success()
|
||||
->send();
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ class SendWebhookTestNotification
|
||||
{
|
||||
if (! count($webhooks)) {
|
||||
Notification::make()
|
||||
->title('You need to add webhook URLs!')
|
||||
->title(__('settings/notifications.test_notifications.webhook.add'))
|
||||
->warning()
|
||||
->send();
|
||||
|
||||
@@ -32,7 +32,7 @@ class SendWebhookTestNotification
|
||||
->url($webhook['url'])
|
||||
->payload([
|
||||
'result_id' => Str::uuid(),
|
||||
'site_name' => 'Webhook Notification Testing',
|
||||
'site_name' => __('settings/notifications.test_notifications.webhook.payload'),
|
||||
'isp' => $fakeResult->data['isp'],
|
||||
'ping' => $fakeResult->ping,
|
||||
'download' => $fakeResult->download,
|
||||
@@ -46,7 +46,7 @@ class SendWebhookTestNotification
|
||||
}
|
||||
|
||||
Notification::make()
|
||||
->title('Test webhook notification sent.')
|
||||
->title(__('settings/notifications.test_notifications.webhook.sent'))
|
||||
->success()
|
||||
->send();
|
||||
}
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
namespace App\Enums;
|
||||
|
||||
use Filament\Support\Contracts\HasLabel;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
enum ResultService: string implements HasLabel
|
||||
{
|
||||
@@ -12,6 +11,9 @@ enum ResultService: string implements HasLabel
|
||||
|
||||
public function getLabel(): ?string
|
||||
{
|
||||
return Str::title($this->name);
|
||||
return match ($this) {
|
||||
self::Faker => __('enums.service.faker'),
|
||||
self::Ookla => __('enums.service.ookla'),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,6 @@ namespace App\Enums;
|
||||
|
||||
use Filament\Support\Contracts\HasColor;
|
||||
use Filament\Support\Contracts\HasLabel;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
enum ResultStatus: string implements HasColor, HasLabel
|
||||
{
|
||||
@@ -33,6 +32,15 @@ enum ResultStatus: string implements HasColor, HasLabel
|
||||
|
||||
public function getLabel(): ?string
|
||||
{
|
||||
return Str::title($this->name);
|
||||
return match ($this) {
|
||||
self::Benchmarking => __('enums.status.benchmarking'),
|
||||
self::Checking => __('enums.status.checking'),
|
||||
self::Completed => __('enums.status.completed'),
|
||||
self::Failed => __('enums.status.failed'),
|
||||
self::Running => __('enums.status.running'),
|
||||
self::Started => __('enums.status.started'),
|
||||
self::Skipped => __('enums.status.skipped'),
|
||||
self::Waiting => __('enums.status.waiting'),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,6 @@ namespace App\Enums;
|
||||
|
||||
use Filament\Support\Contracts\HasColor;
|
||||
use Filament\Support\Contracts\HasLabel;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
enum UserRole: string implements HasColor, HasLabel
|
||||
{
|
||||
@@ -21,6 +20,9 @@ enum UserRole: string implements HasColor, HasLabel
|
||||
|
||||
public function getLabel(): ?string
|
||||
{
|
||||
return Str::title($this->name);
|
||||
return match ($this) {
|
||||
self::Admin => __('general.admin'),
|
||||
self::User => __('general.user'),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,19 +19,29 @@ class Dashboard extends BasePage
|
||||
|
||||
protected string $view = 'filament.pages.dashboard';
|
||||
|
||||
public function getTitle(): string
|
||||
{
|
||||
return __('dashboard.title');
|
||||
}
|
||||
|
||||
public static function getNavigationLabel(): string
|
||||
{
|
||||
return __('dashboard.title');
|
||||
}
|
||||
|
||||
public function getSubheading(): ?string
|
||||
{
|
||||
$schedule = config('speedtest.schedule');
|
||||
|
||||
if (blank($schedule) || $schedule === false) {
|
||||
return __('No speedtests scheduled.');
|
||||
return __('dashboard.no_speedtests_scheduled');
|
||||
}
|
||||
|
||||
$cronExpression = new CronExpression($schedule);
|
||||
|
||||
$nextRunDate = Carbon::parse($cronExpression->getNextRunDate(timeZone: config('app.display_timezone')))->format(config('app.datetime_format'));
|
||||
|
||||
return 'Next speedtest at: '.$nextRunDate;
|
||||
return __('dashboard.next_speedtest_at').': '.$nextRunDate;
|
||||
}
|
||||
|
||||
protected function getHeaderWidgets(): array
|
||||
|
||||
@@ -26,9 +26,15 @@ class DataIntegration extends SettingsPage
|
||||
|
||||
protected static ?int $navigationSort = 2;
|
||||
|
||||
protected static ?string $title = 'Data Integration';
|
||||
public function getTitle(): string
|
||||
{
|
||||
return __('settings/data_integration.title');
|
||||
}
|
||||
|
||||
protected static ?string $navigationLabel = 'Data Integration';
|
||||
public static function getNavigationLabel(): string
|
||||
{
|
||||
return __('settings/data_integration.label');
|
||||
}
|
||||
|
||||
protected static string $settings = DataIntegrationSettings::class;
|
||||
|
||||
@@ -51,49 +57,49 @@ class DataIntegration extends SettingsPage
|
||||
'md' => 3,
|
||||
])
|
||||
->schema([
|
||||
Section::make('InfluxDB v2')
|
||||
->description('When enabled, all new Speedtest results will also be sent to InfluxDB.')
|
||||
Section::make(__('settings/data_integration.influxdb_v2'))
|
||||
->description(__('settings/data_integration.influxdb_v2_description'))
|
||||
->schema([
|
||||
Toggle::make('influxdb_v2_enabled')
|
||||
->label('Enable')
|
||||
->label(__('settings/data_integration.influxdb_v2_enabled'))
|
||||
->reactive()
|
||||
->columnSpanFull(),
|
||||
Grid::make(['default' => 1, 'md' => 3])
|
||||
->hidden(fn (Get $get) => $get('influxdb_v2_enabled') !== true)
|
||||
->schema([
|
||||
TextInput::make('influxdb_v2_url')
|
||||
->label('URL')
|
||||
->placeholder('http://your-influxdb-instance')
|
||||
->label(__('settings/data_integration.influxdb_v2_url'))
|
||||
->placeholder(__('settings/data_integration.influxdb_v2_url_placeholder'))
|
||||
->maxLength(255)
|
||||
->required(fn (Get $get) => $get('influxdb_v2_enabled') === true)
|
||||
->columnSpan(['md' => 1]),
|
||||
TextInput::make('influxdb_v2_org')
|
||||
->label('Org')
|
||||
->label(__('settings/data_integration.influxdb_v2_org'))
|
||||
->maxLength(255)
|
||||
->required(fn (Get $get) => $get('influxdb_v2_enabled') === true)
|
||||
->columnSpan(['md' => 1]),
|
||||
TextInput::make('influxdb_v2_bucket')
|
||||
->placeholder('speedtest-tracker')
|
||||
->label('Bucket')
|
||||
->placeholder(__('settings/data_integration.influxdb_v2_bucket_placeholder'))
|
||||
->label(__('settings/data_integration.influxdb_v2_bucket'))
|
||||
->maxLength(255)
|
||||
->required(fn (Get $get) => $get('influxdb_v2_enabled') === true)
|
||||
->columnSpan(['md' => 2]),
|
||||
TextInput::make('influxdb_v2_token')
|
||||
->label('Token')
|
||||
->label(__('settings/data_integration.influxdb_v2_token'))
|
||||
->maxLength(255)
|
||||
->password()
|
||||
->required(fn (Get $get) => $get('influxdb_v2_enabled') === true)
|
||||
->columnSpan(['md' => 2]),
|
||||
Checkbox::make('influxdb_v2_verify_ssl')
|
||||
->label('Verify SSL')
|
||||
->label(__('settings/data_integration.influxdb_v2_verify_ssl'))
|
||||
->columnSpanFull(),
|
||||
// Button to send old data to InfluxDB
|
||||
Actions::make([
|
||||
Action::make('Export current results')
|
||||
->label('Export current results')
|
||||
->label(__('general.export_current_results'))
|
||||
->action(function () {
|
||||
Notification::make()
|
||||
->title('Starting bulk data write to Influxdb')
|
||||
->title(__('settings/data_integration.starting_bulk_data_write_to_influxdb'))
|
||||
->info()
|
||||
->send();
|
||||
|
||||
@@ -106,10 +112,10 @@ class DataIntegration extends SettingsPage
|
||||
// Button to test InfluxDB connection
|
||||
Actions::make([
|
||||
Action::make('Test connection')
|
||||
->label('Test connection')
|
||||
->label(__('settings/data_integration.test_connection'))
|
||||
->action(function () {
|
||||
Notification::make()
|
||||
->title('Sending test data to Influxdb')
|
||||
->title(__('settings/data_integration.sending_test_data_to_influxdb'))
|
||||
->info()
|
||||
->send();
|
||||
|
||||
|
||||
@@ -34,9 +34,15 @@ class Notification extends SettingsPage
|
||||
|
||||
protected static ?int $navigationSort = 3;
|
||||
|
||||
protected static ?string $title = 'Notifications';
|
||||
public function getTitle(): string
|
||||
{
|
||||
return __('settings/notifications.title');
|
||||
}
|
||||
|
||||
protected static ?string $navigationLabel = 'Notifications';
|
||||
public static function getNavigationLabel(): string
|
||||
{
|
||||
return __('settings/notifications.label');
|
||||
}
|
||||
|
||||
protected static string $settings = NotificationSettings::class;
|
||||
|
||||
@@ -64,11 +70,11 @@ class Notification extends SettingsPage
|
||||
'default' => 1,
|
||||
])
|
||||
->schema([
|
||||
Section::make('Database')
|
||||
->description('Notifications sent to this channel will show up under the 🔔 icon in the header.')
|
||||
Section::make(__('settings/notifications.database'))
|
||||
->description(__('settings/notifications.database_description'))
|
||||
->schema([
|
||||
Toggle::make('database_enabled')
|
||||
->label('Enable database notifications')
|
||||
->label(__('settings/notifications.enable_database_notifications'))
|
||||
->reactive()
|
||||
->columnSpanFull(),
|
||||
Grid::make([
|
||||
@@ -76,18 +82,18 @@ class Notification extends SettingsPage
|
||||
])
|
||||
->hidden(fn (Get $get) => $get('database_enabled') !== true)
|
||||
->schema([
|
||||
Fieldset::make('Triggers')
|
||||
Fieldset::make(__('settings.triggers'))
|
||||
->schema([
|
||||
Toggle::make('database_on_speedtest_run')
|
||||
->label('Notify on every speedtest run')
|
||||
->label(__('settings/notifications.database_on_speedtest_run'))
|
||||
->columnSpanFull(),
|
||||
Toggle::make('database_on_threshold_failure')
|
||||
->label('Notify on threshold failures')
|
||||
->label(__('settings/notifications.database_on_threshold_failure'))
|
||||
->columnSpanFull(),
|
||||
]),
|
||||
Actions::make([
|
||||
Action::make('test database')
|
||||
->label('Test database channel')
|
||||
->label(__('settings/notifications.test_database_channel'))
|
||||
->action(fn () => SendDatabaseTestNotification::run(user: Auth::user())),
|
||||
]),
|
||||
]),
|
||||
@@ -95,10 +101,10 @@ class Notification extends SettingsPage
|
||||
->compact()
|
||||
->columnSpan('full'),
|
||||
|
||||
Section::make('Mail')
|
||||
Section::make(__('settings/notifications.mail'))
|
||||
->schema([
|
||||
Toggle::make('mail_enabled')
|
||||
->label('Enable mail notifications')
|
||||
->label(__('settings/notifications.enable_mail_notifications'))
|
||||
->reactive()
|
||||
->columnSpanFull(),
|
||||
Grid::make([
|
||||
@@ -106,17 +112,17 @@ class Notification extends SettingsPage
|
||||
])
|
||||
->hidden(fn (Get $get) => $get('mail_enabled') !== true)
|
||||
->schema([
|
||||
Fieldset::make('Triggers')
|
||||
Fieldset::make(__('settings.triggers'))
|
||||
->schema([
|
||||
Toggle::make('mail_on_speedtest_run')
|
||||
->label('Notify on every speedtest run')
|
||||
->label(__('settings/notifications.mail_on_speedtest_run'))
|
||||
->columnSpanFull(),
|
||||
Toggle::make('mail_on_threshold_failure')
|
||||
->label('Notify on threshold failures')
|
||||
->label(__('settings/notifications.mail_on_threshold_failure'))
|
||||
->columnSpanFull(),
|
||||
]),
|
||||
Repeater::make('mail_recipients')
|
||||
->label('Recipients')
|
||||
->label(__('settings/notifications.recipients'))
|
||||
->schema([
|
||||
TextInput::make('email_address')
|
||||
->placeholder('your@email.com')
|
||||
@@ -126,7 +132,7 @@ class Notification extends SettingsPage
|
||||
->columnSpanFull(),
|
||||
Actions::make([
|
||||
Action::make('test mail')
|
||||
->label('Test mail channel')
|
||||
->label(__('settings/notifications.test_mail_channel'))
|
||||
->action(fn (Get $get) => SendMailTestNotification::run(recipients: $get('mail_recipients')))
|
||||
->hidden(fn (Get $get) => ! count($get('mail_recipients'))),
|
||||
]),
|
||||
@@ -135,10 +141,10 @@ class Notification extends SettingsPage
|
||||
->compact()
|
||||
->columnSpan('full'),
|
||||
|
||||
Section::make('Webhook')
|
||||
Section::make(__('settings/notifications.webhook'))
|
||||
->schema([
|
||||
Toggle::make('webhook_enabled')
|
||||
->label('Enable webhook notifications')
|
||||
->label(__('settings/notifications.enable_webhook_notifications'))
|
||||
->reactive()
|
||||
->columnSpanFull(),
|
||||
Grid::make([
|
||||
@@ -146,17 +152,17 @@ class Notification extends SettingsPage
|
||||
])
|
||||
->hidden(fn (Get $get) => $get('webhook_enabled') !== true)
|
||||
->schema([
|
||||
Fieldset::make('Triggers')
|
||||
Fieldset::make(__('settings.triggers'))
|
||||
->schema([
|
||||
Toggle::make('webhook_on_speedtest_run')
|
||||
->label('Notify on every speedtest run')
|
||||
->label(__('settings/notifications.webhook_on_speedtest_run'))
|
||||
->columnSpan(2),
|
||||
Toggle::make('webhook_on_threshold_failure')
|
||||
->label('Notify on threshold failures')
|
||||
->label(__('settings/notifications.webhook_on_threshold_failure'))
|
||||
->columnSpan(2),
|
||||
]),
|
||||
Repeater::make('webhook_urls')
|
||||
->label('Recipients')
|
||||
->label(__('settings/notifications.recipients'))
|
||||
->schema([
|
||||
TextInput::make('url')
|
||||
->placeholder('https://webhook.site/longstringofcharacters')
|
||||
@@ -167,7 +173,7 @@ class Notification extends SettingsPage
|
||||
->columnSpanFull(),
|
||||
Actions::make([
|
||||
Action::make('test webhook')
|
||||
->label('Test webhook channel')
|
||||
->label(__('settings/notifications.test_webhook_channel'))
|
||||
->action(fn (Get $get) => SendWebhookTestNotification::run(webhooks: $get('webhook_urls')))
|
||||
->hidden(fn (Get $get) => ! count($get('webhook_urls'))),
|
||||
]),
|
||||
|
||||
@@ -21,9 +21,15 @@ class Thresholds extends SettingsPage
|
||||
|
||||
protected static ?int $navigationSort = 4;
|
||||
|
||||
protected static ?string $title = 'Thresholds';
|
||||
public function getTitle(): string
|
||||
{
|
||||
return __('settings/thresholds.title');
|
||||
}
|
||||
|
||||
protected static ?string $navigationLabel = 'Thresholds';
|
||||
public static function getNavigationLabel(): string
|
||||
{
|
||||
return __('settings/thresholds.label');
|
||||
}
|
||||
|
||||
protected static string $settings = ThresholdSettings::class;
|
||||
|
||||
@@ -51,11 +57,11 @@ class Thresholds extends SettingsPage
|
||||
'default' => 1,
|
||||
])
|
||||
->schema([
|
||||
Section::make('Absolute')
|
||||
->description('Absolute thresholds do not take into account previous history and could be triggered on each test.')
|
||||
Section::make(__('settings/thresholds.absolute'))
|
||||
->description(__('settings/thresholds.absolute_description'))
|
||||
->schema([
|
||||
Toggle::make('absolute_enabled')
|
||||
->label('Enable absolute thresholds')
|
||||
->label(__('settings/thresholds.absolute_enabled'))
|
||||
->reactive()
|
||||
->columnSpan(2),
|
||||
Grid::make([
|
||||
@@ -63,28 +69,28 @@ class Thresholds extends SettingsPage
|
||||
])
|
||||
->hidden(fn (Get $get) => $get('absolute_enabled') !== true)
|
||||
->schema([
|
||||
Fieldset::make('Metrics')
|
||||
Fieldset::make(__('settings/thresholds.metrics'))
|
||||
->schema([
|
||||
TextInput::make('absolute_download')
|
||||
->label('Download')
|
||||
->hint('Mbps')
|
||||
->helperText('Set to zero to disable this metric.')
|
||||
->label(__('general.download'))
|
||||
->hint(__('general.mbps'))
|
||||
->helperText(__('settings/thresholds.metrics_helper_text'))
|
||||
->default(0)
|
||||
->minValue(0)
|
||||
->numeric()
|
||||
->required(),
|
||||
TextInput::make('absolute_upload')
|
||||
->label('Upload')
|
||||
->hint('Mbps')
|
||||
->helperText('Set to zero to disable this metric.')
|
||||
->label(__('general.upload'))
|
||||
->hint(__('general.mbps'))
|
||||
->helperText(__('settings/thresholds.metrics_helper_text'))
|
||||
->default(0)
|
||||
->minValue(0)
|
||||
->numeric()
|
||||
->required(),
|
||||
TextInput::make('absolute_ping')
|
||||
->label('Ping')
|
||||
->hint('ms')
|
||||
->helperText('Set to zero to disable this metric.')
|
||||
->label(__('general.ping'))
|
||||
->hint(__('general.ms'))
|
||||
->helperText(__('settings/thresholds.metrics_helper_text'))
|
||||
->default(0)
|
||||
->minValue(0)
|
||||
->numeric()
|
||||
|
||||
@@ -55,7 +55,7 @@ class ListOoklaServers extends Page implements HasForms
|
||||
]);
|
||||
} catch (\Exception $e) {
|
||||
Notification::make()
|
||||
->title('Error fetching servers')
|
||||
->title(__('errors.error_fetching_servers'))
|
||||
->body($e->getMessage())
|
||||
->danger()
|
||||
->send();
|
||||
@@ -92,7 +92,7 @@ class ListOoklaServers extends Page implements HasForms
|
||||
$this->fetchServers();
|
||||
|
||||
Notification::make()
|
||||
->title('Servers refreshed successfully')
|
||||
->title(__('errors.servers_refreshed_successfully'))
|
||||
->success()
|
||||
->send();
|
||||
}),
|
||||
@@ -106,7 +106,7 @@ class ListOoklaServers extends Page implements HasForms
|
||||
$this->js('navigator.clipboard.writeText('.json_encode($this->servers).')');
|
||||
|
||||
Notification::make()
|
||||
->title('Copied to clipboard')
|
||||
->title(__('errors.copied_to_clipboard'))
|
||||
->success()
|
||||
->send();
|
||||
}),
|
||||
|
||||
@@ -19,9 +19,15 @@ class ApiTokenResource extends Resource
|
||||
|
||||
protected static string|\UnitEnum|null $navigationGroup = 'Settings';
|
||||
|
||||
protected static ?string $label = 'API Token';
|
||||
public static function getLabel(): ?string
|
||||
{
|
||||
return __('api_tokens.api_token');
|
||||
}
|
||||
|
||||
protected static ?string $pluralLabel = 'API Tokens';
|
||||
public static function getPluralLabel(): ?string
|
||||
{
|
||||
return __('api_tokens.api_tokens');
|
||||
}
|
||||
|
||||
public static function canAccess(): bool
|
||||
{
|
||||
|
||||
@@ -18,7 +18,7 @@ class ListApiTokens extends ListRecords
|
||||
{
|
||||
return [
|
||||
Action::make('createToken')
|
||||
->label('Create API Token')
|
||||
->label(__('api_tokens.create_api_token'))
|
||||
->schema(ApiTokenForm::schema())
|
||||
->action(function (array $data): void {
|
||||
$token = Auth::user()->createToken(
|
||||
@@ -28,8 +28,8 @@ class ListApiTokens extends ListRecords
|
||||
);
|
||||
|
||||
Notification::make()
|
||||
->title('Token Created')
|
||||
->body('Your token: `'.explode('|', $token->plainTextToken)[1].'`')
|
||||
->title(__('general.token_created'))
|
||||
->body(__('api_tokens.your_token').': `'.explode('|', $token->plainTextToken)[1].'`')
|
||||
->success()
|
||||
->persistent()
|
||||
->send();
|
||||
|
||||
@@ -15,29 +15,29 @@ class ApiTokenForm
|
||||
Grid::make()
|
||||
->schema([
|
||||
TextInput::make('name')
|
||||
->label('Name')
|
||||
->label(__('general.name'))
|
||||
->unique(ignoreRecord: true)
|
||||
->maxLength(100)
|
||||
->required(),
|
||||
CheckboxList::make('abilities')
|
||||
->label('Abilities')
|
||||
->label(__('api_tokens.abilities'))
|
||||
->options([
|
||||
'results:read' => 'Read results',
|
||||
'speedtests:run' => 'Run speedtest',
|
||||
'ookla:list-servers' => 'List servers',
|
||||
'results:read' => __('api_tokens.read_results'),
|
||||
'speedtests:run' => __('general.run_speedtest'),
|
||||
'ookla:list-servers' => __('general.list_servers'),
|
||||
])
|
||||
->required()
|
||||
->bulkToggleable()
|
||||
->descriptions([
|
||||
'results:read' => 'Allow this token to read results.',
|
||||
'speedtests:run' => 'Allow this token to run speedtests.',
|
||||
'ookla:list-servers' => 'Allow this token to list servers.',
|
||||
'results:read' => __('api_tokens.read_results_description'),
|
||||
'speedtests:run' => __('api_tokens.run_speedtest_description'),
|
||||
'ookla:list-servers' => __('api_tokens.list_servers_description'),
|
||||
]),
|
||||
DateTimePicker::make('expires_at')
|
||||
->label('Expires at')
|
||||
->label(__('api_tokens.expires_at'))
|
||||
->nullable()
|
||||
->native(false)
|
||||
->helperText('Leave empty for no expiration'),
|
||||
->helperText(__('api_tokens.expires_at_helper_text')),
|
||||
])
|
||||
->columns([
|
||||
'lg' => 1,
|
||||
|
||||
@@ -21,21 +21,28 @@ class ApiTokenTable
|
||||
return $table
|
||||
->query(PersonalAccessToken::query()->where('tokenable_id', Auth::id()))
|
||||
->columns([
|
||||
TextColumn::make('name')->searchable(),
|
||||
TextColumn::make('abilities')->badge(),
|
||||
TextColumn::make('name')
|
||||
->label(__('general.name'))
|
||||
->searchable(),
|
||||
TextColumn::make('abilities')
|
||||
->label(__('api_tokens.abilities'))
|
||||
->badge(),
|
||||
TextColumn::make('created_at')
|
||||
->label(__('general.created_at'))
|
||||
->dateTime(config('app.datetime_format'))
|
||||
->timezone(config('app.display_timezone'))
|
||||
->toggleable(isToggledHiddenByDefault: false)
|
||||
->sortable()
|
||||
->alignEnd(),
|
||||
TextColumn::make('last_used_at')
|
||||
->label(__('api_tokens.last_used_at'))
|
||||
->dateTime(config('app.datetime_format'))
|
||||
->timezone(config('app.display_timezone'))
|
||||
->toggleable(isToggledHiddenByDefault: true)
|
||||
->sortable()
|
||||
->alignEnd(),
|
||||
TextColumn::make('expires_at')
|
||||
->label(__('api_tokens.expires_at'))
|
||||
->dateTime(config('app.datetime_format'))
|
||||
->timezone(config('app.display_timezone'))
|
||||
->toggleable(isToggledHiddenByDefault: false)
|
||||
@@ -44,10 +51,10 @@ class ApiTokenTable
|
||||
])
|
||||
->filters([
|
||||
TernaryFilter::make('expired')
|
||||
->label('Token Status')
|
||||
->placeholder('All tokens')
|
||||
->falseLabel('Active tokens')
|
||||
->trueLabel('Expired tokens')
|
||||
->label(__('api_tokens.token_status'))
|
||||
->placeholder(__('api_tokens.all_tokens'))
|
||||
->falseLabel(__('api_tokens.active_tokens'))
|
||||
->trueLabel(__('api_tokens.expired_tokens'))
|
||||
->native(false)
|
||||
->queries(
|
||||
true: fn (Builder $query) => $query
|
||||
@@ -62,12 +69,12 @@ class ApiTokenTable
|
||||
blank: fn (Builder $query) => $query,
|
||||
),
|
||||
SelectFilter::make('abilities')
|
||||
->label('Abilities')
|
||||
->label(__('api_tokens.abilities'))
|
||||
->multiple()
|
||||
->options([
|
||||
'results:read' => 'Read results',
|
||||
'speedtests:run' => 'Run speedtest',
|
||||
'ookla:list-servers' => 'List servers',
|
||||
'results:read' => __('api_tokens.read_results'),
|
||||
'speedtests:run' => __('general.run_speedtest'),
|
||||
'ookla:list-servers' => __('general.list_servers'),
|
||||
])
|
||||
->query(function (Builder $query, array $data): Builder {
|
||||
foreach ($data['values'] ?? [] as $value) {
|
||||
|
||||
@@ -16,6 +16,21 @@ class ResultResource extends Resource
|
||||
|
||||
protected static string|\BackedEnum|null $navigationIcon = 'heroicon-o-table-cells';
|
||||
|
||||
public static function getNavigationLabel(): string
|
||||
{
|
||||
return __('results.title');
|
||||
}
|
||||
|
||||
public static function getModelLabel(): string
|
||||
{
|
||||
return __('results.title');
|
||||
}
|
||||
|
||||
public static function getPluralModelLabel(): string
|
||||
{
|
||||
return __('results.title');
|
||||
}
|
||||
|
||||
public static function form(Schema $schema): Schema
|
||||
{
|
||||
return $schema->components(ResultForm::schema());
|
||||
|
||||
@@ -24,67 +24,67 @@ class ResultForm
|
||||
// Left column: stacked sections
|
||||
Grid::make(['default' => 1])
|
||||
->schema([
|
||||
Section::make('Result Overview')->schema([
|
||||
Section::make(__('results.result_overview'))->schema([
|
||||
TextInput::make('id')
|
||||
->label('ID'),
|
||||
->label(__('general.id')),
|
||||
TextInput::make('created_at')
|
||||
->label('Created')
|
||||
->label(__('general.created_at'))
|
||||
->afterStateHydrated(function (TextInput $component, $state) {
|
||||
$component->state(Carbon::parse($state)
|
||||
->timezone(config('app.display_timezone'))
|
||||
->format(config('app.datetime_format')));
|
||||
}),
|
||||
TextInput::make('download')
|
||||
->label('Download')
|
||||
->label(__('general.download'))
|
||||
->afterStateHydrated(fn ($component, Result $record) => $component->state(! blank($record->download) ? Number::toBitRate(bits: $record->download_bits, precision: 2) : '')),
|
||||
TextInput::make('upload')
|
||||
->label('Upload')
|
||||
->label(__('general.upload'))
|
||||
->afterStateHydrated(fn ($component, Result $record) => $component->state(! blank($record->upload) ? Number::toBitRate(bits: $record->upload_bits, precision: 2) : '')),
|
||||
TextInput::make('ping')
|
||||
->label('Ping')
|
||||
->label(__('general.ping'))
|
||||
->formatStateUsing(fn ($state) => number_format((float) $state, 0, '.', '').' ms'),
|
||||
TextInput::make('data.packetLoss')
|
||||
->label('Packet Loss')
|
||||
->label(__('results.packet_loss'))
|
||||
->formatStateUsing(fn ($state) => number_format((float) $state, 2, '.', '').' %'),
|
||||
])->columns(2)->columnSpan('full'),
|
||||
|
||||
Section::make('Download Latency')
|
||||
Section::make(__('general.download_latency'))
|
||||
->schema([
|
||||
TextInput::make('data.download.latency.jitter')->label('Jitter')
|
||||
TextInput::make('data.download.latency.jitter')->label(__('general.jitter'))
|
||||
->formatStateUsing(fn ($state) => number_format((float) $state, 0, '.', '').' ms'),
|
||||
TextInput::make('data.download.latency.high')->label('High')
|
||||
TextInput::make('data.download.latency.high')->label(__('general.high'))
|
||||
->formatStateUsing(fn ($state) => number_format((float) $state, 0, '.', '').' ms'),
|
||||
TextInput::make('data.download.latency.low')->label('Low')
|
||||
TextInput::make('data.download.latency.low')->label(__('general.low'))
|
||||
->formatStateUsing(fn ($state) => number_format((float) $state, 0, '.', '').' ms'),
|
||||
TextInput::make('data.download.latency.iqm')->label('IQM')
|
||||
TextInput::make('data.download.latency.iqm')->label(__('results.iqm'))
|
||||
->formatStateUsing(fn ($state) => number_format((float) $state, 0, '.', '').' ms'),
|
||||
])
|
||||
->columns(2)
|
||||
->collapsed()
|
||||
->columnSpan('full'),
|
||||
|
||||
Section::make('Upload Latency')
|
||||
Section::make(__('general.upload_latency'))
|
||||
->schema([
|
||||
TextInput::make('data.upload.latency.jitter')->label('Jitter')
|
||||
TextInput::make('data.upload.latency.jitter')->label(__('general.jitter'))
|
||||
->formatStateUsing(fn ($state) => number_format((float) $state, 0, '.', '').' ms'),
|
||||
TextInput::make('data.upload.latency.high')->label('High')
|
||||
TextInput::make('data.upload.latency.high')->label(__('general.high'))
|
||||
->formatStateUsing(fn ($state) => number_format((float) $state, 0, '.', '').' ms'),
|
||||
TextInput::make('data.upload.latency.low')->label('Low')
|
||||
TextInput::make('data.upload.latency.low')->label(__('general.low'))
|
||||
->formatStateUsing(fn ($state) => number_format((float) $state, 0, '.', '').' ms'),
|
||||
TextInput::make('data.upload.latency.iqm')->label('IQM')
|
||||
TextInput::make('data.upload.latency.iqm')->label(__('results.iqm'))
|
||||
->formatStateUsing(fn ($state) => number_format((float) $state, 0, '.', '').' ms'),
|
||||
])
|
||||
->columns(2)
|
||||
->collapsed()
|
||||
->columnSpan('full'),
|
||||
|
||||
Section::make('Ping Details')
|
||||
Section::make(__('results.ping_details'))
|
||||
->schema([
|
||||
TextInput::make('data.ping.jitter')->label('Jitter')
|
||||
TextInput::make('data.ping.jitter')->label(__('general.jitter'))
|
||||
->formatStateUsing(fn ($state) => number_format((float) $state, 0, '.', '').' ms'),
|
||||
TextInput::make('data.ping.low')->label('Low')
|
||||
TextInput::make('data.ping.low')->label(__('general.low'))
|
||||
->formatStateUsing(fn ($state) => number_format((float) $state, 0, '.', '').' ms'),
|
||||
TextInput::make('data.ping.high')->label('High')
|
||||
TextInput::make('data.ping.high')->label(__('general.high'))
|
||||
->formatStateUsing(fn ($state) => number_format((float) $state, 0, '.', '').' ms'),
|
||||
])
|
||||
->columns(2)
|
||||
@@ -92,33 +92,39 @@ class ResultForm
|
||||
->columnSpan('full'),
|
||||
|
||||
Textarea::make('data.message')
|
||||
->label('Message')
|
||||
->label(__('general.message'))
|
||||
->hint(new HtmlString('🔗<a href="https://docs.speedtest-tracker.dev/help/error-messages" target="_blank" rel="nofollow">Error Messages</a>'))
|
||||
->columnSpanFull(),
|
||||
])
|
||||
->columnSpan(['md' => 3]),
|
||||
|
||||
// Right column: Server & Metadata
|
||||
Section::make('Server & Metadata')->schema([
|
||||
Section::make(__('results.server_&_metadata'))->schema([
|
||||
TextEntry::make('service')
|
||||
->label(__('results.service'))
|
||||
->state(fn (Result $result): string => $result->service->getLabel()),
|
||||
TextEntry::make('server_name')
|
||||
->label(__('results.server_name'))
|
||||
->state(fn (Result $result): ?string => $result->server_name),
|
||||
TextEntry::make('server_id')
|
||||
->label('Server ID')
|
||||
->label(__('results.server_id'))
|
||||
->state(fn (Result $result): ?string => $result->server_id),
|
||||
TextEntry::make('isp')
|
||||
->label('ISP')
|
||||
->label(__('results.isp'))
|
||||
->state(fn (Result $result): ?string => $result->isp),
|
||||
TextEntry::make('server_location')
|
||||
->label('Server Location')
|
||||
->label(__('results.server_location'))
|
||||
->state(fn (Result $result): ?string => $result->server_location),
|
||||
TextEntry::make('server_host')
|
||||
->label(__('results.server_host'))
|
||||
->state(fn (Result $result): ?string => $result->server_host),
|
||||
TextEntry::make('comment')
|
||||
->label(__('general.comment'))
|
||||
->state(fn (Result $result): ?string => $result->comments),
|
||||
Checkbox::make('scheduled'),
|
||||
Checkbox::make('healthy'),
|
||||
Checkbox::make('scheduled')
|
||||
->label(__('results.scheduled')),
|
||||
Checkbox::make('healthy')
|
||||
->label(__('general.healthy')),
|
||||
])->columns(1)->columnSpan(['md' => 2]),
|
||||
]),
|
||||
];
|
||||
|
||||
@@ -32,57 +32,62 @@ class ResultTable
|
||||
return $table
|
||||
->columns([
|
||||
TextColumn::make('id')
|
||||
->label('ID')
|
||||
->label(__('general.id'))
|
||||
->toggleable(isToggledHiddenByDefault: false)
|
||||
->sortable(),
|
||||
TextColumn::make('data.interface.externalIp')
|
||||
->label('IP address')
|
||||
->label(__('results.ip_address'))
|
||||
->toggleable(isToggledHiddenByDefault: true)
|
||||
->sortable(query: function (Builder $query, string $direction): Builder {
|
||||
return $query->orderBy('data->interface->externalIp', $direction);
|
||||
}),
|
||||
TextColumn::make('service')
|
||||
->label(__('results.service'))
|
||||
->toggleable(isToggledHiddenByDefault: true)
|
||||
->sortable(),
|
||||
TextColumn::make('data.server.id')
|
||||
->label('Server ID')
|
||||
->label(__('results.server_id'))
|
||||
->toggleable(isToggledHiddenByDefault: false)
|
||||
->sortable(query: function (Builder $query, string $direction): Builder {
|
||||
return $query->orderBy('data->server->id', $direction);
|
||||
}),
|
||||
TextColumn::make('data.isp')
|
||||
->label('ISP')
|
||||
->label(__('results.isp'))
|
||||
->toggleable(isToggledHiddenByDefault: true)
|
||||
->sortable(query: function (Builder $query, string $direction): Builder {
|
||||
return $query->orderBy('data->isp', $direction);
|
||||
}),
|
||||
TextColumn::make('data.server.location')
|
||||
->label('Server Location')
|
||||
->label(__('results.server_location'))
|
||||
->toggleable(isToggledHiddenByDefault: true)
|
||||
->sortable(query: function (Builder $query, string $direction): Builder {
|
||||
return $query->orderBy('data->server->location', $direction);
|
||||
}),
|
||||
TextColumn::make('data.server.name')
|
||||
->label(__('results.server_name'))
|
||||
->toggleable(isToggledHiddenByDefault: false)
|
||||
->sortable(query: function (Builder $query, string $direction): Builder {
|
||||
return $query->orderBy('data->server->name', $direction);
|
||||
}),
|
||||
TextColumn::make('download')
|
||||
->label(__('results.download'))
|
||||
->getStateUsing(fn (Result $record): ?string => ! blank($record->download) ? Number::toBitRate(bits: $record->download_bits, precision: 2) : null)
|
||||
->toggleable(isToggledHiddenByDefault: false)
|
||||
->sortable(),
|
||||
TextColumn::make('upload')
|
||||
->label(__('results.upload'))
|
||||
->getStateUsing(fn (Result $record): ?string => ! blank($record->upload) ? Number::toBitRate(bits: $record->upload_bits, precision: 2) : null)
|
||||
->toggleable(isToggledHiddenByDefault: false)
|
||||
->sortable(),
|
||||
TextColumn::make('ping')
|
||||
->label(__('results.ping'))
|
||||
->toggleable(isToggledHiddenByDefault: false)
|
||||
->sortable()
|
||||
->formatStateUsing(function ($state) {
|
||||
return number_format((float) $state, 0, '.', '').' ms';
|
||||
}),
|
||||
TextColumn::make('data.download.latency.jitter')
|
||||
->label('Download jitter')
|
||||
->label(__('results.download_latency_jitter'))
|
||||
->toggleable(isToggledHiddenByDefault: true)
|
||||
->sortable(query: function (Builder $query, string $direction): Builder {
|
||||
return $query->orderBy('data->download->latency->jitter', $direction);
|
||||
@@ -91,7 +96,7 @@ class ResultTable
|
||||
return number_format((float) $state, 0, '.', '').' ms';
|
||||
}),
|
||||
TextColumn::make('data.download.latency.high')
|
||||
->label('Download latency high')
|
||||
->label(__('results.download_latency_high'))
|
||||
->toggleable(isToggledHiddenByDefault: true)
|
||||
->sortable(query: function (Builder $query, string $direction): Builder {
|
||||
return $query->orderBy('data->download->latency->high', $direction);
|
||||
@@ -100,7 +105,7 @@ class ResultTable
|
||||
return number_format((float) $state, 0, '.', '').' ms';
|
||||
}),
|
||||
TextColumn::make('data.download.latency.low')
|
||||
->label('Download latency low')
|
||||
->label(__('results.download_latency_low'))
|
||||
->toggleable(isToggledHiddenByDefault: true)
|
||||
->sortable(query: function (Builder $query, string $direction): Builder {
|
||||
return $query->orderBy('data->download->latency->low', $direction);
|
||||
@@ -109,7 +114,7 @@ class ResultTable
|
||||
return number_format((float) $state, 0, '.', '').' ms';
|
||||
}),
|
||||
TextColumn::make('data.download.latency.iqm')
|
||||
->label('Download latency iqm')
|
||||
->label(__('results.download_latency_iqm'))
|
||||
->toggleable(isToggledHiddenByDefault: true)
|
||||
->sortable(query: function (Builder $query, string $direction): Builder {
|
||||
return $query->orderBy('data->download->latency->iqm', $direction);
|
||||
@@ -118,7 +123,7 @@ class ResultTable
|
||||
return number_format((float) $state, 0, '.', '').' ms';
|
||||
}),
|
||||
TextColumn::make('data.upload.latency.jitter')
|
||||
->label('Upload jitter')
|
||||
->label(__('results.upload_latency_jitter'))
|
||||
->toggleable(isToggledHiddenByDefault: true)
|
||||
->sortable(query: function (Builder $query, string $direction): Builder {
|
||||
return $query->orderBy('data->upload->latency->jitter', $direction);
|
||||
@@ -127,7 +132,7 @@ class ResultTable
|
||||
return number_format((float) $state, 0, '.', '').' ms';
|
||||
}),
|
||||
TextColumn::make('data.upload.latency.high')
|
||||
->label('Upload latency high')
|
||||
->label(__('results.upload_latency_high'))
|
||||
->toggleable(isToggledHiddenByDefault: true)
|
||||
->sortable(query: function (Builder $query, string $direction): Builder {
|
||||
return $query->orderBy('data->upload->latency->high', $direction);
|
||||
@@ -136,7 +141,7 @@ class ResultTable
|
||||
return number_format((float) $state, 0, '.', '').' ms';
|
||||
}),
|
||||
TextColumn::make('data.upload.latency.low')
|
||||
->label('Upload latency low')
|
||||
->label(__('results.upload_latency_low'))
|
||||
->toggleable(isToggledHiddenByDefault: true)
|
||||
->sortable(query: function (Builder $query, string $direction): Builder {
|
||||
return $query->orderBy('data->upload->latency->low', $direction);
|
||||
@@ -145,7 +150,7 @@ class ResultTable
|
||||
return number_format((float) $state, 0, '.', '').' ms';
|
||||
}),
|
||||
TextColumn::make('data.upload.latency.iqm')
|
||||
->label('Upload latency iqm')
|
||||
->label(__('results.upload_latency_iqm'))
|
||||
->toggleable(isToggledHiddenByDefault: true)
|
||||
->sortable(query: function (Builder $query, string $direction): Builder {
|
||||
return $query->orderBy('data->upload->latency->iqm', $direction);
|
||||
@@ -154,38 +159,43 @@ class ResultTable
|
||||
return number_format((float) $state, 0, '.', '').' ms';
|
||||
}),
|
||||
TextColumn::make('data.packetLoss')
|
||||
->label('Packet Loss')
|
||||
->label(__('results.packet_loss'))
|
||||
->toggleable(isToggledHiddenByDefault: true)
|
||||
->sortable()
|
||||
->formatStateUsing(function ($state) {
|
||||
return number_format((float) $state, 2, '.', '').' %';
|
||||
}),
|
||||
TextColumn::make('status')
|
||||
->label(__('general.status'))
|
||||
->badge()
|
||||
->toggleable(isToggledHiddenByDefault: false)
|
||||
->sortable(),
|
||||
IconColumn::make('scheduled')
|
||||
->label(__('results.scheduled'))
|
||||
->boolean()
|
||||
->toggleable(isToggledHiddenByDefault: true)
|
||||
->alignment(Alignment::Center),
|
||||
IconColumn::make('healthy')
|
||||
->label(__('general.healthy'))
|
||||
->boolean()
|
||||
->toggleable(isToggledHiddenByDefault: true)
|
||||
->sortable()
|
||||
->alignment(Alignment::Center),
|
||||
TextColumn::make('data.message')
|
||||
->label('Error Message')
|
||||
->label(__('results.error_message'))
|
||||
->limit(15)
|
||||
->tooltip(fn ($state) => $state)
|
||||
->toggleable(isToggledHiddenByDefault: true)
|
||||
->sortable(),
|
||||
TextColumn::make('created_at')
|
||||
->label(__('general.created_at'))
|
||||
->dateTime(config('app.datetime_format'))
|
||||
->timezone(config('app.display_timezone'))
|
||||
->toggleable(isToggledHiddenByDefault: false)
|
||||
->sortable()
|
||||
->alignment(Alignment::End),
|
||||
TextColumn::make('updated_at')
|
||||
->label(__('general.updated_at'))
|
||||
->dateTime(config('app.datetime_format'))
|
||||
->timezone(config('app.display_timezone'))
|
||||
->toggleable(isToggledHiddenByDefault: true)
|
||||
@@ -196,11 +206,14 @@ class ResultTable
|
||||
->deferColumnManager(false)
|
||||
->filters([
|
||||
Filter::make('created_at')
|
||||
->label(__('general.created_at'))
|
||||
->schema([
|
||||
DatePicker::make('created_from')
|
||||
->label(__('results.created_from'))
|
||||
->closeOnDateSelection()
|
||||
->native(false),
|
||||
DatePicker::make('created_until')
|
||||
->label(__('results.created_until'))
|
||||
->closeOnDateSelection()
|
||||
->native(false),
|
||||
])
|
||||
@@ -216,7 +229,7 @@ class ResultTable
|
||||
);
|
||||
}),
|
||||
SelectFilter::make('ip_address')
|
||||
->label('IP address')
|
||||
->label(__('results.ip_address'))
|
||||
->multiple()
|
||||
->options(function (): array {
|
||||
return Result::query()
|
||||
@@ -233,7 +246,7 @@ class ResultTable
|
||||
})
|
||||
->attribute('data->interface->externalIp'),
|
||||
SelectFilter::make('server_name')
|
||||
->label('Server name')
|
||||
->label(__('results.server_name'))
|
||||
->multiple()
|
||||
->options(function (): array {
|
||||
return Result::query()
|
||||
@@ -250,23 +263,26 @@ class ResultTable
|
||||
})
|
||||
->attribute('data->server->name'),
|
||||
TernaryFilter::make('scheduled')
|
||||
->label(__('results.scheduled'))
|
||||
->nullable()
|
||||
->native(false)
|
||||
->trueLabel('Only scheduled speedtests')
|
||||
->falseLabel('Only manual speedtests')
|
||||
->trueLabel(__('results.only_scheduled_speedtests'))
|
||||
->falseLabel(__('results.only_manual_speedtests'))
|
||||
->queries(
|
||||
true: fn (Builder $query) => $query->where('scheduled', true),
|
||||
false: fn (Builder $query) => $query->where('scheduled', false),
|
||||
blank: fn (Builder $query) => $query,
|
||||
),
|
||||
SelectFilter::make('status')
|
||||
->label(__('general.status'))
|
||||
->multiple()
|
||||
->options(ResultStatus::class),
|
||||
TernaryFilter::make('healthy')
|
||||
->label(__('general.healthy'))
|
||||
->nullable()
|
||||
->native(false)
|
||||
->trueLabel('Only healthy speedtests')
|
||||
->falseLabel('Only unhealthy speedtests')
|
||||
->trueLabel(__('results.only_healthy_speedtests'))
|
||||
->falseLabel(__('results.only_unhealthy_speedtests'))
|
||||
->queries(
|
||||
true: fn (Builder $query) => $query->where('healthy', true),
|
||||
false: fn (Builder $query) => $query->where('healthy', false),
|
||||
@@ -278,12 +294,13 @@ class ResultTable
|
||||
ViewAction::make(),
|
||||
DeleteAction::make(),
|
||||
Action::make('view result')
|
||||
->label('View on Speedtest.net')
|
||||
->label(__('results.view_on_speedtest_net'))
|
||||
->icon('heroicon-o-link')
|
||||
->url(fn (Result $record): ?string => $record->result_url)
|
||||
->hidden(fn (Result $record): bool => $record->status !== ResultStatus::Completed)
|
||||
->openUrlInNewTab(),
|
||||
Action::make('updateComments')
|
||||
->label(__('results.update_comments'))
|
||||
->icon('heroicon-o-chat-bubble-bottom-center-text')
|
||||
->hidden(fn (): bool => ! (Auth::user()?->is_admin ?? false) && ! (Auth::user()?->is_user ?? false))
|
||||
->mountUsing(fn ($form, Result $record) => $form->fill([
|
||||
@@ -295,6 +312,7 @@ class ResultTable
|
||||
})
|
||||
->schema([
|
||||
Textarea::make('comments')
|
||||
->label(__('general.comments'))
|
||||
->rows(6)
|
||||
->maxLength(500),
|
||||
]),
|
||||
@@ -307,15 +325,16 @@ class ResultTable
|
||||
ExportAction::make()
|
||||
->exporter(ResultExporter::class)
|
||||
->columnMapping(false)
|
||||
->modalHeading('Export all Results')
|
||||
->modalDescription('This will export all columns for all results.')
|
||||
->modalHeading(__('results.export_all_results'))
|
||||
->modalDescription(__('results.export_all_results_description'))
|
||||
->fileName(fn (): string => 'results-'.now()->timestamp),
|
||||
ActionGroup::make([
|
||||
Action::make('truncate')
|
||||
->label(__('results.truncate_results'))
|
||||
->action(fn () => TruncateResults::dispatch(Auth::user()))
|
||||
->requiresConfirmation()
|
||||
->modalHeading('Truncate Results')
|
||||
->modalDescription('Are you sure you want to truncate all results data? This can\'t be undone.')
|
||||
->modalHeading(__('results.truncate_results'))
|
||||
->modalDescription(__('results.truncate_results_description'))
|
||||
->color('danger')
|
||||
->icon('heroicon-o-trash')
|
||||
->hidden(fn (): bool => ! Auth::user()->is_admin),
|
||||
|
||||
@@ -22,24 +22,27 @@ class UserForm
|
||||
])->columnSpan([
|
||||
'lg' => 2,
|
||||
])->schema([
|
||||
Section::make('Details')
|
||||
Section::make(__('general.details'))
|
||||
->columns([
|
||||
'default' => 1,
|
||||
'lg' => 2,
|
||||
])
|
||||
->schema([
|
||||
TextInput::make('name')
|
||||
->label(__('general.name'))
|
||||
->required()
|
||||
->maxLength(255)
|
||||
->columnSpanFull(),
|
||||
|
||||
TextInput::make('email')
|
||||
->label(__('general.email'))
|
||||
->email()
|
||||
->required()
|
||||
->maxLength(255)
|
||||
->columnSpanFull(),
|
||||
|
||||
TextInput::make('password')
|
||||
->label(__('general.password'))
|
||||
->confirmed()
|
||||
->password()
|
||||
->revealable()
|
||||
@@ -48,6 +51,7 @@ class UserForm
|
||||
->dehydrated(fn ($state) => filled($state)),
|
||||
|
||||
TextInput::make('password_confirmation')
|
||||
->label(__('general.password_confirmation'))
|
||||
->password()
|
||||
->revealable(),
|
||||
]),
|
||||
@@ -56,10 +60,10 @@ class UserForm
|
||||
Grid::make(1)
|
||||
->columnSpan(1)
|
||||
->schema([
|
||||
Section::make('Platform')
|
||||
Section::make(__('general.platform'))
|
||||
->schema([
|
||||
Select::make('role')
|
||||
->label('Role')
|
||||
->label(__('general.role'))
|
||||
->default(UserRole::User)
|
||||
->options(UserRole::class)
|
||||
->required()
|
||||
@@ -69,9 +73,11 @@ class UserForm
|
||||
Section::make()
|
||||
->schema([
|
||||
Placeholder::make('created_at')
|
||||
->label(__('general.created_at'))
|
||||
->content(fn (?User $record): string => $record ? $record->created_at->diffForHumans() : '-'),
|
||||
|
||||
Placeholder::make('updated_at')
|
||||
->label(__('general.updated_at'))
|
||||
->content(fn (?User $record): string => $record ? $record->updated_at->diffForHumans() : '-'),
|
||||
]),
|
||||
]),
|
||||
|
||||
@@ -17,25 +17,30 @@ class UserTable
|
||||
return $table
|
||||
->columns([
|
||||
TextColumn::make('id')
|
||||
->label('ID')
|
||||
->label(__('general.id'))
|
||||
->sortable()
|
||||
->toggleable(isToggledHiddenByDefault: false),
|
||||
TextColumn::make('name')
|
||||
->label(__('general.name'))
|
||||
->sortable()
|
||||
->toggleable(isToggledHiddenByDefault: false),
|
||||
TextColumn::make('email')
|
||||
->label(__('general.email'))
|
||||
->searchable()
|
||||
->toggleable(isToggledHiddenByDefault: false),
|
||||
TextColumn::make('role')
|
||||
->label(__('general.role'))
|
||||
->badge()
|
||||
->toggleable(isToggledHiddenByDefault: false),
|
||||
TextColumn::make('created_at')
|
||||
->label(__('general.created_at'))
|
||||
->alignEnd()
|
||||
->dateTime(config('app.datetime_format'))
|
||||
->timezone(config('app.display_timezone'))
|
||||
->sortable()
|
||||
->toggleable(isToggledHiddenByDefault: false),
|
||||
TextColumn::make('updated_at')
|
||||
->label(__('general.updated_at'))
|
||||
->alignEnd()
|
||||
->dateTime(config('app.datetime_format'))
|
||||
->timezone(config('app.display_timezone'))
|
||||
@@ -44,6 +49,7 @@ class UserTable
|
||||
])
|
||||
->filters([
|
||||
SelectFilter::make('role')
|
||||
->label(__('general.role'))
|
||||
->native(false)
|
||||
->options(UserRole::class),
|
||||
])
|
||||
|
||||
@@ -20,6 +20,16 @@ class UserResource extends Resource
|
||||
|
||||
protected static ?int $navigationSort = 4;
|
||||
|
||||
public static function getLabel(): ?string
|
||||
{
|
||||
return __('general.user');
|
||||
}
|
||||
|
||||
public static function getPluralLabel(): ?string
|
||||
{
|
||||
return __('general.users');
|
||||
}
|
||||
|
||||
public static function form(Schema $schema): Schema
|
||||
{
|
||||
return $schema->components(UserForm::schema());
|
||||
|
||||
@@ -13,7 +13,12 @@ class RecentDownloadChartWidget extends ChartWidget
|
||||
{
|
||||
use HasChartFilters;
|
||||
|
||||
protected ?string $heading = 'Download (Mbps)';
|
||||
protected ?string $heading = null;
|
||||
|
||||
public function getHeading(): ?string
|
||||
{
|
||||
return __('general.download_mbps');
|
||||
}
|
||||
|
||||
protected int|string|array $columnSpan = 'full';
|
||||
|
||||
@@ -48,7 +53,7 @@ class RecentDownloadChartWidget extends ChartWidget
|
||||
return [
|
||||
'datasets' => [
|
||||
[
|
||||
'label' => 'Download',
|
||||
'label' => __('general.download'),
|
||||
'data' => $results->map(fn ($item) => ! blank($item->download) ? Number::bitsToMagnitude(bits: $item->download_bits, precision: 2, magnitude: 'mbit') : null),
|
||||
'borderColor' => 'rgba(14, 165, 233)',
|
||||
'backgroundColor' => 'rgba(14, 165, 233, 0.1)',
|
||||
@@ -59,7 +64,7 @@ class RecentDownloadChartWidget extends ChartWidget
|
||||
'pointRadius' => count($results) <= 24 ? 3 : 0,
|
||||
],
|
||||
[
|
||||
'label' => 'Average',
|
||||
'label' => __('general.average'),
|
||||
'data' => array_fill(0, count($results), Average::averageDownload($results)),
|
||||
'borderColor' => 'rgb(243, 7, 6, 1)',
|
||||
'pointBackgroundColor' => 'rgb(243, 7, 6, 1)',
|
||||
|
||||
@@ -11,7 +11,12 @@ class RecentDownloadLatencyChartWidget extends ChartWidget
|
||||
{
|
||||
use HasChartFilters;
|
||||
|
||||
protected ?string $heading = 'Download Latency';
|
||||
protected ?string $heading = null;
|
||||
|
||||
public function getHeading(): ?string
|
||||
{
|
||||
return __('general.download_latency');
|
||||
}
|
||||
|
||||
protected int|string|array $columnSpan = 'full';
|
||||
|
||||
@@ -46,7 +51,7 @@ class RecentDownloadLatencyChartWidget extends ChartWidget
|
||||
return [
|
||||
'datasets' => [
|
||||
[
|
||||
'label' => 'Average (ms)',
|
||||
'label' => __('general.average_ms'),
|
||||
'data' => $results->map(fn ($item) => $item->download_latency_iqm),
|
||||
'borderColor' => 'rgba(16, 185, 129)',
|
||||
'backgroundColor' => 'rgba(16, 185, 129, 0.1)',
|
||||
@@ -57,7 +62,7 @@ class RecentDownloadLatencyChartWidget extends ChartWidget
|
||||
'pointRadius' => count($results) <= 24 ? 3 : 0,
|
||||
],
|
||||
[
|
||||
'label' => 'High (ms)',
|
||||
'label' => __('general.high_ms'),
|
||||
'data' => $results->map(fn ($item) => $item->download_latency_high),
|
||||
'borderColor' => 'rgba(14, 165, 233)',
|
||||
'backgroundColor' => 'rgba(14, 165, 233, 0.1)',
|
||||
@@ -68,7 +73,7 @@ class RecentDownloadLatencyChartWidget extends ChartWidget
|
||||
'pointRadius' => count($results) <= 24 ? 3 : 0,
|
||||
],
|
||||
[
|
||||
'label' => 'Low (ms)',
|
||||
'label' => __('general.low_ms'),
|
||||
'data' => $results->map(fn ($item) => $item->download_latency_low),
|
||||
'borderColor' => 'rgba(139, 92, 246)',
|
||||
'backgroundColor' => 'rgba(139, 92, 246, 0.1)',
|
||||
|
||||
@@ -11,7 +11,12 @@ class RecentJitterChartWidget extends ChartWidget
|
||||
{
|
||||
use HasChartFilters;
|
||||
|
||||
protected ?string $heading = 'Jitter';
|
||||
protected ?string $heading = null;
|
||||
|
||||
public function getHeading(): ?string
|
||||
{
|
||||
return __('general.jitter');
|
||||
}
|
||||
|
||||
protected int|string|array $columnSpan = 'full';
|
||||
|
||||
@@ -46,7 +51,7 @@ class RecentJitterChartWidget extends ChartWidget
|
||||
return [
|
||||
'datasets' => [
|
||||
[
|
||||
'label' => 'Download (ms)',
|
||||
'label' => __('general.download_ms'),
|
||||
'data' => $results->map(fn ($item) => $item->download_jitter),
|
||||
'borderColor' => 'rgba(14, 165, 233)',
|
||||
'backgroundColor' => 'rgba(14, 165, 233, 0.1)',
|
||||
@@ -57,7 +62,7 @@ class RecentJitterChartWidget extends ChartWidget
|
||||
'pointRadius' => count($results) <= 24 ? 3 : 0,
|
||||
],
|
||||
[
|
||||
'label' => 'Upload (ms)',
|
||||
'label' => __('general.upload_ms'),
|
||||
'data' => $results->map(fn ($item) => $item->upload_jitter),
|
||||
'borderColor' => 'rgba(139, 92, 246)',
|
||||
'backgroundColor' => 'rgba(139, 92, 246, 0.1)',
|
||||
@@ -68,7 +73,7 @@ class RecentJitterChartWidget extends ChartWidget
|
||||
'pointRadius' => count($results) <= 24 ? 3 : 0,
|
||||
],
|
||||
[
|
||||
'label' => 'Ping (ms)',
|
||||
'label' => __('general.ping_ms_label'),
|
||||
'data' => $results->map(fn ($item) => $item->ping_jitter),
|
||||
'borderColor' => 'rgba(16, 185, 129)',
|
||||
'backgroundColor' => 'rgba(16, 185, 129, 0.1)',
|
||||
|
||||
@@ -12,7 +12,12 @@ class RecentPingChartWidget extends ChartWidget
|
||||
{
|
||||
use HasChartFilters;
|
||||
|
||||
protected ?string $heading = 'Ping (ms)';
|
||||
protected ?string $heading = null;
|
||||
|
||||
public function getHeading(): ?string
|
||||
{
|
||||
return __('general.ping_ms');
|
||||
}
|
||||
|
||||
protected int|string|array $columnSpan = 'full';
|
||||
|
||||
@@ -47,7 +52,7 @@ class RecentPingChartWidget extends ChartWidget
|
||||
return [
|
||||
'datasets' => [
|
||||
[
|
||||
'label' => 'Ping',
|
||||
'label' => __('general.ping'),
|
||||
'data' => $results->map(fn ($item) => $item->ping),
|
||||
'borderColor' => 'rgba(16, 185, 129)',
|
||||
'backgroundColor' => 'rgba(16, 185, 129, 0.1)',
|
||||
@@ -58,7 +63,7 @@ class RecentPingChartWidget extends ChartWidget
|
||||
'pointRadius' => count($results) <= 24 ? 3 : 0,
|
||||
],
|
||||
[
|
||||
'label' => 'Average',
|
||||
'label' => __('general.average'),
|
||||
'data' => array_fill(0, count($results), Average::averagePing($results)),
|
||||
'borderColor' => 'rgb(243, 7, 6, 1)',
|
||||
'pointBackgroundColor' => 'rgb(243, 7, 6, 1)',
|
||||
|
||||
@@ -13,7 +13,12 @@ class RecentUploadChartWidget extends ChartWidget
|
||||
{
|
||||
use HasChartFilters;
|
||||
|
||||
protected ?string $heading = 'Upload (Mbps)';
|
||||
protected ?string $heading = null;
|
||||
|
||||
public function getHeading(): ?string
|
||||
{
|
||||
return __('general.upload_mbps');
|
||||
}
|
||||
|
||||
protected int|string|array $columnSpan = 'full';
|
||||
|
||||
@@ -48,7 +53,7 @@ class RecentUploadChartWidget extends ChartWidget
|
||||
return [
|
||||
'datasets' => [
|
||||
[
|
||||
'label' => 'Upload',
|
||||
'label' => __('general.upload'),
|
||||
'data' => $results->map(fn ($item) => ! blank($item->upload) ? Number::bitsToMagnitude(bits: $item->upload_bits, precision: 2, magnitude: 'mbit') : null),
|
||||
'borderColor' => 'rgba(139, 92, 246)',
|
||||
'backgroundColor' => 'rgba(139, 92, 246, 0.1)',
|
||||
@@ -59,7 +64,7 @@ class RecentUploadChartWidget extends ChartWidget
|
||||
'pointRadius' => count($results) <= 24 ? 3 : 0,
|
||||
],
|
||||
[
|
||||
'label' => 'Average',
|
||||
'label' => __('general.average'),
|
||||
'data' => array_fill(0, count($results), Average::averageUpload($results)),
|
||||
'borderColor' => 'rgb(243, 7, 6, 1)',
|
||||
'pointBackgroundColor' => 'rgb(243, 7, 6, 1)',
|
||||
|
||||
@@ -11,7 +11,12 @@ class RecentUploadLatencyChartWidget extends ChartWidget
|
||||
{
|
||||
use HasChartFilters;
|
||||
|
||||
protected ?string $heading = 'Upload Latency';
|
||||
protected ?string $heading = null;
|
||||
|
||||
public function getHeading(): ?string
|
||||
{
|
||||
return __('general.upload_latency');
|
||||
}
|
||||
|
||||
protected int|string|array $columnSpan = 'full';
|
||||
|
||||
@@ -46,7 +51,7 @@ class RecentUploadLatencyChartWidget extends ChartWidget
|
||||
return [
|
||||
'datasets' => [
|
||||
[
|
||||
'label' => 'Average (ms)',
|
||||
'label' => __('general.average_ms'),
|
||||
'data' => $results->map(fn ($item) => $item->upload_latency_iqm),
|
||||
'borderColor' => 'rgba(16, 185, 129)',
|
||||
'backgroundColor' => 'rgba(16, 185, 129, 0.1)',
|
||||
@@ -57,7 +62,7 @@ class RecentUploadLatencyChartWidget extends ChartWidget
|
||||
'pointRadius' => count($results) <= 24 ? 3 : 0,
|
||||
],
|
||||
[
|
||||
'label' => 'High (ms)',
|
||||
'label' => __('general.high_ms'),
|
||||
'data' => $results->map(fn ($item) => $item->upload_latency_high),
|
||||
'borderColor' => 'rgba(14, 165, 233)',
|
||||
'backgroundColor' => 'rgba(14, 165, 233, 0.1)',
|
||||
@@ -68,7 +73,7 @@ class RecentUploadLatencyChartWidget extends ChartWidget
|
||||
'pointRadius' => count($results) <= 24 ? 3 : 0,
|
||||
],
|
||||
[
|
||||
'label' => 'Low (ms)',
|
||||
'label' => __('general.low_ms'),
|
||||
'data' => $results->map(fn ($item) => $item->upload_latency_low),
|
||||
'borderColor' => 'rgba(139, 92, 246)',
|
||||
'backgroundColor' => 'rgba(139, 92, 246, 0.1)',
|
||||
|
||||
@@ -24,11 +24,11 @@ class StatsOverviewWidget extends BaseWidget
|
||||
|
||||
if (blank($this->result)) {
|
||||
return [
|
||||
Stat::make('Latest download', '-')
|
||||
Stat::make(__('dashboard.latest_download'), '-')
|
||||
->icon('heroicon-o-arrow-down-tray'),
|
||||
Stat::make('Latest upload', '-')
|
||||
Stat::make(__('dashboard.latest_upload'), '-')
|
||||
->icon('heroicon-o-arrow-up-tray'),
|
||||
Stat::make('Latest ping', '-')
|
||||
Stat::make(__('dashboard.latest_ping'), '-')
|
||||
->icon('heroicon-o-clock'),
|
||||
];
|
||||
}
|
||||
@@ -42,11 +42,11 @@ class StatsOverviewWidget extends BaseWidget
|
||||
|
||||
if (! $previous) {
|
||||
return [
|
||||
Stat::make('Latest download', fn (): string => ! blank($this->result) ? Number::toBitRate(bits: $this->result->download_bits, precision: 2) : 'n/a')
|
||||
Stat::make(__('dashboard.latest_download'), fn (): string => ! blank($this->result) ? Number::toBitRate(bits: $this->result->download_bits, precision: 2) : 'n/a')
|
||||
->icon('heroicon-o-arrow-down-tray'),
|
||||
Stat::make('Latest upload', fn (): string => ! blank($this->result) ? Number::toBitRate(bits: $this->result->upload_bits, precision: 2) : 'n/a')
|
||||
Stat::make(__('dashboard.latest_upload'), fn (): string => ! blank($this->result) ? Number::toBitRate(bits: $this->result->upload_bits, precision: 2) : 'n/a')
|
||||
->icon('heroicon-o-arrow-up-tray'),
|
||||
Stat::make('Latest ping', fn (): string => ! blank($this->result) ? number_format($this->result->ping, 2).' ms' : 'n/a')
|
||||
Stat::make(__('dashboard.latest_ping'), fn (): string => ! blank($this->result) ? number_format($this->result->ping, 2).' ms' : 'n/a')
|
||||
->icon('heroicon-o-clock'),
|
||||
];
|
||||
}
|
||||
@@ -56,19 +56,19 @@ class StatsOverviewWidget extends BaseWidget
|
||||
$pingChange = percentChange($this->result->ping, $previous->ping, 2);
|
||||
|
||||
return [
|
||||
Stat::make('Latest download', fn (): string => ! blank($this->result) ? Number::toBitRate(bits: $this->result->download_bits, precision: 2) : 'n/a')
|
||||
Stat::make(__('dashboard.latest_download'), fn (): string => ! blank($this->result) ? Number::toBitRate(bits: $this->result->download_bits, precision: 2) : 'n/a')
|
||||
->icon('heroicon-o-arrow-down-tray')
|
||||
->description($downloadChange > 0 ? $downloadChange.'% faster' : abs($downloadChange).'% slower')
|
||||
->description($downloadChange > 0 ? $downloadChange.'% '.__('general.faster') : abs($downloadChange).'% '.__('general.slower'))
|
||||
->descriptionIcon($downloadChange > 0 ? 'heroicon-m-arrow-trending-up' : 'heroicon-m-arrow-trending-down')
|
||||
->color($downloadChange > 0 ? 'success' : 'danger'),
|
||||
Stat::make('Latest upload', fn (): string => ! blank($this->result) ? Number::toBitRate(bits: $this->result->upload_bits, precision: 2) : 'n/a')
|
||||
Stat::make(__('dashboard.latest_upload'), fn (): string => ! blank($this->result) ? Number::toBitRate(bits: $this->result->upload_bits, precision: 2) : 'n/a')
|
||||
->icon('heroicon-o-arrow-up-tray')
|
||||
->description($uploadChange > 0 ? $uploadChange.'% faster' : abs($uploadChange).'% slower')
|
||||
->description($uploadChange > 0 ? $uploadChange.'% '.__('general.faster') : abs($uploadChange).'% '.__('general.slower'))
|
||||
->descriptionIcon($uploadChange > 0 ? 'heroicon-m-arrow-trending-up' : 'heroicon-m-arrow-trending-down')
|
||||
->color($uploadChange > 0 ? 'success' : 'danger'),
|
||||
Stat::make('Latest ping', fn (): string => ! blank($this->result) ? number_format($this->result->ping, 2).' ms' : 'n/a')
|
||||
Stat::make(__('dashboard.latest_ping'), fn (): string => ! blank($this->result) ? number_format($this->result->ping, 2).' ms' : 'n/a')
|
||||
->icon('heroicon-o-clock')
|
||||
->description($pingChange > 0 ? $pingChange.'% slower' : abs($pingChange).'% faster')
|
||||
->description($pingChange > 0 ? $pingChange.'% '.__('general.slower') : abs($pingChange).'% '.__('general.faster'))
|
||||
->descriptionIcon($pingChange > 0 ? 'heroicon-m-arrow-trending-up' : 'heroicon-m-arrow-trending-down')
|
||||
->color($pingChange > 0 ? 'danger' : 'success'),
|
||||
];
|
||||
|
||||
@@ -58,8 +58,8 @@ class BulkWriteResults implements ShouldQueue
|
||||
]);
|
||||
|
||||
Notification::make()
|
||||
->title('Failed to build write to Influxdb.')
|
||||
->body('Check the logs for more details.')
|
||||
->title(__('settings/data_integration.influxdb_bulk_write_failed'))
|
||||
->body(__('settings/data_integration.influxdb_bulk_write_failed_body'))
|
||||
->danger()
|
||||
->sendToDatabase($this->user);
|
||||
|
||||
@@ -74,8 +74,8 @@ class BulkWriteResults implements ShouldQueue
|
||||
$writeApi->close();
|
||||
|
||||
Notification::make()
|
||||
->title('Finished bulk data load to Influxdb.')
|
||||
->body('Data has been sent to InfluxDB, check if the data was received.')
|
||||
->title(__('settings/data_integration.influxdb_bulk_write_success'))
|
||||
->body(__('settings/data_integration.influxdb_bulk_write_success_body'))
|
||||
->success()
|
||||
->sendToDatabase($this->user);
|
||||
}
|
||||
|
||||
@@ -46,8 +46,8 @@ class TestConnectionJob implements ShouldQueue
|
||||
]);
|
||||
|
||||
Notification::make()
|
||||
->title('Influxdb test failed')
|
||||
->body('Check the logs for more details.')
|
||||
->title(__('settings/data_integration.influxdb_test_failed'))
|
||||
->body(__('settings/data_integration.influxdb_test_failed_body'))
|
||||
->danger()
|
||||
->sendToDatabase($this->user);
|
||||
|
||||
@@ -59,8 +59,8 @@ class TestConnectionJob implements ShouldQueue
|
||||
$writeApi->close();
|
||||
|
||||
Notification::make()
|
||||
->title('Successfully sent test data to Influxdb')
|
||||
->body('Test data has been sent to InfluxDB, check if the data was received.')
|
||||
->title(__('settings/data_integration.influxdb_test_success'))
|
||||
->body(__('settings/data_integration.influxdb_test_success_body'))
|
||||
->success()
|
||||
->sendToDatabase($this->user);
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ class TruncateResults implements ShouldQueue
|
||||
}
|
||||
|
||||
Notification::make()
|
||||
->title('Results table truncated!')
|
||||
->title(__('results.truncate_results_success'))
|
||||
->success()
|
||||
->sendToDatabase($this->user);
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ class SendSpeedtestCompletedNotification
|
||||
|
||||
foreach (User::all() as $user) {
|
||||
Notification::make()
|
||||
->title('Speedtest completed')
|
||||
->title(__('results.speedtest_completed'))
|
||||
->success()
|
||||
->sendToDatabase($user);
|
||||
}
|
||||
|
||||
@@ -56,7 +56,7 @@ class SendSpeedtestThresholdNotification
|
||||
|
||||
foreach (User::all() as $user) {
|
||||
Notification::make()
|
||||
->title('Download threshold breached!')
|
||||
->title(__('results.download_threshold_breached'))
|
||||
->body('Speedtest #'.$event->result->id.' breached the download threshold of '.$thresholdSettings->absolute_download.' Mbps at '.Number::toBitRate($event->result->download_bits).'.')
|
||||
->warning()
|
||||
->sendToDatabase($user);
|
||||
@@ -74,7 +74,7 @@ class SendSpeedtestThresholdNotification
|
||||
|
||||
foreach (User::all() as $user) {
|
||||
Notification::make()
|
||||
->title('Upload threshold breached!')
|
||||
->title(__('results.upload_threshold_breached'))
|
||||
->body('Speedtest #'.$event->result->id.' breached the upload threshold of '.$thresholdSettings->absolute_upload.' Mbps at '.Number::toBitRate($event->result->upload_bits).'.')
|
||||
->warning()
|
||||
->sendToDatabase($user);
|
||||
@@ -92,7 +92,7 @@ class SendSpeedtestThresholdNotification
|
||||
|
||||
foreach (User::all() as $user) {
|
||||
Notification::make()
|
||||
->title('Ping threshold breached!')
|
||||
->title(__('results.ping_threshold_breached'))
|
||||
->body('Speedtest #'.$event->result->id.' breached the ping threshold of '.$thresholdSettings->absolute_ping.'ms at '.$event->result->ping.'ms.')
|
||||
->warning()
|
||||
->sendToDatabase($user);
|
||||
|
||||
@@ -23,7 +23,7 @@ class RunSpeedtestAction extends Component implements HasActions, HasForms
|
||||
public function dashboardAction(): Action
|
||||
{
|
||||
return Action::make('home')
|
||||
->label('Public Dashboard')
|
||||
->label(__('results.public_dashboard'))
|
||||
->icon('heroicon-o-chart-bar')
|
||||
->iconPosition(IconPosition::Before)
|
||||
->color('gray')
|
||||
@@ -38,12 +38,12 @@ class RunSpeedtestAction extends Component implements HasActions, HasForms
|
||||
return Action::make('speedtest')
|
||||
->schema([
|
||||
Select::make('server_id')
|
||||
->label('Select Server')
|
||||
->helperText('Leave empty to run the speedtest without specifying a server. Blocked servers will be skipped.')
|
||||
->label(__('results.select_server'))
|
||||
->helperText(__('results.select_server_helper'))
|
||||
->options(function (): array {
|
||||
return array_filter([
|
||||
'Manual servers' => Ookla::getConfigServers(),
|
||||
'Closest servers' => GetOoklaSpeedtestServers::run(),
|
||||
__('results.manual_servers') => Ookla::getConfigServers(),
|
||||
__('results.closest_servers') => GetOoklaSpeedtestServers::run(),
|
||||
]);
|
||||
})
|
||||
->searchable(),
|
||||
@@ -56,16 +56,16 @@ class RunSpeedtestAction extends Component implements HasActions, HasForms
|
||||
);
|
||||
|
||||
Notification::make()
|
||||
->title('Speedtest started')
|
||||
->title(__('results.speedtest_started'))
|
||||
->success()
|
||||
->send();
|
||||
})
|
||||
->modalHeading('Run Speedtest')
|
||||
->modalHeading(__('results.run_speedtest'))
|
||||
->modalWidth('lg')
|
||||
->modalSubmitActionLabel('Start')
|
||||
->modalSubmitActionLabel(__('results.start'))
|
||||
->button()
|
||||
->color('primary')
|
||||
->label('Speedtest')
|
||||
->label(__('results.speedtest'))
|
||||
->icon('heroicon-o-rocket-launch')
|
||||
->iconPosition(IconPosition::Before)
|
||||
->hidden(! Auth::check() && Auth::user()->is_admin)
|
||||
|
||||
@@ -57,25 +57,25 @@ class AdminPanelProvider extends PanelProvider
|
||||
])
|
||||
->navigationGroups([
|
||||
NavigationGroup::make()
|
||||
->label('Settings'),
|
||||
->label(__('general.settings')),
|
||||
NavigationGroup::make()
|
||||
->label('Links')
|
||||
->label(__('general.links'))
|
||||
->collapsible(false),
|
||||
])
|
||||
->navigationItems([
|
||||
NavigationItem::make('Documentation')
|
||||
NavigationItem::make(__('general.documentation'))
|
||||
->url('https://docs.speedtest-tracker.dev/', shouldOpenInNewTab: true)
|
||||
->icon('heroicon-o-book-open')
|
||||
->group('Links'),
|
||||
NavigationItem::make('Donate')
|
||||
->group(__('general.links')),
|
||||
NavigationItem::make(__('general.donate'))
|
||||
->url('https://github.com/sponsors/alexjustesen', shouldOpenInNewTab: true)
|
||||
->icon('heroicon-o-banknotes')
|
||||
->group('Links'),
|
||||
->group(__('general.links')),
|
||||
NavigationItem::make(config('speedtest.build_version'))
|
||||
->url('https://github.com/alexjustesen/speedtest-tracker', shouldOpenInNewTab: true)
|
||||
->icon('tabler-brand-github')
|
||||
->badge(fn (): string => Repository::updateAvailable() ? 'Update Available!' : 'Up to Date')
|
||||
->group('Links'),
|
||||
->badge(fn (): string => Repository::updateAvailable() ? __('general.update_available') : __('general.up_to_date'))
|
||||
->group(__('general.links')),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -17,7 +17,7 @@ class Cron implements ValidationRule
|
||||
public function validate(string $attribute, mixed $value, Closure $fail): void
|
||||
{
|
||||
if (! CronExpression::isValidExpression($value)) {
|
||||
$fail('Cron expression is not valid');
|
||||
$fail(__('errors.cron_invalid'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
base_path: /lang
|
||||
preserve_hierarchy: true
|
||||
|
||||
files:
|
||||
# PHP language files - root level
|
||||
- source: /en/*.php
|
||||
translation: /%locale_with_underscore%/%original_file_name%
|
||||
|
||||
# PHP language files - settings subdirectory
|
||||
- source: /en/settings/*.php
|
||||
translation: /%locale_with_underscore%/settings/%original_file_name%
|
||||
@@ -1,20 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Authentication Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used during authentication for various
|
||||
| messages that we need to display to the user. You are free to modify
|
||||
| these language lines according to your application's requirements.
|
||||
|
|
||||
*/
|
||||
|
||||
'failed' => 'Die eingegebenen Zugangsdaten stimmen nicht überein.',
|
||||
'password' => 'Das eingegebene Passwort ist falsch.',
|
||||
'throttle' => 'Zu viele Anmeldeversuche. Bitte warte :seconds Sekunden und versuche es erneut.',
|
||||
|
||||
];
|
||||
@@ -1,19 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Pagination Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used by the paginator library to build
|
||||
| the simple pagination links. You are free to change them to anything
|
||||
| you want to customize your views to better match your application.
|
||||
|
|
||||
*/
|
||||
|
||||
'previous' => '« Zurück',
|
||||
'next' => 'Weiter »',
|
||||
|
||||
];
|
||||
@@ -1,23 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reset Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are the default lines which match reasons
|
||||
| that are given by the password broker for a password update attempt
|
||||
| has failed, such as for an invalid token or invalid new password.
|
||||
|
|
||||
*/
|
||||
|
||||
'reset' => 'Dein Passwort wurde erfolgreich zurückgesetzt!',
|
||||
'sent' => 'Wir haben dir einen Link zum Zurücksetzen des Passworts per E-Mail geschickt!',
|
||||
'password' => 'Das Passwort muss mindestens 6 Zeichen lang sein und mit der Bestätigung übereinstimmen.',
|
||||
'throttled' => 'Bitte warte einen Moment, bevor du es erneut versuchst.',
|
||||
'token' => 'Der Link zum Zurücksetzen des Passworts ist ungültig oder abgelaufen.',
|
||||
'user' => 'Zu dieser E-Mail-Adresse existiert kein Benutzerkonto.',
|
||||
|
||||
];
|
||||
@@ -1,230 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines contain the default error messages used by
|
||||
| the validator class. Some of these rules have multiple versions such
|
||||
| as the size rules. Feel free to tweak each of these messages here.
|
||||
|
|
||||
*/
|
||||
|
||||
'accepted' => ':attribute muss akzeptiert werden.',
|
||||
'accepted_if' => ':attribute muss akzeptiert werden, wenn :other :value ist.',
|
||||
'active_url' => ':attribute muss eine gültige URL sein.',
|
||||
'after' => ':attribute muss ein Datum nach :date sein.',
|
||||
'after_or_equal' => ':attribute muss ein Datum nach oder am :date sein.',
|
||||
'alpha' => ':attribute darf nur Buchstaben enthalten.',
|
||||
'alpha_dash' => ':attribute darf nur Buchstaben, Zahlen, Binde- und Unterstriche enthalten.',
|
||||
'alpha_num' => ':attribute darf nur Buchstaben und Zahlen enthalten.',
|
||||
'array' => ':attribute muss eine Liste sein.',
|
||||
'ascii' => ':attribute darf nur Standardzeichen enthalten.',
|
||||
'before' => ':attribute muss ein Datum vor :date sein.',
|
||||
'before_or_equal' => ':attribute muss ein Datum vor oder am :date sein.',
|
||||
'between' => [
|
||||
'array' => ':attribute muss zwischen :min und :max Einträge haben.',
|
||||
'file' => ':attribute muss zwischen :min und :max Kilobytes groß sein.',
|
||||
'numeric' => ':attribute muss zwischen :min und :max liegen.',
|
||||
'string' => ':attribute muss zwischen :min und :max Zeichen lang sein.',
|
||||
],
|
||||
'boolean' => ':attribute muss wahr oder falsch sein.',
|
||||
'can' => ':attribute enthält einen ungültigen Wert.',
|
||||
'confirmed' => 'Die Eingabe bei :attribute stimmt nicht mit der Bestätigung überein.',
|
||||
'current_password' => 'Das eingegebene Passwort ist falsch.',
|
||||
'date' => ':attribute ist kein gültiges Datum.',
|
||||
'date_equals' => ':attribute muss genau am :date liegen.',
|
||||
'date_format' => ':attribute entspricht nicht dem erforderlichen Format (:format).',
|
||||
'decimal' => ':attribute muss :decimal Nachkommastellen haben.',
|
||||
'declined' => ':attribute muss abgelehnt werden.',
|
||||
'declined_if' => ':attribute muss abgelehnt werden, wenn :other den Wert ":value" hat.',
|
||||
'different' => ':attribute und :other müssen verschieden sein.',
|
||||
'digits' => ':attribute muss :digits Ziffern lang sein.',
|
||||
'digits_between' => ':attribute muss zwischen :min und :max Ziffern lang sein.',
|
||||
'dimensions' => ':attribute hat falsche Bildmaße.',
|
||||
'distinct' => ':attribute enthält doppelte Werte.',
|
||||
'doesnt_end_with' => ':attribute darf nicht mit folgenden Werten enden: :values.',
|
||||
'doesnt_start_with' => ':attribute darf nicht mit folgenden Werten beginnen: :values.',
|
||||
'email' => ':attribute muss eine gültige E-Mail-Adresse sein.',
|
||||
'ends_with' => ':attribute muss mit einem der folgenden Werte enden: :values.',
|
||||
'enum' => 'Die gewählte Option bei :attribute ist ungültig.',
|
||||
'exists' => ':attribute existiert bereits.',
|
||||
'file' => ':attribute muss eine Datei sein.',
|
||||
'filled' => ':attribute darf nicht leer sein.',
|
||||
'gt' => [
|
||||
'array' => ':attribute muss mehr als :value Einträge enthalten.',
|
||||
'file' => ':attribute muss größer als :value Kilobytes sein.',
|
||||
'numeric' => ':attribute muss größer als :value sein.',
|
||||
'string' => ':attribute muss länger als :value Zeichen sein.',
|
||||
],
|
||||
'gte' => [
|
||||
'array' => ':attribute muss mindestens :value Einträge enthalten.',
|
||||
'file' => ':attribute muss mindestens :value Kilobytes groß sein.',
|
||||
'numeric' => ':attribute muss mindestens :value betragen.',
|
||||
'string' => ':attribute muss mindestens :value Zeichen lang sein.',
|
||||
],
|
||||
'image' => ':attribute muss ein Bild sein.',
|
||||
'in' => ':attribute ist ungültig.',
|
||||
'in_array' => ':attribute muss in :other enthalten sein.',
|
||||
'integer' => ':attribute muss eine ganze Zahl sein.',
|
||||
'ip' => ':attribute muss eine gültige IP-Adresse sein.',
|
||||
'ipv4' => ':attribute muss eine gültige IPv4-Adresse sein.',
|
||||
'ipv6' => ':attribute muss eine gültige IPv6-Adresse sein.',
|
||||
'json' => ':attribute muss ein gültiges JSON sein.',
|
||||
'lowercase' => ':attribute darf nur Kleinbuchstaben enthalten.',
|
||||
'lt' => [
|
||||
'array' => ':attribute darf maximal :value Einträge enthalten.',
|
||||
'file' => ':attribute muss kleiner als :value Kilobytes sein.',
|
||||
'numeric' => ':attribute muss kleiner als :value sein.',
|
||||
'string' => ':attribute muss kürzer als :value Zeichen sein.',
|
||||
],
|
||||
'lte' => [
|
||||
'array' => ':attribute darf maximal :value Einträge enthalten.',
|
||||
'file' => ':attribute darf höchstens :value Kilobytes groß sein.',
|
||||
'numeric' => ':attribute darf maximal :value betragen.',
|
||||
'string' => ':attribute darf maximal :value Zeichen lang sein.',
|
||||
],
|
||||
'mac_address' => ':attribute muss eine gültige MAC-Adresse sein.',
|
||||
'max' => [
|
||||
'array' => ':attribute darf maximal :max Einträge enthalten.',
|
||||
'file' => ':attribute darf höchstens :max Kilobytes groß sein.',
|
||||
'numeric' => ':attribute darf maximal :max betragen.',
|
||||
'string' => ':attribute darf maximal :max Zeichen lang sein.',
|
||||
],
|
||||
'max_digits' => ':attribute darf maximal :max Ziffern enthalten.',
|
||||
'mimes' => ':attribute muss eine Datei vom Typ :values sein.',
|
||||
'mimetypes' => ':attribute muss eine Datei im Format :values sein.',
|
||||
'min' => [
|
||||
'array' => ':attribute muss mindestens :min Einträge enthalten.',
|
||||
'file' => ':attribute muss mindestens :min Kilobytes groß sein.',
|
||||
'numeric' => ':attribute muss mindestens :min betragen.',
|
||||
'string' => ':attribute muss mindestens :min Zeichen enthalten.',
|
||||
],
|
||||
'min_digits' => ':attribute muss mindestens :min Ziffern enthalten.',
|
||||
'missing' => ':attribute darf nicht angegeben werden.',
|
||||
'missing_if' => 'Das Feld :attribute muss fehlen, wenn :other „:value“ ist.',
|
||||
'missing_unless' => 'Das Feld :attribute muss fehlen, außer :other ist :value.',
|
||||
'missing_with' => 'Das Feld :attribute muss fehlen, wenn :values vorhanden ist.',
|
||||
'missing_with_all' => 'Das Feld :attribute muss fehlen, wenn :values vorhanden sind.',
|
||||
'multiple_of' => ':attribute muss ein Vielfaches von :value sein.',
|
||||
'not_in' => 'Die Auswahl :attribute ist ungültig.',
|
||||
'not_regex' => ':attribute hat ein ungültiges Format.',
|
||||
'numeric' => ':attribute muss eine Zahl sein.',
|
||||
'password' => [
|
||||
'letters' => ':attribute muss mindestens einen Buchstaben enthalten.',
|
||||
'mixed' => ':attribute muss mindestens einen Klein- und einen Großbuchstaben enthalten.',
|
||||
'numbers' => ':attribute muss mindestens eine Zahl enthalten.',
|
||||
'symbols' => ':attribute muss mindestens ein Sonderzeichen enthalten.',
|
||||
'uncompromised' => 'Das :attribute wurde in einem Datenleck gefunden. Bitte wählen Sie ein anderes :attribute.',
|
||||
],
|
||||
'present' => ':attribute muss vorhanden sein.',
|
||||
'prohibited' => ':attribute darf nicht angegeben werden.',
|
||||
'prohibited_if' => ':attribute darf nicht angegeben werden, wenn :other ":value" ist.',
|
||||
'prohibited_unless' => ':attribute darf nur angegeben werden, wenn :other den Wert ":values" hat.',
|
||||
'prohibits' => ':attribute darf nicht gemeinsam mit :other angegeben werden.',
|
||||
'regex' => ':attribute hat ein ungültiges Format.',
|
||||
'required' => ':attribute ist ein Pflichtfeld.',
|
||||
'required_array_keys' => ':attribute muss Einträge für folgende Werte enthalten: :values.',
|
||||
'required_if' => ':attribute ist erforderlich, wenn :other ":value" ist.',
|
||||
'required_if_accepted' => ':attribute ist erforderlich, wenn :other akzeptiert wird.',
|
||||
'required_unless' => ':attribute ist erforderlich, außer wenn :other den Wert ":values" hat.',
|
||||
'required_with' => ':attribute ist erforderlich, wenn :values vorhanden ist.',
|
||||
'required_with_all' => ':attribute ist erforderlich, wenn alle Felder :values ausgefüllt sind.',
|
||||
'required_without' => ':attribute ist erforderlich, wenn :values nicht vorhanden ist.',
|
||||
'required_without_all' => ':attribute ist erforderlich, wenn keines der Felder :values ausgefüllt ist.',
|
||||
'same' => ':attribute muss mit :other übereinstimmen.',
|
||||
'size' => [
|
||||
'array' => ':attribute muss genau :size Einträge enthalten.',
|
||||
'file' => ':attribute muss :size Kilobytes groß sein.',
|
||||
'numeric' => ':attribute muss genau :size betragen.',
|
||||
'string' => ':attribute muss genau :size Zeichen lang sein.',
|
||||
],
|
||||
'starts_with' => ':attribute muss mit einem der folgenden Werte beginnen: :values.',
|
||||
'string' => ':attribute muss ein Text sein.',
|
||||
'timezone' => ':attribute muss eine gültige Zeitzone sein.',
|
||||
'unique' => ':attribute wurde bereits verwendet.',
|
||||
'uploaded' => ':attribute konnte nicht hochgeladen werden.',
|
||||
'uppercase' => ':attribute darf nur Großbuchstaben enthalten.',
|
||||
'url' => ':attribute muss eine gültige URL sein.',
|
||||
'ulid' => ':attribute muss eine gültige ULID sein.',
|
||||
'uuid' => ':attribute muss eine gültige UUID sein.',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may specify custom validation messages for attributes using the
|
||||
| convention "attribute.rule" to name the lines. This makes it quick to
|
||||
| specify a specific custom language line for a given attribute rule.
|
||||
|
|
||||
*/
|
||||
|
||||
'custom' => [
|
||||
'attribute-name' => [
|
||||
'rule-name' => 'custom-message',
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Attributes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used to swap our attribute placeholder
|
||||
| with something more reader friendly such as "E-Mail Address" instead
|
||||
| of "email". This simply helps us make our message more expressive.
|
||||
|
|
||||
*/
|
||||
|
||||
'attributes' => [
|
||||
'address' => 'Adresse',
|
||||
'age' => 'Alter',
|
||||
'body' => 'Inhalt',
|
||||
'cell' => 'Zelle',
|
||||
'city' => 'Stadt',
|
||||
'country' => 'Land',
|
||||
'date' => 'Datum',
|
||||
'day' => 'Tag',
|
||||
'excerpt' => 'Zusammenfassung',
|
||||
'first_name' => 'Vorname',
|
||||
'gender' => 'Geschlecht',
|
||||
'marital_status' => 'Familienstand',
|
||||
'profession' => 'Beruf',
|
||||
'nationality' => 'Nationalität',
|
||||
'hour' => 'Stunde',
|
||||
'last_name' => 'Nachname',
|
||||
'message' => 'Nachricht',
|
||||
'minute' => 'Minute',
|
||||
'mobile' => 'Handynummer',
|
||||
'month' => 'Monat',
|
||||
'name' => 'Name',
|
||||
'zipcode' => 'Postleitzahl',
|
||||
'company_name' => 'Firmenname',
|
||||
'neighborhood' => 'Stadtteil',
|
||||
'number' => 'Nummer',
|
||||
'password' => 'Passwort',
|
||||
'phone' => 'Telefonnummer',
|
||||
'second' => 'Sekunde',
|
||||
'sex' => 'Geschlecht',
|
||||
'state' => 'Bundesland',
|
||||
'street' => 'Straße',
|
||||
'subject' => 'Betreff',
|
||||
'text' => 'Text',
|
||||
'time' => 'Zeit',
|
||||
'title' => 'Titel',
|
||||
'username' => 'Benutzername',
|
||||
'year' => 'Jahr',
|
||||
'description' => 'Beschreibung',
|
||||
'password_confirmation' => 'Passwort bestätigen',
|
||||
'current_password' => 'Aktuelles Passwort',
|
||||
'complement' => 'Zusatz',
|
||||
'modality' => 'Modalität',
|
||||
'category' => 'Kategorie',
|
||||
'blood_type' => 'Blutgruppe',
|
||||
'birth_date' => 'Geburtsdatum',
|
||||
],
|
||||
];
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'title' => 'API Tokens',
|
||||
'label' => 'API Tokens',
|
||||
|
||||
// Token management
|
||||
'api_token' => 'API token',
|
||||
'api_tokens' => 'API tokens',
|
||||
'create_api_token' => 'Create API token',
|
||||
'your_token' => 'Your token',
|
||||
'token_status' => 'Token status',
|
||||
|
||||
// Token lists
|
||||
'active_tokens' => 'Active tokens',
|
||||
'expired_tokens' => 'Expired tokens',
|
||||
'all_tokens' => 'All tokens',
|
||||
|
||||
// Token properties
|
||||
'expires_at' => 'Expires at',
|
||||
'expires_at_helper_text' => 'Leave empty if you don\'t want an expiration date',
|
||||
'last_used_at' => 'Last used at',
|
||||
|
||||
// Abilities/Permissions
|
||||
'abilities' => 'Abilities',
|
||||
'read_results' => 'Read results',
|
||||
'read_results_description' => 'The token will have permission to read results and statistics.',
|
||||
'run_speedtest_description' => 'The token will have permission to run speedtest.',
|
||||
'list_servers_description' => 'The token will have permission to list servers.',
|
||||
];
|
||||
@@ -13,8 +13,8 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
'failed' => '您輸入的帳號密碼與系統記錄不符。',
|
||||
'password' => '您輸入的密碼不正確。',
|
||||
'throttle' => '登入嘗試次數太多,請於 :seconds 秒後再試。',
|
||||
'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.',
|
||||
|
||||
];
|
||||
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'title' => 'Dashboard',
|
||||
'no_speedtests_scheduled' => 'No speedtests scheduled.',
|
||||
'next_speedtest_at' => 'Next speedtest at',
|
||||
|
||||
// Widgets
|
||||
'recent_results' => 'Recent Results',
|
||||
'statistics' => 'Statistics',
|
||||
'latest_download' => 'Latest download',
|
||||
'latest_upload' => 'Latest upload',
|
||||
'latest_ping' => 'Latest ping',
|
||||
];
|
||||
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
// Status enum values
|
||||
'status' => [
|
||||
'benchmarking' => 'Benchmarking',
|
||||
'checking' => 'Checking',
|
||||
'completed' => 'Completed',
|
||||
'failed' => 'Failed',
|
||||
'running' => 'Running',
|
||||
'started' => 'Started',
|
||||
'skipped' => 'Skipped',
|
||||
'waiting' => 'Waiting',
|
||||
],
|
||||
|
||||
// Service enum values
|
||||
'service' => [
|
||||
'faker' => 'Faker',
|
||||
'ookla' => 'Ookla',
|
||||
],
|
||||
];
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'server_error' => 'Server Error',
|
||||
'oops_server_error' => 'Oops, server error!',
|
||||
'error_message' => 'Error message',
|
||||
'error_fetching_servers' => 'Error fetching servers',
|
||||
'servers_refreshed_successfully' => 'Servers refreshed successfully',
|
||||
'copied_to_clipboard' => 'Copied to clipboard',
|
||||
|
||||
// Speedtest specific errors
|
||||
'ookla_error' => 'An error occurred when listing speedtest servers, check the logs.',
|
||||
'cron_invalid' => 'Invalid cron expression',
|
||||
|
||||
// Status fix command
|
||||
'status_fix' => [
|
||||
'confirm' => 'Do you wish to continue?',
|
||||
'fail' => 'Command aborted.',
|
||||
'finished' => '✅ done!',
|
||||
'info_1' => 'This will check all results and fix the status to "completed" or "failed" based on the data.',
|
||||
'info_2' => '📖 Read the documentation: https://docs.speedtest-tracker.dev/other/commands',
|
||||
],
|
||||
];
|
||||
@@ -0,0 +1,106 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
// Common actions
|
||||
'save' => 'Save',
|
||||
'cancel' => 'Cancel',
|
||||
'delete' => 'Delete',
|
||||
'edit' => 'Edit',
|
||||
'create' => 'Create',
|
||||
'search' => 'Search',
|
||||
'filter' => 'Filter',
|
||||
'export' => 'Export',
|
||||
'actions' => 'Actions',
|
||||
'enable' => 'Enable',
|
||||
'yes' => 'Yes',
|
||||
'no' => 'No',
|
||||
'options' => 'Options',
|
||||
'details' => 'Details',
|
||||
|
||||
// Common labels
|
||||
'name' => 'Name',
|
||||
'email' => 'Email',
|
||||
'email_address' => 'Email address',
|
||||
'password' => 'Password',
|
||||
'password_confirmation' => 'Password confirmation',
|
||||
'id' => 'ID',
|
||||
'status' => 'Status',
|
||||
'message' => 'Message',
|
||||
'comment' => 'Comment',
|
||||
'comments' => 'Comments',
|
||||
'created_at' => 'Created at',
|
||||
'updated_at' => 'Updated at',
|
||||
'url' => 'URL',
|
||||
|
||||
// Navigation
|
||||
'dashboard' => 'Dashboard',
|
||||
'results' => 'Results',
|
||||
'settings' => 'Settings',
|
||||
'users' => 'Users',
|
||||
'documentation' => 'Documentation',
|
||||
'links' => 'Links',
|
||||
'donate' => 'Donate',
|
||||
|
||||
// Roles
|
||||
'admin' => 'Admin',
|
||||
'user' => 'User',
|
||||
'role' => 'Role',
|
||||
|
||||
// Date ranges
|
||||
'last_24h' => 'Last 24 hours',
|
||||
'last_week' => 'Last week',
|
||||
'last_month' => 'Last month',
|
||||
|
||||
// Metrics
|
||||
'average' => 'Average',
|
||||
'high' => 'High',
|
||||
'low' => 'Low',
|
||||
'faster' => 'faster',
|
||||
'slower' => 'slower',
|
||||
'healthy' => 'Healthy',
|
||||
|
||||
// Units
|
||||
'ms' => 'ms',
|
||||
'mbps' => 'Mbps',
|
||||
|
||||
// Speed test metrics
|
||||
'download' => 'Download',
|
||||
'upload' => 'Upload',
|
||||
'ping' => 'Ping',
|
||||
'jitter' => 'Jitter',
|
||||
|
||||
// Metric labels with units
|
||||
'download_mbps' => 'Download (Mbps)',
|
||||
'upload_mbps' => 'Upload (Mbps)',
|
||||
'ping_ms' => 'Ping (ms)',
|
||||
'download_ms' => 'Download (ms)',
|
||||
'upload_ms' => 'Upload (ms)',
|
||||
'average_ms' => 'Average (ms)',
|
||||
'high_ms' => 'High (ms)',
|
||||
'low_ms' => 'Low (ms)',
|
||||
'ping_ms_label' => 'Ping (ms)',
|
||||
|
||||
// Latency
|
||||
'download_latency' => 'Download latency',
|
||||
'upload_latency' => 'Upload latency',
|
||||
|
||||
// Actions
|
||||
'run_speedtest' => 'Run speedtest',
|
||||
'list_servers' => 'List servers',
|
||||
'export_current_results' => 'Export current results',
|
||||
'test' => 'Test',
|
||||
|
||||
// Common
|
||||
'token' => 'Token',
|
||||
|
||||
// Application
|
||||
'speedtest_tracker' => 'Speedtest Tracker',
|
||||
'platform' => 'Platform',
|
||||
|
||||
// Update status
|
||||
'update_available' => 'Update available!',
|
||||
'up_to_date' => 'Up to date',
|
||||
|
||||
// Notifications
|
||||
'token_created' => 'Token Created',
|
||||
];
|
||||
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'title' => 'Results',
|
||||
'result_overview' => 'Result overview',
|
||||
|
||||
// Metrics
|
||||
'download_latency_high' => 'Download latency high',
|
||||
'download_latency_low' => 'Download latency low',
|
||||
'download_latency_iqm' => 'Download latency IQM',
|
||||
'download_latency_jitter' => 'Download latency jitter',
|
||||
|
||||
'upload_latency_high' => 'Upload latency high',
|
||||
'upload_latency_low' => 'Upload latency low',
|
||||
'upload_latency_iqm' => 'Upload latency IQM',
|
||||
'upload_latency_jitter' => 'Upload latency jitter',
|
||||
|
||||
'ping_details' => 'Ping details',
|
||||
'ping_jitter' => 'Ping jitter',
|
||||
'ping_high' => 'Ping high',
|
||||
'ping_low' => 'Ping low',
|
||||
|
||||
'packet_loss' => 'Packet loss',
|
||||
'iqm' => 'IQM',
|
||||
|
||||
// Server & metadata
|
||||
'server_&_metadata' => 'Server & Metadata',
|
||||
'server_id' => 'Server ID',
|
||||
'server_host' => 'Server host',
|
||||
'server_name' => 'Server name',
|
||||
'server_location' => 'Server location',
|
||||
'service' => 'Service',
|
||||
'isp' => 'ISP',
|
||||
'ip_address' => 'IP address',
|
||||
'scheduled' => 'Scheduled',
|
||||
|
||||
// Filters
|
||||
'only_healthy_speedtests' => 'Only healthy speedtests',
|
||||
'only_unhealthy_speedtests' => 'Only unhealthy speedtests',
|
||||
'only_manual_speedtests' => 'Only manual speedtests',
|
||||
'only_scheduled_speedtests' => 'Only scheduled speedtests',
|
||||
'created_from' => 'Created from',
|
||||
'created_until' => 'Created until',
|
||||
|
||||
// Export
|
||||
'export_all_results' => 'Export all results',
|
||||
'export_all_results_description' => 'Will export every column for all results.',
|
||||
'export_completed' => 'Export completed, :count :rows exported.',
|
||||
'failed_export' => ':count :rows failed to export.',
|
||||
'row' => '{1} :count row|[2,*] :count rows',
|
||||
|
||||
// Actions
|
||||
'update_comments' => 'Update comments',
|
||||
'truncate_results' => 'Truncate results',
|
||||
'truncate_results_description' => 'Are you sure you want to truncate all results? This action is irreversible.',
|
||||
'truncate_results_success' => 'Results table truncated!',
|
||||
'view_on_speedtest_net' => 'View on Speedtest.net',
|
||||
|
||||
// Notifications
|
||||
'speedtest_started' => 'Speedtest started',
|
||||
'speedtest_completed' => 'Speedtest completed',
|
||||
'download_threshold_breached' => 'Download threshold breached!',
|
||||
'upload_threshold_breached' => 'Upload threshold breached!',
|
||||
'ping_threshold_breached' => 'Ping threshold breached!',
|
||||
|
||||
// Run Speedtest Action
|
||||
'speedtest' => 'Speedtest',
|
||||
'public_dashboard' => 'Public Dashboard',
|
||||
'select_server' => 'Select Server',
|
||||
'select_server_helper' => 'Leave empty to run the speedtest without specifying a server. Blocked servers will be skipped.',
|
||||
'manual_servers' => 'Manual servers',
|
||||
'closest_servers' => 'Closest servers',
|
||||
];
|
||||
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'title' => 'Settings',
|
||||
'label' => 'Settings',
|
||||
|
||||
// Common settings labels
|
||||
'triggers' => 'Triggers',
|
||||
'verify_ssl' => 'Verify SSL',
|
||||
'username' => 'Username',
|
||||
'username_placeholder' => 'Username for Basic Auth (optional)',
|
||||
'password_placeholder' => 'Password for Basic Auth (optional)',
|
||||
];
|
||||
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'title' => 'Data Integration',
|
||||
'label' => 'Data Integration',
|
||||
|
||||
// InfluxDB v2
|
||||
'influxdb_v2' => 'InfluxDB v2',
|
||||
'influxdb_v2_description' => 'When enabled, all new Speedtest results will also be sent to InfluxDB.',
|
||||
'influxdb_v2_enabled' => 'Enable',
|
||||
'influxdb_v2_url' => 'URL',
|
||||
'influxdb_v2_url_placeholder' => 'http://your-influxdb-instance',
|
||||
'influxdb_v2_org' => 'Org',
|
||||
'influxdb_v2_bucket' => 'Bucket',
|
||||
'influxdb_v2_bucket_placeholder' => 'speedtest-tracker',
|
||||
'influxdb_v2_token' => 'Token',
|
||||
'influxdb_v2_verify_ssl' => 'Verify SSL',
|
||||
|
||||
// Actions
|
||||
'test_connection' => 'Test connection',
|
||||
'starting_bulk_data_write_to_influxdb' => 'Starting bulk data write to InfluxDB',
|
||||
'sending_test_data_to_influxdb' => 'Sending test data to InfluxDB',
|
||||
|
||||
// Test connection notifications
|
||||
'influxdb_test_failed' => 'Influxdb test failed',
|
||||
'influxdb_test_failed_body' => 'Check the logs for more details.',
|
||||
'influxdb_test_success' => 'Successfully sent test data to Influxdb',
|
||||
'influxdb_test_success_body' => 'Test data has been sent to InfluxDB, check if the data was received.',
|
||||
|
||||
// Bulk write notifications
|
||||
'influxdb_bulk_write_failed' => 'Failed to build write to Influxdb.',
|
||||
'influxdb_bulk_write_failed_body' => 'Check the logs for more details.',
|
||||
'influxdb_bulk_write_success' => 'Finished bulk data load to Influxdb.',
|
||||
'influxdb_bulk_write_success_body' => 'Data has been sent to InfluxDB, check if the data was received.',
|
||||
|
||||
// Common labels
|
||||
'org' => 'Org',
|
||||
'bucket' => 'Bucket',
|
||||
];
|
||||
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'title' => 'Notifications',
|
||||
'label' => 'Notifications',
|
||||
|
||||
// Database notifications
|
||||
'database' => 'Database',
|
||||
'database_description' => 'Notifications sent to this channel will show up under the 🔔 icon in the header.',
|
||||
'enable_database_notifications' => 'Enable database notifications',
|
||||
'database_on_speedtest_run' => 'Notify on every speedtest run',
|
||||
'database_on_threshold_failure' => 'Notify on threshold failures',
|
||||
'test_database_channel' => 'Test database channel',
|
||||
|
||||
// Mail notifications
|
||||
'mail' => 'Mail',
|
||||
'enable_mail_notifications' => 'Enable mail notifications',
|
||||
'recipients' => 'Recipients',
|
||||
'mail_on_speedtest_run' => 'Notify on every speedtest run',
|
||||
'mail_on_threshold_failure' => 'Notify on threshold failures',
|
||||
'test_mail_channel' => 'Test mail channel',
|
||||
|
||||
// Webhook
|
||||
'webhook' => 'Webhook',
|
||||
'webhooks' => 'Webhooks',
|
||||
'enable_webhook_notifications' => 'Enable webhook notifications',
|
||||
'webhook_on_speedtest_run' => 'Notify on every speedtest run',
|
||||
'webhook_on_threshold_failure' => 'Notify on threshold failures',
|
||||
'test_webhook_channel' => 'Test webhook channel',
|
||||
|
||||
// Common notification messages
|
||||
'notify_on_every_speedtest_run' => 'Notify on every speedtest run',
|
||||
'notify_on_threshold_failures' => 'Notify on threshold failures',
|
||||
|
||||
// Test notification messages
|
||||
'test_notifications' => [
|
||||
'database' => [
|
||||
'ping' => 'I say: ping',
|
||||
'pong' => 'You say: pong',
|
||||
'received' => 'Test database notification received!',
|
||||
'sent' => 'Test database notification sent.',
|
||||
],
|
||||
'mail' => [
|
||||
'add' => 'Add email recipients!',
|
||||
'sent' => 'Test mail notification sent.',
|
||||
],
|
||||
'webhook' => [
|
||||
'add' => 'Add webhook URLs!',
|
||||
'sent' => 'Test webhook notification sent.',
|
||||
'payload' => 'Testing webhook notification',
|
||||
],
|
||||
],
|
||||
|
||||
// Helper text
|
||||
'threshold_helper_text' => 'Threshold notifications will be sent to the /fail route in the URL.',
|
||||
];
|
||||
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'title' => 'Thresholds',
|
||||
'label' => 'Thresholds',
|
||||
|
||||
// Absolute thresholds
|
||||
'absolute' => 'Absolute',
|
||||
'absolute_description' => 'Absolute thresholds do not take into account previous history and could be triggered on each test.',
|
||||
'absolute_enabled' => 'Enable absolute thresholds',
|
||||
|
||||
// Metrics section
|
||||
'metrics' => 'Metrics',
|
||||
'metrics_helper_text' => 'Set to zero to disable this metric.',
|
||||
|
||||
// General threshold labels
|
||||
'thresholds' => 'Thresholds',
|
||||
'threshold_enabled' => 'Threshold enabled',
|
||||
'threshold_download' => 'Threshold download',
|
||||
'threshold_upload' => 'Threshold upload',
|
||||
'threshold_ping' => 'Threshold ping',
|
||||
];
|
||||
@@ -0,0 +1,6 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
// Ookla server list
|
||||
'ookla_servers' => 'Ookla servers',
|
||||
];
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'title' => 'Users',
|
||||
'label' => 'Users',
|
||||
|
||||
// User prompts and messages
|
||||
'user_change' => [
|
||||
'info' => 'User role updated.',
|
||||
'password_updated_info' => ':email password updated.',
|
||||
'what_is_password' => 'What is the new password?',
|
||||
'what_is_the_email_address' => 'What is the email address?',
|
||||
'what_role' => 'What role should the user have?',
|
||||
],
|
||||
];
|
||||
@@ -1,20 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Authentication Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used during authentication for various
|
||||
| messages that we need to display to the user. You are free to modify
|
||||
| these language lines according to your application's requirements.
|
||||
|
|
||||
*/
|
||||
|
||||
'failed' => 'Estas credenciales no coinciden con nuestros registros.',
|
||||
'password' => 'La contraseña proporcionada es incorrecta.',
|
||||
'throttle' => 'Demasiados intentos de acceso. Por favor, inténtelo de nuevo en :seconds segundos.',
|
||||
|
||||
];
|
||||
@@ -1,19 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Pagination Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used by the paginator library to build
|
||||
| the simple pagination links. You are free to change them to anything
|
||||
| you want to customize your views to better match your application.
|
||||
|
|
||||
*/
|
||||
|
||||
'previous' => '« Anterior',
|
||||
'next' => 'Siguiente »',
|
||||
|
||||
];
|
||||
@@ -1,20 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reset Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are the default lines which match reasons
|
||||
| that are given by the password broker for a password update attempt
|
||||
| has failed, such as for an invalid token or invalid new password.
|
||||
|
|
||||
*/
|
||||
|
||||
'reset' => '¡Su contraseña ha sido restablecida!',
|
||||
'sent' => '¡Hemos enviado por correo electrónico el enlace para restablecer su contraseña!',
|
||||
'password' => 'La contraseña y la confirmación deben coincidir y contener al menos seis caracteres.',
|
||||
|
||||
];
|
||||
@@ -1,91 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines contain the default error messages used by
|
||||
| the validator class. Some of these rules have multiple versions such
|
||||
| as the size rules. Feel free to tweak each of these messages here.
|
||||
|
|
||||
*/
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may specify custom validation messages for attributes using the
|
||||
| convention "attribute.rule" to name the lines. This makes it quick to
|
||||
| specify a specific custom language line for a given attribute rule.
|
||||
|
|
||||
*/
|
||||
|
||||
'custom' => [
|
||||
'attribute-name' => [
|
||||
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Attributes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used to swap our attribute placeholder
|
||||
| with something more reader friendly such as "E-Mail Address" instead
|
||||
| of "email". This simply helps us make our message more expressive.
|
||||
|
|
||||
*/
|
||||
|
||||
'attributes' => [
|
||||
'address' => 'dirección',
|
||||
'age' => 'edad',
|
||||
'body' => 'contenido',
|
||||
'cell' => 'celular',
|
||||
'city' => 'ciudad',
|
||||
'country' => 'país',
|
||||
'date' => 'fecha',
|
||||
'day' => 'día',
|
||||
'excerpt' => 'resumen',
|
||||
'first_name' => 'nombre',
|
||||
'gender' => 'género',
|
||||
'marital_status' => 'estado civil',
|
||||
'profession' => 'profesión',
|
||||
'nationality' => 'nacionalidad',
|
||||
'hour' => 'hora',
|
||||
'last_name' => 'apellido',
|
||||
'message' => 'mensaje',
|
||||
'minute' => 'minuto',
|
||||
'mobile' => 'móvil',
|
||||
'month' => 'mes',
|
||||
'name' => 'nombre',
|
||||
'zipcode' => 'código postal',
|
||||
'company_name' => 'nombre de la empresa',
|
||||
'neighborhood' => 'vecindario',
|
||||
'number' => 'número',
|
||||
'password' => 'contraseña',
|
||||
'phone' => 'teléfono',
|
||||
'second' => 'segundo',
|
||||
'sex' => 'sexo',
|
||||
'state' => 'estado',
|
||||
'street' => 'calle',
|
||||
'subject' => 'asunto',
|
||||
'text' => 'texto',
|
||||
'time' => 'hora',
|
||||
'title' => 'título',
|
||||
'username' => 'usuario',
|
||||
'year' => 'año',
|
||||
'description' => 'descripción',
|
||||
'password_confirmation' => 'confirmación de contraseña',
|
||||
'current_password' => 'contraseña actual',
|
||||
'complement' => 'complemento',
|
||||
'modality' => 'modalidad',
|
||||
'category' => 'categoría',
|
||||
'blood_type' => 'tipo de sangre',
|
||||
'birth_date' => 'fecha de nacimiento',
|
||||
],
|
||||
];
|
||||
@@ -1,20 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Authentication Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used during authentication for various
|
||||
| messages that we need to display to the user. You are free to modify
|
||||
| these language lines according to your application's requirements.
|
||||
|
|
||||
*/
|
||||
|
||||
'failed' => 'Ces crédentials ne correspondent pas à nos archives.',
|
||||
'password' => 'Le mot de passe fourni est incorrect.',
|
||||
'throttle' => 'Trop de tentatives de connexion échouées. Veuillez réessayer dans :seconds secondes.',
|
||||
|
||||
];
|
||||
@@ -1,19 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Pagination Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used by the paginator library to build
|
||||
| the simple pagination links. You are free to change them to anything
|
||||
| you want to customize your views to better match your application.
|
||||
|
|
||||
*/
|
||||
|
||||
'previous' => '« Précédent',
|
||||
'next' => 'Suivant »',
|
||||
|
||||
];
|
||||
@@ -1,23 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reset Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are the default lines which match reasons
|
||||
| that are given by the password broker for a password update attempt
|
||||
| has failed, such as for an invalid token or invalid new password.
|
||||
|
|
||||
*/
|
||||
|
||||
'reset' => 'Votre mot de passe a été réinitialisé!',
|
||||
'sent' => 'Nous vous avons envoyé un email contenant votre lien de réinitialisation!',
|
||||
'password' => 'Le mot de passe et le mot de passe de confirmation doivent contenir au moins 6 caractères.',
|
||||
'throttled' => 'Veuillez attendre avant de réessayer.',
|
||||
'token' => 'Le jeton de réinitialisation du mot de passe n\'est pas valide.',
|
||||
'user' => 'Aucun email trouvé pour cette adresse.',
|
||||
|
||||
];
|
||||
@@ -1,230 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines contain the default error messages used by
|
||||
| the validator class. Some of these rules have multiple versions such
|
||||
| as the size rules. Feel free to tweak each of these messages here.
|
||||
|
|
||||
*/
|
||||
|
||||
'accepted' => 'Le champ :attribute doit être valide.',
|
||||
'accepted_if' => 'Le champ :attribute doit être accepté lorsque :other est :value.',
|
||||
'active_url' => 'Le champ :attribute doit être une URL valide.',
|
||||
'after' => 'Le champ :attribute doit être une date postérieure à :date.',
|
||||
'after_or_equal' => 'Le champ :attribute doit être une date postérieure ou égale à :date.',
|
||||
'alpha' => 'Le champ :attribute ne doit contenir que des lettres.',
|
||||
'alpha_dash' => 'Le champ :attribute ne doit contenir que des lettres, des chiffres, des tirets ou underscore.',
|
||||
'alpha_num' => 'Le champ :attribute ne doit contenir que des lettres et des chiffres.',
|
||||
'array' => 'Le champ :attribute doit être un tableau.',
|
||||
'ascii' => 'Le champ :attribute ne doit contenir que des caractères alphanumériques ou des symboles ascii.',
|
||||
'before' => 'Le champ :attribute doit être une date antérieure à :date.',
|
||||
'before_or_equal' => 'Le champ :attribute doit être une date antérieure ou égale à :date.',
|
||||
'between' => [
|
||||
'array' => 'Le champ :attribute doit contenir entre :min et :max elements.',
|
||||
'file' => 'Le champ :attribute doit être compris entre :min et :max kilo-octets.',
|
||||
'numeric' => 'Le champ :attribute doit être comprise entre :min et :max.',
|
||||
'string' => 'Le champ :attribute doit contenir entre :min et :max caractères.',
|
||||
],
|
||||
'boolean' => 'Le champ :attribute doit être vrai ou faux.',
|
||||
'can' => 'Le champ :attribute contient une valeur non autorisée.',
|
||||
'confirmed' => 'Le champ de confirmation :attribute ne correspond pas.',
|
||||
'current_password' => 'Le mot de passe est incorrect.',
|
||||
'date' => 'Le champ :attribute doit être une date valide.',
|
||||
'date_equals' => 'Le champ :attribute doit être une date égale à :date.',
|
||||
'date_format' => 'Le champ :attribute doit correspondre au format :format.',
|
||||
'decimal' => 'Le champ :attribute doit avoir :decimal chiffres décimaux.',
|
||||
'declined' => 'Le champ :attribute doit être refusé.',
|
||||
'declined_if' => 'Le champ :attribute doit être rejeté lorsque :other est :value.',
|
||||
'different' => 'Le champ :attribute et :other doivent être différents.',
|
||||
'digits' => 'Le champ :attribute doit être composé de :digits chiffres.',
|
||||
'digits_between' => 'Le champ :attribute doit être compris entre :min et :max.',
|
||||
'dimensions' => 'Le champ :attribute taille de la photo non valide.',
|
||||
'distinct' => 'Le champ :attribute a une valeur dupliquée.',
|
||||
'doesnt_end_with' => 'Le champ :attribute ne doit pas se terminer par l\'un des éléments suivants: :values.',
|
||||
'doesnt_start_with' => 'Le champ :attribute ne doit pas commencer par l\'un des éléments suivants: :values.',
|
||||
'email' => 'Le champ :attribute doit être une adresse email valide.',
|
||||
'ends_with' => 'Le champ :attribute doit se terminer par l\'un des éléments suivants: :values.',
|
||||
'enum' => ':attribute séléctionné non valide.',
|
||||
'exists' => ':attribute existe déjà.',
|
||||
'file' => 'Le champ :attribute doit être un fichier.',
|
||||
'filled' => 'Le champ :attribute doit contenir une valeur.',
|
||||
'gt' => [
|
||||
'array' => 'Le champ :attribute doit contenir plus de :value éléments.',
|
||||
'file' => 'Le champ :attribute doit être supérieur à :value kilo-octets.',
|
||||
'numeric' => 'Le champ :attribute doit être supérieur à :value.',
|
||||
'string' => 'Le champ :attribute doit faire plus de :value caractères.',
|
||||
],
|
||||
'gte' => [
|
||||
'array' => 'Le champ :attribute doit contenir au moins :value éléments.',
|
||||
'file' => 'Le champ :attribute doit être supérieur ou égal à :value kilo-octets.',
|
||||
'numeric' => 'Le champ :attribute doit être supérieur ou égal à :value.',
|
||||
'string' => 'Le champ :attribute doit être supérieur ou égal à :value caractères.',
|
||||
],
|
||||
'image' => 'Le champ :attribute doit être une photo.',
|
||||
'in' => ':attribute séléctionné non valide.',
|
||||
'in_array' => 'Le champ :attribute doit être contenant dans :other.',
|
||||
'integer' => 'Le champ :attribute doit être un nombre entier.',
|
||||
'ip' => 'Le champ :attribute doit être une adresse IP valide.',
|
||||
'ipv4' => 'Le champ :attribute doit être une adresse IPv4 valide.',
|
||||
'ipv6' => 'Le champ :attribute doit être une adresse IPv6 valide.',
|
||||
'json' => 'Le champ :attribute doit être une string JSON valide.',
|
||||
'lowercase' => 'Le champ :attribute doit être en minuscule.',
|
||||
'lt' => [
|
||||
'array' => 'Le champ :attribute doit contenir moins de :value elements.',
|
||||
'file' => 'Le champ :attribute doit être inférieur à :value kilo-octets.',
|
||||
'numeric' => 'Le champ :attribute doit être inférieur à :value.',
|
||||
'string' => 'Le champ :attribute doit faire moins de :value caractères.',
|
||||
],
|
||||
'lte' => [
|
||||
'array' => 'Le champ :attribute ne doit pas comporter plus de :value éléments.',
|
||||
'file' => 'Le champ :attribute doit être inférieur ou égal à :value kilo-octets.',
|
||||
'numeric' => 'Le champ :attribute doit être inférieur ou égal à :value.',
|
||||
'string' => 'Le champ :attribute doit être inférieur ou égal à :value caractères.',
|
||||
],
|
||||
'mac_address' => 'Le champ :attribute doit être une adresse MAC valide.',
|
||||
'max' => [
|
||||
'array' => 'Le champ :attribute ne doit pas comporter plus de :max éléments.',
|
||||
'file' => 'Le champ :attribute ne doit pas être supérieur à :max kilo-octets.',
|
||||
'numeric' => 'Le champ :attribute ne doit pas être supérieur à :max.',
|
||||
'string' => 'Le champ :attribute non ne doit pas faire plus de :max caractères.',
|
||||
],
|
||||
'max_digits' => 'Le champ :attribute ne peut avoir plus de :max chiffres.',
|
||||
'mimes' => 'Le champ :attribute doit être un fichier de type: :values.',
|
||||
'mimetypes' => 'Le champ :attribute doit être un fichier de type: :values.',
|
||||
'min' => [
|
||||
'array' => 'Le champ :attribute doit contenir au moins :min éléments.',
|
||||
'file' => 'Le champ :attribute doit être au minimum de :min kilo-octets.',
|
||||
'numeric' => 'Le champ :attribute doit être au moins :min.',
|
||||
'string' => 'Le champ :attribute deve contenir au moins :min caractères.',
|
||||
],
|
||||
'min_digits' => 'Le champ :attribute doit avoir au moins :min chiffres.',
|
||||
'missing' => 'Le champ :attribute doit être manquant.',
|
||||
'missing_if' => 'Le champ :attribute doit être absent lorsque :other est :value.',
|
||||
'missing_unless' => 'Le champ :attribute doit être manquant, sauf si :other est :value.',
|
||||
'missing_with' => 'Le champ :attribute doit être absent lorsque :values est présent.',
|
||||
'missing_with_all' => 'Le champ :attribute doit être manquant lorsque :values sont présentes.',
|
||||
'multiple_of' => 'Le champ :attribute doit être un multiple de :value.',
|
||||
'not_in' => ':attribute séléctionné non valide.',
|
||||
'not_regex' => 'Le format du champ :attribute est invalide.',
|
||||
'numeric' => 'Le champ :attribute doit être numérique.',
|
||||
'password' => [
|
||||
'letters' => 'Le champ :attribute doit cotenir au moins une lettre.',
|
||||
'mixed' => 'Le champ :attribute doit conteniur au moins un caractère minuscule et un caractère majuscule.',
|
||||
'numbers' => 'Le champ :attribute doit contenir au moins un chiffre.',
|
||||
'symbols' => 'Le champ :attribute doit contenir au moins un symbole spécial.',
|
||||
'uncompromised' => 'L\':attribute est apparu dans une fuite de données. Veuillez choisir un autre :attribut.',
|
||||
],
|
||||
'present' => 'Le champ :attribute doit être présent.',
|
||||
'prohibited' => 'Le champ :attribute est interdit.',
|
||||
'prohibited_if' => 'Le champ :attribute est interdit quand :other est :value.',
|
||||
'prohibited_unless' => 'Le champ :attribute est interdit à moins que :other ne figure dans :values.',
|
||||
'prohibits' => 'Le champ :attribute interdit à :other d\'être présent.',
|
||||
'regex' => 'Le format du champ :attribute est invalide.',
|
||||
'required' => 'Le champ :attribute est obligatoire.',
|
||||
'required_array_keys' => 'Le champ :attribute doit contenir des entrées pour: :values.',
|
||||
'required_if' => 'Le champ :attribute est obligatoire quand :other est :value.',
|
||||
'required_if_accepted' => 'Le champ :attribute est nécessaire lorsque :other est accepté.',
|
||||
'required_unless' => 'Le champ :attribute est obligatoire, sauf si :other figure dans :values.',
|
||||
'required_with' => 'Le champ :attribute est obligatoire lorsque :values est présent.',
|
||||
'required_with_all' => 'Le champ :attribute est obligatoire lorsque :values est présent.',
|
||||
'required_without' => 'Le champ :attribute est requis lorsque :values n\'est pas présent',
|
||||
'required_without_all' => 'Le champ :attribute est nécessaire lorsqu\'aucune des valeurs :values n\'est présente.',
|
||||
'same' => 'Le champ :attribute doit correspondre à :other.',
|
||||
'size' => [
|
||||
'array' => 'Le champ :attribute doit contenir des :size éléments.',
|
||||
'file' => 'Le champ :attribute doit être :size kilo-octets.',
|
||||
'numeric' => 'Le champ :attribute doit être :size.',
|
||||
'string' => 'Le champ :attribute doit faire :size caractères.',
|
||||
],
|
||||
'starts_with' => 'Le champ :attribute doit commencer avec: :values.',
|
||||
'string' => 'Le champ :attribute doit être une chaine de caractères.',
|
||||
'timezone' => 'Le champ :attribute doit être un fuseau horaire valide.',
|
||||
'unique' => 'Il :attribute doit être unqieu.',
|
||||
'uploaded' => 'Il :attribute n\'a pas pu être téléchargé.',
|
||||
'uppercase' => 'Le champ :attribute doit être en majuscule.',
|
||||
'url' => 'Le champ :attribute doit être une URL valide.',
|
||||
'ulid' => 'Le champ :attribute doit être un ULID valide.',
|
||||
'uuid' => 'Le champ :attribute doit être un UUID valide.',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may specify custom validation messages for attributes using the
|
||||
| convention "attribute.rule" to name the lines. This makes it quick to
|
||||
| specify a specific custom language line for a given attribute rule.
|
||||
|
|
||||
*/
|
||||
|
||||
'custom' => [
|
||||
'attribute-name' => [
|
||||
'rule-name' => 'custom-message',
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Attributes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used to swap our attribute placeholder
|
||||
| with something more reader friendly such as "E-Mail Address" instead
|
||||
| of "email". This simply helps us make our message more expressive.
|
||||
|
|
||||
*/
|
||||
|
||||
'attributes' => [
|
||||
'address' => 'adresse',
|
||||
'age' => 'age',
|
||||
'body' => 'contenu',
|
||||
'cell' => 'cellule',
|
||||
'city' => 'ville',
|
||||
'country' => 'pays',
|
||||
'date' => 'date',
|
||||
'day' => 'jour',
|
||||
'excerpt' => 'résumé',
|
||||
'first_name' => 'prénom',
|
||||
'gender' => 'sexe',
|
||||
'marital_status' => 'situation familliale',
|
||||
'profession' => 'profession',
|
||||
'nationality' => 'nationalité',
|
||||
'hour' => 'heure',
|
||||
'last_name' => 'nom de famille',
|
||||
'message' => 'message',
|
||||
'minute' => 'minute',
|
||||
'mobile' => 'mobile',
|
||||
'month' => 'mois',
|
||||
'name' => 'nom',
|
||||
'zipcode' => 'code postal',
|
||||
'company_name' => 'entreprise',
|
||||
'neighborhood' => 'quartier',
|
||||
'number' => 'numéro',
|
||||
'password' => 'mot de passe',
|
||||
'phone' => 'téléphone',
|
||||
'second' => 'seconde',
|
||||
'sex' => 'sexe',
|
||||
'state' => 'région',
|
||||
'street' => 'rue',
|
||||
'subject' => 'sujet',
|
||||
'text' => 'texte',
|
||||
'time' => 'temps',
|
||||
'title' => 'titre',
|
||||
'username' => 'login',
|
||||
'year' => 'année',
|
||||
'description' => 'description',
|
||||
'password_confirmation' => 'confirmation du mot de passe',
|
||||
'current_password' => 'mot de passe actuel',
|
||||
'complement' => 'complément',
|
||||
'modality' => 'modalité',
|
||||
'category' => 'catégorie',
|
||||
'blood_type' => 'groupe sanguin',
|
||||
'birth_date' => 'date de naissance',
|
||||
],
|
||||
];
|
||||
@@ -1,20 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Authentication Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used during authentication for various
|
||||
| messages that we need to display to the user. You are free to modify
|
||||
| these language lines according to your application's requirements.
|
||||
|
|
||||
*/
|
||||
|
||||
'failed' => 'A megadott hitelesítési adatok nem egyeznek.',
|
||||
'password' => 'A megadott jelszó hibás.',
|
||||
'throttle' => 'Túl sok bejelentkezési kísérlet. Kérlek, várj :seconds másodpercet, mielőtt újra próbálkozol.',
|
||||
|
||||
];
|
||||
@@ -1,19 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Pagination Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used by the paginator library to build
|
||||
| the simple pagination links. You are free to change them to anything
|
||||
| you want to customize your views to better match your application.
|
||||
|
|
||||
*/
|
||||
|
||||
'previous' => '« Prethodno',
|
||||
'next' => 'Sljedeće »',
|
||||
|
||||
];
|
||||
@@ -1,22 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reset Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are the default lines which match reasons
|
||||
| that are given by the password broker for a password update attempt
|
||||
| has failed, such as for an invalid token or invalid new password.
|
||||
|
|
||||
*/
|
||||
|
||||
'reset' => 'Tvoja lozinka je uspješno resetirana!',
|
||||
'sent' => 'Poslali smo ti poveznicu za poništavanje lozinke putem e-pošte!',
|
||||
'throttled' => 'Molimo pričekaj malo prije nego što pokušaš ponovno.',
|
||||
'token' => 'Token za resetiranje lozinke je nevažeći ili je istekao.',
|
||||
'user' => 'Ne postoji korisnik s tom e-mail adresom.',
|
||||
|
||||
];
|
||||
@@ -1,290 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'Admin' => 'Admin',
|
||||
'User' => 'Korisnik',
|
||||
'abilities' => 'Sposobnosti',
|
||||
'active_tokens' => 'Aktivni tokeni',
|
||||
'all_tokens' => 'Svi tokeni',
|
||||
'api_token' => 'API token',
|
||||
'api_tokens' => 'API tokeni',
|
||||
'average' => 'Prosjek',
|
||||
'average_ms' => 'Prosjek (ms)',
|
||||
'Benchmarking' => 'Benchmarking',
|
||||
'bucket' => 'Kanta',
|
||||
'Checking' => 'Provjera',
|
||||
'comment' => 'Komentar',
|
||||
'comments' => 'Komentari',
|
||||
'Completed' => 'Završeno',
|
||||
'create_api_token' => 'Kreiraj API token',
|
||||
'created_at' => 'Kreirano',
|
||||
'created_from' => 'Kreirano od',
|
||||
'created_until' => 'Kreirano do',
|
||||
'cron_invalid' => 'Nevažeći cron izraz',
|
||||
'data_integration' => 'Integracija podataka',
|
||||
'database' => 'Baza podataka',
|
||||
'database_description' => 'Obavijesti poslane na ovaj kanal prikazuju se pod ikonom 🔔 u zaglavlju.',
|
||||
'details' => 'Detalji',
|
||||
'dashboard' => 'Nadzorna ploča',
|
||||
'discord' => 'Discord',
|
||||
'documentation' => 'Dokumentacija',
|
||||
'donate' => 'Doniraj',
|
||||
'download' => 'Preuzimanje',
|
||||
'download_latency' => 'Kašnjenje preuzimanja',
|
||||
'download_latency_high' => 'Visoko kašnjenje preuzimanja',
|
||||
'download_latency_iqm' => 'IQM kašnjenje preuzimanja',
|
||||
'download_latency_jitter' => 'Jitter kašnjenja preuzimanja',
|
||||
'download_latency_low' => 'Nisko kašnjenje preuzimanja',
|
||||
'download_mbps' => 'Preuzimanje (Mbps)',
|
||||
'download_ms' => 'Preuzimanje (ms)',
|
||||
'email' => 'Email',
|
||||
'email_address' => 'Email adresa',
|
||||
'enable' => 'Omogući',
|
||||
'enable_database_notifications' => 'Omogući obavijesti baze podataka',
|
||||
'enable_discord_webhook_notifications' => 'Omogući Discord webhook obavijesti',
|
||||
'enable_mail_notifications' => 'Omogući email obavijesti',
|
||||
'enable_pushover_webhook_notifications' => 'Omogući Pushover webhook obavijesti',
|
||||
'enable_telegram' => 'Omogući Telegram obavijesti',
|
||||
'enable_webhook_notifications' => 'Omogući webhook obavijesti',
|
||||
'error_message' => 'Poruka o grešci',
|
||||
'expired_tokens' => 'Istekli tokeni',
|
||||
'expires_at' => 'Ističe',
|
||||
'expires_at_helper_text' => 'Ostavite prazno ako ne želite datum isteka',
|
||||
'export_all_results' => 'Izvezi sve rezultate',
|
||||
'export_all_results_description' => 'Izvest će se svi stupci za sve rezultate.',
|
||||
'export_completed' => 'Izvoz završen, :count :rows izvezeno.',
|
||||
'export_current_results' => 'Izvezi trenutne rezultate',
|
||||
'Failed' => 'Neuspjelo',
|
||||
'failed_export' => ':count :rows nije uspjelo izvesti.',
|
||||
'Faker' => 'faker',
|
||||
'faster' => 'Brže',
|
||||
'general_settings' => [
|
||||
'label' => 'Opće postavke',
|
||||
'description' => 'Ovdje se mogu postaviti opće postavke aplikacije.',
|
||||
'app_settings' => 'Postavke aplikacije',
|
||||
'speedtest_settings' => 'Postavke testa brzine',
|
||||
'api_settings' => 'Api postavke',
|
||||
'app_name' => 'Naziv aplikacije',
|
||||
'asset_url' => 'URL resursa',
|
||||
'app_timezone' => 'Vremenska zona aplikacije',
|
||||
'chart_begin_at_zero' => 'Graf počinje od nule',
|
||||
'chart_datetime_format' => 'Format datuma i vremena za graf',
|
||||
'datetime_format' => 'Format datuma i vremena',
|
||||
'display_timezone' => 'Prikazana vremenska zona',
|
||||
'public_dashboard' => 'Javna nadzorna ploča',
|
||||
'speedtest_skip_ips' => 'Speedtest preskočeni IP-ovi',
|
||||
'speedtest_schedule' => 'Raspored speedtesta',
|
||||
'speedtest_schedule_description' => 'Unesite valjane <a href="https://crontab.guru/" target="_blank" class="text-primary-600 underline">cron izraze</a>. Primjer: <code>* * * * *</code> pokreće se svake minute.',
|
||||
'speedtest_servers' => 'Speedtest poslužitelji',
|
||||
'speedtest_blocked_servers' => 'Blokirani speedtest poslužitelji',
|
||||
'speedtest_interface' => 'Speedtest sučelje',
|
||||
'speedtest_checkinternet_url' => 'Speedtest URL za provjeru interneta',
|
||||
'threshold_enabled' => 'Prag omogućeno',
|
||||
'threshold_download' => 'Prag preuzimanja',
|
||||
'threshold_upload' => 'Prag slanja',
|
||||
'threshold_ping' => 'Prag pinga',
|
||||
'prune_results_older_than' => 'Izbriši rezultate starije od',
|
||||
'api_rate_limit' => 'API ograničenje brzine',
|
||||
|
||||
],
|
||||
'gotify' => 'Gotify',
|
||||
'gotify_enabled' => 'Omogući Gotify webhook obavijesti',
|
||||
'healthcheck_enabled' => 'Omogući healthcheck.io webhook obavijesti',
|
||||
'healthcheck_io' => 'Healthcheck.io',
|
||||
'healthy' => 'Zdravo',
|
||||
'high' => 'Visoko',
|
||||
'high_ms' => 'Visoko (ms)',
|
||||
'id' => 'ID',
|
||||
'infoluxdb' => 'InfluxDB v2',
|
||||
'infoluxdb_description' => 'Ako je omogućeno, novi Speedtest rezultati će biti poslani u InfluxDB.',
|
||||
'ip_address' => 'IP adresa',
|
||||
'iqm' => 'IQM',
|
||||
'isp' => 'ISP',
|
||||
'jitter' => 'Jitter',
|
||||
'last_24h' => 'Posljednjih 24 sata',
|
||||
'last_month' => 'Prošli mjesec',
|
||||
'last_used_at' => 'Zadnje korištenje',
|
||||
'last_week' => 'Prošli tjedan',
|
||||
'latest_download' => 'Zadnje preuzimanje',
|
||||
'latest_ping' => 'Zadnji ping',
|
||||
'latest_upload' => 'Zadnje slanje',
|
||||
'links' => 'Linkovi',
|
||||
'list_servers' => 'Popis servera',
|
||||
'list_servers_description' => 'Token dobiva ovlaštenje za popis servera.',
|
||||
'low' => 'Nisko',
|
||||
'low_ms' => 'Nisko (ms)',
|
||||
'mail' => 'E-mail',
|
||||
'message' => 'Poruka',
|
||||
'ms' => 'ms',
|
||||
'name' => 'Ime',
|
||||
'next_speedtest_at' => 'Sljedeći speedtest: ',
|
||||
'no' => 'Ne',
|
||||
'no_speedtests_scheduled' => 'Nema zakazanih speedtestova.',
|
||||
'notifications' => [
|
||||
'label' => 'Obavijesti',
|
||||
'database' => [
|
||||
'ping' => 'Kažem: ping',
|
||||
'pong' => 'Ti kažeš: pong',
|
||||
'received' => 'Primljena testna obavijest baze podataka!',
|
||||
'sent' => 'Poslana testna obavijest baze podataka.',
|
||||
],
|
||||
'discord' => [
|
||||
'add' => 'Dodaj Discord URL-ove!',
|
||||
'sent' => 'Poslana testna Discord obavijest.',
|
||||
'payload' => '👋 Testiramo Discord kanal za obavijesti.',
|
||||
],
|
||||
'health_check' => [
|
||||
'add' => 'Dodaj HealthCheck.io URL-ove!',
|
||||
'sent' => 'Poslana testna HealthCheck.io obavijest.',
|
||||
'payload' => '👋 Testiramo HealthCheck.io kanal za obavijesti.',
|
||||
],
|
||||
'gotfy' => [
|
||||
'add' => 'Dodaj Gotify URL-ove!',
|
||||
'sent' => 'Poslana testna Gotify obavijest.',
|
||||
'payload' => '👋 Testiramo Gotify kanal za obavijesti.',
|
||||
],
|
||||
'mail' => [
|
||||
'add' => 'Dodaj email primatelje!',
|
||||
'sent' => 'Poslana testna email obavijest.',
|
||||
],
|
||||
'ntfy' => [
|
||||
'add' => 'Dodaj ntfy URL-ove!',
|
||||
'sent' => 'Poslana testna ntfy obavijest.',
|
||||
'payload' => '👋 Testiramo ntfy kanal za obavijesti.',
|
||||
],
|
||||
'pushover' => [
|
||||
'add' => 'Dodaj Pushover URL-ove!',
|
||||
'sent' => 'Poslana testna Pushover obavijest.',
|
||||
'payload' => '👋 Testiramo Pushover kanal za obavijesti.',
|
||||
],
|
||||
'slack' => [
|
||||
'add' => 'Dodaj Slack URL-ove!',
|
||||
'sent' => 'Poslana testna Slack obavijest.',
|
||||
'payload' => '👋 Testiramo Slack kanal za obavijesti.',
|
||||
],
|
||||
'telegram' => [
|
||||
'add' => 'Dodaj Telegram primatelje!',
|
||||
'sent' => 'Poslana testna Telegram obavijest.',
|
||||
],
|
||||
'webhook' => [
|
||||
'add' => 'Dodaj webhook URL-ove!',
|
||||
'sent' => 'Poslana testna webhook obavijest.',
|
||||
'payload' => 'Testiranje webhook obavijesti',
|
||||
],
|
||||
],
|
||||
'notify_on_every_speedtest_run' => 'Obavijesti za svaki speedtest',
|
||||
'notify_on_threshold_failures' => 'Obavijesti kod prekoračenja praga',
|
||||
'ntfy' => 'ntfy',
|
||||
'ntfy_enabled' => 'Omogući ntfy webhook obavijesti',
|
||||
'only_healthy_speedtests' => 'Samo zdravi speedtestovi',
|
||||
'only_manual_speedtests' => 'Samo ručni speedtestovi',
|
||||
'only_scheduled_speedtests' => 'Samo zakazani speedtestovi',
|
||||
'only_unhealthy_speedtests' => 'Samo neispravni speedtestovi',
|
||||
'Ookla' => 'Ookla',
|
||||
'ookla_error' => 'Došlo je do greške pri listanju speedtest servera, provjerite logove.',
|
||||
'options' => 'Opcije',
|
||||
'org' => 'Organizacija',
|
||||
'packet_loss' => 'Gubitak paketa',
|
||||
'password' => 'Lozinka',
|
||||
'password_confirmation' => 'Potvrda lozinke',
|
||||
'password_placeholder' => 'Lozinka za Basic Auth (opcionalno)',
|
||||
'ping' => 'Ping',
|
||||
'ping_details' => 'Detalji pinga',
|
||||
'ping_high' => 'Visoki ping',
|
||||
'ping_jitter' => 'Ping jitter',
|
||||
'ping_low' => 'Niski ping',
|
||||
'ping_ms' => 'Ping (ms)',
|
||||
'platform' => 'Platforma',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_webhooks' => 'Pushover webhookovi',
|
||||
'read_results' => 'Čitanje rezultata',
|
||||
'read_results_description' => 'Token dobiva ovlaštenje za čitanje rezultata i statistika.',
|
||||
'recipients' => 'Primatelji',
|
||||
'results' => 'Rezultati',
|
||||
'result_overview' => 'Pregled rezultata',
|
||||
'role' => 'Uloga',
|
||||
'row' => '{1} :count red|[2,*] :count redova',
|
||||
'run_speedtest' => 'Pokreni speedtest',
|
||||
'run_speedtest_description' => 'Token dobiva ovlaštenje za pokretanje speedtesta.',
|
||||
'running' => 'Pokreće se',
|
||||
'scheduled' => 'Zakazano',
|
||||
'sending_test_data_to_influxdb' => 'Slanje testnih podataka u InfluxDB',
|
||||
'server_&_metadata' => 'Server & metapodaci',
|
||||
'server_host' => 'Host servera',
|
||||
'server_id' => 'ID servera',
|
||||
'server_location' => 'Lokacija servera',
|
||||
'server_name' => 'Ime servera',
|
||||
'service' => 'Usluga',
|
||||
'settings' => 'Postavke',
|
||||
'Skipped' => 'Preskočeno',
|
||||
'slack' => 'Slack',
|
||||
'slack_enabled' => 'Omogući Slack webhook obavijesti',
|
||||
'slower' => 'Sporije',
|
||||
'speedtest_tracker' => 'speedtest-tracker',
|
||||
'Started' => 'Pokrenuto',
|
||||
'starting_bulk_data_write_to_influxdb' => 'Početak masovnog unosa podataka u InfluxDB',
|
||||
'status' => 'Status',
|
||||
'status_fix' => [
|
||||
'confirm' => 'Želite li nastaviti?',
|
||||
'fail' => 'Naredba prekinuta.',
|
||||
'finished' => '✅ završeno!',
|
||||
'info_1' => 'Provjerava sve rezultate i popravlja status na „završeno” ili „neuspjelo” na osnovu podataka.',
|
||||
'info_2' => '📖 Pogledajte dokumentaciju: https://docs.speedtest-tracker.dev/other/commands',
|
||||
],
|
||||
'telegram' => 'Telegram',
|
||||
'telegram_chat_id' => 'Telegram chat ID',
|
||||
'telegram_disable_notification' => 'Šalji poruku tiho',
|
||||
'test_connection' => 'Testiraj vezu',
|
||||
'test_database_channel' => 'Testiraj kanal baze podataka',
|
||||
'test_discord_webhook' => 'Testiraj Discord webhook',
|
||||
'test_gotify_webhook' => 'Testiraj Gotify webhook',
|
||||
'test_healthcheck_webhook' => 'Testiraj healthcheck.io webhook',
|
||||
'test_mail_channel' => 'Testiraj email kanal',
|
||||
'test_ntfy_webhook' => 'Testiraj ntfy webhook',
|
||||
'test_pushover_webhook' => 'Testiraj Pushover webhook',
|
||||
'test_slack_webhook' => 'Testiraj Slack webhook',
|
||||
'test_telegram_channel' => 'Testiraj Telegram kanal',
|
||||
'test_webhook_channel' => 'Testiraj webhook kanal',
|
||||
'threshold_helper_text' => 'Obavijesti praga bit će poslane na /fail putanju u URL-u.',
|
||||
'thresholds' => 'Pragovi',
|
||||
'token' => 'Token',
|
||||
'token_created' => 'Token kreiran',
|
||||
'token_status' => 'Status tokena',
|
||||
'topic' => 'Tema',
|
||||
'triggers' => 'Okidači',
|
||||
'truncate' => 'Obriši',
|
||||
'truncate_results' => 'Obriši rezultate',
|
||||
'truncate_results_description' => 'Jeste li sigurni da želite obrisati sve rezultate? Ovo se ne može poništiti.',
|
||||
'update_comments' => 'Ažuriraj komentare',
|
||||
'updated_at' => 'Ažurirano',
|
||||
'update_available' => 'Dostupno ažuriranje!',
|
||||
'upload' => 'Slanje',
|
||||
'upload_latency' => 'Kašnjenje slanja',
|
||||
'upload_latency_high' => 'Visoko kašnjenje slanja',
|
||||
'upload_latency_jitter' => 'Jitter slanja',
|
||||
'upload_ms' => 'Slanje (ms)',
|
||||
'up_to_date' => 'Ažurirano',
|
||||
'url' => 'URL',
|
||||
'users' => 'Korisnici',
|
||||
'user_change' => [
|
||||
'info' => 'Uloga korisnika ažurirana.',
|
||||
'password_updated_info' => 'Lozinka za :email ažurirana.',
|
||||
'what_is_password' => 'Koja je nova lozinka?',
|
||||
'what_is_the_email_address' => 'Koja je email adresa?',
|
||||
'what_role' => 'Koja uloga treba biti korisniku?',
|
||||
],
|
||||
'user_key' => 'Korisnički ključ',
|
||||
'username' => 'Korisničko ime',
|
||||
'username_placeholder' => 'Korisničko ime za Basic Auth (opcionalno)',
|
||||
'verify_ssl' => 'Provjeri SSL',
|
||||
'view_on_speedtest_net' => 'Pogledaj na Speedtest.net',
|
||||
'Waiting' => 'Čekanje',
|
||||
'webhook' => 'Webhook',
|
||||
'webhooks' => 'Webhookovi',
|
||||
'yes' => 'Da',
|
||||
'your_ntfy_server_url' => 'URL vašeg ntfy servera',
|
||||
'your_ntfy_topic' => 'Vaša ntfy tema',
|
||||
'your_pushover_api_token' => 'Vaš Pushover API token',
|
||||
'your_pushover_user_key' => 'Vaš Pushover korisnički ključ',
|
||||
'your_token' => 'Vaš token',
|
||||
];
|
||||
@@ -1,230 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines contain the default error messages used by
|
||||
| the validator class. Some of these rules have multiple versions such
|
||||
| as the size rules. Feel free to tweak each of these messages here.
|
||||
|
|
||||
*/
|
||||
|
||||
'accepted' => 'Polje :attribute mora biti prihvaćeno.',
|
||||
'accepted_if' => 'Polje :attribute mora biti prihvaćeno kada je :other jednako :value.',
|
||||
'active_url' => 'Polje :attribute nije valjani URL.',
|
||||
'after' => 'Polje :attribute mora biti datum nakon :date.',
|
||||
'after_or_equal' => 'Polje :attribute mora biti datum jednak ili nakon :date.',
|
||||
'alpha' => 'Polje :attribute može sadržavati samo slova.',
|
||||
'alpha_dash' => 'Polje :attribute može sadržavati samo slova, brojeve, crtice i donje crte.',
|
||||
'alpha_num' => 'Polje :attribute može sadržavati samo slova i brojeve.',
|
||||
'array' => 'Polje :attribute mora biti niz.',
|
||||
'ascii' => 'Polje :attribute može sadržavati samo ASCII znakove.',
|
||||
'before' => 'Polje :attribute mora biti datum prije :date.',
|
||||
'before_or_equal' => 'Polje :attribute mora biti datum jednak ili prije :date.',
|
||||
'between' => [
|
||||
'array' => 'Polje :attribute mora imati između :min i :max stavki.',
|
||||
'file' => 'Polje :attribute mora biti između :min i :max kilobajta.',
|
||||
'numeric' => 'Polje :attribute mora biti između :min i :max.',
|
||||
'string' => 'Polje :attribute mora imati između :min i :max znakova.',
|
||||
],
|
||||
'boolean' => 'Polje :attribute mora biti istina ili laž.',
|
||||
'can' => 'Polje :attribute sadrži nevažeću vrijednost.',
|
||||
'confirmed' => 'Potvrda polja :attribute se ne podudara.',
|
||||
'current_password' => 'Unesena lozinka nije točna.',
|
||||
'date' => 'Polje :attribute nije valjani datum.',
|
||||
'date_equals' => 'Polje :attribute mora biti datum jednak :date.',
|
||||
'date_format' => 'Polje :attribute ne odgovara formatu :format.',
|
||||
'decimal' => 'Polje :attribute mora imati :decimal decimalnih mjesta.',
|
||||
'declined' => 'Polje :attribute mora biti odbijeno.',
|
||||
'declined_if' => 'Polje :attribute mora biti odbijeno kada je :other jednako ":value".',
|
||||
'different' => 'Polja :attribute i :other moraju biti različita.',
|
||||
'digits' => 'Polje :attribute mora imati :digits znamenki.',
|
||||
'digits_between' => 'Polje :attribute mora imati između :min i :max znamenki.',
|
||||
'dimensions' => 'Polje :attribute ima nevažeće dimenzije slike.',
|
||||
'distinct' => 'Polje :attribute ima dupliciranu vrijednost.',
|
||||
'doesnt_end_with' => 'Polje :attribute ne smije završavati sa: :values.',
|
||||
'doesnt_start_with' => 'Polje :attribute ne smije počinjati sa: :values.',
|
||||
'email' => 'Polje :attribute mora biti valjana email adresa.',
|
||||
'ends_with' => 'Polje :attribute mora završavati s jednom od sljedećih vrijednosti: :values.',
|
||||
'enum' => 'Odabrano polje :attribute nije važeće.',
|
||||
'exists' => 'Odabrano polje :attribute već postoji.',
|
||||
'file' => 'Polje :attribute mora biti datoteka.',
|
||||
'filled' => 'Polje :attribute mora imati vrijednost.',
|
||||
'gt' => [
|
||||
'array' => 'Polje :attribute mora imati više od :value stavki.',
|
||||
'file' => 'Polje :attribute mora biti veće od :value kilobajta.',
|
||||
'numeric' => 'Polje :attribute mora biti veće od :value.',
|
||||
'string' => 'Polje :attribute mora biti dulje od :value znakova.',
|
||||
],
|
||||
'gte' => [
|
||||
'array' => 'Polje :attribute mora imati najmanje :value stavki.',
|
||||
'file' => 'Polje :attribute mora biti najmanje :value kilobajta.',
|
||||
'numeric' => 'Polje :attribute mora biti najmanje :value.',
|
||||
'string' => 'Polje :attribute mora imati najmanje :value znakova.',
|
||||
],
|
||||
'image' => 'Polje :attribute mora biti slika.',
|
||||
'in' => 'Odabrano polje :attribute nije važeće.',
|
||||
'in_array' => 'Polje :attribute ne postoji u :other.',
|
||||
'integer' => 'Polje :attribute mora biti cijeli broj.',
|
||||
'ip' => 'Polje :attribute mora biti valjana IP adresa.',
|
||||
'ipv4' => 'Polje :attribute mora biti valjana IPv4 adresa.',
|
||||
'ipv6' => 'Polje :attribute mora biti valjana IPv6 adresa.',
|
||||
'json' => 'Polje :attribute mora biti valjani JSON.',
|
||||
'lowercase' => 'Polje :attribute može sadržavati samo mala slova.',
|
||||
'lt' => [
|
||||
'array' => 'Polje :attribute mora imati manje od :value stavki.',
|
||||
'file' => 'Polje :attribute mora biti manje od :value kilobajta.',
|
||||
'numeric' => 'Polje :attribute mora biti manje od :value.',
|
||||
'string' => 'Polje :attribute mora biti kraće od :value znakova.',
|
||||
],
|
||||
'lte' => [
|
||||
'array' => 'Polje :attribute ne smije imati više od :value stavki.',
|
||||
'file' => 'Polje :attribute ne smije biti veće od :value kilobajta.',
|
||||
'numeric' => 'Polje :attribute ne smije biti veće od :value.',
|
||||
'string' => 'Polje :attribute ne smije biti duže od :value znakova.',
|
||||
],
|
||||
'mac_address' => 'Polje :attribute mora biti valjana MAC adresa.',
|
||||
'max' => [
|
||||
'array' => 'Polje :attribute ne smije imati više od :max stavki.',
|
||||
'file' => 'Polje :attribute ne smije biti veće od :max kilobajta.',
|
||||
'numeric' => 'Polje :attribute ne smije biti veće od :max.',
|
||||
'string' => 'Polje :attribute ne smije biti duže od :max znakova.',
|
||||
],
|
||||
'max_digits' => 'Polje :attribute ne smije imati više od :max znamenki.',
|
||||
'mimes' => 'Polje :attribute mora biti datoteka tipa: :values.',
|
||||
'mimetypes' => 'Polje :attribute mora biti datoteka tipa: :values.',
|
||||
'min' => [
|
||||
'array' => 'Polje :attribute mora imati najmanje :min stavki.',
|
||||
'file' => 'Polje :attribute mora biti najmanje :min kilobajta.',
|
||||
'numeric' => 'Polje :attribute mora biti najmanje :min.',
|
||||
'string' => 'Polje :attribute mora imati najmanje :min znakova.',
|
||||
],
|
||||
'min_digits' => 'Polje :attribute mora imati najmanje :min znamenki.',
|
||||
'missing' => 'Polje :attribute mora biti odsutno.',
|
||||
'missing_if' => 'Polje :attribute mora biti odsutno kada je :other jednako ":value".',
|
||||
'missing_unless' => 'Polje :attribute mora biti odsutno osim ako je :other jednako ":value".',
|
||||
'missing_with' => 'Polje :attribute mora biti odsutno kada je prisutno :values.',
|
||||
'missing_with_all' => 'Polje :attribute mora biti odsutno kada su prisutna sva polja :values.',
|
||||
'multiple_of' => 'Polje :attribute mora biti višekratnik od :value.',
|
||||
'not_in' => 'Odabrano polje :attribute nije važeće.',
|
||||
'not_regex' => 'Format polja :attribute nije valjan.',
|
||||
'numeric' => 'Polje :attribute mora biti broj.',
|
||||
'password' => [
|
||||
'letters' => 'Polje :attribute mora sadržavati barem jedno slovo.',
|
||||
'mixed' => 'Polje :attribute mora sadržavati barem jedno veliko i jedno malo slovo.',
|
||||
'numbers' => 'Polje :attribute mora sadržavati barem jedan broj.',
|
||||
'symbols' => 'Polje :attribute mora sadržavati barem jedan simbol.',
|
||||
'uncompromised' => 'Polje :attribute je kompromitirano u curenju podataka. Molimo odaberite drugo :attribute.',
|
||||
],
|
||||
'present' => 'Polje :attribute mora biti prisutno.',
|
||||
'prohibited' => 'Polje :attribute je zabranjeno.',
|
||||
'prohibited_if' => 'Polje :attribute je zabranjeno kada je :other jednako ":value".',
|
||||
'prohibited_unless' => 'Polje :attribute je zabranjeno osim ako je :other jednako ":values".',
|
||||
'prohibits' => 'Polje :attribute zabranjuje postojanje polja :other.',
|
||||
'regex' => 'Format polja :attribute nije valjan.',
|
||||
'required' => 'Polje :attribute je obavezno.',
|
||||
'required_array_keys' => 'Polje :attribute mora sadržavati ključeve: :values.',
|
||||
'required_if' => 'Polje :attribute je obavezno kada je :other jednako ":value".',
|
||||
'required_if_accepted' => 'Polje :attribute je obavezno kada je :other prihvaćeno.',
|
||||
'required_unless' => 'Polje :attribute je obavezno osim ako je :other jednako ":values".',
|
||||
'required_with' => 'Polje :attribute je obavezno kada je prisutno :values.',
|
||||
'required_with_all' => 'Polje :attribute je obavezno kada su prisutna sva polja :values.',
|
||||
'required_without' => 'Polje :attribute je obavezno kada nije prisutno :values.',
|
||||
'required_without_all' => 'Polje :attribute je obavezno kada nijedno od polja :values nije prisutno.',
|
||||
'same' => 'Polja :attribute i :other se moraju podudarati.',
|
||||
'size' => [
|
||||
'array' => 'Polje :attribute mora sadržavati točno :size stavki.',
|
||||
'file' => 'Polje :attribute mora biti veličine :size kilobajta.',
|
||||
'numeric' => 'Polje :attribute mora biti :size.',
|
||||
'string' => 'Polje :attribute mora imati :size znakova.',
|
||||
],
|
||||
'starts_with' => 'Polje :attribute mora početi s jednom od sljedećih vrijednosti: :values.',
|
||||
'string' => 'Polje :attribute mora biti tekst.',
|
||||
'timezone' => 'Polje :attribute mora biti važeća vremenska zona.',
|
||||
'unique' => 'Polje :attribute već postoji.',
|
||||
'uploaded' => 'Učitavanje polja :attribute nije uspjelo.',
|
||||
'uppercase' => 'Polje :attribute može sadržavati samo velika slova.',
|
||||
'url' => 'Polje :attribute mora biti valjani URL.',
|
||||
'ulid' => 'Polje :attribute mora biti valjani ULID.',
|
||||
'uuid' => 'Polje :attribute mora biti valjani UUID.',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may specify custom validation messages for attributes using the
|
||||
| convention "attribute.rule" to name the lines. This makes it quick to
|
||||
| specify a specific custom language line for a given attribute rule.
|
||||
|
|
||||
*/
|
||||
|
||||
'custom' => [
|
||||
'attribute-name' => [
|
||||
'rule-name' => 'custom-message',
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Attributes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used to swap our attribute placeholder
|
||||
| with something more reader friendly such as "E-Mail Address" instead
|
||||
| of "email". This simply helps us make our message more expressive.
|
||||
|
|
||||
*/
|
||||
|
||||
'attributes' => [
|
||||
'address' => 'Adresa',
|
||||
'age' => 'Dob',
|
||||
'body' => 'Sadržaj',
|
||||
'cell' => 'Mobitel',
|
||||
'city' => 'Grad',
|
||||
'country' => 'Država',
|
||||
'date' => 'Datum',
|
||||
'day' => 'Dan',
|
||||
'excerpt' => 'Izvadak',
|
||||
'first_name' => 'Ime',
|
||||
'gender' => 'Spol',
|
||||
'marital_status' => 'Bračni status',
|
||||
'profession' => 'Zanimanje',
|
||||
'nationality' => 'Nacionalnost',
|
||||
'hour' => 'Sat',
|
||||
'last_name' => 'Prezime',
|
||||
'message' => 'Poruka',
|
||||
'minute' => 'Minuta',
|
||||
'mobile' => 'Broj mobitela',
|
||||
'month' => 'Mjesec',
|
||||
'name' => 'Ime',
|
||||
'zipcode' => 'Poštanski broj',
|
||||
'company_name' => 'Naziv tvrtke',
|
||||
'neighborhood' => 'Kvart',
|
||||
'number' => 'Broj',
|
||||
'password' => 'Lozinka',
|
||||
'phone' => 'Telefon',
|
||||
'second' => 'Sekunda',
|
||||
'sex' => 'Spol',
|
||||
'state' => 'Županija / Pokrajina',
|
||||
'street' => 'Ulica',
|
||||
'subject' => 'Predmet',
|
||||
'text' => 'Tekst',
|
||||
'time' => 'Vrijeme',
|
||||
'title' => 'Naslov',
|
||||
'username' => 'Korisničko ime',
|
||||
'year' => 'Godina',
|
||||
'description' => 'Opis',
|
||||
'password_confirmation' => 'Potvrda lozinke',
|
||||
'current_password' => 'Trenutna lozinka',
|
||||
'complement' => 'Dodatak',
|
||||
'modality' => 'Mod',
|
||||
'category' => 'Kategorija',
|
||||
'blood_type' => 'Krvna grupa',
|
||||
'birth_date' => 'Datum rođenja',
|
||||
],
|
||||
];
|
||||
@@ -1,20 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Authentication Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used during authentication for various
|
||||
| messages that we need to display to the user. You are free to modify
|
||||
| these language lines according to your application's requirements.
|
||||
|
|
||||
*/
|
||||
|
||||
'failed' => 'A megadott hitelesítési adatok nem egyeznek.',
|
||||
'password' => 'A megadott jelszó hibás.',
|
||||
'throttle' => 'Túl sok bejelentkezési kísérlet. Kérlek, várj :seconds másodpercet, mielőtt újra próbálkozol.',
|
||||
|
||||
];
|
||||
@@ -1,19 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Pagination Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used by the paginator library to build
|
||||
| the simple pagination links. You are free to change them to anything
|
||||
| you want to customize your views to better match your application.
|
||||
|
|
||||
*/
|
||||
|
||||
'previous' => '« Előző',
|
||||
'next' => 'Következő »',
|
||||
|
||||
];
|
||||
@@ -1,22 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reset Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are the default lines which match reasons
|
||||
| that are given by the password broker for a password update attempt
|
||||
| has failed, such as for an invalid token or invalid new password.
|
||||
|
|
||||
*/
|
||||
|
||||
'reset' => 'A jelszavadat sikeresen visszaállítottuk!',
|
||||
'sent' => 'Elküldtük e-mailben a jelszó-visszaállítási linket!',
|
||||
'throttled' => 'Kérlek, várj egy kicsit, mielőtt újra próbálkozol.',
|
||||
'token' => 'A jelszó-visszaállító hivatkozás érvénytelen vagy lejárt.',
|
||||
'user' => 'Ehhez az e-mail címhez nem található felhasználó.',
|
||||
|
||||
];
|
||||
@@ -1,289 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'Admin' => 'Admin',
|
||||
'User' => 'Felhasználó',
|
||||
'abilities' => 'Képességek',
|
||||
'active_tokens' => 'Aktív tokenek',
|
||||
'all_tokens' => 'Összes token',
|
||||
'api_token' => 'API token',
|
||||
'api_tokens' => 'API tokenek',
|
||||
'average' => 'Átlag',
|
||||
'average_ms' => 'Átlag (ms)',
|
||||
'Benchmarking' => 'Teljesítménymérés',
|
||||
'bucket' => 'Vödör',
|
||||
'Checking' => 'Ellenőrzés',
|
||||
'comment' => 'Megjegyzés',
|
||||
'comments' => 'Megjegyzések',
|
||||
'Completed' => 'Befejezve',
|
||||
'create_api_token' => 'API token létrehozása',
|
||||
'created_at' => 'Létrehozva',
|
||||
'created_from' => 'Létrehozva ettől',
|
||||
'created_until' => 'Létrehozva eddig',
|
||||
'cron_invalid' => 'Érvénytelen cron kifejezés',
|
||||
'data_integration' => 'Adatintegráció',
|
||||
'database' => 'Adatbázis',
|
||||
'database_description' => 'Az erre a csatornára küldött értesítések a fejlécben lévő 🔔 ikon alatt jelennek meg.',
|
||||
'details' => 'Részletek',
|
||||
'dashboard' => 'Irányítópult',
|
||||
'discord' => 'Discord',
|
||||
'documentation' => 'Dokumentáció',
|
||||
'donate' => 'Adományozás',
|
||||
'download' => 'Letöltés',
|
||||
'download_latency' => 'Letöltési késleltetés',
|
||||
'download_latency_high' => 'Magas letöltési késleltetés',
|
||||
'download_latency_iqm' => 'Letöltési késleltetés IQM',
|
||||
'download_latency_jitter' => 'Letöltési késleltetés jitter',
|
||||
'download_latency_low' => 'Alacsony letöltési késleltetés',
|
||||
'download_mbps' => 'Letöltés (Mbps)',
|
||||
'download_ms' => 'Letöltés (ms)',
|
||||
'email' => 'Email',
|
||||
'email_address' => 'Email cím',
|
||||
'enable' => 'Engedélyezés',
|
||||
'enable_database_notifications' => 'Adatbázis értesítések engedélyezése',
|
||||
'enable_discord_webhook_notifications' => 'Discord webhook értesítések engedélyezése',
|
||||
'enable_mail_notifications' => 'Email értesítések engedélyezése',
|
||||
'enable_pushover_webhook_notifications' => 'Pushover webhook értesítések engedélyezése',
|
||||
'enable_telegram' => 'Telegram értesítések engedélyezése',
|
||||
'enable_webhook_notifications' => 'Webhook értesítések engedélyezése',
|
||||
'error_message' => 'Hibaüzenet',
|
||||
'expired_tokens' => 'Lejárt tokenek',
|
||||
'expires_at' => 'Lejárat dátuma',
|
||||
'expires_at_helper_text' => 'Hagyja üresen, ha nem akar lejárati dátumot',
|
||||
'export_all_results' => 'Összes eredmény exportálása',
|
||||
'export_all_results_description' => 'Minden oszlopot exportálni fog az összes eredményhez.',
|
||||
'export_completed' => 'Az exportálás befejeződött, :count :rows exportálva.',
|
||||
'export_current_results' => 'Jelenlegi eredmények exportálása',
|
||||
'Failed' => 'Sikertelen',
|
||||
'failed_export' => ':count :rows nem sikerült exportálni.',
|
||||
'Faker' => 'faker',
|
||||
'faster' => 'Gyorsabb',
|
||||
'general_settings' => [
|
||||
'label' => 'Általános beállítások',
|
||||
'description' => 'Itt állíthatók be az alkalmazás általános beállításai.',
|
||||
'app_settings' => 'Alkalmazás beállítások',
|
||||
'speedtest_settings' => 'Sebességteszt beállítások',
|
||||
'api_settings' => 'Api beállítások',
|
||||
'app_name' => 'Alkalmazás neve',
|
||||
'asset_url' => 'Eszköz URL',
|
||||
'app_timezone' => 'Alkalmazás időzónája',
|
||||
'chart_begin_at_zero' => 'Diagram kezdése nullánál',
|
||||
'chart_datetime_format' => 'Diagram dátum-idő formátum',
|
||||
'datetime_format' => 'Dátum-idő formátum',
|
||||
'display_timezone' => 'Megjelenített időzóna',
|
||||
'public_dashboard' => 'Nyilvános irányítópult',
|
||||
'speedtest_skip_ips' => 'Speedtest kihagyott IP-k',
|
||||
'speedtest_schedule' => 'Speedtest ütemezés',
|
||||
'speedtest_schedule_description' => 'Adj meg érvényes <a href="https://crontab.guru/" target="_blank" class="text-primary-600 underline">cron kifejezéseket</a>. Példa: <code>* * * * *</code> minden percben lefut.',
|
||||
'speedtest_servers' => 'Speedtest szerverek',
|
||||
'speedtest_blocked_servers' => 'Speedtest blokkolt szerverek',
|
||||
'speedtest_interface' => 'Speedtest interfész',
|
||||
'speedtest_checkinternet_url' => 'Speedtest internet ellenőrző URL',
|
||||
'threshold_enabled' => 'Küszöbérték engedélyezve',
|
||||
'threshold_download' => 'Küszöbérték letöltés',
|
||||
'threshold_upload' => 'Küszöbérték feltöltés',
|
||||
'threshold_ping' => 'Küszöbérték ping',
|
||||
'prune_results_older_than' => 'Eredmények törlése, ha régebbi mint',
|
||||
'api_rate_limit' => 'API sebességkorlát',
|
||||
],
|
||||
'gotify' => 'Gotify',
|
||||
'gotify_enabled' => 'Gotify webhook értesítések engedélyezése',
|
||||
'healthcheck_enabled' => 'healthcheck.io webhook értesítések engedélyezése',
|
||||
'healthcheck_io' => 'Healthcheck.io',
|
||||
'healthy' => 'Egészséges',
|
||||
'high' => 'Magas',
|
||||
'high_ms' => 'Magas (ms)',
|
||||
'id' => 'Azonosító',
|
||||
'infoluxdb' => 'InfluxDB v2',
|
||||
'infoluxdb_description' => 'Ha engedélyezve van, az új Speedtest eredmények el lesznek küldve az InfluxDB-be.',
|
||||
'ip_address' => 'IP cím',
|
||||
'iqm' => 'IQM',
|
||||
'isp' => 'Szolgáltató',
|
||||
'jitter' => 'Jitter',
|
||||
'last_24h' => 'Elmúlt 24 óra',
|
||||
'last_month' => 'Elmúlt hónap',
|
||||
'last_used_at' => 'Utoljára használva',
|
||||
'last_week' => 'Elmúlt hét',
|
||||
'latest_download' => 'Legutóbbi letöltés',
|
||||
'latest_ping' => 'Legutóbbi ping',
|
||||
'latest_upload' => 'Legutóbbi feltöltés',
|
||||
'links' => 'Hivatkozások',
|
||||
'list_servers' => 'Szerverek listázása',
|
||||
'list_servers_description' => 'A token jogosultságot kap a szerverek listázására.',
|
||||
'low' => 'Alacsony',
|
||||
'low_ms' => 'Alacsony (ms)',
|
||||
'mail' => 'E-mail',
|
||||
'message' => 'Üzenet',
|
||||
'ms' => 'ms',
|
||||
'name' => 'Név',
|
||||
'next_speedtest_at' => 'Következő speedtest: ',
|
||||
'no' => 'Nem',
|
||||
'no_speedtests_scheduled' => 'Nincs ütemezett speedtest.',
|
||||
'notifications' => [
|
||||
'label' => 'Értesítések',
|
||||
'database' => [
|
||||
'ping' => 'Azt mondom: ping',
|
||||
'pong' => 'Te mondod: pong',
|
||||
'received' => 'Teszt adatbázis értesítés megérkezett!',
|
||||
'sent' => 'Teszt adatbázis értesítés elküldve.',
|
||||
],
|
||||
'discord' => [
|
||||
'add' => 'Adj hozzá Discord URL-eket!',
|
||||
'sent' => 'Teszt Discord értesítés elküldve.',
|
||||
'payload' => '👋 Teszteljük a Discord értesítési csatornát.',
|
||||
],
|
||||
'health_check' => [
|
||||
'add' => 'Adj hozzá HealthCheck.io URL-eket!',
|
||||
'sent' => 'Teszt HealthCheck.io értesítés elküldve.',
|
||||
'payload' => '👋 Teszteljük a HealthCheck.io értesítési csatornát.',
|
||||
],
|
||||
'gotfy' => [
|
||||
'add' => 'Adj hozzá Gotify URL-eket!',
|
||||
'sent' => 'Teszt Gotify értesítés elküldve.',
|
||||
'payload' => '👋 Teszteljük a Gotify értesítési csatornát.',
|
||||
],
|
||||
'mail' => [
|
||||
'add' => 'Adj hozzá email címzetteket!',
|
||||
'sent' => 'Teszt email értesítés elküldve.',
|
||||
],
|
||||
'ntfy' => [
|
||||
'add' => 'Adj hozzá ntfy URL-eket!',
|
||||
'sent' => 'Teszt ntfy értesítés elküldve.',
|
||||
'payload' => '👋 Teszteljük az ntfy értesítési csatornát.',
|
||||
],
|
||||
'pushover' => [
|
||||
'add' => 'Adj hozzá Pushover URL-eket!',
|
||||
'sent' => 'Teszt Pushover értesítés elküldve.',
|
||||
'payload' => '👋 Teszteljük a Pushover értesítési csatornát.',
|
||||
],
|
||||
'slack' => [
|
||||
'add' => 'Adj hozzá Slack URL-eket!',
|
||||
'sent' => 'Teszt Slack értesítés elküldve.',
|
||||
'payload' => '👋 Teszteljük a Slack értesítési csatornát.',
|
||||
],
|
||||
'telegram' => [
|
||||
'add' => 'Adj hozzá Telegram címzetteket!',
|
||||
'sent' => 'Teszt Telegram értesítés elküldve.',
|
||||
],
|
||||
'webhook' => [
|
||||
'add' => 'Adj hozzá webhook URL-eket!',
|
||||
'sent' => 'Teszt webhook értesítés elküldve.',
|
||||
'payload' => 'Webhook értesítés tesztelése',
|
||||
],
|
||||
],
|
||||
'notify_on_every_speedtest_run' => 'Értesítés minden speedtest után',
|
||||
'notify_on_threshold_failures' => 'Értesítés küszöbérték hibáknál',
|
||||
'ntfy' => 'ntfy',
|
||||
'ntfy_enabled' => 'ntfy webhook értesítések engedélyezése',
|
||||
'only_healthy_speedtests' => 'Csak egészséges speedtestek',
|
||||
'only_manual_speedtests' => 'Csak manuális speedtestek',
|
||||
'only_scheduled_speedtests' => 'Csak ütemezett speedtestek',
|
||||
'only_unhealthy_speedtests' => 'Csak hibás speedtestek',
|
||||
'Ookla' => 'Ookla',
|
||||
'ookla_error' => 'Hiba történt a speedtest szerverek listázása közben, nézd meg a naplókat.',
|
||||
'options' => 'Beállítások',
|
||||
'org' => 'Szervezet',
|
||||
'packet_loss' => 'Csomagvesztés',
|
||||
'password' => 'Jelszó',
|
||||
'password_confirmation' => 'Jelszó megerősítése',
|
||||
'password_placeholder' => 'Jelszó a Basic Auth-hoz (opcionális)',
|
||||
'ping' => 'Ping',
|
||||
'ping_details' => 'Ping részletek',
|
||||
'ping_high' => 'Magas ping',
|
||||
'ping_jitter' => 'Ping jitter',
|
||||
'ping_low' => 'Alacsony ping',
|
||||
'ping_ms' => 'Ping (ms)',
|
||||
'platform' => 'Platform',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_webhooks' => 'Pushover webhookok',
|
||||
'read_results' => 'Eredmények olvasása',
|
||||
'read_results_description' => 'A token jogosultságot kap eredmények és statisztikák olvasására.',
|
||||
'recipients' => 'Címzettek',
|
||||
'results' => 'Eredmények',
|
||||
'result_overview' => 'Eredmény áttekintés',
|
||||
'role' => 'Szerepkör',
|
||||
'row' => '{1} :count sor|[2,*] :count sor',
|
||||
'run_speedtest' => 'Speedtest futtatása',
|
||||
'run_speedtest_description' => 'A token jogosultságot kap speedtest futtatására.',
|
||||
'Running' => 'Fut',
|
||||
'scheduled' => 'Ütemezve',
|
||||
'sending_test_data_to_influxdb' => 'Tesztadatok küldése az InfluxDB-be',
|
||||
'server_&_metadata' => 'Szerver & Metaadatok',
|
||||
'server_host' => 'Szerver hoszt',
|
||||
'server_id' => 'Szerver azonosító',
|
||||
'server_location' => 'Szerver helyszín',
|
||||
'server_name' => 'Szerver neve',
|
||||
'service' => 'Szolgáltatás',
|
||||
'settings' => 'Beállítások',
|
||||
'Skipped' => 'Kihagyva',
|
||||
'slack' => 'Slack',
|
||||
'slack_enabled' => 'Slack webhook értesítések engedélyezése',
|
||||
'slower' => 'Lassabb',
|
||||
'speedtest_tracker' => 'speedtest-tracker',
|
||||
'Started' => 'Elindult',
|
||||
'starting_bulk_data_write_to_influxdb' => 'Tömeges adatok írásának indítása az InfluxDB-be',
|
||||
'status' => 'Állapot',
|
||||
'status_fix' => [
|
||||
'confirm' => 'Folytatod?',
|
||||
'fail' => 'Parancs megszakítva.',
|
||||
'finished' => '✅ kész!',
|
||||
'info_1' => 'Minden eredményt ellenőriz és a státuszt kijavítja „befejezett” vagy „sikertelen” értékre az adatok alapján.',
|
||||
'info_2' => '📖 Olvasd el a dokumentációt: https://docs.speedtest-tracker.dev/other/commands',
|
||||
],
|
||||
'telegram' => 'Telegram',
|
||||
'telegram_chat_id' => 'Telegram chat ID',
|
||||
'telegram_disable_notification' => 'Üzenet csendes küldése',
|
||||
'test_connection' => 'Kapcsolat tesztelése',
|
||||
'test_database_channel' => 'Adatbázis csatorna tesztelése',
|
||||
'test_discord_webhook' => 'Discord webhook tesztelése',
|
||||
'test_gotify_webhook' => 'Gotify webhook tesztelése',
|
||||
'test_healthcheck_webhook' => 'healthcheck.io webhook tesztelése',
|
||||
'test_mail_channel' => 'Email csatorna tesztelése',
|
||||
'test_ntfy_webhook' => 'ntfy webhook tesztelése',
|
||||
'test_pushover_webhook' => 'Pushover webhook tesztelése',
|
||||
'test_slack_webhook' => 'Slack webhook tesztelése',
|
||||
'test_telegram_channel' => 'Telegram csatorna tesztelése',
|
||||
'test_webhook_channel' => 'Webhook csatorna tesztelése',
|
||||
'threshold_helper_text' => 'A küszöbértesítések a /fail útvonalra lesznek küldve az URL-ben.',
|
||||
'thresholds' => 'Küszöbértékek',
|
||||
'token' => 'Token',
|
||||
'token_created' => 'Token létrehozva',
|
||||
'token_status' => 'Token állapot',
|
||||
'topic' => 'Téma',
|
||||
'triggers' => 'Triggerek',
|
||||
'truncate' => 'Törlés',
|
||||
'truncate_results' => 'Eredmények törlése',
|
||||
'truncate_results_description' => 'Biztosan törölni szeretnéd az összes eredményt? Ez nem visszavonható.',
|
||||
'update_comments' => 'Megjegyzések frissítése',
|
||||
'updated_at' => 'Frissítve',
|
||||
'update_available' => 'Frissítés elérhető!',
|
||||
'upload' => 'Feltöltés',
|
||||
'upload_latency' => 'Feltöltési késleltetés',
|
||||
'upload_latency_high' => 'Magas feltöltési késleltetés',
|
||||
'upload_latency_jitter' => 'Feltöltési jitter',
|
||||
'upload_ms' => 'Feltöltés (ms)',
|
||||
'up_to_date' => 'Naprakész',
|
||||
'url' => 'URL',
|
||||
'users' => 'Felhasználók',
|
||||
'user_change' => [
|
||||
'info' => 'Felhasználó szerepköre frissítve.',
|
||||
'password_updated_info' => ':email jelszava frissítve.',
|
||||
'what_is_password' => 'Mi az új jelszó?',
|
||||
'what_is_the_email_address' => 'Mi az email cím?',
|
||||
'what_role' => 'Milyen szerepköre legyen a felhasználónak?',
|
||||
],
|
||||
'user_key' => 'Felhasználói kulcs',
|
||||
'username' => 'Felhasználónév',
|
||||
'username_placeholder' => 'Felhasználónév a Basic Auth-hoz (opcionális)',
|
||||
'verify_ssl' => 'SSL ellenőrzése',
|
||||
'view_on_speedtest_net' => 'Megtekintés a Speedtest.net-en',
|
||||
'Waiting' => 'Várakozás',
|
||||
'webhook' => 'Webhook',
|
||||
'webhooks' => 'Webhookok',
|
||||
'yes' => 'Igen',
|
||||
'your_ntfy_server_url' => 'Az ntfy szervered URL-je',
|
||||
'your_ntfy_topic' => 'Az ntfy témád',
|
||||
'your_pushover_api_token' => 'A Pushover API tokened',
|
||||
'your_pushover_user_key' => 'A Pushover felhasználói kulcsod',
|
||||
'your_token' => 'A tokened',
|
||||
];
|
||||
@@ -1,230 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines contain the default error messages used by
|
||||
| the validator class. Some of these rules have multiple versions such
|
||||
| as the size rules. Feel free to tweak each of these messages here.
|
||||
|
|
||||
*/
|
||||
|
||||
'accepted' => 'A(z) :attribute el kell legyen fogadva.',
|
||||
'accepted_if' => 'A(z) :attribute el kell legyen fogadva, ha :other értéke :value.',
|
||||
'active_url' => 'A(z) :attribute nem érvényes URL.',
|
||||
'after' => 'A(z) :attribute dátumának későbbinek kell lennie, mint :date.',
|
||||
'after_or_equal' => 'A(z) :attribute dátumának legalább :date-nek kell lennie.',
|
||||
'alpha' => 'A(z) :attribute csak betűket tartalmazhat.',
|
||||
'alpha_dash' => 'A(z) :attribute csak betűket, számokat, kötőjeleket és aláhúzásjeleket tartalmazhat.',
|
||||
'alpha_num' => 'A(z) :attribute csak betűket és számokat tartalmazhat.',
|
||||
'array' => 'A(z) :attribute egy tömbnek kell lennie.',
|
||||
'ascii' => 'A(z) :attribute csak ASCII karaktereket tartalmazhat.',
|
||||
'before' => 'A(z) :attribute dátumának korábbinak kell lennie, mint :date.',
|
||||
'before_or_equal' => 'A(z) :attribute dátumának legfeljebb :date-nek kell lennie.',
|
||||
'between' => [
|
||||
'array' => 'A(z) :attribute :min és :max elem között kell legyen.',
|
||||
'file' => 'A(z) :attribute mérete :min és :max kilobájt között kell legyen.',
|
||||
'numeric' => 'A(z) :attribute értékének :min és :max között kell lennie.',
|
||||
'string' => 'A(z) :attribute :min és :max karakter között kell legyen.',
|
||||
],
|
||||
'boolean' => 'A(z) :attribute értéke igaz vagy hamis lehet.',
|
||||
'can' => 'A(z) :attribute érvénytelen értéket tartalmaz.',
|
||||
'confirmed' => 'A(z) :attribute megerősítése nem egyezik.',
|
||||
'current_password' => 'A megadott jelszó helytelen.',
|
||||
'date' => 'A(z) :attribute nem érvényes dátum.',
|
||||
'date_equals' => 'A(z) :attribute pontosan :date kell legyen.',
|
||||
'date_format' => 'A(z) :attribute nem felel meg a formátumnak: :format.',
|
||||
'decimal' => 'A(z) :attribute :decimal tizedesjegyet kell tartalmazzon.',
|
||||
'declined' => 'A(z) :attribute el kell legyen utasítva.',
|
||||
'declined_if' => 'A(z) :attribute el kell legyen utasítva, ha :other értéke ":value".',
|
||||
'different' => 'A(z) :attribute és :other nem lehet azonos.',
|
||||
'digits' => 'A(z) :attribute :digits számjegyből kell álljon.',
|
||||
'digits_between' => 'A(z) :attribute :min és :max számjegy közötti érték kell legyen.',
|
||||
'dimensions' => 'A(z) :attribute érvénytelen képméretet tartalmaz.',
|
||||
'distinct' => 'A(z) :attribute mező ismétlődő értéket tartalmaz.',
|
||||
'doesnt_end_with' => 'A(z) :attribute nem végződhet a következőkkel: :values.',
|
||||
'doesnt_start_with' => 'A(z) :attribute nem kezdődhet a következőkkel: :values.',
|
||||
'email' => 'A(z) :attribute érvényes e-mail cím kell legyen.',
|
||||
'ends_with' => 'A(z) :attribute a következő értékek egyikével kell végződjön: :values.',
|
||||
'enum' => 'A kiválasztott :attribute érvénytelen.',
|
||||
'exists' => 'A kiválasztott :attribute már létezik.',
|
||||
'file' => 'A(z) :attribute fájlnak kell lennie.',
|
||||
'filled' => 'A(z) :attribute mező nem lehet üres.',
|
||||
'gt' => [
|
||||
'array' => 'A(z) :attribute több mint :value elemet kell tartalmazzon.',
|
||||
'file' => 'A(z) :attribute mérete nagyobb kell legyen, mint :value kilobájt.',
|
||||
'numeric' => 'A(z) :attribute nagyobb kell legyen, mint :value.',
|
||||
'string' => 'A(z) :attribute hosszabb kell legyen, mint :value karakter.',
|
||||
],
|
||||
'gte' => [
|
||||
'array' => 'A(z) :attribute legalább :value elemet kell tartalmazzon.',
|
||||
'file' => 'A(z) :attribute mérete legalább :value kilobájt kell legyen.',
|
||||
'numeric' => 'A(z) :attribute legalább :value kell legyen.',
|
||||
'string' => 'A(z) :attribute legalább :value karakter hosszú kell legyen.',
|
||||
],
|
||||
'image' => 'A(z) :attribute képnek kell lennie.',
|
||||
'in' => 'A(z) :attribute értéke érvénytelen.',
|
||||
'in_array' => 'A(z) :attribute nem található meg a(z) :other mezőben.',
|
||||
'integer' => 'A(z) :attribute egész szám kell legyen.',
|
||||
'ip' => 'A(z) :attribute érvényes IP-cím kell legyen.',
|
||||
'ipv4' => 'A(z) :attribute érvényes IPv4-cím kell legyen.',
|
||||
'ipv6' => 'A(z) :attribute érvényes IPv6-cím kell legyen.',
|
||||
'json' => 'A(z) :attribute érvényes JSON kell legyen.',
|
||||
'lowercase' => 'A(z) :attribute csak kisbetűket tartalmazhat.',
|
||||
'lt' => [
|
||||
'array' => 'A(z) :attribute legfeljebb :value elemet tartalmazhat.',
|
||||
'file' => 'A(z) :attribute kisebb kell legyen, mint :value kilobájt.',
|
||||
'numeric' => 'A(z) :attribute kisebb kell legyen, mint :value.',
|
||||
'string' => 'A(z) :attribute rövidebb kell legyen, mint :value karakter.',
|
||||
],
|
||||
'lte' => [
|
||||
'array' => 'A(z) :attribute nem tartalmazhat több, mint :value elemet.',
|
||||
'file' => 'A(z) :attribute nem lehet nagyobb, mint :value kilobájt.',
|
||||
'numeric' => 'A(z) :attribute nem lehet nagyobb, mint :value.',
|
||||
'string' => 'A(z) :attribute nem lehet hosszabb, mint :value karakter.',
|
||||
],
|
||||
'mac_address' => 'A(z) :attribute érvényes MAC-cím kell legyen.',
|
||||
'max' => [
|
||||
'array' => 'A(z) :attribute legfeljebb :max elemet tartalmazhat.',
|
||||
'file' => 'A(z) :attribute legfeljebb :max kilobájt lehet.',
|
||||
'numeric' => 'A(z) :attribute nem lehet nagyobb, mint :max.',
|
||||
'string' => 'A(z) :attribute nem lehet hosszabb, mint :max karakter.',
|
||||
],
|
||||
'max_digits' => 'A(z) :attribute legfeljebb :max számjegyet tartalmazhat.',
|
||||
'mimes' => 'A(z) :attribute típusának a következők egyikének kell lennie: :values.',
|
||||
'mimetypes' => 'A(z) :attribute formátuma a következők egyike kell legyen: :values.',
|
||||
'min' => [
|
||||
'array' => 'A(z) :attribute legalább :min elemet kell tartalmazzon.',
|
||||
'file' => 'A(z) :attribute legalább :min kilobájt kell legyen.',
|
||||
'numeric' => 'A(z) :attribute legalább :min kell legyen.',
|
||||
'string' => 'A(z) :attribute legalább :min karakter hosszú kell legyen.',
|
||||
],
|
||||
'min_digits' => 'A(z) :attribute legalább :min számjegyet kell tartalmazzon.',
|
||||
'missing' => 'A(z) :attribute nem szerepelhet.',
|
||||
'missing_if' => 'A(z) :attribute nem lehet megadva, ha :other értéke ":value".',
|
||||
'missing_unless' => 'A(z) :attribute nem lehet megadva, kivéve ha :other értéke ":value".',
|
||||
'missing_with' => 'A(z) :attribute nem szerepelhet, ha :values meg van adva.',
|
||||
'missing_with_all' => 'A(z) :attribute nem szerepelhet, ha a(z) :values mezők mind meg vannak adva.',
|
||||
'multiple_of' => 'A(z) :attribute a(z) :value többszöröse kell legyen.',
|
||||
'not_in' => 'A kiválasztott :attribute érvénytelen.',
|
||||
'not_regex' => 'A(z) :attribute formátuma érvénytelen.',
|
||||
'numeric' => 'A(z) :attribute szám kell legyen.',
|
||||
'password' => [
|
||||
'letters' => 'A(z) :attribute tartalmazzon legalább egy betűt.',
|
||||
'mixed' => 'A(z) :attribute tartalmazzon legalább egy kis- és egy nagybetűt.',
|
||||
'numbers' => 'A(z) :attribute tartalmazzon legalább egy számot.',
|
||||
'symbols' => 'A(z) :attribute tartalmazzon legalább egy speciális karaktert.',
|
||||
'uncompromised' => 'A(z) :attribute egy adatszivárgásban érintett. Kérjük, válasszon másik :attribute-t.',
|
||||
],
|
||||
'present' => 'A(z) :attribute mezőnek jelen kell lennie.',
|
||||
'prohibited' => 'A(z) :attribute megadása nem engedélyezett.',
|
||||
'prohibited_if' => 'A(z) :attribute nem adható meg, ha :other értéke ":value".',
|
||||
'prohibited_unless' => 'A(z) :attribute csak akkor adható meg, ha :other értéke ":values".',
|
||||
'prohibits' => 'A(z) :attribute kizárja a(z) :other megadását.',
|
||||
'regex' => 'A(z) :attribute formátuma érvénytelen.',
|
||||
'required' => 'A(z) :attribute mező kötelező.',
|
||||
'required_array_keys' => 'A(z) :attribute mezőnek tartalmaznia kell a következő kulcsokat: :values.',
|
||||
'required_if' => 'A(z) :attribute kötelező, ha :other értéke ":value".',
|
||||
'required_if_accepted' => 'A(z) :attribute kötelező, ha :other el van fogadva.',
|
||||
'required_unless' => 'A(z) :attribute kötelező, kivéve, ha :other értéke ":values".',
|
||||
'required_with' => 'A(z) :attribute kötelező, ha :values meg van adva.',
|
||||
'required_with_all' => 'A(z) :attribute kötelező, ha minden :values mező ki van töltve.',
|
||||
'required_without' => 'A(z) :attribute kötelező, ha :values nincs megadva.',
|
||||
'required_without_all' => 'A(z) :attribute kötelező, ha egyik :values mező sincs megadva.',
|
||||
'same' => 'A(z) :attribute és :other mezőknek egyezniük kell.',
|
||||
'size' => [
|
||||
'array' => 'A(z) :attribute pontosan :size elemet kell tartalmazzon.',
|
||||
'file' => 'A(z) :attribute mérete :size kilobájt kell legyen.',
|
||||
'numeric' => 'A(z) :attribute értéke pontosan :size kell legyen.',
|
||||
'string' => 'A(z) :attribute pontosan :size karakter hosszú kell legyen.',
|
||||
],
|
||||
'starts_with' => 'A(z) :attribute a következők egyikével kell kezdődjön: :values.',
|
||||
'string' => 'A(z) :attribute szöveg kell legyen.',
|
||||
'timezone' => 'A(z) :attribute érvényes időzóna kell legyen.',
|
||||
'unique' => 'A(z) :attribute már foglalt.',
|
||||
'uploaded' => 'A(z) :attribute feltöltése sikertelen volt.',
|
||||
'uppercase' => 'A(z) :attribute csak nagybetűket tartalmazhat.',
|
||||
'url' => 'A(z) :attribute érvényes URL kell legyen.',
|
||||
'ulid' => 'A(z) :attribute érvényes ULID kell legyen.',
|
||||
'uuid' => 'A(z) :attribute érvényes UUID kell legyen.',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may specify custom validation messages for attributes using the
|
||||
| convention "attribute.rule" to name the lines. This makes it quick to
|
||||
| specify a specific custom language line for a given attribute rule.
|
||||
|
|
||||
*/
|
||||
|
||||
'custom' => [
|
||||
'attribute-name' => [
|
||||
'rule-name' => 'custom-message',
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Attributes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used to swap our attribute placeholder
|
||||
| with something more reader friendly such as "E-Mail Address" instead
|
||||
| of "email". This simply helps us make our message more expressive.
|
||||
|
|
||||
*/
|
||||
|
||||
'attributes' => [
|
||||
'address' => 'Cím',
|
||||
'age' => 'Életkor',
|
||||
'body' => 'Tartalom',
|
||||
'cell' => 'Mobil',
|
||||
'city' => 'Város',
|
||||
'country' => 'Ország',
|
||||
'date' => 'Dátum',
|
||||
'day' => 'Nap',
|
||||
'excerpt' => 'Kivonat',
|
||||
'first_name' => 'Keresztnév',
|
||||
'gender' => 'Nem',
|
||||
'marital_status' => 'Családi állapot',
|
||||
'profession' => 'Foglalkozás',
|
||||
'nationality' => 'Állampolgárság',
|
||||
'hour' => 'Óra',
|
||||
'last_name' => 'Vezetéknév',
|
||||
'message' => 'Üzenet',
|
||||
'minute' => 'Perc',
|
||||
'mobile' => 'Mobiltelefonszám',
|
||||
'month' => 'Hónap',
|
||||
'name' => 'Név',
|
||||
'zipcode' => 'Irányítószám',
|
||||
'company_name' => 'Cégnév',
|
||||
'neighborhood' => 'Környék',
|
||||
'number' => 'Szám',
|
||||
'password' => 'Jelszó',
|
||||
'phone' => 'Telefonszám',
|
||||
'second' => 'Másodperc',
|
||||
'sex' => 'Nem',
|
||||
'state' => 'Megye / Tartomány',
|
||||
'street' => 'Utca',
|
||||
'subject' => 'Tárgy',
|
||||
'text' => 'Szöveg',
|
||||
'time' => 'Idő',
|
||||
'title' => 'Cím',
|
||||
'username' => 'Felhasználónév',
|
||||
'year' => 'Év',
|
||||
'description' => 'Leírás',
|
||||
'password_confirmation' => 'Jelszó megerősítése',
|
||||
'current_password' => 'Jelenlegi jelszó',
|
||||
'complement' => 'Kiegészítés',
|
||||
'modality' => 'Mód',
|
||||
'category' => 'Kategória',
|
||||
'blood_type' => 'Vércsoport',
|
||||
'birth_date' => 'Születési dátum',
|
||||
],
|
||||
];
|
||||
@@ -1,20 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Authentication Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used during authentication for various
|
||||
| messages that we need to display to the user. You are free to modify
|
||||
| these language lines according to your application's requirements.
|
||||
|
|
||||
*/
|
||||
|
||||
'failed' => 'Queste credenziali non corrispondono ai nostri archivi.',
|
||||
'password' => 'La password fornita non è corretta.',
|
||||
'throttle' => 'Troppi tentativi di accesso. Riprova tra :seconds secondi.',
|
||||
|
||||
];
|
||||
@@ -1,19 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Pagination Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used by the paginator library to build
|
||||
| the simple pagination links. You are free to change them to anything
|
||||
| you want to customize your views to better match your application.
|
||||
|
|
||||
*/
|
||||
|
||||
'previous' => '« Precedente',
|
||||
'next' => 'Successivo »',
|
||||
|
||||
];
|
||||
@@ -1,23 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reset Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are the default lines which match reasons
|
||||
| that are given by the password broker for a password update attempt
|
||||
| has failed, such as for an invalid token or invalid new password.
|
||||
|
|
||||
*/
|
||||
|
||||
'reset' => 'La tua password è stata reimpostata!',
|
||||
'sent' => 'Ti abbiamo inviato via email il link per reimpostare la password!',
|
||||
'password' => 'La password e la conferma devono corrispondere e contenere almeno sei caratteri.',
|
||||
'throttled' => 'Per favore attendi prima di riprovare.',
|
||||
'token' => 'Questo token di reimpostazione della password non è valido.',
|
||||
'user' => "Non riusciamo a trovare un utente con quell'indirizzo email.",
|
||||
|
||||
];
|
||||
@@ -1,230 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines contain the default error messages used by
|
||||
| the validator class. Some of these rules have multiple versions such
|
||||
| as the size rules. Feel free to tweak each of these messages here.
|
||||
|
|
||||
*/
|
||||
|
||||
'accepted' => 'Il campo :attribute deve essere accettato.',
|
||||
'accepted_if' => 'Il campo :attribute deve essere accettato quando :other è :value.',
|
||||
'active_url' => 'Il campo :attribute deve essere un URL valido.',
|
||||
'after' => 'Il campo :attribute deve essere una data successiva a :date.',
|
||||
'after_or_equal' => 'Il campo :attribute deve essere una data successiva o uguale a :date.',
|
||||
'alpha' => 'Il campo :attribute deve contenere solo lettere.',
|
||||
'alpha_dash' => 'Il campo :attribute deve contenere solo lettere, numeri, trattini e trattini bassi.',
|
||||
'alpha_num' => 'Il campo :attribute deve contenere solo lettere e numeri.',
|
||||
'array' => 'Il campo :attribute deve essere un array.',
|
||||
'ascii' => 'Il campo :attribute deve contenere solo caratteri alfanumerici e simboli a un byte.',
|
||||
'before' => 'Il campo :attribute deve essere una data antecedente a :date.',
|
||||
'before_or_equal' => 'Il campo :attribute deve essere una data precedente o uguale a :date.',
|
||||
'between' => [
|
||||
'array' => 'Il campo :attribute deve contenere tra :min e :max elementi.',
|
||||
'file' => 'Il campo :attribute deve essere compreso tra :min e :max kilobyte.',
|
||||
'numeric' => 'Il campo :attribute deve essere compreso tra :min e :max.',
|
||||
'string' => 'Il campo :attribute deve contenere tra :min e :max caratteri.',
|
||||
],
|
||||
'boolean' => 'Il campo :attribute deve essere vero o falso.',
|
||||
'can' => 'Il campo :attribute contiene un valore non autorizzato.',
|
||||
'confirmed' => 'La conferma del campo :attribute non corrisponde.',
|
||||
'current_password' => 'La password non è corretta.',
|
||||
'date' => 'Il campo :attribute deve essere una data valida.',
|
||||
'date_equals' => 'Il campo :attribute deve essere una data uguale a :date.',
|
||||
'date_format' => 'Il campo :attribute deve corrispondere al formato :format.',
|
||||
'decimal' => 'Il campo :attribute deve avere :decimal cifre decimali.',
|
||||
'declined' => 'Il campo :attribute deve essere rifiutato.',
|
||||
'declined_if' => 'Il campo :attribute deve essere rifiutato quando :other è :value.',
|
||||
'different' => 'Il campo :attribute e :other devono essere diversi.',
|
||||
'digits' => 'Il campo :attribute deve essere composto da :digits cifre.',
|
||||
'digits_between' => 'Il campo :attribute deve essere compreso tra :min e :max cifre.',
|
||||
'dimensions' => 'Il campo :attribute presenta dimensioni della foto non valide.',
|
||||
'distinct' => 'Il campo :attribute ha un valore duplicato.',
|
||||
'doesnt_end_with' => 'Il campo :attribute non deve terminare con uno dei seguenti: :values.',
|
||||
'doesnt_start_with' => 'Il campo :attribute non deve iniziare con uno dei seguenti: :values.',
|
||||
'email' => 'Il campo :attribute deve essere un indirizzo email valido.',
|
||||
'ends_with' => 'Il campo :attribute deve terminare con uno dei seguenti: :values.',
|
||||
'enum' => 'Il :attribute selezionato non valido.',
|
||||
'exists' => 'Il :attribute selezionato non valido.',
|
||||
'file' => 'Il campo :attribute deve essere un file.',
|
||||
'filled' => 'Il campo :attribute deve avere un valore.',
|
||||
'gt' => [
|
||||
'array' => 'Il campo :attribute deve contenere più di :value elementi.',
|
||||
'file' => 'Il campo :attribute deve essere maggiore di :value kilobyte.',
|
||||
'numeric' => 'Il campo :attribute deve essere maggiore di :value.',
|
||||
'string' => 'Il campo :attribute deve essere maggiore di :value caratteri.',
|
||||
],
|
||||
'gte' => [
|
||||
'array' => 'Il campo :attribute deve contenere almeno :value elementi.',
|
||||
'file' => 'Il campo :attribute deve essere maggiore o uguale a :value kilobyte.',
|
||||
'numeric' => 'Il campo :attribute deve essere maggiore o uguale a :value.',
|
||||
'string' => 'Il campo :attribute deve essere maggiore o uguale a :value caratteri.',
|
||||
],
|
||||
'image' => 'Il campo :attribute deve essere una foto.',
|
||||
'in' => 'Il :attribute selezionato non è valido.',
|
||||
'in_array' => 'Il campo :attribute deve esistere in :other.',
|
||||
'integer' => 'Il campo :attribute deve essere un numero intero.',
|
||||
'ip' => 'Il campo :attribute deve essere un indirizzo IP valido.',
|
||||
'ipv4' => 'Il campo :attribute deve essere un indirizzo IPv4 valido.',
|
||||
'ipv6' => 'Il campo :attribute deve essere un indirizzo IPv6 valido.',
|
||||
'json' => 'Il campo :attribute deve essere una stringa JSON valida.',
|
||||
'lowercase' => 'Il campo :attribute deve essere in minuscolo.',
|
||||
'lt' => [
|
||||
'array' => 'Il campo :attribute deve contenere meno di :value elementi.',
|
||||
'file' => 'Il campo :attribute deve essere meno di :value kilobyte.',
|
||||
'numeric' => 'Il campo :attribute deve essere minore di :value.',
|
||||
'string' => 'Il campo :attribute deve essere minore di :value caratteri.',
|
||||
],
|
||||
'lte' => [
|
||||
'array' => 'Il campo :attribute non deve avere più di :value elementi.',
|
||||
'file' => 'Il campo :attribute deve essere minore di o uguale a :value kilobyte.',
|
||||
'numeric' => 'Il campo :attribute deve essere minore di o uguale a :value.',
|
||||
'string' => 'Il campo :attribute deve essere minore di o uguale a :value caratteri.',
|
||||
],
|
||||
'mac_address' => 'Il campo :attribute deve essere un indirizzo MAC valido.',
|
||||
'max' => [
|
||||
'array' => 'Il campo :attribute non deve avere più di :max elementi.',
|
||||
'file' => 'Il campo :attribute non deve essere maggiore di :max kilobyte.',
|
||||
'numeric' => 'Il campo :attribute non deve essere maggiore di :max.',
|
||||
'string' => 'Il campo :attribute non deve essere maggiore di :max caratteri.',
|
||||
],
|
||||
'max_digits' => 'Il campo :attribute non deve avere più di :max cifre.',
|
||||
'mimes' => 'Il campo :attribute deve essere un file di tipo: :values.',
|
||||
'mimetypes' => 'Il campo :attribute deve essere un file di tipo: :values.',
|
||||
'min' => [
|
||||
'array' => 'Il campo :attribute deve avere almeno :min elementi.',
|
||||
'file' => 'Il campo :attribute deve essere almeno :min kilobyte.',
|
||||
'numeric' => 'Il campo :attribute deve essere almeno :min.',
|
||||
'string' => 'Il campo :attribute deve essere almeno :min caratteri.',
|
||||
],
|
||||
'min_digits' => 'Il campo :attribute deve avere almeno :min cifre.',
|
||||
'missing' => 'Il campo :attribute deve essere mancante.',
|
||||
'missing_if' => 'Il campo :attribute deve essere mancante quando :other è :value.',
|
||||
'missing_unless' => 'Il campo :attribute deve essere mancante a meno che :other sia :value.',
|
||||
'missing_with' => 'Il campo :attribute deve essere mancante quando :values è presente.',
|
||||
'missing_with_all' => 'Il campo :attribute deve essere mancante quando :values sono presenti.',
|
||||
'multiple_of' => 'Il campo :attribute deve essere un multiplo di :value.',
|
||||
'not_in' => 'Il :attribute selezionato non è valido.',
|
||||
'not_regex' => 'Il formato del campo :attribute non è valido.',
|
||||
'numeric' => 'Il campo :attribute deve essere un numero.',
|
||||
'password' => [
|
||||
'letters' => 'Il campo :attribute deve contenere almeno una lettera.',
|
||||
'mixed' => 'Il campo :attribute deve contenere almeno un carattere minuscolo e un carattere maiuscolo.',
|
||||
'numbers' => 'Il campo :attribute deve contenere almeno un numero.',
|
||||
'symbols' => 'Il campo :attribute deve contenere almeno un simbolo speciale.',
|
||||
'uncompromised' => 'Il :attribute dato è apparso in un data leak. Per favore scegliere un :attribute differente.',
|
||||
],
|
||||
'present' => 'Il campo :attribute deve essere presente.',
|
||||
'prohibited' => 'Il campo :attribute è proibito.',
|
||||
'prohibited_if' => 'Il campo :attribute è proibito quando :other è :value.',
|
||||
'prohibited_unless' => 'Il campo :attribute è proibito a meno che :other sia in :values.',
|
||||
'prohibits' => 'Il campo :attribute proibisce :other da essere presente.',
|
||||
'regex' => 'Il formato del campo :attribute non è valido.',
|
||||
'required' => 'Il campo :attribute è richiesto.',
|
||||
'required_array_keys' => 'Il campo :attribute deve contenere inserimenti per: :values.',
|
||||
'required_if' => 'Il campo :attribute è richiesto quando :other è :value.',
|
||||
'required_if_accepted' => 'Il campo :attribute è richiesto quando :other è accettato.',
|
||||
'required_unless' => 'Il campo :attribute è richiesto a meno che :other sia in :values.',
|
||||
'required_with' => 'Il campo :attribute è richiesto quando :values è presente.',
|
||||
'required_with_all' => 'Il campo :attribute è richiesto quando :values sono presenti.',
|
||||
'required_without' => 'Il campo :attribute è richiesto quando :values non è presente.',
|
||||
'required_without_all' => 'Il campo :attribute è richiesto quando nessuno dei :values sono presenti.',
|
||||
'same' => 'Il campo :attribute deve corrispondere a :other.',
|
||||
'size' => [
|
||||
'array' => 'Il campo :attribute deve contenere :size elementi.',
|
||||
'file' => 'Il campo :attribute deve essere :size kilobyte.',
|
||||
'numeric' => 'Il campo :attribute deve essere :size.',
|
||||
'string' => 'Il campo :attribute deve essere :size caratteri.',
|
||||
],
|
||||
'starts_with' => 'Il campo :attribute deve iniziare con uno dei seguenti: :values.',
|
||||
'string' => 'Il campo :attribute deve essere una stringa.',
|
||||
'timezone' => 'Il campo :attribute deve essere un fuso orario valido.',
|
||||
'unique' => 'Il :attribute è già stato preso.',
|
||||
'uploaded' => 'Il :attribute non è riuscito ad essere caricato.',
|
||||
'uppercase' => 'Il campo :attribute deve essere maiuscolo.',
|
||||
'url' => 'Il campo :attribute deve essere un URL valido.',
|
||||
'ulid' => 'Il campo :attribute deve essere un ULID valido.',
|
||||
'uuid' => 'Il campo :attribute deve essere un UUID valido.',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may specify custom validation messages for attributes using the
|
||||
| convention "attribute.rule" to name the lines. This makes it quick to
|
||||
| specify a specific custom language line for a given attribute rule.
|
||||
|
|
||||
*/
|
||||
|
||||
'custom' => [
|
||||
'attribute-name' => [
|
||||
'rule-name' => 'custom-message',
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Attributes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used to swap our attribute placeholder
|
||||
| with something more reader friendly such as "E-Mail Address" instead
|
||||
| of "email". This simply helps us make our message more expressive.
|
||||
|
|
||||
*/
|
||||
|
||||
'attributes' => [
|
||||
'address' => 'indirizzo',
|
||||
'age' => 'età',
|
||||
'body' => 'corpo del testo',
|
||||
'cell' => 'cella',
|
||||
'city' => 'città',
|
||||
'country' => 'nazione',
|
||||
'date' => 'data',
|
||||
'day' => 'giorno',
|
||||
'excerpt' => 'sommario',
|
||||
'first_name' => 'nome',
|
||||
'gender' => 'identità di genere',
|
||||
'marital_status' => 'stato civile',
|
||||
'profession' => 'professione',
|
||||
'nationality' => 'nazionalità',
|
||||
'hour' => 'ora',
|
||||
'last_name' => 'cognome',
|
||||
'message' => 'messaggio',
|
||||
'minute' => 'minuto',
|
||||
'mobile' => 'cellulare',
|
||||
'month' => 'mese',
|
||||
'name' => 'nome',
|
||||
'zipcode' => 'CAP',
|
||||
'company_name' => 'nome azienda',
|
||||
'neighborhood' => 'quartiere',
|
||||
'number' => 'numero',
|
||||
'password' => 'password',
|
||||
'phone' => 'telefono',
|
||||
'second' => 'secondo',
|
||||
'sex' => 'sesso',
|
||||
'state' => 'stato',
|
||||
'street' => 'strada',
|
||||
'subject' => 'oggetto',
|
||||
'text' => 'testo',
|
||||
'time' => 'ora',
|
||||
'title' => 'titolo',
|
||||
'username' => 'username',
|
||||
'year' => 'anno',
|
||||
'description' => 'descrizione',
|
||||
'password_confirmation' => 'conferma password',
|
||||
'current_password' => 'password corrente',
|
||||
'complement' => 'complemento',
|
||||
'modality' => 'modalità',
|
||||
'category' => 'categoria',
|
||||
'blood_type' => 'gruppo sanguigno',
|
||||
'birth_date' => 'data di nascita',
|
||||
],
|
||||
];
|
||||
@@ -1,20 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Authentication Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used during authentication for various
|
||||
| messages that we need to display to the user. You are free to modify
|
||||
| these language lines according to your application's requirements.
|
||||
|
|
||||
*/
|
||||
|
||||
'failed' => 'De ingevoerde inloggegevens komen niet overeen.',
|
||||
'password' => 'Het ingevoerde wachtwoord is onjuist.',
|
||||
'throttle' => 'Te veel inlogpogingen. Wacht :seconds seconden en probeer het opnieuw.',
|
||||
|
||||
];
|
||||
@@ -1,19 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Pagination Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used by the paginator library to build
|
||||
| the simple pagination links. You are free to change them to anything
|
||||
| you want to customize your views to better match your application.
|
||||
|
|
||||
*/
|
||||
|
||||
'previous' => '« Vorige',
|
||||
'next' => 'Volgende »',
|
||||
|
||||
];
|
||||
@@ -1,23 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reset Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are the default lines which match reasons
|
||||
| that are given by the password broker for a password update attempt
|
||||
| has failed, such as for an invalid token or invalid new password.
|
||||
|
|
||||
*/
|
||||
|
||||
'reset' => 'Je wachtwoord is succesvol opnieuw ingesteld!',
|
||||
'sent' => 'We hebben je een e-mail gestuurd met een link om je wachtwoord opnieuw in te stellen!',
|
||||
'password' => 'Het wachtwoord moet minstens 6 tekens lang zijn en overeenkomen met de bevestiging.',
|
||||
'throttled' => 'Wacht even voordat je het opnieuw probeert.',
|
||||
'token' => 'De link om het wachtwoord opnieuw in te stellen is ongeldig of verlopen.',
|
||||
'user' => 'Er bestaat geen gebruikersaccount met dit e-mailadres.',
|
||||
|
||||
];
|
||||
@@ -1,230 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines contain the default error messages used by
|
||||
| the validator class. Some of these rules have multiple versions such
|
||||
| as the size rules. Feel free to tweak each of these messages here.
|
||||
|
|
||||
*/
|
||||
|
||||
'accepted' => ':attribute moet worden geaccepteerd.',
|
||||
'accepted_if' => ':attribute moet worden geaccepteerd als :other :value is.',
|
||||
'active_url' => ':attribute moet een geldige URL zijn.',
|
||||
'after' => ':attribute moet een datum na :date zijn.',
|
||||
'after_or_equal' => ':attribute moet een datum zijn op of na :date.',
|
||||
'alpha' => ':attribute mag alleen letters bevatten.',
|
||||
'alpha_dash' => ':attribute mag alleen letters, cijfers, koppeltekens en underscores bevatten.',
|
||||
'alpha_num' => ':attribute mag alleen letters en cijfers bevatten.',
|
||||
'array' => ':attribute moet een lijst zijn.',
|
||||
'ascii' => ':attribute mag alleen standaardtekens bevatten.',
|
||||
'before' => ':attribute moet een datum voor :date zijn.',
|
||||
'before_or_equal' => ':attribute moet een datum zijn op of voor :date.',
|
||||
'between' => [
|
||||
'array' => ':attribute moet tussen :min en :max items bevatten.',
|
||||
'file' => ':attribute moet tussen :min en :max kilobytes groot zijn.',
|
||||
'numeric' => ':attribute moet tussen :min en :max liggen.',
|
||||
'string' => ':attribute moet tussen :min en :max tekens lang zijn.',
|
||||
],
|
||||
'boolean' => ':attribute moet waar of onwaar zijn.',
|
||||
'can' => ':attribute bevat een ongeldige waarde.',
|
||||
'confirmed' => ':attribute komt niet overeen met de bevestiging.',
|
||||
'current_password' => 'Het ingevoerde wachtwoord is onjuist.',
|
||||
'date' => ':attribute is geen geldige datum.',
|
||||
'date_equals' => ':attribute moet exact :date zijn.',
|
||||
'date_format' => ':attribute komt niet overeen met het formaat :format.',
|
||||
'decimal' => ':attribute moet :decimal decimalen bevatten.',
|
||||
'declined' => ':attribute moet worden afgewezen.',
|
||||
'declined_if' => ':attribute moet worden afgewezen als :other :value is.',
|
||||
'different' => ':attribute en :other moeten verschillend zijn.',
|
||||
'digits' => ':attribute moet uit :digits cijfers bestaan.',
|
||||
'digits_between' => ':attribute moet tussen :min en :max cijfers bevatten.',
|
||||
'dimensions' => ':attribute heeft ongeldige afbeeldingsafmetingen.',
|
||||
'distinct' => ':attribute bevat een dubbele waarde.',
|
||||
'doesnt_end_with' => ':attribute mag niet eindigen met een van de volgende: :values.',
|
||||
'doesnt_start_with' => ':attribute mag niet beginnen met een van de volgende: :values.',
|
||||
'email' => ':attribute moet een geldig e-mailadres zijn.',
|
||||
'ends_with' => ':attribute moet eindigen met een van de volgende: :values.',
|
||||
'enum' => 'De geselecteerde waarde voor :attribute is ongeldig.',
|
||||
'exists' => ':attribute bestaat al.',
|
||||
'file' => ':attribute moet een bestand zijn.',
|
||||
'filled' => ':attribute mag niet leeg zijn.',
|
||||
'gt' => [
|
||||
'array' => ':attribute moet meer dan :value items bevatten.',
|
||||
'file' => ':attribute moet groter zijn dan :value kilobytes.',
|
||||
'numeric' => ':attribute moet groter zijn dan :value.',
|
||||
'string' => ':attribute moet meer dan :value tekens bevatten.',
|
||||
],
|
||||
'gte' => [
|
||||
'array' => ':attribute moet minimaal :value items bevatten.',
|
||||
'file' => ':attribute moet minimaal :value kilobytes zijn.',
|
||||
'numeric' => ':attribute moet minimaal :value zijn.',
|
||||
'string' => ':attribute moet minimaal :value tekens bevatten.',
|
||||
],
|
||||
'image' => ':attribute moet een afbeelding zijn.',
|
||||
'in' => 'De geselecteerde waarde voor :attribute is ongeldig.',
|
||||
'in_array' => ':attribute moet voorkomen in :other.',
|
||||
'integer' => ':attribute moet een geheel getal zijn.',
|
||||
'ip' => ':attribute moet een geldig IP-adres zijn.',
|
||||
'ipv4' => ':attribute moet een geldig IPv4-adres zijn.',
|
||||
'ipv6' => ':attribute moet een geldig IPv6-adres zijn.',
|
||||
'json' => ':attribute moet een geldige JSON-string zijn.',
|
||||
'lowercase' => ':attribute moet alleen kleine letters bevatten.',
|
||||
'lt' => [
|
||||
'array' => ':attribute mag maximaal :value items bevatten.',
|
||||
'file' => ':attribute moet kleiner zijn dan :value kilobytes.',
|
||||
'numeric' => ':attribute moet kleiner zijn dan :value.',
|
||||
'string' => ':attribute moet minder dan :value tekens bevatten.',
|
||||
],
|
||||
'lte' => [
|
||||
'array' => ':attribute mag niet meer dan :value items bevatten.',
|
||||
'file' => ':attribute mag maximaal :value kilobytes zijn.',
|
||||
'numeric' => ':attribute mag maximaal :value zijn.',
|
||||
'string' => ':attribute mag maximaal :value tekens bevatten.',
|
||||
],
|
||||
'mac_address' => ':attribute moet een geldig MAC-adres zijn.',
|
||||
'max' => [
|
||||
'array' => ':attribute mag maximaal :max items bevatten.',
|
||||
'file' => ':attribute mag maximaal :max kilobytes zijn.',
|
||||
'numeric' => ':attribute mag niet groter zijn dan :max.',
|
||||
'string' => ':attribute mag niet langer zijn dan :max tekens.',
|
||||
],
|
||||
'max_digits' => ':attribute mag maximaal :max cijfers bevatten.',
|
||||
'mimes' => ':attribute moet een bestand zijn van het type: :values.',
|
||||
'mimetypes' => ':attribute moet een bestand zijn van het type: :values.',
|
||||
'min' => [
|
||||
'array' => ':attribute moet minstens :min items bevatten.',
|
||||
'file' => ':attribute moet minstens :min kilobytes zijn.',
|
||||
'numeric' => ':attribute moet minstens :min zijn.',
|
||||
'string' => ':attribute moet minstens :min tekens bevatten.',
|
||||
],
|
||||
'min_digits' => ':attribute moet minstens :min cijfers bevatten.',
|
||||
'missing' => ':attribute moet ontbreken.',
|
||||
'missing_if' => ':attribute moet ontbreken als :other ":value" is.',
|
||||
'missing_unless' => ':attribute moet ontbreken tenzij :other :value is.',
|
||||
'missing_with' => ':attribute moet ontbreken als :values aanwezig is.',
|
||||
'missing_with_all' => ':attribute moet ontbreken als :values aanwezig zijn.',
|
||||
'multiple_of' => ':attribute moet een veelvoud van :value zijn.',
|
||||
'not_in' => 'De geselecteerde waarde voor :attribute is ongeldig.',
|
||||
'not_regex' => 'Het formaat van :attribute is ongeldig.',
|
||||
'numeric' => ':attribute moet een getal zijn.',
|
||||
'password' => [
|
||||
'letters' => ':attribute moet minstens één letter bevatten.',
|
||||
'mixed' => ':attribute moet minstens één hoofdletter en één kleine letter bevatten.',
|
||||
'numbers' => ':attribute moet minstens één cijfer bevatten.',
|
||||
'symbols' => ':attribute moet minstens één speciaal teken bevatten.',
|
||||
'uncompromised' => 'Het opgegeven :attribute is aangetroffen in een datalek. Kies een andere :attribute.',
|
||||
],
|
||||
'present' => ':attribute moet aanwezig zijn.',
|
||||
'prohibited' => ':attribute mag niet worden opgegeven.',
|
||||
'prohibited_if' => ':attribute mag niet worden opgegeven als :other ":value" is.',
|
||||
'prohibited_unless' => ':attribute mag alleen worden opgegeven als :other één van de volgende waarden heeft: :values.',
|
||||
'prohibits' => ':attribute staat niet toe dat :other aanwezig is.',
|
||||
'regex' => 'Het formaat van :attribute is ongeldig.',
|
||||
'required' => ':attribute is verplicht.',
|
||||
'required_array_keys' => ':attribute moet waarden bevatten voor: :values.',
|
||||
'required_if' => ':attribute is verplicht als :other ":value" is.',
|
||||
'required_if_accepted' => ':attribute is verplicht als :other is geaccepteerd.',
|
||||
'required_unless' => ':attribute is verplicht tenzij :other één van de volgende waarden heeft: :values.',
|
||||
'required_with' => ':attribute is verplicht als :values aanwezig is.',
|
||||
'required_with_all' => ':attribute is verplicht als alle :values aanwezig zijn.',
|
||||
'required_without' => ':attribute is verplicht als :values niet aanwezig is.',
|
||||
'required_without_all' => ':attribute is verplicht als geen van :values aanwezig zijn.',
|
||||
'same' => ':attribute en :other moeten overeenkomen.',
|
||||
'size' => [
|
||||
'array' => ':attribute moet precies :size items bevatten.',
|
||||
'file' => ':attribute moet :size kilobytes zijn.',
|
||||
'numeric' => ':attribute moet :size zijn.',
|
||||
'string' => ':attribute moet :size tekens lang zijn.',
|
||||
],
|
||||
'starts_with' => ':attribute moet beginnen met één van de volgende: :values.',
|
||||
'string' => ':attribute moet een tekst zijn.',
|
||||
'timezone' => ':attribute moet een geldige tijdzone zijn.',
|
||||
'unique' => ':attribute is al in gebruik.',
|
||||
'uploaded' => ':attribute kon niet worden geüpload.',
|
||||
'uppercase' => ':attribute moet alleen hoofdletters bevatten.',
|
||||
'url' => ':attribute moet een geldige URL zijn.',
|
||||
'ulid' => ':attribute moet een geldige ULID zijn.',
|
||||
'uuid' => ':attribute moet een geldige UUID zijn.',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may specify custom validation messages for attributes using the
|
||||
| convention "attribute.rule" to name the lines. This makes it quick to
|
||||
| specify a specific custom language line for a given attribute rule.
|
||||
|
|
||||
*/
|
||||
|
||||
'custom' => [
|
||||
'attribute-name' => [
|
||||
'rule-name' => 'aangepaste-bericht',
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Attributes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used to swap our attribute placeholder
|
||||
| with something more reader friendly such as "E-Mail Address" instead
|
||||
| of "email". This simply helps us make our message more expressive.
|
||||
|
|
||||
*/
|
||||
|
||||
'attributes' => [
|
||||
'address' => 'Adres',
|
||||
'age' => 'Leeftijd',
|
||||
'body' => 'Inhoud',
|
||||
'cell' => 'Mobiel',
|
||||
'city' => 'Stad',
|
||||
'country' => 'Land',
|
||||
'date' => 'Datum',
|
||||
'day' => 'Dag',
|
||||
'excerpt' => 'Samenvatting',
|
||||
'first_name' => 'Voornaam',
|
||||
'gender' => 'Geslacht',
|
||||
'marital_status' => 'Burgerlijke staat',
|
||||
'profession' => 'Beroep',
|
||||
'nationality' => 'Nationaliteit',
|
||||
'hour' => 'Uur',
|
||||
'last_name' => 'Achternaam',
|
||||
'message' => 'Bericht',
|
||||
'minute' => 'Minuut',
|
||||
'mobile' => 'Mobiele nummer',
|
||||
'month' => 'Maand',
|
||||
'name' => 'Naam',
|
||||
'zipcode' => 'Postcode',
|
||||
'company_name' => 'Bedrijfsnaam',
|
||||
'neighborhood' => 'Wijk',
|
||||
'number' => 'Nummer',
|
||||
'password' => 'Wachtwoord',
|
||||
'phone' => 'Telefoonnummer',
|
||||
'second' => 'Seconde',
|
||||
'sex' => 'Geslacht',
|
||||
'state' => 'Provincie',
|
||||
'street' => 'Straat',
|
||||
'subject' => 'Onderwerp',
|
||||
'text' => 'Tekst',
|
||||
'time' => 'Tijd',
|
||||
'title' => 'Titel',
|
||||
'username' => 'Gebruikersnaam',
|
||||
'year' => 'Jaar',
|
||||
'description' => 'Beschrijving',
|
||||
'password_confirmation' => 'Wachtwoordbevestiging',
|
||||
'current_password' => 'Huidig wachtwoord',
|
||||
'complement' => 'Aanvulling',
|
||||
'modality' => 'Modaliteit',
|
||||
'category' => 'Categorie',
|
||||
'blood_type' => 'Bloedgroep',
|
||||
'birth_date' => 'Geboortedatum',
|
||||
],
|
||||
];
|
||||
@@ -1,20 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Authentication Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used during authentication for various
|
||||
| messages that we need to display to the user. You are free to modify
|
||||
| these language lines according to your application's requirements.
|
||||
|
|
||||
*/
|
||||
|
||||
'failed' => 'Essas credenciais não foram encontradas em nossos registros.',
|
||||
'password' => 'A senha informada está incorreta.',
|
||||
'throttle' => 'Muitas tentativas de login. Tente novamente em :seconds segundos.',
|
||||
|
||||
];
|
||||
@@ -1,19 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Pagination Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used by the paginator library to build
|
||||
| the simple pagination links. You are free to change them to anything
|
||||
| you want to customize your views to better match your application.
|
||||
|
|
||||
*/
|
||||
|
||||
'previous' => '« Anterior',
|
||||
'next' => 'Próximo »',
|
||||
|
||||
];
|
||||
@@ -1,23 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reset Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are the default lines which match reasons
|
||||
| that are given by the password broker for a password update attempt
|
||||
| has failed, such as for an invalid token or invalid new password.
|
||||
|
|
||||
*/
|
||||
|
||||
'reset' => 'Sua senha foi redefinida!',
|
||||
'sent' => 'Enviamos seu link de redefinição de senha por e-mail!',
|
||||
'password' => 'A senha e a confirmação devem combinar e possuir pelo menos seis caracteres.',
|
||||
'throttled' => 'Aguarde antes de tentar novamente.',
|
||||
'token' => 'Este token de redefinição de senha é inválido.',
|
||||
'user' => 'Não encontramos um usuário com esse endereço de e-mail.',
|
||||
|
||||
];
|
||||
@@ -1,230 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines contain the default error messages used by
|
||||
| the validator class. Some of these rules have multiple versions such
|
||||
| as the size rules. Feel free to tweak each of these messages here.
|
||||
|
|
||||
*/
|
||||
|
||||
'accepted' => 'O campo :attribute deve ser aceito.',
|
||||
'accepted_if' => 'O :attribute deve ser aceito quando :other for :value.',
|
||||
'active_url' => 'O campo :attribute não é uma URL válida.',
|
||||
'after' => 'O campo :attribute deve ser uma data posterior a :date.',
|
||||
'after_or_equal' => 'O campo :attribute deve ser uma data posterior ou igual a :date.',
|
||||
'alpha' => 'O campo :attribute só pode conter letras.',
|
||||
'alpha_dash' => 'O campo :attribute só pode conter letras, números e traços.',
|
||||
'alpha_num' => 'O campo :attribute só pode conter letras e números.',
|
||||
'array' => 'O campo :attribute deve ser uma matriz.',
|
||||
'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', // TODO
|
||||
'before' => 'O campo :attribute deve ser uma data anterior :date.',
|
||||
'before_or_equal' => 'O campo :attribute deve ser uma data anterior ou igual a :date.',
|
||||
'between' => [
|
||||
'numeric' => 'O campo :attribute deve ser entre :min e :max.',
|
||||
'file' => 'O campo :attribute deve ser entre :min e :max kilobytes.',
|
||||
'string' => 'O campo :attribute deve ser entre :min e :max caracteres.',
|
||||
'array' => 'O campo :attribute deve ter entre :min e :max itens.',
|
||||
],
|
||||
'boolean' => 'O campo :attribute deve ser verdadeiro ou falso.',
|
||||
'can' => 'The :attribute field contains an unauthorized value.', // TODO
|
||||
'confirmed' => 'O campo :attribute de confirmação não confere.',
|
||||
'current_password' => 'A senha está incorreta.',
|
||||
'date' => 'O campo :attribute não é uma data válida.',
|
||||
'date_equals' => 'O campo :attribute deve ser uma data igual a :date.',
|
||||
'date_format' => 'O campo :attribute não corresponde ao formato :format.',
|
||||
'decimal' => 'The :attribute field must have :decimal decimal places.', // TODO
|
||||
'declined' => 'O :attribute deve ser recusado.',
|
||||
'declined_if' => 'O :attribute deve ser recusado quando :other for :value.',
|
||||
'different' => 'Os campos :attribute e :other devem ser diferentes.',
|
||||
'digits' => 'O campo :attribute deve ter :digits dígitos.',
|
||||
'digits_between' => 'O campo :attribute deve ter entre :min e :max dígitos.',
|
||||
'dimensions' => 'O campo :attribute tem dimensões de imagem inválidas.',
|
||||
'distinct' => 'O campo :attribute campo tem um valor duplicado.',
|
||||
'doesnt_end_with' => 'O :attribute não pode terminar com um dos seguintes: :values.',
|
||||
'doesnt_start_with' => 'O :attribute não pode começar com um dos seguintes: :values.',
|
||||
'email' => 'O campo :attribute deve ser um endereço de e-mail válido.',
|
||||
'ends_with' => 'O campo :attribute deve terminar com um dos seguintes: :values',
|
||||
'enum' => 'O :attribute selecionado é inválido.',
|
||||
'exists' => 'O campo :attribute selecionado é inválido.',
|
||||
'file' => 'O campo :attribute deve ser um arquivo.',
|
||||
'filled' => 'O campo :attribute deve ter um valor.',
|
||||
'gt' => [
|
||||
'numeric' => 'O campo :attribute deve ser maior que :value.',
|
||||
'file' => 'O campo :attribute deve ser maior que :value kilobytes.',
|
||||
'string' => 'O campo :attribute deve ser maior que :value caracteres.',
|
||||
'array' => 'O campo :attribute deve conter mais de :value itens.',
|
||||
],
|
||||
'gte' => [
|
||||
'numeric' => 'O campo :attribute deve ser maior ou igual a :value.',
|
||||
'file' => 'O campo :attribute deve ser maior ou igual a :value kilobytes.',
|
||||
'string' => 'O campo :attribute deve ser maior ou igual a :value caracteres.',
|
||||
'array' => 'O campo :attribute deve conter :value itens ou mais.',
|
||||
],
|
||||
'image' => 'O campo :attribute deve ser uma imagem.',
|
||||
'in' => 'O campo :attribute selecionado é inválido.',
|
||||
'in_array' => 'O campo :attribute não existe em :other.',
|
||||
'integer' => 'O campo :attribute deve ser um número inteiro.',
|
||||
'ip' => 'O campo :attribute deve ser um endereço de IP válido.',
|
||||
'ipv4' => 'O campo :attribute deve ser um endereço IPv4 válido.',
|
||||
'ipv6' => 'O campo :attribute deve ser um endereço IPv6 válido.',
|
||||
'json' => 'O campo :attribute deve ser uma string JSON válida.',
|
||||
'lowercase' => 'The :attribute field must be lowercase.', // TODO
|
||||
'lt' => [
|
||||
'numeric' => 'O campo :attribute deve ser menor que :value.',
|
||||
'file' => 'O campo :attribute deve ser menor que :value kilobytes.',
|
||||
'string' => 'O campo :attribute deve ser menor que :value caracteres.',
|
||||
'array' => 'O campo :attribute deve conter menos de :value itens.',
|
||||
],
|
||||
'lte' => [
|
||||
'numeric' => 'O campo :attribute deve ser menor ou igual a :value.',
|
||||
'file' => 'O campo :attribute deve ser menor ou igual a :value kilobytes.',
|
||||
'string' => 'O campo :attribute deve ser menor ou igual a :value caracteres.',
|
||||
'array' => 'O campo :attribute não deve conter mais que :value itens.',
|
||||
],
|
||||
'mac_address' => 'The :attribute field must be a valid MAC address.', // TODO
|
||||
'max' => [
|
||||
'numeric' => 'O campo :attribute não pode ser superior a :max.',
|
||||
'file' => 'O campo :attribute não pode ser superior a :max kilobytes.',
|
||||
'string' => 'O campo :attribute não pode ser superior a :max caracteres.',
|
||||
'array' => 'O campo :attribute não pode ter mais do que :max itens.',
|
||||
],
|
||||
'max_digits' => 'O campo :attribute não pode ser superior a :max dígitos',
|
||||
'mimes' => 'O campo :attribute deve ser um arquivo do tipo: :values.',
|
||||
'mimetypes' => 'O campo :attribute deve ser um arquivo do tipo: :values.',
|
||||
'min' => [
|
||||
'numeric' => 'O campo :attribute deve ser pelo menos :min.',
|
||||
'file' => 'O campo :attribute deve ter pelo menos :min kilobytes.',
|
||||
'string' => 'O campo :attribute deve ter pelo menos :min caracteres.',
|
||||
'array' => 'O campo :attribute deve ter pelo menos :min itens.',
|
||||
],
|
||||
'min_digits' => 'O campo :attribute deve ter pelo menos :min dígitos',
|
||||
'missing' => 'The :attribute field must be missing.', // TODO
|
||||
'missing_if' => 'The :attribute field must be missing when :other is :value.', // TODO
|
||||
'missing_unless' => 'The :attribute field must be missing unless :other is :value.', // TODO
|
||||
'missing_with' => 'O campo :attribute não deve estar presente quando houver :values.',
|
||||
'missing_with_all' => 'The :attribute field must be missing when :values are present.', // TODO
|
||||
'multiple_of' => 'O campo :attribute deve ser um múltiplo de :value.',
|
||||
'not_in' => 'O campo :attribute selecionado é inválido.',
|
||||
'not_regex' => 'O campo :attribute possui um formato inválido.',
|
||||
'numeric' => 'O campo :attribute deve ser um número.',
|
||||
'password' => [
|
||||
'letters' => 'O campo :attribute deve conter pelo menos uma letra.',
|
||||
'mixed' => 'O campo :attribute deve conter pelo menos uma letra maiúscula e uma letra minúscula.',
|
||||
'numbers' => 'O campo :attribute deve conter pelo menos um número.',
|
||||
'symbols' => 'O campo :attribute deve conter pelo menos um símbolo.',
|
||||
'uncompromised' => 'A senha que você inseriu em :attribute está em um vazamento de dados. Por favor escolha uma senha diferente.',
|
||||
],
|
||||
'present' => 'O campo :attribute deve estar presente.',
|
||||
'prohibited' => 'O campo :attribute é proibido.',
|
||||
'prohibited_if' => 'O campo :attribute é proibido quando :other for :value.',
|
||||
'prohibited_unless' => 'O campo :attribute é proibido exceto quando :other for :values.',
|
||||
'prohibits' => 'O campo :attribute proíbe :other de estar presente.',
|
||||
'regex' => 'O campo :attribute tem um formato inválido.',
|
||||
'required' => 'O campo :attribute é obrigatório.',
|
||||
'required_array_keys' => 'O campo :attribute deve conter entradas para: :values.',
|
||||
'required_if' => 'O campo :attribute é obrigatório quando :other for :value.',
|
||||
'required_if_accepted' => 'The :attribute field is required when :other is accepted.', // TODO
|
||||
'required_unless' => 'O campo :attribute é obrigatório exceto quando :other for :values.',
|
||||
'required_with' => 'O campo :attribute é obrigatório quando :values está presente.',
|
||||
'required_with_all' => 'O campo :attribute é obrigatório quando :values está presente.',
|
||||
'required_without' => 'O campo :attribute é obrigatório quando :values não está presente.',
|
||||
'required_without_all' => 'O campo :attribute é obrigatório quando nenhum dos :values estão presentes.',
|
||||
'same' => 'Os campos :attribute e :other devem corresponder.',
|
||||
'size' => [
|
||||
'numeric' => 'O campo :attribute deve ser :size.',
|
||||
'file' => 'O campo :attribute deve ser :size kilobytes.',
|
||||
'string' => 'O campo :attribute deve ser :size caracteres.',
|
||||
'array' => 'O campo :attribute deve conter :size itens.',
|
||||
],
|
||||
'starts_with' => 'O campo :attribute deve começar com um dos seguintes valores: :values',
|
||||
'string' => 'O campo :attribute deve ser uma string.',
|
||||
'timezone' => 'O campo :attribute deve ser uma zona válida.',
|
||||
'unique' => 'O campo :attribute já está sendo utilizado.',
|
||||
'uploaded' => 'Ocorreu uma falha no upload do campo :attribute.',
|
||||
'uppercase' => 'The :attribute field must be uppercase.', // TODO
|
||||
'url' => 'O campo :attribute tem um formato inválido.',
|
||||
'ulid' => 'The :attribute field must be a valid ULID.', // TODO
|
||||
'uuid' => 'O campo :attribute deve ser um UUID válido.',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may specify custom validation messages for attributes using the
|
||||
| convention "attribute.rule" to name the lines. This makes it quick to
|
||||
| specify a specific custom language line for a given attribute rule.
|
||||
|
|
||||
*/
|
||||
|
||||
'custom' => [
|
||||
'attribute-name' => [
|
||||
'rule-name' => 'custom-message',
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Attributes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used to swap our attribute placeholder
|
||||
| with something more reader friendly such as "E-Mail Address" instead
|
||||
| of "email". This simply helps us make our message more expressive.
|
||||
|
|
||||
*/
|
||||
|
||||
'attributes' => [
|
||||
'address' => 'endereço',
|
||||
'age' => 'idade',
|
||||
'body' => 'conteúdo',
|
||||
'cell' => 'célula',
|
||||
'city' => 'cidade',
|
||||
'country' => 'país',
|
||||
'date' => 'data',
|
||||
'day' => 'dia',
|
||||
'excerpt' => 'resumo',
|
||||
'first_name' => 'primeiro nome',
|
||||
'gender' => 'gênero',
|
||||
'marital_status' => 'estado civil',
|
||||
'profession' => 'profissão',
|
||||
'nationality' => 'nacionalidade',
|
||||
'hour' => 'hora',
|
||||
'last_name' => 'sobrenome',
|
||||
'message' => 'mensagem',
|
||||
'minute' => 'minuto',
|
||||
'mobile' => 'celular',
|
||||
'month' => 'mês',
|
||||
'name' => 'nome',
|
||||
'zipcode' => 'cep',
|
||||
'company_name' => 'razão social',
|
||||
'neighborhood' => 'bairro',
|
||||
'number' => 'número',
|
||||
'password' => 'senha',
|
||||
'phone' => 'telefone',
|
||||
'second' => 'segundo',
|
||||
'sex' => 'sexo',
|
||||
'state' => 'estado',
|
||||
'street' => 'rua',
|
||||
'subject' => 'assunto',
|
||||
'text' => 'texto',
|
||||
'time' => 'hora',
|
||||
'title' => 'título',
|
||||
'username' => 'usuário',
|
||||
'year' => 'ano',
|
||||
'description' => 'descrição',
|
||||
'password_confirmation' => 'confirmação da senha',
|
||||
'current_password' => 'senha atual',
|
||||
'complement' => 'complemento',
|
||||
'modality' => 'modalidade',
|
||||
'category' => 'categoria',
|
||||
'blood_type' => 'tipo sanguíneo',
|
||||
'birth_date' => 'data de nascimento',
|
||||
],
|
||||
];
|
||||
@@ -1,20 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Authentication Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used during authentication for various
|
||||
| messages that we need to display to the user. You are free to modify
|
||||
| these language lines according to your application's requirements.
|
||||
|
|
||||
*/
|
||||
|
||||
'failed' => 'Bu bilgiler kayıtlarımızla uyuşmuyor.',
|
||||
'password' => 'Sağlanan şifre yanlış.',
|
||||
'throttle' => 'Çok fazla giriş denemesi. Lütfen :seconds saniye içinde tekrar deneyin.',
|
||||
|
||||
];
|
||||
@@ -1,19 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Pagination Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used by the paginator library to build
|
||||
| the simple pagination links. You are free to change them to anything
|
||||
| you want to customize your views to better match your application.
|
||||
|
|
||||
*/
|
||||
|
||||
'previous' => '« Önceki',
|
||||
'next' => 'Sonraki »',
|
||||
|
||||
];
|
||||
@@ -1,23 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reset Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are the default lines which match reasons
|
||||
| that are given by the password broker for a password update attempt
|
||||
| has failed, such as for an invalid token or invalid new password.
|
||||
|
|
||||
*/
|
||||
|
||||
'reset' => 'Parolanız sıfırlandı!',
|
||||
'sent' => 'Parola sıfırlama bağlantınızı e-postayla gönderdik!',
|
||||
'password' => 'Şifre ve onay aynı olmalı ve en az altı karakter uzunluğunda olmalıdır.',
|
||||
'throttled' => 'Tekrar denemeden önce lütfen bekleyin.',
|
||||
'token' => 'Bu parola sıfırlama anahtarı geçersiz.',
|
||||
'user' => 'Bu e-posta adresine sahip bir kullanıcı bulamadık.',
|
||||
|
||||
];
|
||||
@@ -1,230 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines contain the default error messages used by
|
||||
| the validator class. Some of these rules have multiple versions such
|
||||
| as the size rules. Feel free to tweak each of these messages here.
|
||||
|
|
||||
*/
|
||||
|
||||
'accepted' => ':attribute alanı kabul edilmelidir.',
|
||||
'accepted_if' => ':attribute alanı, :other değeri :value olduğunda kabul edilmelidir.',
|
||||
'active_url' => ':attribute alanı geçerli bir URL olmalıdır.',
|
||||
'after' => ':attribute alanı :date değerinden sonraki bir tarih olmalıdır.',
|
||||
'after_or_equal' => ':attribute alanı :date tarihinden sonra veya ona eşit bir tarih olmalıdır.',
|
||||
'alpha' => ':attribute alanı yalnızca harf içermelidir.',
|
||||
'alpha_dash' => ':attribute alanı yalnızca harf, rakam, tire(-) ve alt çizgi(_) içermelidir.',
|
||||
'alpha_num' => ':attribute alanı yalnızca harf ve rakamlardan oluşmalıdır.',
|
||||
'array' => ':attribute alanı bir dizi olmalıdır.',
|
||||
'ascii' => ':attribute alanı yalnızca tek baytlık alfanümerik karakterler ve semboller içermelidir.',
|
||||
'before' => ':attribute alanı :date değerinden önceki bir tarih olmalıdır.',
|
||||
'before_or_equal' => ':attribute alanı :date tarihinden önce veya ona eşit bir tarih olmalıdır.',
|
||||
'between' => [
|
||||
'array' => ':attribute :min ile :max öğe arasında olmalıdır.',
|
||||
'file' => ':attribute :min ile :max kilobayt arasında olmalıdır.',
|
||||
'numeric' => ':attribute :min ile :max arasında olmalıdır.',
|
||||
'string' => ':attribute :min ile :max karakter arasında olmalıdır.',
|
||||
],
|
||||
'boolean' => ':attribute alanı doğru veya yanlış olmalıdır.',
|
||||
'can' => ':attribute alanı yetkisiz bir değer içeriyor.',
|
||||
'confirmed' => ':attribute doğrulaması eşleşmiyor.',
|
||||
'current_password' => 'Şifre yanlış.',
|
||||
'date' => ':attribute geçerli bir tarih olmalıdır.',
|
||||
'date_equals' => ':attribute :date tarihine eşit bir tarih olmalıdır.',
|
||||
'date_format' => ':attribute :format formatıyla eşleşmelidir.',
|
||||
'decimal' => ':attribute :decimal ondalık basamak içermelidir.',
|
||||
'declined' => ':attribute reddedilmelidir.',
|
||||
'declined_if' => ':attribute, :other :value olduğunda reddedilmelidir.',
|
||||
'different' => ':attribute ve :other farklı olmalıdır.',
|
||||
'digits' => ':attribute :digits basamaklı olmalıdır.',
|
||||
'digits_between' => ':attribute :min ile :max basamak arasında olmalıdır.',
|
||||
'dimensions' => ':attribute geçersiz resim boyutlarına sahiptir.',
|
||||
'distinct' => ':attribute alanında yinelenen bir değer var.',
|
||||
'doesnt_end_with' => ':attribute şu değerlerden biriyle bitmemelidir: :values.',
|
||||
'doesnt_start_with' => ':attribute şu değerlerden biriyle başlamamalıdır: :values.',
|
||||
'email' => ':attribute geçerli bir e-posta adresi olmalıdır.',
|
||||
'ends_with' => ':attribute şu değerlerden biriyle bitmelidir: :values.',
|
||||
'enum' => 'Seçilen :attribute geçersiz.',
|
||||
'exists' => 'Seçilen :attribute geçersiz.',
|
||||
'file' => ':attribute bir dosya olmalıdır.',
|
||||
'filled' => ':attribute bir değer içermelidir.',
|
||||
'gt' => [
|
||||
'array' => ':attribute :value öğeden fazla olmalıdır.',
|
||||
'file' => ':attribute :value kilobayttan büyük olmalıdır.',
|
||||
'numeric' => ':attribute :value değerinden büyük olmalıdır.',
|
||||
'string' => ':attribute :value karakterden uzun olmalıdır.',
|
||||
],
|
||||
'gte' => [
|
||||
'array' => ':attribute :value veya daha fazla öğe içermelidir.',
|
||||
'file' => ':attribute :value kilobayt veya daha büyük olmalıdır.',
|
||||
'numeric' => ':attribute :value değerine eşit veya daha büyük olmalıdır.',
|
||||
'string' => ':attribute :value karakter veya daha fazla olmalıdır.',
|
||||
],
|
||||
'image' => ':attribute bir resim olmalıdır.',
|
||||
'in' => 'Seçilen :attribute geçersiz.',
|
||||
'in_array' => ':attribute, :other içinde mevcut olmalıdır.',
|
||||
'integer' => ':attribute bir tam sayı olmalıdır.',
|
||||
'ip' => ':attribute geçerli bir IP adresi olmalıdır.',
|
||||
'ipv4' => ':attribute geçerli bir IPv4 adresi olmalıdır.',
|
||||
'ipv6' => ':attribute geçerli bir IPv6 adresi olmalıdır.',
|
||||
'json' => ':attribute geçerli bir JSON metni olmalıdır.',
|
||||
'lowercase' => ':attribute küçük harflerden oluşmalıdır.',
|
||||
'lt' => [
|
||||
'array' => ':attribute :value öğeden az olmalıdır.',
|
||||
'file' => ':attribute :value kilobayttan küçük olmalıdır.',
|
||||
'numeric' => ':attribute :value değerinden küçük olmalıdır.',
|
||||
'string' => ':attribute :value karakterden kısa olmalıdır.',
|
||||
],
|
||||
'lte' => [
|
||||
'array' => ':attribute :value öğeden fazla olmamalıdır.',
|
||||
'file' => ':attribute :value kilobayt veya daha az olmalıdır.',
|
||||
'numeric' => ':attribute :value değerine eşit veya daha küçük olmalıdır.',
|
||||
'string' => ':attribute :value karakter veya daha az olmalıdır.',
|
||||
],
|
||||
'mac_address' => ':attribute geçerli bir MAC adresi olmalıdır.',
|
||||
'max' => [
|
||||
'array' => ':attribute :max öğeden fazla olmamalıdır.',
|
||||
'file' => ':attribute :max kilobayttan büyük olmamalıdır.',
|
||||
'numeric' => ':attribute :max değerinden büyük olmamalıdır.',
|
||||
'string' => ':attribute :max karakterden uzun olmamalıdır.',
|
||||
],
|
||||
'max_digits' => ':attribute :max basamaktan fazla olmamalıdır.',
|
||||
'mimes' => ':attribute şu türde bir dosya olmalıdır: :values.',
|
||||
'mimetypes' => ':attribute şu türde bir dosya olmalıdır: :values.',
|
||||
'min' => [
|
||||
'array' => ':attribute en az :min öğe içermelidir.',
|
||||
'file' => ':attribute en az :min kilobayt olmalıdır.',
|
||||
'numeric' => ':attribute en az :min olmalıdır.',
|
||||
'string' => ':attribute en az :min karakter olmalıdır.',
|
||||
],
|
||||
'min_digits' => ':attribute en az :min basamak içermelidir.',
|
||||
'missing' => ':attribute eksik olmalıdır.',
|
||||
'missing_if' => ':attribute, :other :value olduğunda eksik olmalıdır.',
|
||||
'missing_unless' => ':attribute, :other :value değilse eksik olmalıdır.',
|
||||
'missing_with' => ':attribute, :values mevcut olduğunda eksik olmalıdır.',
|
||||
'missing_with_all' => ':attribute, :values mevcut olduğunda eksik olmalıdır.',
|
||||
'multiple_of' => ':attribute :value katı olmalıdır.',
|
||||
'not_in' => 'Seçilen :attribute geçersiz.',
|
||||
'not_regex' => ':attribute formatı geçersiz.',
|
||||
'numeric' => ':attribute bir sayı olmalıdır.',
|
||||
'password' => [
|
||||
'letters' => ':attribute en az bir harf içermelidir.',
|
||||
'mixed' => ':attribute en az bir büyük harf ve bir küçük harf içermelidir.',
|
||||
'numbers' => ':attribute en az bir rakam içermelidir.',
|
||||
'symbols' => ':attribute en az bir sembol içermelidir.',
|
||||
'uncompromised' => 'Verilen :attribute bir veri ihlalinde tespit edilmiştir. Lütfen farklı bir :attribute seçin.',
|
||||
],
|
||||
'present' => ':attribute mevcut olmalıdır.',
|
||||
'prohibited' => ':attribute yasaktır.',
|
||||
'prohibited_if' => ':attribute, :other :value olduğunda yasaktır.',
|
||||
'prohibited_unless' => ':attribute, :other :values içinde olmadıkça yasaktır.',
|
||||
'prohibits' => ':attribute, :other alanının mevcut olmasını yasaklar.',
|
||||
'regex' => ':attribute formatı geçersiz.',
|
||||
'required' => ':attribute alanı gereklidir.',
|
||||
'required_array_keys' => ':attribute şu anahtarları içermelidir: :values.',
|
||||
'required_if' => ':attribute, :other :value olduğunda gereklidir.',
|
||||
'required_if_accepted' => ':attribute, :other kabul edildiğinde gereklidir.',
|
||||
'required_unless' => ':attribute, :other :values içinde olmadıkça gereklidir.',
|
||||
'required_with' => ':attribute, :values mevcut olduğunda gereklidir.',
|
||||
'required_with_all' => ':attribute, :values mevcut olduğunda gereklidir.',
|
||||
'required_without' => ':attribute, :values mevcut değilse gereklidir.',
|
||||
'required_without_all' => ':attribute, :values hiçbirisi mevcut değilse gereklidir.',
|
||||
'same' => ':attribute, :other ile eşleşmelidir.',
|
||||
'size' => [
|
||||
'array' => ':attribute :size öğe içermelidir.',
|
||||
'file' => ':attribute :size kilobayt olmalıdır.',
|
||||
'numeric' => ':attribute :size olmalıdır.',
|
||||
'string' => ':attribute :size karakter olmalıdır.',
|
||||
],
|
||||
'starts_with' => ':attribute şu değerlerden biriyle başlamalıdır: :values.',
|
||||
'string' => ':attribute bir metin olmalıdır.',
|
||||
'timezone' => ':attribute geçerli bir zaman dilimi olmalıdır.',
|
||||
'unique' => ':attribute zaten alınmış.',
|
||||
'uploaded' => ':attribute yüklenemedi.',
|
||||
'uppercase' => ':attribute büyük harflerden oluşmalıdır.',
|
||||
'url' => ':attribute geçerli bir URL olmalıdır.',
|
||||
'ulid' => ':attribute geçerli bir ULID olmalıdır.',
|
||||
'uuid' => ':attribute geçerli bir UUID olmalıdır.',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may specify custom validation messages for attributes using the
|
||||
| convention "attribute.rule" to name the lines. This makes it quick to
|
||||
| specify a specific custom language line for a given attribute rule.
|
||||
|
|
||||
*/
|
||||
|
||||
'custom' => [
|
||||
'attribute-name' => [
|
||||
'rule-name' => 'custom-message',
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Attributes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used to swap our attribute placeholder
|
||||
| with something more reader friendly such as "E-Mail Address" instead
|
||||
| of "email". This simply helps us make our message more expressive.
|
||||
|
|
||||
*/
|
||||
|
||||
'attributes' => [
|
||||
'address' => 'adres',
|
||||
'age' => 'yaş',
|
||||
'body' => 'içerik',
|
||||
'cell' => 'hücre',
|
||||
'city' => 'şehir',
|
||||
'country' => 'ülke',
|
||||
'date' => 'tarih',
|
||||
'day' => 'gün',
|
||||
'excerpt' => 'özet',
|
||||
'first_name' => 'ad',
|
||||
'gender' => 'cinsiyet',
|
||||
'marital_status' => 'medeni hal',
|
||||
'profession' => 'meslek',
|
||||
'nationality' => 'uyruk',
|
||||
'hour' => 'saat',
|
||||
'last_name' => 'soyad',
|
||||
'message' => 'mesaj',
|
||||
'minute' => 'dakika',
|
||||
'mobile' => 'cep telefonu',
|
||||
'month' => 'ay',
|
||||
'name' => 'isim',
|
||||
'zipcode' => 'posta kodu',
|
||||
'company_name' => 'şirket adı',
|
||||
'neighborhood' => 'mahalle',
|
||||
'number' => 'numara',
|
||||
'password' => 'şifre',
|
||||
'phone' => 'telefon',
|
||||
'second' => 'saniye',
|
||||
'sex' => 'cinsiyet',
|
||||
'state' => 'eyalet',
|
||||
'street' => 'sokak',
|
||||
'subject' => 'konu',
|
||||
'text' => 'metin',
|
||||
'time' => 'zaman',
|
||||
'title' => 'başlık',
|
||||
'username' => 'kullanıcı adı',
|
||||
'year' => 'yıl',
|
||||
'description' => 'açıklama',
|
||||
'password_confirmation' => 'şifre doğrulama',
|
||||
'current_password' => 'mevcut şifre',
|
||||
'complement' => 'ek bilgi',
|
||||
'modality' => 'mod',
|
||||
'category' => 'kategori',
|
||||
'blood_type' => 'kan grubu',
|
||||
'birth_date' => 'doğum tarihi',
|
||||
],
|
||||
];
|
||||
@@ -1,19 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Pagination Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used by the paginator library to build
|
||||
| the simple pagination links. You are free to change them to anything
|
||||
| you want to customize your views to better match your application.
|
||||
|
|
||||
*/
|
||||
|
||||
'previous' => '« 上一頁',
|
||||
'next' => '下一頁 »',
|
||||
|
||||
];
|
||||
@@ -1,20 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reset Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are the default lines which match reasons
|
||||
| that are given by the password broker for a password update attempt
|
||||
| has failed, such as for an invalid token or invalid new password.
|
||||
|
|
||||
*/
|
||||
|
||||
'reset' => '您的密碼已成功重設!',
|
||||
'sent' => '我們已將密碼重設連結寄送至您的電子郵件信箱!',
|
||||
'password' => '密碼必須至少包含六個字元,且與確認密碼相符。',
|
||||
|
||||
];
|
||||
@@ -1,91 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines contain the default error messages used by
|
||||
| the validator class. Some of these rules have multiple versions such
|
||||
| as the size rules. Feel free to tweak each of these messages here.
|
||||
|
|
||||
*/
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may specify custom validation messages for attributes using the
|
||||
| convention "attribute.rule" to name the lines. This makes it quick to
|
||||
| specify a specific custom language line for a given attribute rule.
|
||||
|
|
||||
*/
|
||||
|
||||
'custom' => [
|
||||
'attribute-name' => [
|
||||
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Attributes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used to swap our attribute placeholder
|
||||
| with something more reader friendly such as "E-Mail Address" instead
|
||||
| of "email". This simply helps us make our message more expressive.
|
||||
|
|
||||
*/
|
||||
|
||||
'attributes' => [
|
||||
'address' => '地址',
|
||||
'age' => '年齡',
|
||||
'body' => '內文',
|
||||
'cell' => '行動電話',
|
||||
'city' => '縣市',
|
||||
'country' => '國家',
|
||||
'date' => '日期',
|
||||
'day' => '日',
|
||||
'excerpt' => '摘要',
|
||||
'first_name' => '名字',
|
||||
'gender' => '性別',
|
||||
'marital_status' => '婚姻狀態',
|
||||
'profession' => '職業',
|
||||
'nationality' => '國籍',
|
||||
'hour' => '時',
|
||||
'last_name' => '姓氏',
|
||||
'message' => '訊息內容',
|
||||
'minute' => '分',
|
||||
'mobile' => '行動電話',
|
||||
'month' => '月',
|
||||
'name' => '名稱',
|
||||
'zipcode' => '郵遞區號',
|
||||
'company_name' => '公司名稱',
|
||||
'neighborhood' => '鄰里',
|
||||
'number' => '號碼',
|
||||
'password' => '密碼',
|
||||
'phone' => '電話號碼',
|
||||
'second' => '秒',
|
||||
'sex' => '性別',
|
||||
'state' => '縣市',
|
||||
'street' => '街道',
|
||||
'subject' => '主旨',
|
||||
'text' => '文字',
|
||||
'time' => '時間',
|
||||
'title' => '標題',
|
||||
'username' => '使用者帳號',
|
||||
'year' => '年',
|
||||
'description' => '說明',
|
||||
'password_confirmation' => '確認密碼',
|
||||
'current_password' => '目前密碼',
|
||||
'complement' => '補充說明',
|
||||
'modality' => '模式',
|
||||
'category' => '類別',
|
||||
'blood_type' => '血型',
|
||||
'birth_date' => '出生日期',
|
||||
],
|
||||
];
|
||||
@@ -1,9 +1,9 @@
|
||||
<x-guest-layout :title="__('Server Error')">
|
||||
<x-guest-layout :title="__('errors.server_error')">
|
||||
<div class="grid px-4 min-h-dvh place-content-center">
|
||||
<div class="text-center">
|
||||
<h1 class="font-black text-gray-200 dark:text-gray-800 text-9xl">500</h1>
|
||||
|
||||
<p class="text-2xl font-bold tracking-tight text-gray-900 dark:text-gray-100 sm:text-4xl">{{ __('Oops, server error!') }}</p>
|
||||
<p class="text-2xl font-bold tracking-tight text-gray-900 dark:text-gray-100 sm:text-4xl">{{ __('errors.oops_server_error') }}</p>
|
||||
|
||||
<p class="mt-4 text-gray-500 dark:text-gray-300">There was an issue, check the logs or view the docs for help.</p>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user