Implemented project-wide localization plumbing and converted the visible UI/app messages to translation-ready strings.

This commit is contained in:
2026-05-18 00:16:37 +03:30
parent b49b59a056
commit c6606d9602
60 changed files with 1376 additions and 345 deletions

323
lang/en.json Normal file
View File

@@ -0,0 +1,323 @@
{
"2FA recovery codes": "2FA recovery codes",
":channel by :owner": ":channel by :owner",
":channel is live now with :count viewers.": ":channel is live now with :count viewers.",
":channel is offline": ":channel is offline",
":count active broadcasts": ":count active broadcasts",
":count available": ":count available",
":count followers": ":count followers",
":count messages": ":count messages",
":count rows": ":count rows",
":count threads": ":count threads",
":count viewers": ":count viewers",
":status - :mode": ":status - :mode",
":status - :mode - VOD ready": ":status - :mode - VOD ready",
"@:slug owned by :owner": "@:slug owned by :owner",
"A new verification link has been sent to the email address you provided during registration.": "A new verification link has been sent to the email address you provided during registration.",
"A new verification link has been sent to your email address.": "A new verification link has been sent to your email address.",
"ADMIN": "ADMIN",
"Admin": "Admin",
"All categories": "All categories",
"All verified users can create channels.": "All verified users can create channels.",
"Already have an account?": "Already have an account?",
"An admin can grant creator access from the admin console.": "An admin can grant creator access from the admin console.",
"An admin must enable channel creation for this account.": "An admin must enable channel creation for this account.",
"Appearance": "Appearance",
"Appearance settings": "Appearance settings",
"Approval only": "Approval only",
"Are you sure you want to delete your account?": "Are you sure you want to delete your account?",
"Attach up to 3 files, 200 MB each.": "Attach up to 3 files, 200 MB each.",
"Attachment upload failed. Try the file again or choose a different file.": "Attachment upload failed. Try the file again or choose a different file.",
"Attachments": "Attachments",
"Attachments must be 200 MB or smaller.": "Attachments must be 200 MB or smaller.",
"Authentication code": "Authentication code",
"Avatar": "Avatar",
"Back": "Back",
"Broadcast ended.": "Broadcast ended.",
"Broadcast is ready. Start streaming from OBS.": "Broadcast is ready. Start streaming from OBS.",
"Broadcast prep": "Broadcast prep",
"Broadcast state": "Broadcast state",
"Broadcast stopped.": "Broadcast stopped.",
"Bug report": "Bug report",
"Bug reports, suggestions, channel requests, and account questions.": "Bug reports, suggestions, channel requests, and account questions.",
"Building Nyone live": "Building Nyone live",
"CAN CREATE": "CAN CREATE",
"CAN CREATE CHANNEL": "CAN CREATE CHANNEL",
"CLOSED": "CLOSED",
"Cancel": "Cancel",
"Categories": "Categories",
"Category": "Category",
"Channel": "Channel",
"Channel created. Save the stream key now; it will not be shown again.": "Channel created. Save the stream key now; it will not be shown again.",
"Channel creation access": "Channel creation access",
"Channel creation now requires admin approval.": "Channel creation now requires admin approval.",
"Channel creation requires approval": "Channel creation requires approval",
"Channel is offline": "Channel is offline",
"Channel metadata": "Channel metadata",
"Channel request": "Channel request",
"Channel restored.": "Channel restored.",
"Channel setup": "Channel setup",
"Channel suspended.": "Channel suspended.",
"Channel updated.": "Channel updated.",
"Chat": "Chat",
"Chat appears when the channel is live.": "Chat appears when the channel is live.",
"Chat is available only while the channel is live.": "Chat is available only while the channel is live.",
"Clear search or switch categories.": "Clear search or switch categories.",
"Click here to resend the verification email.": "Click here to resend the verification email.",
"Close": "Close",
"Confirm": "Confirm",
"Confirm password": "Confirm password",
"Confirm your password": "Confirm your password",
"Contact": "Contact",
"Contact admin": "Contact admin",
"Contact threads from users and channel request notes.": "Contact threads from users and channel request notes.",
"Continue": "Continue",
"Continue setup": "Continue setup",
"Control who can create a creator channel.": "Control who can create a creator channel.",
"Conversations": "Conversations",
"Create a pending session before starting OBS.": "Create a pending session before starting OBS.",
"Create account": "Create account",
"Create an account": "Create an account",
"Create channel": "Create channel",
"Create your channel": "Create your channel",
"Creator Studio": "Creator Studio",
"Creator access grants stay in the moderation console.": "Creator access grants stay in the moderation console.",
"Creator grants": "Creator grants",
"Creators can prepare a broadcast in the studio and go live from OBS when ready.": "Creators can prepare a broadcast in the studio and go live from OBS when ready.",
"Current password": "Current password",
"Current session": "Current session",
"Current viewers": "Current viewers",
"DEFAULT": "DEFAULT",
"Dark": "Dark",
"Delete account": "Delete account",
"Delete your account and all of its resources": "Delete your account and all of its resources",
"Deleted user": "Deleted user",
"Description": "Description",
"Disable 2FA": "Disable 2FA",
"Displays the mobile sidebar.": "Displays the mobile sidebar.",
"Display name": "Display name",
"Don't have an account?": "Don't have an account?",
"Each account can own one public channel in this version.": "Each account can own one public channel in this version.",
"Each recovery code can be used once to access your account and will be removed after use. If you need more, click": "Each recovery code can be used once to access your account and will be removed after use. If you need more, click",
"Email": "Email",
"Email address": "Email address",
"Email password reset link": "Email password reset link",
"Email verification": "Email verification",
"Enable 2FA": "Enable 2FA",
"Enable two-factor authentication": "Enable two-factor authentication",
"Ensure your account is using a long, random password to stay secure": "Ensure your account is using a long, random password to stay secure",
"Enter recovery code": "Enter recovery code",
"Enter the 6-digit code from your authenticator app": "Enter the 6-digit code from your authenticator app",
"Enter the authentication code provided by your authenticator application.": "Enter the authentication code provided by your authenticator application.",
"Enter your details below to create your account": "Enter your details below to create your account",
"Enter your email and password below to log in": "Enter your email and password below to log in",
"Enter your email to receive a password reset link": "Enter your email to receive a password reset link",
"Expires :date": "Expires :date",
"Featured live": "Featured live",
"Finish the current broadcast before creating another.": "Finish the current broadcast before creating another.",
"Finish the current broadcast before preparing another session.": "Finish the current broadcast before preparing another session.",
"Follow": "Follow",
"Following": "Following",
"Forgot password": "Forgot password",
"Forgot password?": "Forgot password?",
"Full name": "Full name",
"Grant": "Grant",
"Hide password": "Hide password",
"Hide recovery codes": "Hide recovery codes",
"Insert :emoji": "Insert :emoji",
"JPG, PNG, or WebP up to 2 MB.": "JPG, PNG, or WebP up to 2 MB.",
"Light": "Light",
"LIVE": "LIVE",
"LIVE - :count viewers": "LIVE - :count viewers",
"Live": "Live",
"Live broadcasts": "Live broadcasts",
"Live channels": "Live channels",
"Live directory": "Live directory",
"Live ingest signal": "Live ingest signal",
"Live only": "Live only",
"Live preview": "Live preview",
"Live signal": "Live signal",
"Loading": "Loading",
"Loading recovery codes": "Loading recovery codes",
"Log in": "Log in",
"Log in to chat": "Log in to chat",
"Log in to follow": "Log in to follow",
"Log in to your account": "Log in to your account",
"Log out": "Log out",
"Manage your profile and account settings": "Manage your profile and account settings",
"Manage your two-factor authentication settings": "Manage your two-factor authentication settings",
"Message": "Message",
"Message sent to admin.": "Message sent to admin.",
"Moderation console": "Moderation console",
"More": "More",
"NEEDS APPROVAL": "NEEDS APPROVAL",
"NEEDS CHANNEL GRANT": "NEEDS CHANNEL GRANT",
"Name": "Name",
"Navigation menu": "Navigation menu",
"Never": "Never",
"New conversation": "New conversation",
"New password": "New password",
"No active session.": "No active session.",
"No broadcasts yet.": "No broadcasts yet.",
"No category": "No category",
"No channels are live.": "No channels are live.",
"No conversations yet.": "No conversations yet.",
"No messages yet.": "No messages yet.",
"No public recordings yet.": "No public recordings yet.",
"No streams match this view": "No streams match this view",
"No support conversations found.": "No support conversations found.",
"No thumbnail": "No thumbnail",
"No users found.": "No users found.",
"Nyone Live": "Nyone Live",
"OBS readiness": "OBS readiness",
"OBS stream key": "OBS stream key",
"OFFLINE": "OFFLINE",
"OPEN": "OPEN",
"Offline": "Offline",
"Once your account is deleted, all of its resources and data will also be permanently deleted. Please enter your password to confirm you would like to permanently delete your account.": "Once your account is deleted, all of its resources and data will also be permanently deleted. Please enter your password to confirm you would like to permanently delete your account.",
"Open": "Open",
"Open channel": "Open channel",
"Open emoji picker": "Open emoji picker",
"Open moderation": "Open moderation",
"Open studio": "Open studio",
"Open to all": "Open to all",
"Or, return to": "Or, return to",
"Other": "Other",
"Owner": "Owner",
"Password": "Password",
"Password updated.": "Password updated.",
"Platform": "Platform",
"Please confirm access to your account by entering one of your emergency recovery codes.": "Please confirm access to your account by entering one of your emergency recovery codes.",
"Please enter your new password below": "Please enter your new password below",
"Please proceed with caution, this cannot be undone.": "Please proceed with caution, this cannot be undone.",
"Please verify your email address by clicking on the link we just emailed to you.": "Please verify your email address by clicking on the link we just emailed to you.",
"Prepare": "Prepare",
"Prepare broadcasts, secure your stream key, and monitor the current session.": "Prepare broadcasts, secure your stream key, and monitor the current session.",
"Prepared broadcast": "Prepared broadcast",
"Private stream key": "Private stream key",
"Processing recording": "Processing recording",
"Profile": "Profile",
"Profile information": "Profile information",
"Profile settings": "Profile settings",
"Profile updated.": "Profile updated.",
"Public channels broadcasting now": "Public channels broadcasting now",
"Public metadata used in the directory and watch page.": "Public metadata used in the directory and watch page.",
"READY": "READY",
"Recent VODs": "Recent VODs",
"Recent broadcasts": "Recent broadcasts",
"Recent channels": "Recent channels",
"Recent recordings remain available below when the creator publishes VODs.": "Recent recordings remain available below when the creator publishes VODs.",
"Record VOD": "Record VOD",
"Recording enabled": "Recording enabled",
"Recovery code": "Recovery code",
"Recovery codes": "Recovery codes",
"Recovery codes let you regain access if you lose your 2FA device. Store them in a secure password manager.": "Recovery codes let you regain access if you lose your 2FA device. Store them in a secure password manager.",
"Regenerate codes": "Regenerate codes",
"Register": "Register",
"Remember me": "Remember me",
"Remove grant": "Remove grant",
"Reopen": "Reopen",
"Reopen the conversation to reply.": "Reopen the conversation to reply.",
"Reopen this conversation before replying.": "Reopen this conversation before replying.",
"Reply": "Reply",
"Reply sent.": "Reply sent.",
"Resend verification email": "Resend verification email",
"Reset password": "Reset password",
"Restore": "Restore",
"Restore channel?": "Restore channel?",
"Review live streams, suspended states, users, and recordings.": "Review live streams, suspended states, users, and recordings.",
"Rotate immediately if it was exposed.": "Rotate immediately if it was exposed.",
"Rotate key": "Rotate key",
"Rotate the key to reveal it once.": "Rotate the key to reveal it once.",
"Save": "Save",
"Save channel": "Save channel",
"Save password": "Save password",
"Search live channels": "Search live channels",
"Security": "Security",
"Security settings": "Security settings",
"Send": "Send",
"Send a message": "Send a message",
"Send message": "Send message",
"Send reply": "Send reply",
"Server": "Server",
"Settings": "Settings",
"Show password": "Show password",
"Sidebar": "Sidebar",
"Sign up": "Sign up",
"Slug": "Slug",
"Something went wrong.": "Something went wrong.",
"Start OBS to push the session live.": "Start OBS to push the session live.",
"Start a channel": "Start a channel",
"Stop": "Stop",
"Stop broadcast": "Stop broadcast",
"Stop broadcast?": "Stop broadcast?",
"Stop live broadcast?": "Stop live broadcast?",
"Stream key": "Stream key",
"Stream key rotated. Update OBS before going live again.": "Stream key rotated. Update OBS before going live again.",
"Stream key used": "Stream key used",
"Stream keys can publish to this channel. Rotate immediately if it was exposed.": "Stream keys can publish to this channel. Rotate immediately if it was exposed.",
"Stream title": "Stream title",
"Studio": "Studio",
"Subject": "Subject",
"Suggestion": "Suggestion",
"Support": "Support",
"Support inbox": "Support inbox",
"SUSPENDED": "SUSPENDED",
"Suspend": "Suspend",
"Suspend channel?": "Suspend channel?",
"System": "System",
"The channel will be hidden from public browsing and watch pages.": "The channel will be hidden from public browsing and watch pages.",
"The channel will be visible again if the owning account is active.": "The channel will be visible again if the owning account is active.",
"The live floor is quiet": "The live floor is quiet",
"The live session will end immediately and the channel will move offline.": "The live session will end immediately and the channel will move offline.",
"This account already owns a channel.": "This account already owns a channel.",
"This account can browse and follow channels, but cannot create a channel yet.": "This account can browse and follow channels, but cannot create a channel yet.",
"This conversation is closed.": "This conversation is closed.",
"This ends the live session and clears the channel's live state. Viewers will see the offline screen.": "This ends the live session and clears the channel's live state. Viewers will see the offline screen.",
"This key is shown once. Store it in OBS before leaving this page.": "This key is shown once. Store it in OBS before leaving this page.",
"To finish enabling two-factor authentication, scan the QR code or enter the setup key in your authenticator app": "To finish enabling two-factor authentication, scan the QR code or enter the setup key in your authenticator app",
"Toggle sidebar": "Toggle sidebar",
"Two-factor authentication": "Two-factor authentication",
"Two-factor authentication enabled": "Two-factor authentication enabled",
"Uncategorized": "Uncategorized",
"Unsupported attachment type. Upload media, PDF, text/data, Office, OpenDocument, or archive files.": "Unsupported attachment type. Upload media, PDF, text/data, Office, OpenDocument, or archive files.",
"Update password": "Update password",
"Update your account's appearance settings": "Update your account's appearance settings",
"Update your name, email address, and avatar": "Update your name, email address, and avatar",
"Use a 16:9 JPG, PNG, or WebP up to 4 MB.": "Use a 16:9 JPG, PNG, or WebP up to 4 MB.",
"USER": "USER",
"User": "User",
"User can create a channel.": "User can create a channel.",
"User channel creation access removed.": "User channel creation access removed.",
"User suspended.": "User suspended.",
"Users": "Users",
"Verify email": "Verify email",
"View channel": "View channel",
"View recovery codes": "View recovery codes",
"Viewers": "Viewers",
"VOD deleted.": "VOD deleted.",
"VOD ready": "VOD ready",
"VODs": "VODs",
"Warning": "Warning",
"Watch": "Watch",
"Watch VOD": "Watch VOD",
"When you enable two-factor authentication, you will be prompted for a secure pin during login. This pin can be retrieved from a TOTP-supported application on your phone.": "When you enable two-factor authentication, you will be prompted for a secure pin during login. This pin can be retrieved from a TOTP-supported application on your phone.",
"You": "You",
"YOU": "YOU",
"You will be prompted for a secure, random pin during login, which you can retrieve from the TOTP-supported application on your phone.": "You will be prompted for a secure, random pin during login, which you can retrieve from the TOTP-supported application on your phone.",
"Your email address is unverified.": "Your email address is unverified.",
"above.": "above.",
"breadcrumb": "breadcrumb",
"email@example.com": "email@example.com",
"later": "later",
"live only": "live only",
"log in": "log in",
"login using a recovery code": "login using a recovery code",
"login using an authentication code": "login using an authentication code",
"nyone-live": "nyone-live",
"or you can": "or you can",
"or, enter the code manually": "or, enter the code manually",
"pending": "pending",
"recording": "recording",
"unknown": "unknown"
}

