diff --git a/README.md b/README.md
index d5db51a..59013da 100644
--- a/README.md
+++ b/README.md
@@ -2,6 +2,7 @@
[
🌐 Русский README
](./README_RU.md)
[
🌐 English README
](./README.md)
+[
🌐 Português README
](./README_BR.md)
- 🌍 Flute DEMO •
- 📖 Docs •
+ 🌍 Flute DEMO •
+ 📖 Docs •
💬 Discord
-
+
@@ -69,6 +70,7 @@ To successfully install and run Flute, ensure your system meets the following re
# 🚀 Installation of Flute
### On a VDS (Virtual Dedicated Server):
+
1. Download Flute from [releases](https://github.com/Flute-CMS/cms/releases).
2. Upload the files to your server.
3. Use the command:
@@ -77,15 +79,18 @@ To successfully install and run Flute, ensure your system meets the following re
```
to install dependencies.
4. Configure your web server (Apache/Nginx) and the database.
-
+
### On Shared Hosting:
+
+> [!TIP]
+> Watch the video tutorial for installation [here](https://www.youtube.com/watch?v=PCSjl2w7A9k)
+
1. Download Flute and the `vendor` folder from [releases](https://github.com/Flute-CMS/cms/releases).
2. Upload them to your hosting via FTP or the hosting provider's file manager.
3. Configure the web server on your hosting to point to the Flute folder.
![gif_install](https://github.com/Flute-CMS/cms/assets/62756604/62b8a0cb-c7ed-431b-981c-470304c1fbd8)
-
Both installations require setting up the database and configuring Flute.
@@ -93,6 +98,7 @@ Both installations require setting up the database and configuring Flute.
📚 Visit our [documentation](https://docs.flute-cms.com/docs/what_it) for detailed instructions on installation, customization, and module & template development.
+
# 👨💻 Looking for Opportunities
If you need a skilled developer for your projects, reach out to me on (My stack is React / TS / Node / PHP / JS):
@@ -104,7 +110,6 @@ If you need a skilled developer for your projects, reach out to me on (My stack
# 📦 Free Modules List
Discover our range of free modules available for Flute:
-
- [News module](https://github.com/Flute-CMS/news): Allows you to create news in the Flute
- [Monitoring](https://github.com/Flute-CMS/monitoring): Gets information about servers and displays it in a widget
- [Bans And Comms](https://github.com/Flute-CMS/BansComms): Displays the list of bans and mutes on a separate page
@@ -114,8 +119,8 @@ Discover our range of free modules available for Flute:
These modules are designed to enhance your Flute experience and are available at no cost.
-
+
# 🆘 Getting help
Need help with installation, customization, or development? Join our [Discord](https://discord.gg/BcBMeVJJsd) for assistance! Report bugs or issues on:
@@ -125,5 +130,5 @@ Need help with installation, customization, or development? Join our [Discord](h
# ⭐ Like what you see? Give us a star!
-![flute-gif](https://github.com/Flute-CMS/cms/assets/62756604/87d18227-41ac-4a7d-9210-d46b9fd56049)
+![flute-gif](https://github.com/Flute-CMS/cms/assets/62756604/87d18227-41ac-4a7d-9210-d46b9fd56049)
diff --git a/README_BR.md b/README_BR.md
new file mode 100644
index 0000000..7d73c1b
--- /dev/null
+++ b/README_BR.md
@@ -0,0 +1,134 @@
+
+ + + +
+ + +
+ 🌍 Flute Website •
+ 📖 Docs •
+ 💬 Discord
+
+
+
+
+
+
+
+
+ 👀 Exemplo do Painel Admin +
+ +
- 🌍 Демо Flute •
- 📖 Документация •
+ 🌍 Демо Flute •
+ 📖 Документация •
💬 Discord
-
+
@@ -32,7 +33,7 @@
👀 Пример админ-панели
@@ -59,7 +60,6 @@
# 💼 Требования
Для успешной установки и работы Flute убедитесь, что ваша система соответствует следующим требованиям:
-
- PHP версии 7.4 или выше.
- MySQL версии 5.7.29 или выше / MariaDB версии 10.2.7 или выше.
- Веб-сервер Apache или Nginx.
@@ -80,7 +80,10 @@
для установки зависимостей.
4. Настройте ваш веб-сервер (Apache/Nginx) и базу данных.
+
### На Шаред-Хостинге:
+> [!TIP]
+> Вы можете посмотреть видео-установку [тут](https://www.youtube.com/watch?v=PCSjl2w7A9k)
1. Скачайте Flute и папку `vendor` из [releases](https://github.com/Flute-CMS/cms/releases).
2. Загрузите их на хостинг через FTP или файловый менеджер.
@@ -99,7 +102,6 @@
# 👨💻 Могу реализовать проект
Если вам нужен опытный разработчик для ваших проектов (мой стек - React / TS / Node / PHP / JS), свяжитесь со мной:
-
- Discord - flamesina
- [Telegram](https://t.me/flamesina)
@@ -108,7 +110,6 @@
# 📦 Список Бесплатных Модулей
Для Flute существуют бесплатные модули. Список основных представлен ниже:
-
- [Новости](https://github.com/Flute-CMS/news): Позволяет создавать новости в Flute
- [Мониторинг](https://github.com/Flute-CMS/monitoring): Получает информацию о серверах и отображает ее в виджете
- [Баны и муты](https://github.com/Flute-CMS/BansComms): Отображает список банов и мутов на отдельной странице
@@ -123,7 +124,6 @@
# 🆘 Нужна помощь?
Нужна помощь с установкой, настройкой или разработкой? Присоединяйтесь к нашему [Discord](https://discord.gg/BcBMeVJJsd) для получения помощи! Если у вас возникли проблемы или ошибки, сообщите о них:
-
- [GitHub Issues](https://github.com/Flute-CMS/cms/issues)
- [Discord](https://discord.gg/BcBMeVJJsd)
diff --git a/app/Themes/standard/i18n/en/t_standard.php b/app/Themes/standard/i18n/en/t_standard.php
new file mode 100644
index 0000000..5b6535b
--- /dev/null
+++ b/app/Themes/standard/i18n/en/t_standard.php
@@ -0,0 +1,4 @@
+ 'Type Navigation',
+ 'nav_type_desc' => 'What type of navigation should I use? default
or navbar
?'
+];
\ No newline at end of file
diff --git a/config/lang.php b/config/lang.php
index b4b9296..e84936b 100644
--- a/config/lang.php
+++ b/config/lang.php
@@ -14,6 +14,7 @@
6 => 'fr',
7 => 'es',
8 => 'uz',
+ 9 => 'br',
),
'all' =>
array (
@@ -26,5 +27,6 @@
6 => 'fr',
7 => 'es',
8 => 'uz',
+ 9 => 'br',
),
);
\ No newline at end of file
diff --git a/i18n/br/admin.php b/i18n/br/admin.php
new file mode 100644
index 0000000..8d446af
--- /dev/null
+++ b/i18n/br/admin.php
@@ -0,0 +1,620 @@
+ [
+ 'header' => 'Dashboard',
+ 'description' => 'On this page, you can see various graphs and statistics.',
+ "payments_week" => "Payments for this week",
+ "payments_month" => "Payments for the month",
+ 'payments_by_gateways' => 'Payments by gateways',
+ 'registrations' => 'Registrations',
+ 'registrations_desc' => 'Registrations for this week'
+ ],
+ 'will_be_in_beta' => 'Will be in beta release',
+ "menu" => [
+ "main-menu" => "Main Menu",
+ "additional-menu" => "Additional Menu"
+ ],
+ 'support' => 'Support',
+ 'documentation' => 'Documentation',
+ 'confirm_delete' => 'Are you sure you want to delete this?',
+ "in_dev" => "The engine is in development. Stability is not guaranteed",
+ "installed_version" => "Installed version",
+ "recent" => "Recently visited",
+ "title" => "name :: Admin Panel",
+ "main" => "Main",
+ "dashboard" => "Dashboard",
+ "settings" => "Settings",
+ 'create_log' => 'Create report',
+ "modules" => [
+ "title" => "Modules",
+ "list" => "Module list",
+ "install" => "Install module",
+ "catalog" => "Module catalog"
+ ],
+ "themes" => [
+ "title" => "Themes",
+ "list" => "Theme list",
+ "install" => "Install theme",
+ "catalog" => "Theme catalog"
+ ],
+ 'engine_version' => "Engine version",
+ "check_updates" => "Check for updates",
+ 'payments.title' => 'Payment Gateways',
+ 'payments.list' => 'Gateway List',
+ 'payments.add' => 'Add Gateway',
+ 'socials.title' => 'Authentication Drivers',
+ 'socials.list' => 'Driver List',
+ 'socials.add' => 'Add Driver',
+ 'servers.title' => 'Servers',
+ 'servers.list' => 'Server List',
+ 'users_roles.title' => 'Users and Roles',
+ 'users.list' => 'User List',
+ 'roles.list' => 'Role List',
+ 'footer.title' => 'Footer',
+ 'footer.customize' => 'Customize Footer',
+ 'navbar.title' => 'Navigation',
+ 'navbar.customize' => 'Customize Navigation',
+ 'db_error' => 'Database connection error',
+ 'db_not_found' => 'Database not found',
+ 'db_already_exists' => 'Database already exists',
+ 'connection_not_found' => "Connection ':connectionName' not found",
+ 'connection_already_exists' => "Connection ':connectionName' already exists",
+ 'unknown_error' => 'Unknown error',
+ 'success' => 'Operation completed successfully',
+ 'cannot_delete_last_db' => 'You cannot delete the only DB!',
+ 'cannot_delete_default_db' => 'You cannot delete the system DB!',
+ 'cannot_delete_last_connection' => 'You cannot delete the only connection!',
+ 'cannot_delete_default_connection' => 'You cannot delete the system-involved connection!',
+ 'confirm_delete_db' => 'Are you sure you want to delete the database name?',
+ 'confirm_delete_connection' => 'Are you sure you want to delete the connection name?',
+ 'add_db_title' => 'Add DB',
+ 'edit_db_title' => 'Edit DB for name',
+ 'add_connection_title' => 'Add Connection',
+ 'edit_connection_title' => 'Edit name Parameters',
+ 'default_db' => 'Default database',
+ 'default_db_help' => 'Select the database for connection.',
+ 'table_prefix' => 'Table Prefix',
+ 'table_prefix_placeholder' => 'Prefix for tables',
+ 'table_prefix_help' => 'Optional prefix for table names.',
+ 'db_name' => 'Database Name',
+ 'db_name_placeholder' => 'Specify the name',
+ 'db_connection_name' => 'Connection Name',
+ 'db_connection_name_placeholder' => 'Write a name',
+ 'db_driver' => 'Driver Selection',
+ 'db_host' => 'Host',
+ 'db_host_placeholder' => 'Database host',
+ 'db_user' => 'User',
+ 'db_user_placeholder' => 'Username',
+ 'db_password' => 'Password',
+ 'db_password_placeholder' => 'Password',
+ 'db_port' => 'Port',
+ 'db_port_placeholder' => 'Port',
+ 'settings_bar' => [
+ 'system' => 'System',
+ 'auth' => 'Authentication',
+ 'database' => 'Databases',
+ 'language' => 'Language',
+ 'smtp' => 'SMTP',
+ 'profile' => 'Profile',
+ 'lk' => 'Replenishment',
+ 'cache' => 'Cache'
+ ],
+ 'cache' => [
+ 'clear_all' => 'Clear all cache',
+ 'clear_template' => 'Clear template cache',
+ 'clear_translate' => 'Clear translation cache',
+ 'clear_styles' => 'Clear styles cache',
+ 'all' => 'General cache',
+ 'all_desc' => 'Clears all system cache. From templates to styles',
+ 'translate' => 'Translations',
+ 'translate_desc' => 'Clears all translation cache. Relevant only when translation caching is enabled',
+ 'template' => 'Templates',
+ 'template_desc' => 'Clears all template cache. After clearing the cache, each template will be recompiled',
+ 'styles' => 'Styles',
+ 'styles_desc' => 'The template caches all module/engine styles inside the public/ folder. So it will clear the cache from there'
+ ],
+ 'main_settings' => [
+ 'header' => 'Main Settings',
+ 'description' => 'System settings where you can change the main components of the system',
+ ],
+ 'app' => [
+ 'name_label' => 'Name',
+ 'name_description' => 'This option allows you to change the site name.',
+ 'url_label' => 'URL',
+ 'url_description' => 'URL address of your site.',
+ 'debug_mode_label' => 'Debug Mode',
+ 'debug_mode_description' => 'Enable or disable debug mode.',
+ 'performance_mode_label' => 'Performance Mode',
+ 'performance_mode_description' => 'Activate mode to optimize performance.',
+ 'key_label' => 'Security Key',
+ 'key_description' => 'Security key for internal use. Application key is not a Steam key',
+ 'hints_label' => 'Hints',
+ 'hints_description' => 'Enable displaying hints on the site.',
+ 'error_sharing_label' => 'Error Sharing',
+ 'error_sharing_description' => 'Enable error reporting to the Flute server',
+ 'flute_copyright_label' => 'Flute Copyright',
+ 'flute_copyright_description' => 'Show Flute copyright in the footer',
+ 'timezone_label' => 'Timezone',
+ 'timezone_description' => 'Specify the timezone for the site.',
+ 'notifications_label' => 'Notifications',
+ 'notifications_description' => 'Configure notification settings.',
+ 'notifications_all' => 'All notifications',
+ 'notifications_unread' => 'Only unread',
+ 'save_button' => 'Save',
+ 'debug_ips_label' => 'Debug IP Addresses',
+ 'debug_ips_description' => 'Enter addresses where debug mode will be enabled (comma separated)',
+ 'get_ip' => 'Get my IP',
+ 'steam_label' => 'STEAM API Key',
+ 'steam_description' => 'Key required to get avatars from Steam servers',
+ 'logo' => 'Logo',
+ 'favicon_desc' => 'This is the icon displayed in your browser tab 👀'
+ ],
+ 'lk' => [
+ 'currency_view_label' => 'Currency (view)',
+ 'currency_view_description' => 'Specify the currency displayed on the site.',
+ 'min_label' => 'Min. amount',
+ 'min_description' => 'Minimum replenishment amount',
+ 'oferta' => 'Offer',
+ 'oferta_description' => 'Should users be required to confirm the offer?'
+ ],
+ 'auth_form' => [
+ 'remember_me_label' => 'Remember Me',
+ 'remember_me_description' => 'Automatically log in to the system on next visit.',
+ 'remember_me_duration_label' => 'Remember Me Duration',
+ 'remember_me_duration_description' => 'Time (in seconds) user remains logged in.',
+ 'csrf_protection_label' => 'CSRF Protection',
+ 'csrf_protection_description' => 'Enable protection against cross-site request forgery.',
+ 'reset_password_label' => 'Reset Password',
+ 'reset_password_description' => 'Allow users to reset forgotten passwords.',
+ 'security_token_label' => 'Security Token',
+ 'security_token_description' => 'Use security token for additional protection.',
+ 'confirm_email_label' => 'Email Confirmation',
+ 'confirm_email_description' => 'Require email confirmation on registration.',
+ 'social_support_label' => '(NOT WORKING) Register After Social Networks',
+ 'social_support_description' => 'Should registration with password setup after social network registration be done?',
+ 'login_min_length_label' => 'Minimum Login Length',
+ 'login_min_length_description' => 'Minimum allowed login length.',
+ 'login_max_length_label' => 'Maximum Login Length',
+ 'login_max_length_description' => 'Maximum allowed login length.',
+ 'password_min_length_label' => 'Minimum Password Length',
+ 'password_min_length_description' => 'Minimum allowed password length.',
+ 'password_max_length_label' => 'Maximum Password Length',
+ 'password_max_length_description' => 'Maximum allowed password length.',
+ 'name_min_length_label' => 'Minimum Name Length',
+ 'name_min_length_description' => 'Minimum allowed name length.',
+ 'name_max_length_label' => 'Maximum Name Length',
+ 'name_max_length_description' => 'Maximum allowed name length.',
+ 'login_validation_label' => 'Login Validation',
+ 'password_validation_label' => 'Password Validation',
+ 'name_validation_label' => 'Name Validation',
+ 'only_social' => 'Only social',
+ 'only_social_label' => 'Enable authorization and registration only via social networks'
+ ],
+ 'form_database' => [
+ 'default_database_label' => 'Default Database',
+ 'default_database_description' => 'Select the default database.',
+ 'debug_mode_label' => 'Debug Mode',
+ 'debug_mode_description' => 'Enable or disable database debug mode.',
+ 'manage_connections_label' => 'Manage Connections',
+ 'manage_connections_description' => 'Add, remove, and modify database connections.',
+ 'manage_databases_label' => 'Manage Databases',
+ 'manage_databases_description' => 'Add, remove, and modify databases.',
+ 'add_new_connection_button' => 'Add New Connection',
+ 'add_new_database_button' => 'Add New Database',
+ ],
+ 'form_lang' => [
+ 'language_label' => 'Language',
+ 'language_description' => 'Select the language for the site interface.',
+ 'caching_label' => 'Caching',
+ 'caching_description' => 'Enable or disable caching.',
+ 'langs_available' => 'Available languages',
+ 'langs_available_description' => 'Select the languages that will be available in Flute'
+ ],
+ 'form_mail' => [
+ 'smtp_enabled_label' => 'SMTP Enabled',
+ 'smtp_enabled_description' => 'Enable SMTP client.',
+ 'smtp_host_label' => 'SMTP Host',
+ 'smtp_host_description' => 'SMTP server address.',
+ 'smtp_port_label' => 'SMTP Port',
+ 'smtp_port_description' => 'SMTP server port.',
+ 'smtp_from_label' => 'Sender Address',
+ 'smtp_from_description' => 'Sender email address.',
+ 'smtp_username_label' => 'SMTP Username',
+ 'smtp_username_description' => 'Username for SMTP.',
+ 'smtp_password_label' => 'SMTP Password',
+ 'smtp_password_description' => 'Password for SMTP.',
+ 'smtp_security_label' => 'SMTP Security',
+ 'smtp_security_description' => 'Connection security type (e.g., TLS).',
+ ],
+ 'form_profile' => [
+ 'max_banner_size_label' => 'Max. Banner Size (MB)',
+ 'max_banner_size_description' => 'Maximum banner size in megabytes.',
+ 'max_avatar_size_label' => 'Max. Avatar Size (MB)',
+ 'max_avatar_size_description' => 'Maximum avatar size in megabytes.',
+ 'banner_file_types_label' => 'Banner File Types',
+ 'banner_file_types_description' => 'Allowed file types for banners.',
+ 'avatar_file_types_label' => 'Avatar File Types',
+ 'avatar_file_types_description' => 'Allowed file types for avatars.',
+ 'change_uri_label' => 'Change URI',
+ 'change_uri_description' => 'Enable or disable URI change capability.',
+ 'convert_to_webp_label' => 'Convert to WebP',
+ 'convert_to_webp_description' => 'Automatically convert images to WebP format.',
+ ],
+ 'modules_list' => [
+ 'authors' => 'Authors',
+ 'header' => 'Module List',
+ 'description' => 'Page displaying all modules defined in the system.',
+ 'manage' => 'Module Settings - key',
+ 'sp_settings' => "ServiceProvider Settings",
+ 'sp_error' => 'Provider class not defined in the system',
+ 'drag' => "Drag ZIP archive with module here",
+ "module_install" => "Module Installation",
+ "version" => "Module Version - version",
+ 'confirm_delete' => 'Are you sure you want to delete this module?',
+ 'confirm_install' => 'Are you sure you want to install this module?',
+ "module_name" => "Module Installation - name",
+ 'enable_module' => "Enable Module",
+ 'disable_module' => 'Disable Module',
+ 'install_module' => 'Install Module',
+ 'delete_module' => 'Delete Module',
+ 'module_is_not_exists' => 'Module with key key does not exist.',
+ 'upload_zip_required' => 'ZIP file of the module is required to be uploaded.',
+ 'invalid_zip' => 'Invalid ZIP file format.',
+ 'max_zip_size' => 'Maximum ZIP file size is maxSize bytes.',
+ 'zip_open_failed' => 'Failed to open ZIP archive.',
+ 'single_folder_expected' => 'Expected a single root folder in ZIP archive.',
+ 'module_already_exists' => 'Module with such name already exists.',
+ 'zip_extraction_failed' => 'Failed to extract files from ZIP archive.',
+ 'module_json_not_found' => 'module.json file not found at the root of the archive.',
+ 'invalid_module_json' => 'Invalid module.json file format.',
+ ],
+ 'themes_list' => [
+ 'header' => 'Theme List',
+ 'description' => 'Page displaying all themes available in the system.',
+ 'manage' => 'Theme Management - key',
+ 'drag' => 'Drag ZIP archive with theme here',
+ 'theme_install' => 'Theme Installation',
+ 'version' => 'Theme Version - version',
+ 'confirm_delete' => 'Are you sure you want to delete this theme?',
+ 'confirm_install' => 'Are you sure you want to install this theme?',
+ 'theme_name' => 'Theme Installation - name',
+ 'enable_theme' => 'Enable Theme',
+ 'disable_theme' => 'Disable Theme',
+ 'install_theme' => 'Install Theme',
+ 'delete_theme' => 'Delete Theme',
+ 'theme_settings' => 'Theme Settings',
+ 'unknown_theme' => 'Unknown Theme',
+ 'upload_zip_required' => 'ZIP file of the theme is required to be uploaded.',
+ 'invalid_zip' => 'Invalid ZIP file format.',
+ 'zip_open_failed' => 'Failed to open ZIP archive.',
+ 'single_folder_expected' => 'Expected a single root folder in ZIP archive.',
+ 'theme_already_exists' => 'Theme with such name already exists.',
+ 'zip_extraction_failed' => 'Failed to extract files from ZIP archive.',
+ 'loader_not_found' => 'ThemeLoader.php file not found at the root of the archive.',
+ ],
+ 'servers' => [
+ 'mod' => 'Game',
+ 'header' => 'Server List',
+ 'description' => 'List of all servers added to the CMS',
+ 'add' => 'Add Server',
+ 'delete' => 'Delete Server',
+ 'confirm_delete' => 'Are you sure you want to delete this server?',
+ 'change' => 'Change Server',
+ 'game' => 'Game',
+ 'add_title' => 'Add Server',
+ 'add_description' => 'On this page, you can add a new server to the CMS',
+ 'name_label' => 'Server Name',
+ 'name_placeholder' => 'Enter server name',
+ 'ip_label' => 'Server IP',
+ 'ip_placeholder' => 'Enter server IP',
+ 'port_label' => 'Server Port',
+ 'port_placeholder' => 'Enter server port',
+ 'rcon_label' => 'RCON (optional)',
+ 'rcon_placeholder' => 'Enter RCON password',
+ 'game_label' => 'Game Selection',
+ 'edit' => 'Edit Server',
+ 'edit_title' => 'Edit Server - server',
+ 'edit_description' => 'On this page, you can modify a server already added to the CMS',
+ 'not_found' => 'The specified server was not found',
+ 'server_duplicate' => 'A server with these details already exists!',
+ ],
+ 'payments' => [
+ 'header' => 'Payment Gateways',
+ 'description' => 'List of payment gateways required for user balance top-up.',
+ 'delete' => 'Delete Gateway',
+ 'change' => 'Change Gateway',
+ 'confirm_delete' => 'Are you sure you want to delete this gateway?',
+ 'enable_payment' => 'Activate Gateway',
+ 'disable_payment' => 'Disable Gateway',
+ 'gateway_label' => 'Payment System Name',
+ 'adapter' => 'Identifier',
+ 'adapter_description' => 'Enter the identifier by which the payment system will be determined. List of gateways here',
+ 'params' => 'Gateway Parameters',
+ 'enabled' => 'Enabled',
+ 'enabled_description' => 'Enable or disable the gateway by default',
+ 'add_title' => 'Add Payment Gateway',
+ 'add_description' => 'On this page, you can add a payment gateway to the system',
+ 'gateway_not_exists' => 'Payment driver "name" not found',
+ 'min_one_value' => "At least one parameter must be specified",
+ 'exists' => 'Payment gateway "name" already exists',
+ 'edit_title' => 'Edit Gateway - name',
+ 'edit_description' => 'On this page, you can modify the parameters of a specific gateway',
+ 'not_found' => 'Payment gateway not found',
+ 'currency_label' => 'Currency',
+ 'currency_description' => 'Specify the currency to be used for payment systems',
+ 'payments_header' => 'Payment List',
+ 'payments_descrition' => 'On this page, you can view all completed and incomplete payments',
+ 'promo' => [
+ 'max_use' => 'Max. Uses',
+ 'used' => 'Used',
+ 'list' => 'Promo Codes List',
+ 'add' => 'Add Promo Code',
+ 'header' => 'Payment Promo Codes',
+ 'description' => 'List of available promo codes for bonuses to user balance top-ups',
+ 'delete' => 'Delete Promo Code',
+ 'change' => 'Change Promo Code',
+ 'confirm_delete' => 'Are you sure you want to delete this promo code?',
+ 'add_title' => 'Add Promo Code',
+ 'add_description' => 'On this page, you can add a promo code to the system',
+ 'not_found' => 'Promo code not found',
+ 'exists' => 'Promo code "name" already exists',
+ 'edit_title' => 'Edit Promo Code - name',
+ 'edit_description' => 'On this page, you can modify the parameters of a specific promo code',
+ 'promo_duplicate' => 'Promo code with this name already exists!',
+ 'name_label' => 'Promo Code Name',
+ 'max_usages_label' => 'Maximum Usages',
+ 'max_usages' => '500',
+ 'type_label' => 'Promo Code Type',
+ 'value_label' => 'Promo Code Value',
+ 'expires_at' => 'Expiration Date',
+ 'percentage' => 'Percentage',
+ 'subtract' => 'Subtract',
+ 'amount' => 'Add Amount',
+ ]
+ ],
+ 'socials' => [
+ 'key' => 'Identifier',
+ 'add_title' => 'Add Driver',
+ 'add_description' => 'On this page, you can add a driver for custom user authentication.',
+ 'social_label' => 'Driver Key',
+ 'settings_label' => 'Driver Settings',
+ 'enabled' => 'Activity',
+ 'enabled_description' => 'Enable or disable the driver by default',
+ 'delete' => 'Delete Driver',
+ 'change' => 'Change Driver',
+ 'confirm_delete' => 'Are you sure you want to delete this driver?',
+ 'enable_social' => 'Activate Driver',
+ 'disable_social' => 'Disable Driver',
+ 'header' => 'Driver List',
+ 'description' => 'On this page, you can manage authentication drivers via social networks',
+ 'social_icon_label' => 'Social Network Icon',
+ 'social_not_exists' => 'Driver "name" not found!',
+ 'edit_title' => 'Edit Driver - name',
+ 'edit_description' => 'On this page, you can modify the data of an authentication driver',
+ 'not_found' => 'Driver not found'
+ ],
+ 'users' => [
+ 'created' => 'Registration Date',
+ 'change' => 'Change',
+ 'delete' => 'Delete',
+ 'header' => 'User List',
+ 'description' => 'List of all registered users on the site',
+ 'edit' => 'Edit User',
+ 'edit_title' => 'Edit User name',
+ 'edit_description' => 'Modify user information',
+ 'name' => 'Name',
+ 'email' => 'Email',
+ 'balance' => 'Balance',
+ 'login' => 'Login',
+ 'uri' => 'URI',
+ 'roles' => 'Roles',
+ 'information' => 'User Information',
+ 'created_at' => 'Creation Date',
+ 'verified' => 'Verified',
+ 'hidden' => 'Hidden',
+ 'not_verf' => 'Not Verified',
+ 'verf' => 'Verified',
+ 'not_hid' => 'Not Hidden',
+ 'hid' => 'Hidden',
+ 'logs' => 'Logs',
+ 'social' => 'Social Networks',
+ 'devices' => 'Devices',
+ 'not_found' => 'User not found',
+ 'action' => 'Action',
+ 'action_details' => 'Details',
+ 'action_date' => 'Action Date',
+ 'device' => 'Device',
+ 'login_error' => 'Invalid login format',
+ 'role_priority_error' => 'Role "role" has a higher priority than yours',
+ 'cannot_remove_highest_role' => 'You cannot delete a role equal to your priority!',
+ 'delete_permission_error' => 'Grow up first, then we\'ll see',
+ 'cannot_delete_self' => 'You cannot delete yourself!',
+ 'invoices' => [
+ 'title' => 'Refills',
+ 'gateway' => 'Payment Gateway',
+ 'amount' => 'Amount',
+ 'promo' => 'Promo Code',
+ 'paid_at' => 'Payment Date'
+ ]
+ ],
+ 'roles' => [
+ 'priority' => 'Priority',
+ 'header' => 'Role List',
+ 'description' => 'On this page, all existing roles in Flute are presented',
+ 'empty' => 'Role list is empty',
+ 'add' => 'Create Role',
+ 'edit_title' => 'Edit Role - name',
+ 'edit_description' => 'Role modification page',
+ 'role_label' => 'Role Name',
+ 'role_color' => 'Role Highlight Color',
+ 'permissions' => 'Permissions',
+ 'perm_desc' => 'Select the necessary permissions for the role',
+ 'no_access' => 'You do not have access to this role!',
+ 'add_title' => 'Add Role',
+ 'add_description' => 'On this page, you can add a new role',
+ 'confirm_delete' => 'Are you sure you want to delete this role?'
+ ],
+ 'navigation' => [
+ 'confirm_delete' => 'Are you sure you want to delete this item?',
+ 'header' => 'Navigation List',
+ 'description' => 'On this page, you can configure all navigation items',
+ 'add' => 'Add Item',
+ 'not_found' => 'Item not found',
+ 'add_title' => 'Add Item',
+ 'add_description' => 'On this page, you can add a new navigation item',
+ 'navigation_label' => 'Item Name',
+ 'icon_label' => 'Icon',
+ 'icon_desc' => 'Take icons from here.
(Example) Enter only what is highlighted in bold: <i class="ph ph-air-traffic-control"></i>',
+ 'url_label' => 'URL',
+ 'new_tab' => 'New Tab',
+ 'new_tab_description' => 'Should the link open in a new tab?',
+ 'visible_only_for_guests' => 'Visibility for Guests',
+ 'visible_only_for_guests_description' => 'Show this item only to unauthorized users?',
+ 'visible_only_for_logged_in' => 'Visibility for Logged In',
+ 'visible_only_for_logged_in_description' => 'Show this item only to logged-in users?',
+ 'roles' => 'Roles',
+ 'roles_desc' => 'Select the roles that will have access to view this item. You can leave it blank',
+ 'edit_title' => 'Edit name',
+ 'edit_description' => 'On this page, you can modify a navigation item',
+ 'edit' => 'Edit Item',
+ ],
+ 'footer' => [
+ 'social' => 'Social Networks',
+ 'confirm_delete' => 'Are you sure you want to delete this link?',
+ 'social_confirm_delete' => 'Are you sure you want to delete this social network?',
+ 'header' => 'Footer Links List',
+ 'description' => 'On this page, you can configure all links in the footer of the site',
+ 'add' => 'Add Link',
+ 'not_found' => 'Link not found',
+ 'add_title' => 'Add Link',
+ 'add_description' => 'On this page, you can add a new link in the footer',
+ 'footer_label' => 'Link Name',
+ 'url_label' => 'URL',
+ 'new_tab' => 'New Tab',
+ 'new_tab_description' => 'Should the link open in a new tab?',
+ 'edit_title' => 'Edit name',
+ 'edit_description' => 'On this page, you can edit the link in the footer',
+ 'edit' => 'Edit Link',
+ 'social_delete' => 'Delete Social Network',
+ 'social_change' => 'Change Social Network',
+ 'social_header' => 'List of Social Networks in Navigation',
+ 'social_description' => 'On this page, all social networks displayed in the footer of the site are presented',
+ 'social_add' => 'Add Social Network',
+ 'social_add_title' => 'Adding Social Network',
+ 'social_add_description' => 'On this page, you can add a new social network in the footer of the site',
+ 'social_footer_label' => 'Link Name',
+ 'social_icon_label' => 'Icon Code',
+ 'social_url_label' => "URL",
+ 'social_edit_title' => 'Edit - name',
+ 'social_edit_description' => 'On this page, you can modify the parameters of the link'
+ ],
+ 'pages' => [
+ 'title' => 'Custom Pages',
+ 'header' => 'Custom Pages',
+ 'add' => 'Add Page',
+ 'description' => 'On this page, you can create custom pages for different paths. No need to write modules for rules! :)',
+ 'edit_title' => 'Edit Page: :name',
+ 'edit_description' => 'Here you can change the parameters of the page',
+ 'add_title' => 'Adding Custom Page',
+ 'add_description' => 'On this page, you can add a custom page',
+ 'route_label' => 'Route',
+ 'route_desc' => 'The link through which the page will be accessed',
+ 'title_label' => 'Title',
+ 'description_label' => 'Description',
+ 'keywords_label' => 'Keywords',
+ 'keywords_desc' => 'Enter keywords for search engines to index this link. (e.g., "csgo, cs2, cs2 server)',
+ 'robots_label' => 'Robot Instructions',
+ 'robots_desc' => 'Which indexing parameter to use. All rules are listed here',
+ 'og_title_label' => 'OG: Title',
+ 'og_description_label' => 'OG: Description',
+ 'og_image_label' => 'OG: Image',
+ 'permission_label' => 'Permissions',
+ 'permission_description' => 'Access control to this page',
+ 'permissions' => 'Access Rights',
+ 'perm_desc' => 'Select the access rights that will have access to view this page',
+ 'validate_route_error' => 'Your link is not valid',
+ 'route_exists' => 'A page with this link already exists!',
+ 'not_found' => 'Such a page was not found!',
+ 'content' => 'Page Content',
+ ],
+ 'notifications' => [
+ 'title' => 'Notifications',
+ 'header' => 'Custom Notifications',
+ 'description' => 'On this page, you can configure custom notifications for any event in the engine',
+ 'add' => 'Add Notification',
+ 'not_found' => 'Such an event was not found!',
+ 'event' => 'Event',
+ 'icon' => 'Icon',
+ 'icon_desc' => 'Take icons from here.
(Example) Enter as shown in the example:
<i class="ph ph-air-traffic-control"></i>',
+ 'url' => 'Link (optional)',
+ 'title_label' => 'Notification Title',
+ 'content' => 'Notification Content',
+ 'content_desc' => 'Available parameters: {name}
, {login}
, {email}
, {balance}
',
+ 'edit_title' => 'Edit Notification',
+ 'edit_description' => 'On this page, you can change the parameters of the listener for notifications.',
+ 'add_title' => 'Adding Listener',
+ 'add_description' => 'On this page, you can add a notification for any event in the Flute CMS'
+ ],
+ 'api' => [
+ 'add_title' => 'Adding a New API Key',
+ 'add_description' => 'On this page, you can generate a new API key with specific permissions',
+ 'key' => 'Your Key',
+ 'permissions' => 'Key Permissions',
+ 'perm_desc' => 'The key must have execution permissions. Here they are selected.',
+ 'header' => 'List of Issued API Keys',
+ 'description' => 'This page displays a list of all keys in the engine',
+ 'add' => 'Add a New API Key',
+ 'regenerate' => 'Regenerate'
+ ],
+ 'databases' => [
+ 'title' => 'Database Associations',
+ 'server_not_found' => 'Server Not Found',
+ 'params_empty' => 'Some parameters are empty',
+ 'setting_description' => 'Here you can configure the binding of a specific database driver to the server',
+ 'add' => 'Add Association',
+ 'dbname' => 'Database Name',
+ 'dbname_desc' => 'This database will be used by the driver',
+ 'server' => 'Associated Server',
+ 'add_description' => 'On this page, you can add a new association between the server and the database',
+ 'mod' => 'Driver Name',
+ 'mod_desc' => 'This is the driver that will be bound to the server',
+ 'server_label' => 'Server',
+ 'edit_title' => 'Edit Association',
+ 'edit_description' => 'On this page, you can edit the association for a specific server',
+ 'settings' => 'Additional settings'
+ ],
+ 'composer' => [
+ 'title' => 'Composer',
+ 'setting_description' => 'On this page, you can add or remove a new Composer package',
+ 'name' => 'Package Name',
+ 'installed' => 'Installed Version',
+ 'add' => 'Add Package',
+ 'add_description' => 'This page displays a table of all Composer packages. You can install any',
+ 'packageName' => 'Package Name',
+ 'description' => 'Description',
+ 'downloads' => 'Downloads',
+ 'download' => ''
+ ],
+ 'translate' => [
+ 'title' => 'Translations',
+ 'setting_description' => 'On this page, you can create your own phrases for Flute with the key custom.',
+ 'edit' => 'Edit translation phrases - :code',
+ 'edit_description' => 'On this page, you can create or modify new translations with the key custom.',
+ 'translations' => 'Phrases'
+ ],
+ 'currency' => [
+ 'title' => 'Currencies',
+ 'setting_description' => 'List of custom currencies created in Flute',
+ 'currency' => 'Currency (code)',
+ 'add' => 'Add Currency',
+ 'add_description' => 'On this page, you can add a new currency',
+ 'min_value' => 'Minimum Value',
+ 'min_value_desc' => 'Specify the minimum top-up amount for this currency',
+ 'exchange_rate' => 'Exchange Rate',
+ 'exchange_rate_desc' => 'Specify the conversion percentage of the amount to this currency',
+ 'gateway' => 'Which payment gateways does it apply to',
+ 'edit' => 'Edit Currency',
+ 'edit_description' => 'On this page, you can edit currency parameters'
+ ],
+ 'confirm_install' => 'Are you sure you want to install this?',
+ 'may_have_errors' => 'This feature may work unstably!'
+];
\ No newline at end of file
diff --git a/i18n/br/alerts.php b/i18n/br/alerts.php
new file mode 100644
index 0000000..325ca38
--- /dev/null
+++ b/i18n/br/alerts.php
@@ -0,0 +1,7 @@
+ 'Selecionar Idioma',
+ 'lang_correct' => 'Tudo correto',
+ 'lang_message' => 'Idioma detectado corretamente?',
+ 'cookie_message' => 'Nós utilizamos Cookies',
+ 'cookie_text' => 'Nós utilizamos Cookies para garantir o funcionamento adequado do nosso site. Ao continuar a usar o site, você concorda com estes termos.',
+];
\ No newline at end of file
diff --git a/i18n/br/auth.php b/i18n/br/auth.php
new file mode 100644
index 0000000..6317227
--- /dev/null
+++ b/i18n/br/auth.php
@@ -0,0 +1,65 @@
+ 'Login realizado com sucesso',
+ 'incorrect_password_or_login' => 'Login ou senha incorretos',
+ 'too_many_requests' => 'Muitas solicitações',
+ 'register_email' => 'Por favor, confirme seu endereço de e-mail',
+ 'register_success' => 'Registro realizado com sucesso',
+ 'logout_success' => 'Logout realizado com sucesso',
+ 'remember_me' => 'Lembrar-me',
+ 'account_not_verified' => 'Conta não verificada.',
+ 'resend_verification' => 'Reenviar e-mail de verificação',
+ 'lost_password' => 'Esqueceu a senha?',
+ 'do_not_have_account' => 'Não tem uma conta?',
+ 'do_have_account' => 'Já tem uma conta?',
+ 'submit_reset_success' => 'O link de redefinição de senha foi enviado',
+ 'submit_reset_error' => 'Erro ao enviar o formulário',
+ 'errors' => [
+ 'user_not_found' => 'Usuário não encontrado',
+ 'social_not_found' => 'Rede social não encontrada',
+ 'unknown' => 'Erro desconhecido',
+ ],
+ 'reset' => [
+ 'title' => 'Redefinição de Senha',
+ 'subject' => 'Redefinição de Senha',
+ 'button' => 'Enviar link',
+ 'changed' => 'Senha alterada com sucesso',
+ 'token_not_found' => 'Token de redefinição de senha não encontrado',
+ 'token_expired' => 'Token de redefinição de senha expirado',
+ ],
+ 'auth' => [
+ 'title' => 'Autorização',
+ 'login' => 'Login ou e-mail',
+ 'enter_login' => 'Digite o login ou e-mail',
+ 'password' => 'Senha',
+ 'enter_password' => 'Digite a senha',
+ 'button' => 'Login',
+ 'via_login' => 'Ou',
+ ],
+ 'confirmation' => [
+ 'subject' => 'Confirmação de Conta',
+ 'success' => 'Confirmação bem-sucedida',
+ 'verify_old' => 'A confirmação já foi realizada ou expirou',
+ ],
+ 'registration' => [
+ 'title' => 'Registro',
+ 'login' => 'Login',
+ 'enter_login' => 'Digite o login',
+ 'name' => 'Nome',
+ 'enter_name' => 'Digite o nome',
+ 'email' => 'E-mail',
+ 'enter_email' => 'Digite o e-mail',
+ 'password' => 'Senha',
+ 'enter_password' => 'Digite a senha',
+ 'password_confirmation' => 'Confirmação de Senha',
+ 'enter_password_confirmation' => 'Digite a confirmação da senha',
+ 'enter_password_confirmation_incorrect' => 'Confirmação de senha incorreta',
+ 'login_symbols' => 'Logins só podem conter letras e números em inglês',
+ 'button' => 'Registrar',
+ 'login_min_length' => 'Login deve ter pelo menos caractere(s)',
+ 'login_max_length' => 'Login não deve exceder caractere(s)',
+ 'name_min_length' => 'Nome deve ter pelo menos caractere(s)',
+ 'name_max_length' => 'Nome não deve exceder caractere(s)',
+ 'password_min_length' => 'Senha deve ter pelo menos caractere(s)',
+ 'password_max_length' => 'Senha não deve exceder caractere(s)',
+ ],
+];
\ No newline at end of file
diff --git a/i18n/br/custom.php b/i18n/br/custom.php
new file mode 100644
index 0000000..afa3de5
--- /dev/null
+++ b/i18n/br/custom.php
@@ -0,0 +1,5 @@
+ '212121',
+);
\ No newline at end of file
diff --git a/i18n/br/def.php b/i18n/br/def.php
new file mode 100644
index 0000000..1453c30
--- /dev/null
+++ b/i18n/br/def.php
@@ -0,0 +1,184 @@
+ "Voltar",
+ "save" => "Salvar",
+ "delete" => "Excluir",
+ "cancel" => "Cancelar",
+ "edit" => "Editar",
+ "add" => "Adicionar",
+ "close" => "Fechar",
+ "clear" => "Limpar",
+ "yes" => "Sim",
+ "no" => "Não",
+ "ok" => "Ok",
+ "home" => "Início",
+ "logout" => "Sair",
+ "admin" => "Admin",
+ "balance" => "Saldo",
+ "my_balance" => "Meu Saldo",
+ "my_profile" => "Meu Perfil",
+ "admin_panel" => "Painel de Administração",
+ "profile" => "Perfil",
+ "page_editor" => "Editor de Página",
+ "main" => "Principal",
+ "profile_user" => "Perfil do usuário %user%",
+ "settings" => "Configurações",
+ "profile_settings" => "Configurações do Perfil",
+ "user_profile" => "Perfil do Usuário - %user%",
+ "back_home" => "Voltar para o Início",
+ "error_code" => "Erro: %error%",
+ "error" => "Erro",
+ "success" => "Sucesso",
+ "info" => "Informação",
+ "warning" => "Aviso",
+ "confirm" => "Confirmar Ação",
+ "delete_confirm" => "Tem certeza de que deseja excluir este registro?",
+ "delete_success" => "Exclusão bem-sucedida",
+ "delete_fail" => "Falha na exclusão",
+ "delete_error" => "Erro ao excluir registro",
+ "edit_success" => "Edição bem-sucedida",
+ "edit_fail" => "Falha na edição",
+ "edit_error" => "Erro ao editar registro",
+ "add_success" => "Adição bem-sucedida",
+ "add_fail" => "Falha na adição",
+ "add_error" => "Erro ao adicionar registro",
+ "search" => "Buscar",
+ "search_results_for" => "Resultados da busca por '%query%'",
+ "no_results_found" => "Nenhum resultado encontrado",
+ "username" => "Nome de usuário",
+ "password" => "Senha",
+ "login" => "Login",
+ "email" => "E-mail",
+ "update" => "Atualizar",
+ "load_more" => "Carregar Mais",
+ "loading" => "Carregando",
+ "submit" => "Enviar",
+ "read_more" => "Leia Mais",
+ "view" => "Visualizar",
+ "view_all" => "Ver Todos",
+ "create_new" => "Criar Novo",
+ "create" => "Criar",
+ "post" => "Postar",
+ "category" => "Categoria",
+ "tags" => "Tags",
+ "required" => "Campo Obrigatório",
+ "optional" => "Campo Opcional",
+ "auth" => "Autenticar",
+ "register" => "Registrar",
+ "exit_without_saving" => "Sair sem salvar?",
+ "not_authorized" => "Não Autorizado",
+ "restricted_area" => "Área Restrita",
+ "save_changes" => "Salvar Alterações",
+ "changes_saved" => "Alterações salvas",
+ "details" => "Detalhes",
+ "preview" => "Prévia",
+ "select_file" => "Selecionar Arquivo",
+ "choose" => "Escolher",
+ "upload_file" => "Enviar Arquivo",
+ "upload_image" => "Enviar Imagem",
+ "remove_image" => "Remover Imagem",
+ "file_not_supported" => "Arquivo não suportado",
+ "upload_success" => "Upload bem-sucedido",
+ "upload_fail" => "Falha no upload",
+ "server_error" => "Erro do Servidor",
+ "continue" => "Continuar",
+ "publish" => "Publicar",
+ "published" => "Publicado",
+ "unpublish" => "Despublicar",
+ "draft" => "Rascunho",
+ "title" => "Título",
+ "description" => "Descrição",
+ "date" => "Data",
+ "author" => "Autor",
+ "status" => "Status",
+ "actions" => "Ações",
+ "select_option" => "Selecionar Opção",
+ "filter" => "Filtrar",
+ "all" => "Todos",
+ "active" => "Ativo",
+ "inactive" => "Inativo",
+ "refresh" => "Atualizar",
+ "send" => "Enviar",
+ "previous" => "Anterior",
+ "next" => "Próximo",
+ "privacy_policy" => "Política de Privacidade",
+ "terms_conditions" => "Termos e Condições",
+ "sitemap" => "Mapa do Site",
+ "contact_us" => "Contate-nos",
+ "about_us" => "Sobre Nós",
+ "go_to_top" => "Ir para o Topo",
+ "language" => "Idioma",
+ "change_language" => "Mudar Idioma",
+ "welcome" => "Bem-vindo",
+ "see_details" => "Ver Detalhes",
+ "copy" => "Copiar",
+ "view_more" => "Ver Mais",
+ "complete" => "Completo",
+ "incomplete" => "Incompleto",
+ "welcome_back" => "Bem-vindo de volta",
+ "sign_in_to_continue" => "Faça login para continuar",
+ "good_morning" => "Bom dia",
+ "good_afternoon" => "Boa tarde",
+ "good_evening" => "Boa noite",
+ "good_night" => "Boa noite",
+ "logout_message" => "Você saiu com sucesso",
+ "login_message" => "Você entrou com sucesso",
+ "dashboard" => "Painel",
+ "contents" => "Conteúdo",
+ "preferences" => "Preferências",
+ "analytics" => "Análises",
+ "reports" => "Relatórios",
+ "system" => "Sistema",
+ "logs" => "Logs",
+ "help" => "Ajuda",
+ "documentation" => "Documentação",
+ "support" => "Suporte",
+ "version" => "Versão",
+ "socials" => "Nossas Redes Sociais",
+ "page_not_found" => "Página Não Encontrada",
+ "method_not_allowed" => "Método Não Permitido",
+ "goto" => "Ir para",
+ "back_to" => "Voltar para",
+ "notification" => "Notificação",
+ "notifications" => "Notificações",
+ "en" => "Inglês",
+ "ru" => "Russo",
+ "de" => "Alemão",
+ "fr" => "Francês",
+ "es" => "Espanhol",
+ "it" => "Italiano",
+ "uk" => "Ucraniano",
+ "uz" => "Uzbeque",
+ "br" => "Português Brasil",
+ "found" => "Resultados encontrados:",
+ "widget_has_errors" => "O widget - %name% possui erros. Por favor, remova-o da lista de widgets imediatamente!",
+ "choose_widget" => "Escolher Widget",
+ "new_notification_1" => "Você recebeu uma nova notificação!",
+ "new_notification_2" => "Você recebeu novas notificações!",
+ "new_notification_5" => "Você recebeu novas notificações!",
+ "attention_save" => "Atenção! Não se esqueça de salvar!",
+ "lets_search" => "Vamos buscar algo...",
+ "no_access" => "Você não tem acesso!",
+ "user_not_found" => "Usuário não encontrado",
+ "unknown_error" => "Erro desconhecido!",
+ "notinstalled" => "Não Instalado",
+ "disabled" => "Desabilitado",
+ "name" => "Nome",
+ "install" => "Instalar",
+ 'csrf_expired' => 'Seu token expirou. Por favor, atualize a página',
+ 'user_login' => 'Login do Usuário',
+ 'user_name' => 'Nome do Usuário',
+ 'roles' => 'Funções',
+ 'type' => 'Tipo',
+ 'value' => 'Valor',
+ 'id' => 'Identificador',
+ 'alert' => 'Alerta!',
+ 'site_not_support' => 'Este site não é suportado em dispositivos móveis. O conteúdo pode ser exibido incorretamente. Por favor, mude para PC.',
+ 'i_dcare' => 'Não me importo!',
+ 'hide' => 'Esconder',
+ 'open' => 'Abrir',
+ 'accept' => 'Aceitar',
+ 'not_paid' => 'Não Pago',
+ 'paid' => 'Pago',
+ 'start_tour' => 'Iniciar Tour!'
+];
\ No newline at end of file
diff --git a/i18n/br/install.php b/i18n/br/install.php
new file mode 100644
index 0000000..909a608
--- /dev/null
+++ b/i18n/br/install.php
@@ -0,0 +1,91 @@
+ "Voltar",
+ "next" => "Próximo",
+ "last_step_required" => "Para prosseguir, você precisa completar a última etapa!",
+ "finish" => "Finalizar Instalação!",
+ 1 => [
+ 'card_head' => 'Seleção de Idioma',
+ "title" => "Flute :: Seleção de Idioma",
+ 'Несуществующий язык' => 'Parece que você selecionou algum idioma misterioso :0'
+ ],
+ 2 => [
+ "title" => "Flute :: Verificação de Requisitos",
+ 'card_head' => "Compatibilidade",
+ 'card_head_desc' => "Nesta página, você precisa verificar a conformidade de todos os requisitos e, se estiver tudo certo, proceder com a instalação",
+ 'req_not_completed' => "Requisitos não atendidos",
+ 'need_to_install' => "Necessidade de instalar",
+ 'may_installed' => "Recomendado para instalar",
+ 'installed' => "Instalado",
+ 'all_good' => "Tudo certo!",
+ 'may_unstable' => "Pode funcionar instável",
+ 'min_php_7' => "A versão mínima do PHP é 7.4!",
+ 'php_exts' => "Extensões do PHP",
+ 'other' => 'Outro'
+ ],
+ 3 => [
+ "title" => "Flute :: Entrada de Banco de Dados",
+ 'card_head' => "Conexão com Banco de Dados",
+ 'card_head_desc' => "Preencha todos os campos com dados do seu banco de dados. É preferível criar um novo banco de dados.",
+ "driver" => "Selecione o Driver do Banco de Dados",
+ "ip" => "Digite o Host do Banco de Dados",
+ "port" => "Digite a Porta do Banco de Dados",
+ "db" => "Digite o Nome do Banco de Dados",
+ "user" => "Digite o Usuário do Banco de Dados",
+ "pass" => "Digite a Senha do Banco de Dados",
+ 'db_error' => "Ocorreu um erro ao conectar:
%error%",
+ 'data_invalid' => "Os dados inseridos são inválidos!",
+ "check_data" => "Verificar Dados",
+ "data_correct" => 'Dados Corretos'
+ ],
+ 4 => [
+ "title" => "Flute :: Migração de Dados",
+ 'card_head' => "Migração de Dados",
+ 'card_head_desc' => "Você precisa migrar dados de outros CMS. Selecione o CMS necessário (se necessário)",
+ 'migrate_from' => 'Migrar Dados De',
+ 'thanks_but_no' => 'Obrigado, mas não',
+ 'card_head_2' => 'Migração de Dados de %cms%',
+ 'card_desc_2' => 'Selecione os tipos de migração necessários e preencha os dados no formulário',
+ 'migrate' => [
+ 'all' => 'Migrar Todos',
+ 'servers' => 'Migrar Servidores',
+ 'admins' => 'Migrar Administradores',
+ 'gateways' => 'Migrar Portais de Pagamento',
+ 'payments' => 'Migrar Histórico de Pagamentos',
+ ]
+ ],
+ 5 => [
+ "title" => "Flute :: Registro de Proprietário",
+ 'card_head' => "Registro de Proprietário",
+ 'card_head_desc' => "Preencha todos os campos com dados para criar sua conta.",
+ 'login' => 'Login',
+ 'login_placeholder' => 'Digite o login',
+ 'name' => 'Apelido',
+ 'name_placeholder' => 'Digite o nome de exibição',
+ 'email' => 'E-mail',
+ 'email_placeholder' => 'Digite o E-mail',
+ 'password' => 'Senha',
+ 'password_placeholder' => 'Digite a senha',
+ 'repassword' => 'Digite a senha novamente',
+ 'repassword_placeholder' => 'Digite a senha novamente',
+ 'login_length' => 'O comprimento mínimo do login é de 2 letras!',
+ 'name_length' => 'O comprimento mínimo do apelido é de 2 letras!',
+ 'pass_length' => 'O comprimento mínimo da senha é de 4 caracteres!',
+ 'invalid_email' => 'Digite o e-mail corretamente!',
+ 'pass_diff' => 'As senhas digitadas não coincidem!',
+ 'error_create_user' => 'Erro ao criar usuário!',
+ ],
+ 6 => [
+ "title" => "Flute :: Os Tooltips Estão Ativados?",
+ 'card_head' => "Ativando Tooltips",
+ 'card_head_desc' => "Você precisa de dicas no mecanismo para entender como usar determinadas funcionalidades?",
+ 'yes' => 'Sim, ativar, estou aqui pela primeira vez (recomendado) 🤯',
+ 'no' => 'Não, já estive rodando esta Flute em todos os lugares 😎'
+ ],
+ 7 => [
+ "title" => "Flute :: Relatório de Erros",
+ 'card_head' => "Ativando Relatório de Erros",
+ 'card_head_desc' => "Em caso de mau funcionamento do mecanismo, os erros serão enviados para nosso servidor para processamento. Após algum tempo, uma atualização com correção pode ser lançada graças a você 🥰",
+ 'yes' => 'Sim, enviar erros para melhorar o desempenho do mecanismo 😇',
+ 'no' => 'Não, não enviar nada, não estou interessado 🤐'
+ ],
+];
\ No newline at end of file
diff --git a/i18n/br/lk.php b/i18n/br/lk.php
new file mode 100644
index 0000000..bc2a4e4
--- /dev/null
+++ b/i18n/br/lk.php
@@ -0,0 +1,36 @@
+ [
+ 'title' => 'Recarga de Saldo',
+ 'choose_gateway' => 'Escolha a forma de pagamento',
+ 'put_amount_and_promo' => 'Informe o valor e o código promocional',
+ 'enter_amount' => 'Informe o valor',
+ 'placeholder_amount' => '100',
+ 'enter_promo' => 'Código promocional (se houver)',
+ 'placeholder_promo' => 'Código promocional (se houver)',
+ 'apply' => 'Aplicar',
+ 'agree_terms' => 'Eu concordo com os termos do',
+ 'user_agreement' => 'contrato do usuário',
+ 'recharge' => 'Recarregar',
+ 'you_receive' => 'Valor a ser creditado',
+ 'you_pay' => 'Valor a pagar'
+ ],
+ 'success' => [
+ 'title' => 'Sucesso',
+ 'success_payment' => 'Pagamento realizado com sucesso!',
+ 'success_payment_desc' => 'Seu saldo foi recarregado com sucesso! Você pode voltar à página principal e usar os fundos.',
+ ],
+ 'error' => [
+ 'title' => 'Falha',
+ 'fail_payment' => 'Pagamento não concluído!',
+ 'fail_payment_desc' => 'Por algum motivo, o pagamento não foi concluído. Por favor, tente novamente.',
+ ],
+ 'promo_not_found' => 'Código promocional não encontrado',
+ 'promo_limit' => 'Limite de uso do código promocional atingido',
+ 'promo_expired' => 'Código promocional expirado',
+ 'promo_used' => 'Você já usou este código promocional',
+ 'promo_is_empty' => 'O código promocional inserido está vazio',
+ 'promo_amount' => 'Bônus para recarga: :value :currency',
+ 'promo_percentage' => 'O código promocional dá um desconto de :percentage%',
+ 'promo_subtract' => 'O código promocional reduz o valor em :value :currency',
+ 'min_amount' => 'Valor mínimo de recarga: :sum'
+];
\ No newline at end of file
diff --git a/i18n/br/popover.php b/i18n/br/popover.php
new file mode 100644
index 0000000..d33008c
--- /dev/null
+++ b/i18n/br/popover.php
@@ -0,0 +1,103 @@
+ [
+ 'title' => [
+ 'admin_header' => 'Configurações do Sistema',
+ 'system' => 'Sistema',
+ 'authorization' => 'Autorização',
+ 'databases' => 'Bancos de Dados',
+ 'what_is_this' => 'O que é isso?',
+ 'default_db' => 'Banco de Dados Padrão',
+ 'debug' => 'Depurar',
+ 'connections_dbs' => 'Conexões e Bancos de Dados',
+ 'connections' => 'Conexões',
+ 'in_short' => 'Em Resumo',
+ 'dbs' => 'Bancos de Dados',
+ 'language' => 'Idioma',
+ 'mail_server' => 'Servidor de Email',
+ 'profile' => 'Perfil',
+ 'replenishment' => 'Reabastecimento',
+ 'summing_up' => 'Resumindo',
+ ],
+ 'description' => [
+ 'system_settings_intro' => 'Vamos considerar o que são as configurações do sistema e como lidar com elas.',
+ 'system_settings_details' => 'Nesta seção, você pode alterar as configurações básicas do sistema. Mudar pontos críticos tem um impacto significativo, então modifique apenas o que você tem certeza.',
+ 'authorization_settings' => 'Aqui você pode alterar configurações de autorização (tempo de sessão e mais). Acredito que seja claro o suficiente.',
+ 'databases_overview' => 'Agora vamos dar uma olhada mais de perto nos bancos de dados.',
+ 'database_principles' => 'O princípio dos bancos de dados no sistema é organizado de forma um pouco não padrão, vamos nos aprofundar mais.',
+ 'default_db_usage' => 'Esta seção é responsável pelo banco de dados que o Flute usará. É recomendável nunca tocar ou alterar esta seção de forma alguma.',
+ 'debug_mode_info' => 'Esta seção habilita o modo de depuração para o banco de dados. É recomendável ser usado apenas por desenvolvedores.',
+ 'multiple_connections_dbs' => 'O Flute usa um sistema de múltiplas conexões e múltiplos bancos de dados.',
+ 'connections_info' => 'As conexões são os dados para conectar ao banco de dados (login, senha, etc.), enquanto os bancos de dados em si são os dados usados para módulos e o sistema.',
+ 'connections_dbs_summary' => 'Pode haver uma conexão (se tudo estiver em um único banco de dados). E pode haver muitos bancos de dados. Em geral, você entenderá tudo mais tarde.',
+ 'managing_connections' => 'Esta seção permite manipular todas as conexões no Flute.',
+ 'setting_up_dbs' => 'Nesta seção, a configuração e instalação de bancos de dados que usam conexões acontecem. Ufa, respire fundo e vamos continuar...',
+ 'language_settings' => 'Nesta seção, você escolhe o idioma padrão do sistema e o cache das traduções.',
+ 'mail_server_settings' => 'Nesta seção, você configurará o servidor de email para enviar emails (para redefinição de senha, etc.).',
+ 'profile_settings' => 'Aqui você pode configurar vários parâmetros para os usuários no perfil. Apenas visite e você entenderá tudo sozinho.',
+ 'balance_replenishment_settings' => 'Esta seção contém configurações usadas para o reabastecimento do saldo. Seja a moeda exibida ou o valor mínimo de reabastecimento.',
+ 'tour_ending' => 'Incrível, mas terminamos nosso tour pelos principais pontos. Eu sei, você precisa digerir isso, mas acredito em você, você definitivamente conseguirá!',
+ ]
+ ],
+ 'admin_stats' => [
+ 'title' => [
+ 'sidebar' => 'Barra Lateral',
+ 'main_menu' => 'Menu Principal',
+ 'additional_menu' => 'Menu Adicional',
+ 'recent_menu' => 'Recentemente Visitado',
+ 'sidebar_complete' => 'Barra Lateral Completa',
+ 'navbar' => 'Barra de Navegação',
+ 'search' => 'Buscar',
+ 'version' => 'Versão',
+ 'report_generation' => 'Geração de Relatório',
+ 'final' => 'É Isso!',
+ ],
+ 'description' => [
+ 'sidebar' => 'Vamos considerar o painel de navegação principal do painel de administração. Bem, vamos começar!',
+ 'main_menu' => 'Este menu contém itens relacionados às configurações críticas do sistema.',
+ 'additional_menu' => 'Este menu contém itens de módulos e vários componentes do sistema. Você entenderá qual item é responsável por quê conforme o utiliza.',
+ 'recent_menu' => 'Na parte inferior do painel de administração, as páginas que você visitou recentemente também são apresentadas. Isso pode ser útil se você visitar frequentemente uma página e não quiser procurá-la constantemente.',
+ 'sidebar_complete' => 'Terminamos com a barra lateral, agora vamos passar para os outros componentes.',
+ 'navbar' => 'Vamos dar uma olhada no painel superior, o que está apresentado lá e como.',
+ 'search' => 'Este campo de entrada permite encontrar itens ou páginas necessárias por palavras-chave. Basta começar a digitar, e a busca lhe dará o resultado desejado!',
+ 'version' => 'Aqui é apresentada a versão do sistema instalado. Além disso, no futuro, será possível atualizar o sistema diretamente do painel de administração.',
+ 'report_generation' => 'Este botão permite gerar um relatório detalhado sobre o sistema. Se você precisar enviar a alguém informações sobre um erro do sistema, este arquivo deve acompanhar a mensagem.',
+ 'final' => 'Eu lhe contei sobre os principais componentes dentro do painel de administração. Em diferentes páginas, você encontrará outras dicas. Boa sorte usando isso!',
+ ]
+ ],
+ 'home' => [
+ 'title' => [
+ 'editor_mode_title' => 'Modo Editor',
+ 'editor_title' => 'Título da Página Editável',
+ 'editor_area' => 'Área de Edição',
+ 'editor_toolbar' => 'Ferramentas do Editor',
+ 'save_button' => 'Salvar',
+ 'editor_course_completed' => 'Curso de Editor Concluído',
+ ],
+ 'description' => [
+ 'editor_mode' => 'O CMS possui um modo de edição para cada página, permitindo-nos personalizá-la totalmente.',
+ 'editor_title' => 'Aqui está o título da página que será editada.',
+ 'editor_area' => 'Aqui você pode criar vários blocos, widgets e textos que serão exibidos no editor.',
+ 'editor_toolbar' => 'À esquerda, você pode adicionar ou modificar blocos existentes.',
+ 'save_button' => 'Após modificar os dados, certifique-se de salvar todo o conteúdo clicando neste botão.',
+ 'editor_course_completed' => 'Isso é tudo que você precisa saber para uma compreensão básica no editor. Para mais detalhes, consulte a documentação oficial.',
+ ],
+ ],
+ 'composer' => [
+ 'title' => [
+ 'composer' => 'Como o Composer funciona?',
+ 'what_is_this' => 'O que é isso?',
+ 'and_then' => 'E então?',
+ 'package_list' => 'Lista de Pacotes',
+ 'deletion' => 'Exclusão',
+ 'practice' => 'Vamos praticar',
+ ],
+ 'description' => [
+ 'composer' => 'O gerenciador de pacotes Composer permite instalar bibliotecas da comunidade',
+ 'what_is_this' => 'O gerenciador de pacotes Composer permite instalar bibliotecas da comunidade',
+ 'and_then' => 'Esses pacotes serão muito úteis ao desenvolver módulos ou modelos. Basicamente, você pode anexar absolutamente qualquer coisa do painel de administração aqui!',
+ 'package_list' => 'Aqui estão todos os pacotes instalados no sistema. Se você não sabe qual pacote é responsável por quê, NÃO TOQUE EM NADA',
+ 'deletion' => 'Cada pacote pode ser removido do sistema. Isso é útil se você instalou algo, mas está conflitando com outro, ou você simplesmente não precisa mais usá-lo',
+ 'practice' => 'Vamos adicionar nosso primeiro pacote',
+ ],
+ ],
+];
\ No newline at end of file
diff --git a/i18n/br/profile.php b/i18n/br/profile.php
new file mode 100644
index 0000000..726bfb6
--- /dev/null
+++ b/i18n/br/profile.php
@@ -0,0 +1,63 @@
+ 'Este perfil está oculto, infelizmente :(',
+ 'edit_profile' => 'Editar perfil',
+ 'settings_profile' => 'Configurações do perfil',
+ 'name_error' => 'Formato de nome inválido',
+ 'uri_error' => 'Formato de link inválido',
+ 'change_banner' => 'Alterar banner',
+ 'change_avatar' => 'Alterar avatar',
+ 'settings' => [
+ 'social' => 'Vínculos',
+ 'main' => 'Principal',
+ 'devices' => 'Dispositivos',
+ 'main_desc' => 'Configurações do perfil',
+ 'social_desc' => 'Configurações de rede social',
+ 'devices_desc' => 'Configurações de sessões ativas',
+ 'security' => 'Segurança',
+ 'invoices' => 'Faturas',
+ 'theme' => 'Tema'
+ ],
+ 's_main' => [
+ 'info' => 'Informações básicas',
+ 'privacy' => 'Privacidade',
+ 'profile_show' => 'Meu perfil é visível para todos',
+ 'profile_hidden' => 'Meu perfil está oculto para todos',
+ 'avatar' => 'Avatar',
+ 'max_size' => 'Tamanho máximo: % MB.',
+ 'load_avatar' => 'Carregar avatar',
+ 'banner' => 'Banner',
+ 'load_banner' => 'Carregar banner',
+ 'nickname' => 'Apelido',
+ 'placeholder' => 'Inserir valor...',
+ 'nickname_uri' => 'Apelido no link',
+ ],
+ 's_social' => [
+ 'info' => 'Conexões',
+ 'connected' => 'Redes sociais conectadas',
+ 'not_connected' => 'Redes sociais não conectadas',
+ 'disconnect' => 'Desconectar',
+ 'connect' => 'Conectar',
+ 'social_disconnected' => 'Rede social desvinculada com sucesso!',
+ ],
+ "errors" => [
+ 'social_binded' => 'A rede social já está vinculada ao perfil',
+ 'social_not_connected' => 'Você não tem essa rede social conectada 🤔',
+ 'social_only_one' => 'Você não pode desvincular a única rede social!',
+ 'uri_taken' => 'Um link com este valor já está sendo usado!'
+ ],
+ 'invoices' => [
+ 'info' => 'Faturas',
+ ],
+ 'security' => [
+ 'info' => 'Informações pessoais',
+ 'main_settings' => 'Configurações principais'
+ ],
+ 'theme' => [
+ 'info' => 'Configuração do tema'
+ ],
+ 'devices' => [
+ 'info' => 'Dispositivos autorizados',
+ 'type' => 'Tipo de dispositivo',
+ 'end' => 'Fim'
+ ]
+];
\ No newline at end of file
diff --git a/i18n/br/schema.php b/i18n/br/schema.php
new file mode 100644
index 0000000..6355e40
--- /dev/null
+++ b/i18n/br/schema.php
@@ -0,0 +1,10 @@
+ 'Tipo incorreto: Era esperado o tipo esperado, mas foi recebido o valor.',
+ 'valueOutOfRange' => 'O valor está fora da faixa esperada.',
+ 'lengthOutOfRange' => 'O comprimento do valor deve estar na faixa esperada, dado um comprimento de bytes.',
+ 'patternMismatch' => 'Padrão não correspondente: O valor não corresponde ao padrão esperado.',
+ 'failedAssertion' => 'Asserção falhou: O valor não passou na asserção.',
+ 'missingItem' => 'Item ausente: Um item necessário está ausente.',
+ 'unexpectedItem' => 'Item inesperado: Um item inesperado está presente.',
+ 'deprecated' => 'Este método está obsoleto.',
+];
\ No newline at end of file
diff --git a/i18n/br/tutorial.php b/i18n/br/tutorial.php
new file mode 100644
index 0000000..50d2c11
--- /dev/null
+++ b/i18n/br/tutorial.php
@@ -0,0 +1,3 @@
+ 'Tem certeza de que deseja sair? Isso encerrará o tutorial!',
+];
\ No newline at end of file
diff --git a/i18n/br/validator.php b/i18n/br/validator.php
new file mode 100644
index 0000000..6f6b816
--- /dev/null
+++ b/i18n/br/validator.php
@@ -0,0 +1,23 @@
+ 'Sua sessão expirou. Por favor, retorne à página principal e tente novamente.',
+ 'equal' => 'Por favor, insira %s.',
+ 'not_equal' => 'O valor não deve ser igual a %s.',
+ 'filled' => 'Este campo é obrigatório.',
+ 'blank' => 'Este campo deve estar em branco.',
+ 'min_length' => 'Por favor, insira no mínimo %d caracteres.',
+ 'max_length' => 'Por favor, insira no máximo %d caracteres.',
+ 'length' => 'Por favor, insira um valor entre %d e %d caracteres de comprimento.',
+ 'email' => 'Por favor, insira um endereço de email válido.',
+ 'url' => 'Por favor, insira uma URL válida.',
+ 'integer' => 'Por favor, insira um número inteiro válido.',
+ 'float' => 'Por favor, insira um número válido.',
+ 'min' => 'Por favor, insira um valor maior ou igual a %d.',
+ 'max' => 'Por favor, insira um valor menor ou igual a %d.',
+ 'range' => 'Por favor, insira um valor entre %d e %d.',
+ 'max_file_size' => 'O tamanho do arquivo enviado não deve exceder %d bytes.',
+ 'max_post_size' => 'Os dados enviados excedem o limite de %d bytes.',
+ 'mime_type' => 'O arquivo enviado não corresponde ao formato esperado.',
+ 'image' => 'O arquivo enviado deve ser uma imagem nos formatos JPEG, GIF, PNG ou WebP.',
+ 'select_box_valid' => 'Por favor, selecione uma opção válida.',
+ 'upload_control_valid' => 'Ocorreu um erro durante o envio do arquivo.',
+];
\ No newline at end of file
diff --git a/i18n/de/def.php b/i18n/de/def.php
index 9458941..6c89fac 100644
--- a/i18n/de/def.php
+++ b/i18n/de/def.php
@@ -147,6 +147,7 @@
"it" => "Italiano",
"uk" => "Українська",
"uz" => "Oʻzbekcha",
+ "br" => "Portuguese Brazil",
"found" => "Gefunden",
"widget_has_errors" => "Das Widget - %name% enthält Fehler. Bitte entfernen Sie es sofort aus der Widget-Liste!",
"choose_widget" => "Widget auswählen",
diff --git a/i18n/en/def.php b/i18n/en/def.php
index 5fbb4c7..13ad505 100644
--- a/i18n/en/def.php
+++ b/i18n/en/def.php
@@ -149,8 +149,9 @@
"it" => "Italian",
"uk" => "Ukrainian",
"uz" => "Uzbek",
- "found" => "Results found:",
- "widget_has_errors" => "Widget - %name% contains errors. Please remove it from the widget list immediately!",
+ "br" => "Portuguese Brazil",
+ "found" => "Found results:",
+ "widget_has_errors" => "Widget - %name% has errors. Please remove it from the widgets list immediately!",
"choose_widget" => "Choose Widget",
"new_notification_1" => "You have num new notification!",
"new_notification_2" => "You have num new notifications!",
diff --git a/i18n/en/langs.php b/i18n/en/langs.php
index 4de8409..67cbcb4 100644
--- a/i18n/en/langs.php
+++ b/i18n/en/langs.php
@@ -1,35 +1,36 @@
"English",
- "ru" => "Русский",
- "uk" => "Українська",
- "de" => "Deutsch",
- "es" => "Español",
- "fr" => "Français",
- "it" => "Italiano",
- "pt" => "Português",
- "zh" => "中文",
- "ja" => "日本語",
- "ko" => "한국어",
- "ar" => "العربية",
- "tr" => "Türkçe",
- "nl" => "Nederlands",
- "sv" => "Svenska",
- "da" => "Dansk",
- "fi" => "Suomi",
- "no" => "Norsk",
- "pl" => "Polski",
- "hu" => "Magyar",
- "cs" => "Čeština",
- "ro" => "Română",
- "el" => "Ελληνικά",
- "he" => "עברית",
- "th" => "ไทย",
- "hi" => "हिन्दी",
- "bn" => "বাংলা",
- "ta" => "தமிழ்",
- "vi" => "Tiếng Việt",
- "id" => "Bahasa Indonesia",
- "ms" => "Bahasa Melayu",
- "uz" => "Oʻzbekcha"
+ 'en' => 'English',
+ 'ru' => 'Русский',
+ 'uk' => 'Українська',
+ 'de' => 'Deutsch',
+ 'es' => 'Español',
+ 'fr' => 'Français',
+ 'it' => 'Italiano',
+ 'pt' => 'Português',
+ 'br' => 'Português Brasil',
+ 'zh' => '中文',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'ar' => 'العربية',
+ 'tr' => 'Türkçe',
+ 'nl' => 'Nederlands',
+ 'sv' => 'Svenska',
+ 'da' => 'Dansk',
+ 'fi' => 'Suomi',
+ 'no' => 'Norsk',
+ 'pl' => 'Polski',
+ 'hu' => 'Magyar',
+ 'cs' => 'Čeština',
+ 'ro' => 'Română',
+ 'el' => 'Ελληνικά',
+ 'he' => 'עברית',
+ 'th' => 'ไทย',
+ 'hi' => 'हिन्दी',
+ 'bn' => 'বাংলা',
+ 'ta' => 'தமிழ்',
+ 'vi' => 'Tiếng Việt',
+ 'id' => 'Bahasa Indonesia',
+ 'ms' => 'Bahasa Melayu',
+ 'uz' => 'Oʻzbekcha'
];
\ No newline at end of file
diff --git a/i18n/es/def.php b/i18n/es/def.php
index d23c41c..534d8a1 100644
--- a/i18n/es/def.php
+++ b/i18n/es/def.php
@@ -148,6 +148,7 @@
"it" => "Italiano",
"uk" => "Ucraniano",
"uz" => "Uzbeko",
+ "br" => "Portuguese Brazil",
"found" => "Encontrado",
"widget_has_errors" => "El widget - %name% contiene errores. ¡Retíralo inmediatamente de la lista de widgets!",
"choose_widget" => "Elegir un widget",
diff --git a/i18n/fr/def.php b/i18n/fr/def.php
index c0abdcc..1b0474f 100644
--- a/i18n/fr/def.php
+++ b/i18n/fr/def.php
@@ -148,6 +148,7 @@
"it" => "Italien",
"uk" => "Ukrainien",
"uz" => "Ouzbek",
+ "br" => "Portuguese Brazil",
"found" => "Trouvé",
"widget_has_errors" => "Le widget - %name% contient des erreurs. Veuillez le retirer immédiatement de la liste des widgets!",
"choose_widget" => "Choisir un widget",
diff --git a/i18n/pl/def.php b/i18n/pl/def.php
index 544501f..173a48d 100644
--- a/i18n/pl/def.php
+++ b/i18n/pl/def.php
@@ -148,6 +148,7 @@
"it" => "Italiano",
"uk" => "Українська",
"uz" => "Oʻzbekcha",
+ "br" => "Portuguese Brazil",
"found" => "Znaleziono wyników:",
"widget_has_errors" => "Widżet - %name% zawiera błędy. Proszę usunąć go z listy widżetów natychmiastowo!",
"choose_widget" => "Wybierz widżet",
diff --git a/i18n/ru/def.php b/i18n/ru/def.php
index 89405a8..9a21a55 100644
--- a/i18n/ru/def.php
+++ b/i18n/ru/def.php
@@ -149,6 +149,7 @@
"it" => "Italiano",
"uk" => "Українська",
"uz" => "Oʻzbekcha",
+ "br" => "Portuguese Brazil",
"found" => "Найдено результатов:",
"widget_has_errors" => "Виджет - %name% содержит ошибки. Пожалуйста, уберите его из списка виджетов немедленно!",
"choose_widget" => "Выберите виджет",
diff --git a/i18n/uk/def.php b/i18n/uk/def.php
index 8b8032e..734af80 100644
--- a/i18n/uk/def.php
+++ b/i18n/uk/def.php
@@ -148,6 +148,7 @@
"it" => "Italiano",
"uk" => "Українська",
"uz" => "Oʻzbekcha",
+ "br" => "Portuguese Brazil",
"found" => "Знайдено результатів:",
"widget_has_errors" => "Віджет - %name% містить помилки. Будь ласка, видаліть його зі списку віджетів негайно!",
"choose_widget" => "Виберіть віджет",
diff --git a/i18n/uz/def.php b/i18n/uz/def.php
index 6425462..8d6461e 100644
--- a/i18n/uz/def.php
+++ b/i18n/uz/def.php
@@ -148,6 +148,35 @@
"it" => "Italiano",
"uk" => "Українська",
"uz" => "Oʻzbekcha",
+ "br" => "Portuguese Brazil",
+ 'found' => 'Natijalar topildi:',
+ 'widget_has_errors' => 'Vidjet - %name% da xatolar mavjud. Iltimos , uni darhol vidjetlar roʻyxatidan olib tashlang!',
+ 'choose_widget' => 'Vidjetni tanlang',
+ 'new_notification_1' => 'num bildirishnoma oldingiz!',
+ 'new_notification_2' => 'num bildirishnomalarni oldingiz!',
+ 'new_notification_5' => 'num bildirishnomalarni oldingiz!',
+ 'attention_save' => 'Ehtiyot boʻling! Saqlashni unutmang!',
+ 'lets_search' => 'Keling, nimadir topamiz ...',
+ 'no_access' => 'Sizda ruxsat yoʻq!',
+ 'user_not_found' => 'Foydalanuvchi topilmadi',
+ 'unknown_error' => 'Nomaʻlum xatolik!',
+ 'notinstalled' => 'Oʻrnatilmagan',
+ 'disabled' => 'Oʻchirilgan',
+ 'name' => 'Nom',
+ 'install' => 'Oʻrnatish',
+ 'csrf_expired' => 'Tokeningiz muddati tugagan. Sahifani yangilang',
+ 'user_login' => 'Foydalanuvchi logini',
+ 'user_name' => 'Foydalanuvchi ismi',
+ 'roles' => 'Rollar',
+ 'type' => 'Turi',
+ 'value' => 'Maʻnosi',
+ 'id' => 'Identifikator',
+ 'alert' => 'Ogohlantirish!',
+ 'site_not_support' => 'Ushbu sayt mobil qurilmalarni qoʻllab-quvvatlanmaydi. Kontent toʻgʻri koʻrsatilmasligi mumkin.',
+ 'i_dcare' => 'Menga baribir!',
+ 'hide' => 'Yashirish',
+ 'open' => 'Ochish',
+ 'accept' => 'Qoʻllash',
"found" => "Natijalar topildi:",
"widget_has_errors" => "Vidjet - %name% da xatolar mavjud. Iltimos , uni darhol vidjetlar roʻyxatidan olib tashlang!",
"choose_widget" => "Vidjetni tanlang",
diff --git a/i18n/zh/def.php b/i18n/zh/def.php
index 6baa037..f73390a 100644
--- a/i18n/zh/def.php
+++ b/i18n/zh/def.php
@@ -148,6 +148,7 @@
"it" => "Italiano",
"uk" => "Українська",
"uz" => "Oʻzbekcha",
+ "br" => "Portuguese Brazil",
"found" => "找到结果:",
"widget_has_errors" => "小部件 - %name% 包含错误。请 立即 从小部件列表中 移除它!",
"choose_widget" => "选择小部件",