diff --git a/shared/config/lang.php b/shared/config/lang.php index abd9dc0..56835fb 100644 --- a/shared/config/lang.php +++ b/shared/config/lang.php @@ -7,7 +7,7 @@ * --------------------------------------------------------- */ 'enabled' => true, - 'supported' => ['en', 'ru', 'am'], + 'supported' => ['en', 'es'], 'default' => 'en', 'url_segment' => 1, ]; \ No newline at end of file diff --git a/shared/resources/lang/am/common.php b/shared/resources/lang/am/common.php deleted file mode 100644 index c981ccc..0000000 --- a/shared/resources/lang/am/common.php +++ /dev/null @@ -1,78 +0,0 @@ - 'Շատ արագ եւ չափազանց պարզ նոր սերնդի վեբ ֆրեյմվորկ, մոդուլային կառուցվածքով, որը հնարավորություն է տալիս ստեղծել ցանկացած բարդության նախագծեր', - 'about_framework' => 'Quantum-ը PHP անվճար, բաց կոդով գործող վեբ ֆրեյմվորկ է, որը հատուկ մշակված է ստեղծելու վեբ նախագծեր մոդուլային կառուցվածքով, որոնք կաշխատեն շատ արագ: Quantum-ով հեշտ է իրականացնել ցանկացած նախագիծ՝ սկսած ամենա պարզ կայքերից մինչև API-ի վրա հիմնված բարդ համակարգեր, միևնույն ժամանակ պահպանելով կոդը մաքուր, կազմակերպված, գործունեության ողջ ընթացքում', - 'version' => 'Տարբերակ', - 'current_version' => 'Ընթացիկ տարբերակը: {%1}', - 'home' => 'Գլխավոր', - 'about' => 'Նախագծի մասին', - 'installation' => 'Կարգավորում', - 'learn_more' => 'Իմանալ ավելին', - 'create_project' => 'Ստեղծել նոր նախագիծ', - 'run_server' => 'Գործարկել նախագիծը', - 'signin' => 'Մուտք', - 'signup' => 'Գրանցվել', - 'signout' => 'Ելք', - 'activate' => 'Ակտիվացնել', - 'activation_email_content' => 'Ակտիվացրեք ձեր հաշիվը՝ սեղմելով ստորև նշված կոճակը', - 'activate_account' => 'Ակտիվացրեք հաշիվը', - 'account_activated' => 'Հաշիվն ակտիվացված է', - 'remember_me' => 'Հիշիր ինձ', - 'forget_password' => 'Մոռացել եք գաղտնաբառը?', - 'reset_password' => 'Գաղտնաբառի վերականգնում', - 'reset_password_email_content' => 'Վերականգնել ձեր գաղտնաբառը՝ սեղմելով ստորև նշված կոճակը', - 'check_email_signup' => 'Գրանցումը հաջող է, խնդրում ենք ստուգել ձեր էլեկտրոնային հասցեն', - 'check_email' => 'Ստուգեք ձեր էլ. փոստը `ձեր գաղտնաբառը վերականգնելու համար', - 'email' => 'Էլ. հասցե', - 'password' => 'Գաղտնաբառ', - 'verification_code' =>'Ստուգման կոդը', - 'new_password' => 'Նոր գաղտնաբառ', - 'repeat_password' => 'Կրկնեք գաղտնաբառը', - 'firstname' => 'Անուն', - 'lastname' => 'Ազգանուն', - 'send' => 'Ուղարկել', - 'reset' => 'Վերակայել', - 'successfully_signed_up' => 'Գրանցումը հաջողվեց', - 'title' => 'Վերնագիր', - 'cancel' => 'Չեղարկել', - 'content' => 'Բովանդակություն', - 'posts' => 'Հրապարակումներ', - 'my_posts' => 'Իմ Հրապարակումները', - 'new_post' => 'Նոր գրառում', - 'created_successfully' => 'Հաջողությամբ ստեղծվեց', - 'update_post' => 'Թարմացնել Գրառումը', - 'updated_successfully' => 'Հաջողությամբ թարմացվեց', - 'confirm_delete' => 'Վստա՞հ եք, որ ցանկանում եք ջնջել {%1}', - 'deleted_successfully' => 'Հաջողությամբ ջնջվեց', - 'image' => 'նկարը', - 'post' => 'գրառումը', - 'edit' => 'Խմբագրել', - 'save' => 'Պահպանել', - 'delete' => 'Ջնջել', - 'post_not_found' => 'Գրառումը չի գտնվել', - 'no_posts' => 'Չկան նոր հրապարակումներ', - 'try_creating' => 'Փորձեք ստեղծել նորը', - 'en' => 'Անգլերեն', - 'ru' => 'Ռուսերեն', - 'am' => 'Հայերեն', - 'otp' => 'Մեկանգամյա գաղտնաբառ', - 'two_fa' => 'Երկու գործոնով նույնականացում', - 'resend_otp' => 'Կրկին ուղարկել', - 'yes' => 'Այո', - 'profile' => 'Պրոֆիլ', - 'account_settings' => 'Հաշվի կարգավորումներ', - 'current_password' => 'Ընթացիկ գաղտնաբառը', - 'confirm_password' => 'Հաստատեք գաղտնաբառը', - 'pagination' => [ - 'next' => 'Հաջորդ »', - 'prev' => '« Նախորդ' - ], - 'comments' => [ - 'submit_comment' => 'Թողնել մեկնաբանություն', - 'title' => 'Մեկնաբանություններ', - 'login_to_comment' => 'Մուտք գործեք՝ մեկնաբանություններ թողնելու համար', - 'leave_a_comment' => 'Թողեք մեկնաբանություն', - 'no_comments' => 'Մեկնաբանություններ չկան', - ] -]; diff --git a/shared/resources/lang/am/exception.php b/shared/resources/lang/am/exception.php deleted file mode 100644 index ad0ff69..0000000 --- a/shared/resources/lang/am/exception.php +++ /dev/null @@ -1,92 +0,0 @@ - 'APP KEY is missing', - 'position_in_use' => 'Position `{%1}` for asset `{%2}` is in use', - 'incorrect_auth_credentials' => 'Incorrect credentials', - 'inactive_account' => 'The account is not activated', - 'incorrect_verification_code' => 'Incorrect verification code.', - 'verification_code_expired' => 'Verification code expired', - 'misconfigured_auth_config' => 'Auth config is not properly configured', - 'undefined_auth_type' => 'The auth type can be only [web] or [api]', - 'incorrect_user_schema' => 'User schema does not contains all key fields', - 'config_file_not_found' => 'Config file `{%1}` does not exists', - 'config_already_loaded' => 'Config already loaded, use method `import()` to import additional config data', - 'config_collision' => 'Config key `{%1}` is already in use', - 'controller_not_found' => 'Controller `{%1}` not found', - 'controller_not_defined' => 'Controller {%1} not defined', - 'action_not_defined' => 'Action `{%1}` not defined', - 'undefined_method' => 'The method `{%1}` is not defined', - 'openssl_public_key_not_created' => 'Public key not created yet', - 'openssl_private_key_not_created' => 'Private key not created yet', - 'openssl_public_key_not_provided' => 'Public key is not provided', - 'openssl_private_key_not_provided' => 'Private key is not provided', - 'openssl_invalid_cipher' => 'The cipher is invalid', - 'openssl_config_not_found' => 'Could not load openssl.cnf properly.', - 'csrf_token_not_found' => 'CSRF Token is missing', - 'csrf_token_not_matched' => 'CSRF Token does not matched', - 'incorrect_config' => 'The structure of config is not correct', - 'config_not_provided' => 'Configuration does not provided', - 'orm_class_not_defined' => 'Missing ORM definition in config file', - 'orm_class_not_found' => 'ORM `{%1}` class not found', - 'not_supported_method' => 'The method `{%1}` is not supported for `{%2}`', - 'not_supported_operator' => 'The operator `{%1}` is not supported', - 'dependency_not_found' => 'Dependency `{%1}` not defined', - 'env_file_not_found' => 'ENV file not found', - 'directory_not_exist' => 'Directory `{%1}` does not exists', - 'directory_not_writable' => 'Directory `{%1}` not writable', - 'directory_cant_be_created' => 'Directory `{%1}` could not be created', - 'file_already_exists' => 'File already exists', - 'file_not_uploaded' => 'The uploaded file was not sent with a POST request', - 'uploaded_file_not_found' => 'Cannot find uploaded file identified by key `{%1}`', - 'file_type_not_allowed' => 'The file type `{%1}` is not allowed', - 'duplicate_hook_name' => 'The Hook `{%1}` already registered', - 'unregistered_hook_name' => 'The Hook `{%1}` was not registered', - 'unexpected_request_initialization' => 'HTTP Request can not be initialized outside of the core', - 'unexpected_response_initialization' => 'HTTP Response can not be initialized outside of the core', - 'request_not_created' => 'Request is not created', - 'method_not_available' => 'Provided request method `{%1}` is not available', - 'not_supported_content_type' => 'The content type is not supported', - 'jwt_payload_not_found' => 'JWT payload is missing', - 'misconfigured_lang_config' => 'Misconfigured lang config', - 'translation_files_not_found' => 'Translations for language `{%1}` not found', - 'misconfigured_lang_default_config' => 'Misconfigured default lang config', - 'middleware_not_defined' => 'Middleware `{%1}` not defined', - 'middleware_not_found' => 'Middleware `{%1}` not found', - 'wrong_migration_direction' => 'Migration direction can only be [up] or [down]', - 'not_supported_driver' => 'The driver `{%1}` is not supported', - 'non_supported_action' => 'The action `{%1}`, is not supported', - 'table_already_exists' => 'The table `{%1}` is already exists', - 'table_does_not_exists' => 'The table `{%1}` does not exists', - 'column_not_available' => 'The column `{%1}` is not available', - 'method_not_defined' => 'The method `{%1}` is not defined', - 'nothing_to_migrate' => 'Nothing to migrate', - 'model_not_found' => 'Model `{%1}` not found', - 'not_instance_of_model' => 'Model `{%1}` is not instance of `{%2}`', - 'model_without_table_defined' => 'Model `{%1}` does not have $table property defined', - 'undefined_model_method' => 'Model method `{%1}` is not defined', - 'inappropriate_property' => 'Inappropriate property `{%1}` for fillable object', - 'wrong_relation' => 'The model `{%1}` does not define relation with `{%2}`', - 'module_not_found' => 'Module `{%1}` not found', - 'route_not_found' => 'Route Not Found', - 'routes_not_closure' => 'Route is not a closure', - 'repetitive_route_same_method' => 'Repetitive Routes with same method `{%1}`', - 'repetitive_route_different_modules' => 'Repetitive Routes in different modules', - 'incorrect_method' => 'Incorrect Method `{%1}`', - 'name_before_route_definition' => 'Names can not be set before route definition', - 'name_on_group' => 'Name can not be set on groups message', - 'name_is_not_unique' => 'Route names should be unique', - 'param_name_not_available' => 'Route param name `{%1}` already in use', - 'param_name_not_valid' => 'Route param names can only contain letters', - 'service_not_found' => 'Service `{%1}` not found', - 'not_instance_of_service' => 'Service `{%1}` is not instance of `{%2}`', - 'session_not_started' => 'Can not start the session', - 'session_not_destroyed' => 'Can not destroy the session', - 'session_table_not_provided' => 'Session table not provided', - 'execution_terminated' => 'Execution was terminated', - 'direct_view_instance' => 'Views can not be instantiated directly, use `{%1}` class instead', - 'layout_not_set' => 'Layout is not set', - 'view_file_not_found' => 'File `{%1}.php` does not exists', - 'template_engine_config_missing' => 'Missing Template engine configurations', - 'non_iterable_value' => 'The argument {%1} is not iterable' -]; \ No newline at end of file diff --git a/shared/resources/lang/am/validation.php b/shared/resources/lang/am/validation.php deleted file mode 100644 index e3e6a60..0000000 --- a/shared/resources/lang/am/validation.php +++ /dev/null @@ -1,52 +0,0 @@ - '{%1} դաշտի արժեքը պարտադիր է', - 'email' => '{%1} դաշտի արժեքը պետք է լինի վավեր էլ. հասցե', - 'minLen' => '{%1} դաշտը պետք է պարունակի {%2} կամ ավել քանակությամբ նիշեր', - 'maxLen' => '{%1} դաշտը պետք է պարունակի {%2} կամ պակաս քանակությամբ նիշեր', - 'exactLen' => '{%1} դաշտը պետք է պարունակի ճշգրիտ {%2} քանակությամբ նիշեր', - 'alpha' => '{%1} դաշտը պետք է պարունակի միայն տառեր', - 'alphaNumeric' => '{%1} դաշտը պետք է պարունակի միայն տառեր և թվեր', - 'alphaDash' => '{%1} դաշտը պետք է պարունակի միայն տառեր և գծիկներ', - 'alphaSpace' => '{%1} դաշտը պետք է պարունակի միայն տառեր և բացատներ', - 'numeric' => '{%1} դաշտի արժեքը պետք է լինի թիվ', - 'integer' => '{%1} դաշտի արժեքը պետք է լինի ամբողջական թիվ', - 'float' => '{%1} դաշտի արժեքը պետք է լինի ոչ ամբողջական թիվ', - 'boolean' => '{%1} դաշտի արժեքը պետք է լինի միայն true կամ false', - 'url' => '{%1} դաշտի արժեքը պետք է լինի հղում', - 'urlExists' => '{%1} դասշտի URL հասցեն գոյություն չունի', - 'ip' => '{%1} դաշտը պետք է պարունակի վավեր IP հասցե', - 'ipv4' => '{%1} դաշտը պետք է պարունակի վավեր IPv4 հասցե', - 'ipv6' => '{%1} դաշտը պետք է պարունակի վավեր IPv6 հասցե', - 'creditCard' => '{%1} դաշտի արժեքը կրեդիտ քարտի վավեր համարը չէ', - 'name' => '{%1} դաշտի արժեքը պետք է լինի լրիվ անուն', - 'contains' => '{%1} դաշտի արժեքը կարող է լինել միայն հետևյալներից մեկը {%2}', - 'containsList' => '{%1} դաշտի արժեքը վավեր տարբերակ չէ', - 'doesntContainsList' => '{%1} դաշտի արժեքը հնարավոր չէ օգտագործել', - 'streetAddress' => '{%1} դաշտի արժեքը պետք է լինի հասցե', - 'iban' => '{%1} դաշտը պետք է պարունակի վավեր IBAN արժեք', - 'minNumeric' => '{%1} դաշտի արժեքը պետք է հավասար կամ ավել լինի քան {%2}', - 'maxNumeric' => '{%1} դաշտի արժեքը պետք է հավասար կամ պակաս լինի քան {%2}', - 'date' => '{%1} դաշտի արժեքը պետք է լինի ամսաթիվ', - 'starts' => '{%1} դաշտի արժեքը պետք է սկսվի {%2}', - 'phoneNumber' => '{%1} դաշտի արժեքը պետք է լինի վավեր հեռախոսահամար', - 'regex' => '{%1} դաշտը պետք է պարունակի արժեք վավեր ձևաչափով', - 'jsonString' => '{%1} դաշտը պետք է ունենա վավեր JSON ձևաչափի', - 'same' => '{%1} դաշտը պետք է լինի նույն արժեքը, ինչ {%2}', - 'same_password' => '{%1} դաշտը պետք է լինի նույն արժեքը, ինչ Նոր գաղտնաբառը', - 'unique' => '{%1} դաշտը պետք է պարունակի միայն ունիկալ արժեք', - 'fileSize' => 'Ֆայլի չափը պետք է համապատասխանի {%1}', - 'fileMimeType' => 'Ֆայլի mimetype-ը պետք է համապատասխանի {%1}', - 'fileExtension' => 'Ֆայլի ընդլայնումը պետք է համապատասխանի {%1}', - 'imageDimensions' => 'Պատկերի չափերը պետք է համապատասխանեն {%1}', - 'nonExistingRecord' => 'Նման գրառում չի գտնվել, որը կհամապատասղանի {%1}', - 'nonEqualValues' => 'Արժեքները հավասար չեն', - 'unauthorizedRequest' => 'Չարտոնված հարցում', - 'uniqueUser' => '{%1} դաշտի արժեքն արդեն առկա է մեր տվյալների բազայում', - 'passwordsDoNotMatch' => 'Գաղտնաբառերը չեն համընկնում', - 'password_check' => 'Ներկայիս գաղտնաբառը սխալ է', - 'new_password' => 'Նոր գաղտնաբառ', - 'current_password' => 'Ընթացիկ գաղտնաբառը', - 'confirm_password' => 'Հաստատեք գաղտնաբառը', -]; diff --git a/shared/resources/lang/en/common.php b/shared/resources/lang/en/common.php index d2bc196..3161e97 100644 --- a/shared/resources/lang/en/common.php +++ b/shared/resources/lang/en/common.php @@ -1,80 +1,103 @@ 'Very fast and extremely simple, next generation PHP MVC framework with modular structure, which makes it possible to create projects of any complexity.', - 'about_framework' => 'Quantum is a free, open-source PHP web framework under MIT license, specially designed to develop very fast web applications with modular structure. With Quantum it’s easy to start any kind of project immediately, whether it\'s regular websites or complex API based service, at the same time it allows to keep the code clean, organized through all the development process.', + + // ───── About framework ─────────────────────────────────── + 'description' => 'Very fast and extremely simple, next generation PHP MVC framework with modular structure.', + 'about_framework' => 'Quantum is a free, open-source PHP web framework under MIT license...', 'version' => 'Version', 'current_version' => 'Current version is: {%1}', + + // ───── Navigation ───────────────────────────────────────── 'home' => 'Home', 'about' => 'About', 'installation' => 'Installation', 'learn_more' => 'Learn More', + + // ───── Project creation / commands ─────────────────────── 'create_project' => 'Create new project', 'run_server' => 'Run the project', + + // ───── Auth / User Management ───────────────────────────── 'captcha' => 'Captcha', 'signin' => 'Sign In', 'signup' => 'Sign Up', 'activate' => 'Activate', - 'activation_email_content' => 'Activate your account by clicking to the button bellow', + 'activation_email_content' => 'Activate your account by clicking the button below', 'activate_account' => 'Activate account', 'account_activated' => 'Account is activated', 'signout' => 'Sign Out', 'remember_me' => 'Remember Me', 'forget_password' => 'Forgot password?', 'reset_password' => 'Reset password', - 'reset_password_email_content' => 'Reset your password by clicking to the button bellow', + 'reset_password_email_content' => 'Reset your password by clicking the button below', 'repeat_password' => 'Repeat password', 'check_email_signup' => 'Registration was successful, please check your email', 'check_email' => 'Check your email to reset your password', + + // ───── User fields ───────────────────────────────────────── 'email' => 'Email', 'token' => 'Token', 'password' => 'Password', - 'verification_code' =>'Verification Code', + 'verification_code' => 'Verification Code', 'new_password' => 'New password', 'firstname' => 'First name', 'lastname' => 'Last name', + + // ───── Buttons ──────────────────────────────────────────── 'send' => 'Send', 'reset' => 'Reset', 'cancel' => 'Cancel', - 'successfully_signed_up' => 'Successfully signed up', - 'title' => 'Title', - 'content' => 'Content', + 'save' => 'Save', + 'delete' => 'Delete', + 'edit' => 'Edit', + 'yes' => 'Yes', + + // ───── Account settings ─────────────────────────────────── + 'account_settings' => 'Account Settings', + 'profile' => 'Profile', + 'current_password' => 'Current Password', + 'confirm_password' => 'Confirm Password', + + // ───── Posts ────────────────────────────────────────────── 'posts' => 'Posts', 'my_posts' => 'My Posts', 'new_post' => 'New Post', + 'title' => 'Title', + 'content' => 'Content', + 'image' => 'image', + 'post' => 'post', + 'created_successfully' => 'Created successfully', - 'update_post' => 'Update Post', 'updated_successfully' => 'Updated successfully', - 'confirm_delete' => 'Are you sure you want to delete the {%1} ?', 'deleted_successfully' => 'Deleted successfully', - 'image' => 'image', - 'post' => 'post', - 'edit' => 'Edit', - 'save' => 'Save', - 'delete' => 'Delete', + 'update_post' => 'Update Post', + 'confirm_delete' => 'Are you sure you want to delete the {%1} ?', 'post_not_found' => 'Post not found', 'no_posts' => 'No posts found', - 'try_creating' => 'Try creating new one', - 'en' => 'English', - 'ru' => 'Russian', - 'am' => 'Armenian', - 'otp' => 'One Time Password', - 'two_fa' => '2 Factor Authentication', - 'resend_otp' => 'Resend otp', - 'yes' => 'Yes', - 'account_settings' => 'Account Settings', - 'profile' => 'Profile', - 'current_password' => 'Current Password', - 'confirm_password' => 'Confirm Password', + 'try_creating' => 'Try creating a new one', + + // ───── Pagination ───────────────────────────────────────── 'pagination' => [ 'next' => 'Next »', - 'prev' => '« Prev' + 'prev' => '« Prev', ], - 'comments' =>[ + + // ───── Comments ─────────────────────────────────────────── + 'comments' => [ 'submit_comment' => 'Comment', 'title' => 'Comments', 'login_to_comment' => 'Login to comment', 'leave_a_comment' => 'Leave a comment', 'no_comments' => 'No comments', - ] + ], + + // ───── 2FA / OTP ────────────────────────────────────────── + 'otp' => 'One Time Password', + 'two_fa' => '2 Factor Authentication', + 'resend_otp' => 'Resend otp', + + // ───── Languages ────────────────────────────────────────── + 'en' => 'English', + 'es' => 'Spanish', ]; \ No newline at end of file diff --git a/shared/resources/lang/en/validation.php b/shared/resources/lang/en/validation.php index ba07344..b7f9260 100644 --- a/shared/resources/lang/en/validation.php +++ b/shared/resources/lang/en/validation.php @@ -1,58 +1,77 @@ 'The field {%1} is required', 'email' => 'The {%1} field must be a valid email address', + 'numeric' => 'The {%1} field must be a number', + 'integer' => 'The {%1} field must be a number without a decimal', + 'float' => 'The {%1} field must be a number with a decimal point', + 'boolean' => 'The {%1} field has to be either true or false', + 'date' => 'The {%1} must be a valid date', + 'regex' => 'The {%1} field needs to contain a value with valid format', + 'jsonString' => 'The {%1} field needs to contain a valid JSON format string', + + // ───── Min/Max rules ──────────────────────────────────── 'minLen' => 'The {%1} field needs to be at least {%2} characters', 'maxLen' => 'The {%1} field needs to be {%2} characters or less', 'exactLen' => 'The {%1} field needs to be exactly {%2} characters', + 'minNumeric' => 'The {%1} field needs to be numeric and >= {%2}', + 'maxNumeric' => 'The {%1} field needs to be numeric and <= {%2}', + + // ───── String type rules ──────────────────────────────── 'alpha' => 'The {%1} field may only contain letters', 'alphaNumeric' => 'The {%1} field may only contain letters and numbers', 'alphaDash' => 'The {%1} field may only contain letters, dashes and underscores', 'alphaSpace' => 'The {%1} field may only contain letters and spaces', - 'numeric' => 'The {%1} field must be a number', - 'integer' => 'The {%1} field must be a number without a decimal', - 'float' => 'The {%1} field must be a number with a decimal point', - 'boolean' => 'The {%1} field has to be either true or false', + + // ───── Special content rules ───────────────────────────── 'url' => 'The {%1} field has to be a URL', 'urlExists' => 'The {%1} URL does not exist', + 'ip' => 'The {%1} field needs to be a valid IP address', - 'ipv4' => 'The {%1} field needs to contain a valid IPv4 address', - 'ipv6' => 'The {%1} field needs to contain a valid IPv6 address', + 'ipv4' => 'The {%1} field needs to be a valid IPv4 address', + 'ipv6' => 'The {%1} field needs to be a valid IPv6 address', + 'creditCard' => 'The {%1} is not a valid credit card number', - 'name' => 'The {%1} should be a full name', - 'contains' => 'The {%1} can only be one of the following: {%2}', - 'containsList' => 'The {%1} is not a valid option', - 'doesntContainsList' => 'The {%1} field contains a value that is not accepted', 'streetAddress' => 'The {%1} field needs to be a valid street address', + 'iban' => 'The {%1} field needs to contain a valid IBAN', - 'minNumeric' => 'The {%1} field needs to be a numeric value, equal to, or higher than {%2}', - 'maxNumeric' => 'The {%1} field needs to be a numeric value, equal to, or lower than {%2}', - 'date' => 'The {%1} must be a valid date', - 'starts' => 'The {%1} field needs to start with: {%2}', - 'phoneNumber' => 'The {%1} field needs to be a valid Phone Number', - 'regex' => 'The {%1} field needs to contain a value with valid format', - 'jsonString' => 'The {%1} field needs to contain a valid JSON format string', - 'same_password' => 'The {%1} field should be same as the New password', + // ───── Comparison rules ────────────────────────────────── 'same' => 'The {%1} field should be same as the {%2}', + 'same_password' => 'The {%1} field should match the new password', + 'nonEqualValues' => 'Values are not equal', + + // ───── Contains rules ──────────────────────────────────── + 'contains' => 'The {%1} can only be one of: {%2}', + 'containsList' => 'The {%1} is not a valid option', + 'doesntContainsList' => 'The {%1} field contains a value that is not accepted', + + // ───── Custom project-specific rules ───────────────────── 'token_exists' => 'The activation token is invalid or expired', 'exists' => 'The {%1} does not exist in our records', + 'uniqueUser' => 'The value of {%1} field already exists in our database', + 'nonExistingRecord' => 'There is no record matching the {%1}', + 'unauthorizedRequest' => 'Unauthorized request', -// 'unique' => 'The {%1} field should contain only unique value', + // ───── File rules ───────────────────────────────────────── 'fileSize' => 'The file size should correspond to the {%1}', 'fileMimeType' => 'The file mimetype should correspond to the {%1}', 'fileExtension' => 'The file extension should correspond to the {%1}', 'imageDimensions' => 'The image dimensions should correspond to the {%1}', - 'nonExistingRecord' => 'There is no record matched to the {%1}', - 'nonEqualValues' => 'Values are not equal', - 'unauthorizedRequest' => 'Unauthorized request', - 'uniqueUser' => 'The value of {%1} field is already exists in our database', + + // ───── Auth/password rules ──────────────────────────────── 'passwordsDoNotMatch' => 'Passwords do not match', 'passwordCheck' => 'The current password is incorrect', + + // These are labels, not errors 'new_password' => 'New password', 'current_password' => 'Current Password', 'confirm_password' => 'Confirm Password', + + // ───── Captcha ─────────────────────────────────────────── 'captcha' => [ 'timeout-or-duplicate' => 'Timeout or duplicate.', 'missing-input-secret' => 'The secret parameter is missing.', @@ -62,5 +81,5 @@ 'bad-request' => 'The request is invalid or malformed.', 'internal-empty-response' => 'The captcha response is required.', 'replay-attack' => 'Potential replay attack detected.', - ] -]; + ], +]; \ No newline at end of file diff --git a/shared/resources/lang/es/common.php b/shared/resources/lang/es/common.php new file mode 100644 index 0000000..a8a137a --- /dev/null +++ b/shared/resources/lang/es/common.php @@ -0,0 +1,103 @@ + 'Framework MVC en PHP de nueva generación, muy rápido y extremadamente simple, con una estructura modular.', + 'about_framework' => 'Quantum es un framework web en PHP gratuito y de código abierto bajo la licencia MIT...', + 'version' => 'Versión', + 'current_version' => 'La versión actual es: {%1}', + + // ───── Navigation ───────────────────────────────────────── + 'home' => 'Inicio', + 'about' => 'Acerca de', + 'installation' => 'Instalación', + 'learn_more' => 'Aprender más', + + // ───── Project creation / commands ─────────────────────── + 'create_project' => 'Crear nuevo proyecto', + 'run_server' => 'Ejecutar el proyecto', + + // ───── Auth / User Management ───────────────────────────── + 'captcha' => 'Captcha', + 'signin' => 'Iniciar sesión', + 'signup' => 'Registrarse', + 'activate' => 'Activar', + 'activation_email_content' => 'Activa tu cuenta haciendo clic en el botón de abajo', + 'activate_account' => 'Activar cuenta', + 'account_activated' => 'La cuenta ha sido activada', + 'signout' => 'Cerrar sesión', + 'remember_me' => 'Recuérdame', + 'forget_password' => '¿Olvidaste tu contraseña?', + 'reset_password' => 'Restablecer contraseña', + 'reset_password_email_content' => 'Restablece tu contraseña haciendo clic en el botón de abajo', + 'repeat_password' => 'Repetir contraseña', + 'check_email_signup' => 'Registro exitoso, por favor revisa tu correo electrónico', + 'check_email' => 'Revisa tu correo electrónico para restablecer tu contraseña', + + // ───── User fields ───────────────────────────────────────── + 'email' => 'Correo electrónico', + 'token' => 'Token', + 'password' => 'Contraseña', + 'verification_code' => 'Código de verificación', + 'new_password' => 'Nueva contraseña', + 'firstname' => 'Nombre', + 'lastname' => 'Apellido', + + // ───── Buttons ──────────────────────────────────────────── + 'send' => 'Enviar', + 'reset' => 'Restablecer', + 'cancel' => 'Cancelar', + 'save' => 'Guardar', + 'delete' => 'Eliminar', + 'edit' => 'Editar', + 'yes' => 'Sí', + + // ───── Account settings ─────────────────────────────────── + 'account_settings' => 'Configuración de la cuenta', + 'profile' => 'Perfil', + 'current_password' => 'Contraseña actual', + 'confirm_password' => 'Confirmar contraseña', + + // ───── Posts ────────────────────────────────────────────── + 'posts' => 'Publicaciones', + 'my_posts' => 'Mis publicaciones', + 'new_post' => 'Nueva publicación', + 'title' => 'Título', + 'content' => 'Contenido', + 'image' => 'Imagen', + 'post' => 'Publicación', + + 'created_successfully' => 'Creado exitosamente', + 'updated_successfully' => 'Actualizado exitosamente', + 'deleted_successfully' => 'Eliminado exitosamente', + 'update_post' => 'Actualizar publicación', + 'confirm_delete' => '¿Estás seguro de que deseas eliminar el {%1} ?', + 'post_not_found' => 'Publicación no encontrada', + 'no_posts' => 'No se encontraron publicaciones', + 'try_creating' => 'Intenta crear una nueva', + + // ───── Pagination ───────────────────────────────────────── + 'pagination' => [ + 'next' => 'Siguiente »', + 'prev' => '« Anterior', + ], + + // ───── Comments ─────────────────────────────────────────── + 'comments' => [ + 'submit_comment' => 'Comentar', + 'title' => 'Comentarios', + 'login_to_comment' => 'Inicia sesión para comentar', + 'leave_a_comment' => 'Deja un comentario', + 'no_comments' => 'Sin comentarios', + ], + + // ───── 2FA / OTP ────────────────────────────────────────── + 'otp' => 'Contraseña de un solo uso', + 'two_fa' => 'Autenticación de dos factores', + 'resend_otp' => 'Reenviar OTP', + + // ───── Languages ────────────────────────────────────────── + 'en' => 'Inglés', + 'es' => 'Español', +]; \ No newline at end of file diff --git a/shared/resources/lang/es/validation.php b/shared/resources/lang/es/validation.php new file mode 100644 index 0000000..297f8df --- /dev/null +++ b/shared/resources/lang/es/validation.php @@ -0,0 +1,85 @@ + 'El campo {%1} es obligatorio', + 'email' => 'El campo {%1} debe ser una dirección de correo válida', + 'numeric' => 'El campo {%1} debe ser un número', + 'integer' => 'El campo {%1} debe ser un número sin decimales', + 'float' => 'El campo {%1} debe ser un número con punto decimal', + 'boolean' => 'El campo {%1} debe ser verdadero o falso', + 'date' => 'El campo {%1} debe ser una fecha válida', + 'regex' => 'El campo {%1} debe contener un valor con un formato válido', + 'jsonString' => 'El campo {%1} debe contener una cadena en formato JSON válido', + + // ───── Min/Max rules ──────────────────────────────────── + 'minLen' => 'El campo {%1} debe tener al menos {%2} caracteres', + 'maxLen' => 'El campo {%1} debe tener {%2} caracteres o menos', + 'exactLen' => 'El campo {%1} debe tener exactamente {%2} caracteres', + 'minNumeric' => 'El campo {%1} debe ser numérico y ser >= {%2}', + 'maxNumeric' => 'El campo {%1} debe ser numérico y ser <= {%2}', + + // ───── String type rules ──────────────────────────────── + 'alpha' => 'El campo {%1} solo puede contener letras', + 'alphaNumeric' => 'El campo {%1} solo puede contener letras y números', + 'alphaDash' => 'El campo {%1} solo puede contener letras, guiones y guiones bajos', + 'alphaSpace' => 'El campo {%1} solo puede contener letras y espacios', + + // ───── Special content rules ───────────────────────────── + 'url' => 'El campo {%1} debe ser una URL', + 'urlExists' => 'La URL en {%1} no existe', + + 'ip' => 'El campo {%1} debe ser una dirección IP válida', + 'ipv4' => 'El campo {%1} debe ser una dirección IPv4 válida', + 'ipv6' => 'El campo {%1} debe ser una dirección IPv6 válida', + + 'creditCard' => 'El campo {%1} no es un número de tarjeta de crédito válido', + 'streetAddress' => 'El campo {%1} debe ser una dirección válida', + + 'iban' => 'El campo {%1} debe contener un IBAN válido', + + // ───── Comparison rules ────────────────────────────────── + 'same' => 'El campo {%1} debe ser igual al campo {%2}', + 'same_password' => 'El campo {%1} debe coincidir con la nueva contraseña', + 'nonEqualValues' => 'Los valores no son iguales', + + // ───── Contains rules ──────────────────────────────────── + 'contains' => 'El campo {%1} solo puede ser uno de: {%2}', + 'containsList' => 'El valor del campo {%1} no es una opción válida', + 'doesntContainsList' => 'El campo {%1} contiene un valor que no es aceptado', + + // ───── Custom project-specific rules ───────────────────── + 'token_exists' => 'El token de activación es inválido o ha expirado', + 'exists' => 'El valor de {%1} no existe en nuestros registros', + 'uniqueUser' => 'El valor del campo {%1} ya existe en nuestra base de datos', + 'nonExistingRecord' => 'No hay ningún registro que coincida con {%1}', + 'unauthorizedRequest' => 'Solicitud no autorizada', + + // ───── File rules ───────────────────────────────────────── + 'fileSize' => 'El tamaño del archivo debe corresponder a {%1}', + 'fileMimeType' => 'El tipo MIME del archivo debe corresponder a {%1}', + 'fileExtension' => 'La extensión del archivo debe corresponder a {%1}', + 'imageDimensions' => 'Las dimensiones de la imagen deben corresponder a {%1}', + + // ───── Auth/password rules ──────────────────────────────── + 'passwordsDoNotMatch' => 'Las contraseñas no coinciden', + 'passwordCheck' => 'La contraseña actual es incorrecta', + + // These are labels, not errors + 'new_password' => 'Nueva contraseña', + 'current_password' => 'Contraseña actual', + 'confirm_password' => 'Confirmar contraseña', + + // ───── Captcha ─────────────────────────────────────────── + 'captcha' => [ + 'timeout-or-duplicate' => 'Tiempo agotado o duplicado.', + 'missing-input-secret' => 'Falta el parámetro secreto.', + 'invalid-input-secret' => 'El parámetro secreto es inválido o tiene un formato incorrecto.', + 'missing-input-response' => 'Falta el parámetro de respuesta.', + 'invalid-input-response' => 'El parámetro de respuesta es inválido o tiene un formato incorrecto.', + 'bad-request' => 'La solicitud es inválida o tiene un formato incorrecto.', + 'internal-empty-response' => 'La respuesta del captcha es obligatoria.', + 'replay-attack' => 'Se detectó un posible ataque de repetición.', + ], +]; \ No newline at end of file diff --git a/shared/resources/lang/ru/common.php b/shared/resources/lang/ru/common.php deleted file mode 100644 index b5d4178..0000000 --- a/shared/resources/lang/ru/common.php +++ /dev/null @@ -1,78 +0,0 @@ - 'Очень быстрый и чрезвычайно простой фреймворк PHP MVC нового поколения с модульной структурой, который позволяет создавать проекты любой сложности.', - 'about_framework' => 'Quantum - это бесплатный веб-фреймворк с открытым исходным кодом на PHP, специально разработан для создания очень быстрых веб-приложений с модульной структурой. С Quantum легко запустить любой проект, от обычных веб-сайтов до сложных проектов на основе API, и в то же время сохранять код чистым, организованным на протяжении всего процесса разработки.', - 'version' => 'Версия', - 'current_version' => 'Текущая версия: {%1}', - 'home' => 'Главная', - 'about' => 'О проекте', - 'installation' => 'Установка', - 'learn_more' => 'Узнать больше', - 'create_project' => 'Создать новый проект', - 'run_server' => 'Запустить проект', - 'signin' => 'Войти', - 'signup' => 'Зарегистрироваться', - 'signout' => 'Выход', - 'activate' => 'Активировать', - 'activation_email_content' => 'Активируйте свою учетную запись, нажав на кнопку ниже', - 'activate_account' => 'Активировать аккаунт', - 'account_activated' => 'Аккаунт активирован', - 'remember_me' => 'Запомни меня', - 'forget_password' => 'Забыли пароль?', - 'reset_password' => 'Сброс пароля', - 'reset_password_email_content' => 'Сбросьте пароль, нажав на кнопку ниже', - 'check_email_signup' => 'Регистрация прошла успешно, проверьте почту', - 'check_email' => 'Проверьте свою электронную почту, чтобы сбросить пароль', - 'email' => 'Эл. адрес', - 'password' => 'Пароль', - 'verification_code' =>'Код верификации', - 'new_password' => 'Новый пароль', - 'repeat_password' => 'Повторите пароль', - 'firstname' => 'Имя', - 'lastname' => 'Фамилия', - 'send' => 'Отправить', - 'reset' => 'Сбросить', - 'successfully_signed_up' => 'Успешная регистрация', - 'title' => 'Заглавие', - 'cancel' => 'Отмена', - 'content' => 'Содержание', - 'posts' => 'Публикации', - 'my_posts' => 'Мои Публикации', - 'new_post' => 'Новая публикация', - 'created_successfully' => 'Успешно создано', - 'update_post' => 'Обновить Сообщение', - 'updated_successfully' => 'Успешно Обновлено', - 'confirm_delete' => 'Вы уверены, что хотите удалить {%1} ?', - 'deleted_successfully' => 'Успешно удалено', - 'image' => 'изображение', - 'post' => 'публикацию', - 'edit' => 'Редактировать', - 'save' => 'Сохранить', - 'delete' => 'Удалить', - 'post_not_found' => 'Публикация не найдено', - 'no_posts' => 'Нет новых публикации', - 'try_creating' => 'Попробуйте создать новый', - 'en' => 'Английский', - 'ru' => 'Русский', - 'am' => 'Армянский', - 'otp' => 'Одноразовый пароль', - 'two_fa' => 'Двухфакторная аутентификация', - 'resend_otp' => 'Отправить повторно', - 'yes' => 'Да', - 'account_settings' => 'Настройки учетной записи', - 'profile' => 'Профиль', - 'current_password' => 'Текущий пароль', - 'confirm_password' => 'Подтвердите пароль', - 'pagination' => [ - 'next' => 'Следующий »', - 'prev' => '« Предыдущий' - ], - 'comments' => [ - 'submit_comment' => 'Комментировать', - 'title' => 'Комментарии', - 'login_to_comment' => 'Войдите, чтобы оставить комментарий', - 'leave_a_comment' => 'Оставьте комментарий', - 'no_comments' => 'Комментариев нет', - ] -]; \ No newline at end of file diff --git a/shared/resources/lang/ru/exception.php b/shared/resources/lang/ru/exception.php deleted file mode 100644 index 331aff3..0000000 --- a/shared/resources/lang/ru/exception.php +++ /dev/null @@ -1,92 +0,0 @@ - 'APP KEY is missing', - 'position_in_use' => 'Position `{%1}` for asset `{%2}` is in use', - 'incorrect_auth_credentials' => 'Incorrect credentials', - 'inactive_account' => 'The account is not activated', - 'incorrect_verification_code' => 'Incorrect verification code.', - 'verification_code_expired' => 'Verification code expired', - 'misconfigured_auth_config' => 'Auth config is not properly configured', - 'undefined_auth_type' => 'The auth type can be only [web] or [api]', - 'incorrect_user_schema' => 'User schema does not contains all key fields', - 'config_file_not_found' => 'Config file `{%1}` does not exists', - 'config_already_loaded' => 'Config already loaded, use method `import()` to import additional config data', - 'config_collision' => 'Config key `{%1}` is already in use', - 'controller_not_found' => 'Controller `{%1}` not found', - 'controller_not_defined' => 'Controller {%1} not defined', - 'action_not_defined' => 'Action `{%1}` not defined', - 'undefined_method' => 'The method `{%1}` is not defined', - 'openssl_public_key_not_created' => 'Public key not created yet', - 'openssl_private_key_not_created' => 'Private key not created yet', - 'openssl_public_key_not_provided' => 'Public key is not provided', - 'openssl_private_key_not_provided' => 'Private key is not provided', - 'openssl_invalid_cipher' => 'The cipher is invalid', - 'openssl_config_not_found' => 'Could not load openssl.cnf properly.', - 'csrf_token_not_found' => 'CSRF Token is missing', - 'csrf_token_not_matched' => 'CSRF Token does not matched', - 'incorrect_config' => 'The structure of config is not correct', - 'config_not_provided' => 'Configuration does not provided', - 'orm_class_not_defined' => 'Missing ORM definition in config file', - 'orm_class_not_found' => 'ORM `{%1}` class not found', - 'not_supported_method' => 'The method `{%1}` is not supported for `{%2}`', - 'not_supported_operator' => 'The operator `{%1}` is not supported', - 'dependency_not_found' => 'Dependency `{%1}` not defined', - 'env_file_not_found' => 'ENV file not found', - 'directory_not_exist' => 'Directory `{%1}` does not exists', - 'directory_not_writable' => 'Directory `{%1}` not writable', - 'directory_cant_be_created' => 'Directory `{%1}` could not be created', - 'file_already_exists' => 'File already exists', - 'file_not_uploaded' => 'The uploaded file was not sent with a POST request', - 'uploaded_file_not_found' => 'Cannot find uploaded file identified by key `{%1}`', - 'file_type_not_allowed' => 'The file type `{%1}` is not allowed', - 'duplicate_hook_name' => 'The Hook `{%1}` already registered', - 'unregistered_hook_name' => 'The Hook `{%1}` was not registered', - 'unexpected_request_initialization' => 'HTTP Request can not be initialized outside of the core', - 'unexpected_response_initialization' => 'HTTP Response can not be initialized outside of the core', - 'request_not_created' => 'Request is not created', - 'method_not_available' => 'Provided request method `{%1}` is not available', - 'not_supported_content_type' => 'The content type is not supported', - 'jwt_payload_not_found' => 'JWT payload is missing', - 'misconfigured_lang_config' => 'Misconfigured lang config', - 'translation_files_not_found' => 'Translations for language `{%1}` not found', - 'misconfigured_lang_default_config' => 'Misconfigured default lang config', - 'middleware_not_defined' => 'Middleware `{%1}` not defined', - 'middleware_not_found' => 'Middleware `{%1}` not found', - 'wrong_migration_direction' => 'Migration direction can only be [up] or [down]', - 'not_supported_driver' => 'The driver `{%1}` is not supported', - 'non_supported_action' => 'The action `{%1}`, is not supported', - 'table_already_exists' => 'The table `{%1}` is already exists', - 'table_does_not_exists' => 'The table `{%1}` does not exists', - 'column_not_available' => 'The column `{%1}` is not available', - 'method_not_defined' => 'The method `{%1}` is not defined', - 'nothing_to_migrate' => 'Nothing to migrate', - 'model_not_found' => 'Model `{%1}` not found', - 'not_instance_of_model' => 'Model `{%1}` is not instance of `{%2}`', - 'model_without_table_defined' => 'Model `{%1}` does not have $table property defined', - 'undefined_model_method' => 'Model method `{%1}` is not defined', - 'inappropriate_property' => 'Inappropriate property `{%1}` for fillable object', - 'wrong_relation' => 'The model `{%1}` does not define relation with `{%2}`', - 'module_not_found' => 'Module `{%1}` not found', - 'route_not_found' => 'Route Not Found', - 'routes_not_closure' => 'Route is not a closure', - 'repetitive_route_same_method' => 'Repetitive Routes with same method `{%1}`', - 'repetitive_route_different_modules' => 'Repetitive Routes in different modules', - 'incorrect_method' => 'Incorrect Method `{%1}`', - 'name_before_route_definition' => 'Names can not be set before route definition', - 'name_on_group' => 'Name can not be set on groups message', - 'name_is_not_unique' => 'Route names should be unique', - 'param_name_not_available' => 'Route param name `{%1}` already in use', - 'param_name_not_valid' => 'Route param names can only contain letters', - 'service_not_found' => 'Service `{%1}` not found', - 'not_instance_of_service' => 'Service `{%1}` is not instance of `{%2}`', - 'session_not_started' => 'Can not start the session', - 'session_not_destroyed' => 'Can not destroy the session', - 'session_table_not_provided' => 'Session table not provided', - 'execution_terminated' => 'Execution was terminated', - 'direct_view_instance' => 'Views can not be instantiated directly, use `{%1}` class instead', - 'layout_not_set' => 'Layout is not set', - 'view_file_not_found' => 'File `{%1}.php` does not exists', - 'template_engine_config_missing' => 'Missing Template engine configurations', - 'non_iterable_value' => 'The argument {%1} is not iterable' -]; diff --git a/shared/resources/lang/ru/validation.php b/shared/resources/lang/ru/validation.php deleted file mode 100644 index f0988c8..0000000 --- a/shared/resources/lang/ru/validation.php +++ /dev/null @@ -1,52 +0,0 @@ - 'Поле {%1} является обязательным', - 'email' => 'Поле {%1} должно быть Email адресом', - 'minLen' => 'Поле {%1} должно быть минимум {%2} символов', - 'maxLen' => 'Поле {%1} должно быть максимум {%2} символов', - 'exactLen' => 'Поле {%1} должно содержать ровно {%2} символов', - 'alpha' => 'Поле {%1} может содержать только буквы', - 'alphaNumeric' => 'Поле {%1} может содержать только буквы и цифры', - 'alphaDash' => 'Поле {%1} может содержать только буквы и дефис', - 'alphaSpace' => 'Поле {%1} может содержать только буквы и пробелы', - 'numeric' => 'Поле {%1} должно быть числом', - 'integer' => 'Поле {%1} должно быть целым числом', - 'float' => 'Поле {%1} должно быть не целым числом', - 'boolean' => 'Поле {%1} должно быть true или false', - 'url' => 'Поле {%1} должно быть ссылкой', - 'urlExists' => 'Ссылка {%1} не доступна', - 'ip' => 'Поле {%1} должно быть IP адресом', - 'ipv4' => 'Поле {%1} должно быть IPv4 адресом', - 'ipv6' => 'Поле {%1} должно быть IPv6 адресом', - 'creditCard' => 'Номер карты {%1} не является валидным', - 'name' => 'Поле {%1} должно содержать полное имя', - 'contains' => 'Поле {%1} может содержать следующие значения: {%2}', - 'containsList' => 'Значение {%1} не может быть использовано как ответ', - 'doesntContainsList' => 'Значение {%1} не может быть использовано', - 'streetAddress' => 'Поле {%1} должно быть адресом', - 'iban' => 'Поле {%1} должно быть правильным IBAN', - 'minNumeric' => 'Поле {%1} должно быть числом не менее {%2}', - 'maxNumeric' => 'Поле {%1} должно быть числом не более {%2}', - 'date' => 'Поле {%1} должно быть датой', - 'starts' => 'Поле {%1} должно начинаться {%2}', - 'phoneNumber' => 'Поле {%1} должно быть правильным номером телефона', - 'regex' => 'Поле {%1} должно содержать правильное значение', - 'jsonString' => 'Поле {%1} должно быть валидной JSON строкой', - 'same' => 'Поле {%1} должно быть таким же, как {%2}', - 'same_password' => 'Поле {%1} должно быть таким же, как Новый пароль', - 'unique' => 'Поле {%1} должно содержать только уникальное значение', - 'fileSize' => 'Размер файла должен соответствовать {%1}', - 'fileMimeType' => 'Mimetype файла должен соответствовать {%1}', - 'fileExtension' => 'Расширение файла должно соответствовать {%1}', - 'imageDimensions' => 'Размеры изображения должны соответствовать {%1}', - 'nonExistingRecord' => 'Нет записи, соответствующей {%1}', - 'nonEqualValues' => 'Значения не равны', - 'unauthorizedRequest' => 'Несанкционированный запрос', - 'uniqueUser' => 'Значение поля {%1} уже существует в нашей базе данных', - 'passwordsDoNotMatch' => 'Пароли не совпадают', - 'password_check' => 'Текущий пароль неверный', - 'new_password' => 'Новый пароль', - 'current_password' => 'Текущий пароль', - 'confirm_password' => 'Подтвердите пароль', -];