20
lang/en/auth.php Normal file
View File

@@ -0,0 +1,20 @@
<?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' => 'These credentials do not match our records.',
'password' => 'The provided password is incorrect.',
'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',
];

19
lang/en/pagination.php Normal file
View File

@@ -0,0 +1,19 @@
<?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' => '&laquo; Previous',
'next' => 'Next &raquo;',
];

22
lang/en/passwords.php Normal file
View File

@@ -0,0 +1,22 @@
<?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
| outcome such as failure due to an invalid password / reset token.
|
*/
'reset' => 'Your password has been reset.',
'sent' => 'We have emailed your password reset link.',
'throttled' => 'Please wait before retrying.',
'token' => 'This password reset token is invalid.',
'user' => "We can't find a user with that email address.",
];

200
lang/en/validation.php Normal file
View File

@@ -0,0 +1,200 @@
<?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' => 'The :attribute field must be accepted.',
'accepted_if' => 'The :attribute field must be accepted when :other is :value.',
'active_url' => 'The :attribute field must be a valid URL.',
'after' => 'The :attribute field must be a date after :date.',
'after_or_equal' => 'The :attribute field must be a date after or equal to :date.',
'alpha' => 'The :attribute field must only contain letters.',
'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.',
'alpha_num' => 'The :attribute field must only contain letters and numbers.',
'any_of' => 'The :attribute field is invalid.',
'array' => 'The :attribute field must be an array.',
'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.',
'before' => 'The :attribute field must be a date before :date.',
'before_or_equal' => 'The :attribute field must be a date before or equal to :date.',
'between' => [
'array' => 'The :attribute field must have between :min and :max items.',
'file' => 'The :attribute field must be between :min and :max kilobytes.',
'numeric' => 'The :attribute field must be between :min and :max.',
'string' => 'The :attribute field must be between :min and :max characters.',
],
'boolean' => 'The :attribute field must be true or false.',
'can' => 'The :attribute field contains an unauthorized value.',
'confirmed' => 'The :attribute field confirmation does not match.',
'contains' => 'The :attribute field is missing a required value.',
'current_password' => 'The password is incorrect.',
'date' => 'The :attribute field must be a valid date.',
'date_equals' => 'The :attribute field must be a date equal to :date.',
'date_format' => 'The :attribute field must match the format :format.',
'decimal' => 'The :attribute field must have :decimal decimal places.',
'declined' => 'The :attribute field must be declined.',
'declined_if' => 'The :attribute field must be declined when :other is :value.',
'different' => 'The :attribute field and :other must be different.',
'digits' => 'The :attribute field must be :digits digits.',
'digits_between' => 'The :attribute field must be between :min and :max digits.',
'dimensions' => 'The :attribute field has invalid image dimensions.',
'distinct' => 'The :attribute field has a duplicate value.',
'doesnt_contain' => 'The :attribute field must not contain any of the following: :values.',
'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.',
'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.',
'email' => 'The :attribute field must be a valid email address.',
'encoding' => 'The :attribute field must be encoded in :encoding.',
'ends_with' => 'The :attribute field must end with one of the following: :values.',
'enum' => 'The selected :attribute is invalid.',
'exists' => 'The selected :attribute is invalid.',
'extensions' => 'The :attribute field must have one of the following extensions: :values.',
'file' => 'The :attribute field must be a file.',
'filled' => 'The :attribute field must have a value.',
'gt' => [
'array' => 'The :attribute field must have more than :value items.',
'file' => 'The :attribute field must be greater than :value kilobytes.',
'numeric' => 'The :attribute field must be greater than :value.',
'string' => 'The :attribute field must be greater than :value characters.',
],
'gte' => [
'array' => 'The :attribute field must have :value items or more.',
'file' => 'The :attribute field must be greater than or equal to :value kilobytes.',
'numeric' => 'The :attribute field must be greater than or equal to :value.',
'string' => 'The :attribute field must be greater than or equal to :value characters.',
],
'hex_color' => 'The :attribute field must be a valid hexadecimal color.',
'image' => 'The :attribute field must be an image.',
'in' => 'The selected :attribute is invalid.',
'in_array' => 'The :attribute field must exist in :other.',
'in_array_keys' => 'The :attribute field must contain at least one of the following keys: :values.',
'integer' => 'The :attribute field must be an integer.',
'ip' => 'The :attribute field must be a valid IP address.',
'ipv4' => 'The :attribute field must be a valid IPv4 address.',
'ipv6' => 'The :attribute field must be a valid IPv6 address.',
'json' => 'The :attribute field must be a valid JSON string.',
'list' => 'The :attribute field must be a list.',
'lowercase' => 'The :attribute field must be lowercase.',
'lt' => [
'array' => 'The :attribute field must have less than :value items.',
'file' => 'The :attribute field must be less than :value kilobytes.',
'numeric' => 'The :attribute field must be less than :value.',
'string' => 'The :attribute field must be less than :value characters.',
],
'lte' => [
'array' => 'The :attribute field must not have more than :value items.',
'file' => 'The :attribute field must be less than or equal to :value kilobytes.',
'numeric' => 'The :attribute field must be less than or equal to :value.',
'string' => 'The :attribute field must be less than or equal to :value characters.',
],
'mac_address' => 'The :attribute field must be a valid MAC address.',
'max' => [
'array' => 'The :attribute field must not have more than :max items.',
'file' => 'The :attribute field must not be greater than :max kilobytes.',
'numeric' => 'The :attribute field must not be greater than :max.',
'string' => 'The :attribute field must not be greater than :max characters.',
],
'max_digits' => 'The :attribute field must not have more than :max digits.',
'mimes' => 'The :attribute field must be a file of type: :values.',
'mimetypes' => 'The :attribute field must be a file of type: :values.',
'min' => [
'array' => 'The :attribute field must have at least :min items.',
'file' => 'The :attribute field must be at least :min kilobytes.',
'numeric' => 'The :attribute field must be at least :min.',
'string' => 'The :attribute field must be at least :min characters.',
],
'min_digits' => 'The :attribute field must have at least :min digits.',
'missing' => 'The :attribute field must be missing.',
'missing_if' => 'The :attribute field must be missing when :other is :value.',
'missing_unless' => 'The :attribute field must be missing unless :other is :value.',
'missing_with' => 'The :attribute field must be missing when :values is present.',
'missing_with_all' => 'The :attribute field must be missing when :values are present.',
'multiple_of' => 'The :attribute field must be a multiple of :value.',
'not_in' => 'The selected :attribute is invalid.',
'not_regex' => 'The :attribute field format is invalid.',
'numeric' => 'The :attribute field must be a number.',
'password' => [
'letters' => 'The :attribute field must contain at least one letter.',
'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.',
'numbers' => 'The :attribute field must contain at least one number.',
'symbols' => 'The :attribute field must contain at least one symbol.',
'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.',
],
'present' => 'The :attribute field must be present.',
'present_if' => 'The :attribute field must be present when :other is :value.',
'present_unless' => 'The :attribute field must be present unless :other is :value.',
'present_with' => 'The :attribute field must be present when :values is present.',
'present_with_all' => 'The :attribute field must be present when :values are present.',
'prohibited' => 'The :attribute field is prohibited.',
'prohibited_if' => 'The :attribute field is prohibited when :other is :value.',
'prohibited_if_accepted' => 'The :attribute field is prohibited when :other is accepted.',
'prohibited_if_declined' => 'The :attribute field is prohibited when :other is declined.',
'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.',
'prohibits' => 'The :attribute field prohibits :other from being present.',
'regex' => 'The :attribute field format is invalid.',
'required' => 'The :attribute field is required.',
'required_array_keys' => 'The :attribute field must contain entries for: :values.',
'required_if' => 'The :attribute field is required when :other is :value.',
'required_if_accepted' => 'The :attribute field is required when :other is accepted.',
'required_if_declined' => 'The :attribute field is required when :other is declined.',
'required_unless' => 'The :attribute field is required unless :other is in :values.',
'required_with' => 'The :attribute field is required when :values is present.',
'required_with_all' => 'The :attribute field is required when :values are present.',
'required_without' => 'The :attribute field is required when :values is not present.',
'required_without_all' => 'The :attribute field is required when none of :values are present.',
'same' => 'The :attribute field must match :other.',
'size' => [
'array' => 'The :attribute field must contain :size items.',
'file' => 'The :attribute field must be :size kilobytes.',
'numeric' => 'The :attribute field must be :size.',
'string' => 'The :attribute field must be :size characters.',
],
'starts_with' => 'The :attribute field must start with one of the following: :values.',
'string' => 'The :attribute field must be a string.',
'timezone' => 'The :attribute field must be a valid timezone.',
'unique' => 'The :attribute has already been taken.',
'uploaded' => 'The :attribute failed to upload.',
'uppercase' => 'The :attribute field must be uppercase.',
'url' => 'The :attribute field must be a valid URL.',
'ulid' => 'The :attribute field must be a valid ULID.',
'uuid' => 'The :attribute field must be a valid 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' => [],
];