mirror of
https://github.com/mivodev/plugin-lang-br.git
synced 2026-01-26 05:15:30 +07:00
Initial commit
This commit is contained in:
52
.github/workflows/release.yml
vendored
Normal file
52
.github/workflows/release.yml
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
name: Release Plugin
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- 'v*' # Trigger on version tags, e.g. v1.0.0
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Create Release
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write # Needed to create releases
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Get Version
|
||||
id: get_version
|
||||
run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Create ZIP Archive
|
||||
run: |
|
||||
# Create a temporary directory for the zip
|
||||
mkdir temp_zip
|
||||
|
||||
# Copy files to temp directory, excluding unwanted files
|
||||
rsync -av --progress . temp_zip --exclude .git --exclude .github --exclude .gitignore --exclude LICENSE --exclude README.md --exclude temp_zip
|
||||
|
||||
# Create the zip file
|
||||
cd temp_zip
|
||||
zip -r ../plugin-lang-br.zip .
|
||||
cd ..
|
||||
|
||||
echo "Created plugin-lang-br.zip"
|
||||
|
||||
- name: Create Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
files: plugin-lang-br.zip
|
||||
name: Release ${{ steps.get_version.outputs.VERSION }}
|
||||
body: |
|
||||
Automatic release for version ${{ steps.get_version.outputs.VERSION }}
|
||||
|
||||
**Installation:**
|
||||
1. Download `plugin-lang-br.zip`
|
||||
2. Upload in Mivo > Settings > Plugins
|
||||
draft: false
|
||||
prerelease: false
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
21
LICENSE
Normal file
21
LICENSE
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2026 DyzulkDev
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
22
README.md
Normal file
22
README.md
Normal file
@@ -0,0 +1,22 @@
|
||||
# Portuguese (Brazil) Language Pack
|
||||
|
||||
**Category:** Language Pack
|
||||
**Author:** DyzulkDev
|
||||
**Version:** 1.0.0
|
||||
|
||||
The **Portuguese (Brazil) Language Pack** provides full Portuguese (Português - Brasil) localization for the Mivo Hotspot Manager.
|
||||
|
||||
## Features
|
||||
- **Full Translation**: Covers Dashboard, Settings, Hotspot, and System menus.
|
||||
- **Flag Icon**: Adds the Brazil flag to the language switcher.
|
||||
- **Native Terminology**: Uses accurate networking and captive portal terms.
|
||||
|
||||
## Installation
|
||||
1. Download the plugin ZIP file.
|
||||
2. Go to **Mivo > Settings > Plugins**.
|
||||
3. Click **Upload Plugin** and select the ZIP file.
|
||||
4. The plugin will appear in your installed list.
|
||||
5. In the top navbar, click the language switcher and select **Português (Brasil)**.
|
||||
|
||||
## Usage
|
||||
Simply install and activate. The language option will be available immediately to all users.
|
||||
632
br.json
Normal file
632
br.json
Normal file
@@ -0,0 +1,632 @@
|
||||
{
|
||||
"_meta": {
|
||||
"name": "Português (Brasil)",
|
||||
"flag": "br"
|
||||
},
|
||||
"common": {
|
||||
"dashboard": "Painel",
|
||||
"save": "Salvar",
|
||||
"cancel": "Cancelar",
|
||||
"delete": "Excluir",
|
||||
"edit": "Editar",
|
||||
"add": "Adicionar",
|
||||
"install": "Instalar",
|
||||
"back": "Voltar",
|
||||
"actions": "Ações",
|
||||
"status": "Status",
|
||||
"name": "Nome",
|
||||
"description": "Descrição",
|
||||
"search": "Buscar",
|
||||
"previous": "Anterior",
|
||||
"next": "Próximo",
|
||||
"confirm_delete": "Tem certeza que deseja excluir este item?",
|
||||
"page_of": "Página {current} de {total}",
|
||||
"all_topics": "Todos os tópicos",
|
||||
"open": "Abrir",
|
||||
"session": "Sessão",
|
||||
"table": {
|
||||
"entries_per_page": "entradas por página",
|
||||
"search_placeholder": "Buscar...",
|
||||
"all": "Todos",
|
||||
"showing": "Mostrando {start} a {end} de {total} entradas",
|
||||
"no_match": "Nenhum registro encontrado"
|
||||
},
|
||||
"char_length": "{n} Caracteres",
|
||||
"forms": {
|
||||
"general": "Geral",
|
||||
"required": "obrigatório",
|
||||
"save_changes": "Salvar Alterações",
|
||||
"please_wait": "Por favor aguarde...",
|
||||
"none": "nenhum",
|
||||
"enabled": "Ativado",
|
||||
"disabled": "Desativado"
|
||||
},
|
||||
"warning": "Aviso"
|
||||
},
|
||||
"home": {
|
||||
"subtitle": "Um gerenciador de Hotspot MikroTik moderno e leve, construído para desempenho e simplicidade.",
|
||||
"manage_routers": "Gerenciar Roteadores",
|
||||
"manage_routers_desc": "Configurar conexões RouterOS e ver status.",
|
||||
"source_code": "Código Fonte",
|
||||
"source_code_desc": "Ver o repositório do projeto e contribuir.",
|
||||
"quick_access": "Acesso Rápido",
|
||||
"session_name": "Nome da Sessão",
|
||||
"hotspot_name": "Nome do Hotspot",
|
||||
"ip_address": "Endereço IP"
|
||||
},
|
||||
"dashboard": {
|
||||
"system_info": "Info do Sistema",
|
||||
"model": "Modelo",
|
||||
"board_name": "Nome da Placa",
|
||||
"router_os": "RouterOS",
|
||||
"architecture": "Arquitetura",
|
||||
"uptime": "Tempo de Atividade",
|
||||
"resources": "Recursos",
|
||||
"cpu_load": "Carga CPU",
|
||||
"memory": "Memória",
|
||||
"free": "Livre",
|
||||
"hdd": "HDD",
|
||||
"income_today": "Renda Hoje",
|
||||
"traffic_monitor": "Monitor de Tráfego",
|
||||
"rx_download": "Rx (Download)",
|
||||
"tx_upload": "Tx (Upload)"
|
||||
},
|
||||
"settings": {
|
||||
"title": "Configurações",
|
||||
"subtitle": "Gerencie suas preferências e configurações do aplicativo.",
|
||||
"system": "Geral",
|
||||
"system_desc": "Configurações do sistema e segurança.",
|
||||
"admin_username": "Usuário Administrador",
|
||||
"admin_username_desc": "Por razões de segurança, o nome de usuário administrador não pode ser alterado.",
|
||||
"change_password": "Alterar Senha",
|
||||
"new_password_placeholder": "Digite a nova senha",
|
||||
"update_password": "Atualizar Senha",
|
||||
"quick_print_mode": "Modo Impressão Rápida",
|
||||
"quick_print_mode_desc": "Ativar impressão direta para geração de vouchers.",
|
||||
"save_global": "Salvar Configurações Globais",
|
||||
"data_management": "Gerenciamento de Dados",
|
||||
"data_management_desc": "Faça backup ou restaure os dados do seu aplicativo.",
|
||||
"backup_data": "Backup de Dados",
|
||||
"backup_data_desc": "Baixe um arquivo de configuração (.mivo) contendo seu banco de dados e configurações.",
|
||||
"download_backup": "Baixar Backup",
|
||||
"restore_data": "Restaurar Dados",
|
||||
"restore_data_desc": "Envie um arquivo de backup (.mivo). Substitui ou adiciona aos dados existentes.",
|
||||
"restore": "Restaurar",
|
||||
"warning_restore": "AVISO: Isso restaurará as configurações do arquivo e pode substituir dados existentes. Continuar?",
|
||||
"routers_title": "Roteadores",
|
||||
"routers_subtitle": "Gerencie suas conexões MikroTik RouterOS.",
|
||||
"add_router": "Adicionar Roteador",
|
||||
"no_routers": "Nenhum Roteador Encontrado",
|
||||
"connect_first": "Conecte seu primeiro roteador MikroTik para começar a gerenciar hotspots e vouchers.",
|
||||
"delete_router_title": "Excluir Sessão?",
|
||||
"delete_router_confirm": "Tem certeza que deseja excluir <strong>{name}</strong>? Esta ação não pode ser desfeita.",
|
||||
"connect": "Conectar",
|
||||
"logos_title": "Logos",
|
||||
"logos_subtitle": "Envie e gerencie logotipos para seus hotspots e vouchers.",
|
||||
"upload_new_logo": "Enviar Novo Logo",
|
||||
"drag_drop": "Arraste e solte ou clique para selecionar arquivo",
|
||||
"supports_formats": "Suporta PNG, JPG, SVG, GIF",
|
||||
"no_logos": "Nenhum logotipo enviado ainda.",
|
||||
"id_copied": "ID Copiado",
|
||||
"logo_id_copied_desc": "ID do Logo <strong>{id}</strong> copiado para a área de transferência.",
|
||||
"delete_logo_title": "Excluir Logo?",
|
||||
"delete_logo_confirm": "Tem certeza que deseja excluir o logo <strong>{id}</strong>?",
|
||||
"templates_title": "Modelos de Voucher",
|
||||
"templates_subtitle": "Gerencie e personalize seus designs de impressão de vouchers.",
|
||||
"new_template": "Novo Modelo",
|
||||
"edit_template": "Editar Modelo",
|
||||
"default_template": "Modelo Padrão",
|
||||
"system_label": "Sistema",
|
||||
"custom_label": "Personalizado",
|
||||
"built_in": "Integrado",
|
||||
"default_template_desc": "Modelo padrão compatível com impressoras térmicas.",
|
||||
"delete_template_title": "Excluir Modelo?",
|
||||
"delete_template_confirm": "Tem certeza que deseja excluir <strong>{name}</strong>?",
|
||||
"template_name": "Nome do Modelo",
|
||||
"html_source": "Código HTML",
|
||||
"docs": "Docs",
|
||||
"live_preview": "Pré-visualização",
|
||||
"template_variables": "Variáveis do Modelo",
|
||||
"variables_desc": "Use estas variáveis no seu código HTML. Elas serão substituídas por dados reais do usuário durante a impressão.",
|
||||
"qr_code": "Código QR",
|
||||
"qr_desc": "Gera um Código QR contendo a URL de login com usuário e senha.",
|
||||
"custom_attributes": "Atributos Personalizados",
|
||||
"examples": "Exemplos",
|
||||
"api_cors_title": "API CORS",
|
||||
"api_cors_subtitle": "Gerencie o Compartilhamento de Recursos de Origem Cruzada para acesso API.",
|
||||
"add_rule": "Adicionar Regra CORS",
|
||||
"edit_rule": "Editar Regra CORS",
|
||||
"origin": "Origem",
|
||||
"methods": "Métodos Permitidos",
|
||||
"headers": "Cabeçalhos Permitidos",
|
||||
"max_age": "Idade Máxima (segundos)",
|
||||
"cpu_warning": "Valores baixos (< 5s) podem aumentar o uso da CPU em roteadores antigos.",
|
||||
"back": "Voltar para Configurações",
|
||||
"editor_shortcuts": "Atalhos do Editor & Emmet",
|
||||
"emmet_desc": "Use abreviações Emmet para codificar mais rápido. Procure o sublinhado pontilhado, depois pressione Tab.",
|
||||
"tip_emmet_html": "<strong>Modelo HTML</strong>: Digite <code>!</code> depois <code>Tab</code>.",
|
||||
"tip_emmet_tag": "<strong>Auto-Tag</strong>: Digite <code>.container</code> depois <code>Tab</code> para <code><div class=\"container\"></code>.",
|
||||
"tip_color_picker": "<strong>Seletor de Cores</strong>: Clique na caixa de cor ao lado dos códigos hex (ex: #ff0000) para abrir o seletor.",
|
||||
"tip_syntax_error": "<strong>Erro de Sintaxe</strong>: Os rabiscos vermelhos (e pontos na margem) mostram erros de estrutura como tags não fechadas.",
|
||||
"plugins_title": "Plugins",
|
||||
"plugins": "Plugins",
|
||||
"plugins_desc": "Gerencie e estenda a funcionalidade com plugins.",
|
||||
"upload_plugin": "Enviar Plugin",
|
||||
"upload_plugin_desc": "Selecione um arquivo .zip de plugin para instalar.",
|
||||
"no_plugins": "Nenhum Plugin Instalado",
|
||||
"no_plugins_desc": "Envie um arquivo .zip para começar.",
|
||||
"plugin_installed": "Plugin Instalado",
|
||||
"plugin_installed_desc": "O plugin \"{name}\" foi instalado com sucesso.",
|
||||
"delete_plugin": "Excluir Plugin?",
|
||||
"delete_plugin_confirm": "Tem certeza que deseja excluir o plugin <strong>{name}</strong>? Esta ação não pode ser desfeita.",
|
||||
"install_failed": "Instalação Falhou"
|
||||
},
|
||||
"routers": {
|
||||
"edit_router_title": "Editar Roteador",
|
||||
"add_router_title": "Adicionar Roteador",
|
||||
"connect_desc": "Conecte o Mivo ao seu dispositivo RouterOS.",
|
||||
"session_settings": "Configurações da Sessão",
|
||||
"unique_id": "ID Único. Prévia:",
|
||||
"show_quick_access": "Mostrar no Acesso Rápido (Início)",
|
||||
"connection_details": "Detalhes da Conexão",
|
||||
"password_hint": "Deixe vazio para manter a senha existente.",
|
||||
"hotspot_info": "Informações do Hotspot",
|
||||
"dns_name": "Nome DNS",
|
||||
"traffic_interface": "Interface de Tráfego",
|
||||
"check_btn": "Verificar",
|
||||
"currency": "Moeda",
|
||||
"auto_reload": "Recarga Auto (Seg)",
|
||||
"save_connect": "Salvar & Conectar"
|
||||
},
|
||||
"login": {
|
||||
"welcome": "Bem-vindo, por favor faça login para continuar.",
|
||||
"username": "Usuário",
|
||||
"password": "Senha",
|
||||
"sign_in": "Entrar"
|
||||
},
|
||||
"quick_print": {
|
||||
"title": "Impressão Rápida",
|
||||
"subtitle": "Geração e impressão instantânea de vouchers.",
|
||||
"manage": "Gerenciar Pacotes",
|
||||
"manage_title": "Gerenciar Pacotes",
|
||||
"manage_subtitle": "Configure seus pacotes de vouchers de Impressão Rápida para:",
|
||||
"no_packages": "Nenhum Pacote Encontrado",
|
||||
"no_packages_found": "Nenhum pacote encontrado.",
|
||||
"create_first": "Crie um pacote de Impressão Rápida para começar.",
|
||||
"create_package": "Criar Pacote",
|
||||
"add_package": "Adicionar Pacote",
|
||||
"edit_package": "Editar Pacote",
|
||||
"save_package": "Salvar Pacote",
|
||||
"delete_package": "Excluir Pacote",
|
||||
"print_voucher": "Imprimir Voucher",
|
||||
"name": "Nome",
|
||||
"package_name": "Nome do Pacote",
|
||||
"profile": "Perfil",
|
||||
"select_profile": "Selecionar Perfil",
|
||||
"prefix": "Prefixo",
|
||||
"server": "Servidor",
|
||||
"price": "Preço",
|
||||
"selling_price": "Preço de Venda",
|
||||
"time_limit": "Limite de Tempo",
|
||||
"data_limit": "Limite de Dados",
|
||||
"card_color": "Cor do Cartão",
|
||||
"char_length": "Comprimento de Caracteres",
|
||||
"vouchers_to_generate": "Vouchers a Gerar",
|
||||
"comment": "Comentário"
|
||||
},
|
||||
"sidebar": {
|
||||
"dashboard": "Painel",
|
||||
"quick_print": "Impressão Rápida",
|
||||
"hotspot": "Hotspot",
|
||||
"status": "Status",
|
||||
"security": "Segurança",
|
||||
"reports": "Relatórios",
|
||||
"network": "Rede",
|
||||
"system": "Sistema",
|
||||
"settings": "Configurações",
|
||||
"templates": "Modelos",
|
||||
"disconnect": "Desconectar",
|
||||
"logout": "Sair do Mivo"
|
||||
},
|
||||
"hotspot_active": {
|
||||
"title": "Usuários Ativos",
|
||||
"subtitle": "Monitorar sessões de hotspot atualmente ativas",
|
||||
"filter_server": "Todos os Servidores",
|
||||
"server": "Servidor",
|
||||
"user": "Usuário",
|
||||
"address": "Endereço / MAC",
|
||||
"uptime": "Tempo Ativo / Restante",
|
||||
"bytes_in_out": "Bytes Ent/Sai",
|
||||
"time_left": "Resta",
|
||||
"remove": "Desconectar Usuário?"
|
||||
},
|
||||
"hotspot_hosts": {
|
||||
"title": "Hosts Hotspot",
|
||||
"subtitle": "Dispositivos conectados à rede hotspot para:",
|
||||
"mac": "Endereço MAC",
|
||||
"address": "Endereço",
|
||||
"to_address": "Para Endereço",
|
||||
"server": "Servidor",
|
||||
"comment": "Comentário"
|
||||
},
|
||||
"hotspot_menu": {
|
||||
"users": "Usuários",
|
||||
"profiles": "Perfis de Usuário",
|
||||
"generate": "Gerar",
|
||||
"cookies": "Cookies",
|
||||
"active": "Ativos",
|
||||
"hosts": "Hosts",
|
||||
"bindings": "IP Binding",
|
||||
"walled_garden": "Walled Garden"
|
||||
},
|
||||
"reports_menu": {
|
||||
"resume": "Resumo",
|
||||
"selling": "Relatório de Vendas",
|
||||
"user_log": "Log de Usuário"
|
||||
},
|
||||
"network_menu": {
|
||||
"dhcp": "DHCP Lease"
|
||||
},
|
||||
"system_menu": {
|
||||
"scheduler": "Agendador",
|
||||
"reboot": "Reiniciar",
|
||||
"shutdown": "Desligar"
|
||||
},
|
||||
"dhcp": {
|
||||
"title": "DHCP Lease",
|
||||
"subtitle": "DHCP leases ativos para:",
|
||||
"all_servers": "Todos os Servidores",
|
||||
"address": "Endereço",
|
||||
"mac": "Endereço MAC",
|
||||
"server": "Servidor",
|
||||
"status": "Status",
|
||||
"host": "Nome do Host"
|
||||
},
|
||||
"cookies": {
|
||||
"title": "Usuários Hotspot",
|
||||
"subtitle": "Gerencie usuários e vouchers",
|
||||
"name": "Nome",
|
||||
"mac": "Endereço MAC",
|
||||
"ip": "Endereço IP",
|
||||
"expires": "Expira Em",
|
||||
"remove_cookie": "Remover Cookie?",
|
||||
"remove_confirm": "Tem certeza que deseja remover o cookie para {user}?"
|
||||
},
|
||||
"reports": {
|
||||
"selling_title": "Relatório de Vendas",
|
||||
"selling_subtitle": "Resumo de vendas e detalhes para:",
|
||||
"user_log_title": "Log de Usuário",
|
||||
"user_log_subtitle": "Histórico de login e logout para:",
|
||||
"resume_title": "Relatório de Resumo",
|
||||
"resume_subtitle": "Visão geral da receita agregada.",
|
||||
"total_income": "Renda Total",
|
||||
"total_vouchers": "Total de Vouchers Vendidos",
|
||||
"date_batch": "Data / Lote (Comentário)",
|
||||
"qty": "Qtd",
|
||||
"total": "Total",
|
||||
"no_data": "Nenhum dado de venda encontrado.",
|
||||
"time": "Tempo",
|
||||
"topics": "Tópicos",
|
||||
"message": "Mensagem",
|
||||
"daily": "Diário",
|
||||
"monthly": "Mensal",
|
||||
"yearly": "Anual",
|
||||
"date": "Data",
|
||||
"month": "Mês",
|
||||
"year": "Ano",
|
||||
"refresh": "Atualizar",
|
||||
"print_report": "Imprimir Relatório"
|
||||
},
|
||||
"hotspot_profiles": {
|
||||
"title": "Perfis de Usuário",
|
||||
"subtitle": "Gerencie limites de velocidade e preços",
|
||||
"add_profile": "Adicionar Perfil",
|
||||
"edit_profile": "Editar Perfil",
|
||||
"all_modes": "Todos os Modos Expirados",
|
||||
"name": "Nome",
|
||||
"shared_users": "Usuários Compartilhados",
|
||||
"rate_limit": "Limite de Velocidade",
|
||||
"parent_queue": "Fila Pai",
|
||||
"expired_mode": "Modo Expirado",
|
||||
"validity": "Validade",
|
||||
"price": "Preço",
|
||||
"selling_price": "Preço de Venda",
|
||||
"lock_user": "Bloquear Usuário",
|
||||
"form": {
|
||||
"add_title": "Adicionar Perfil",
|
||||
"edit_title": "Editar Perfil",
|
||||
"add_subtitle": "Criar um novo perfil de usuário hotspot para: {name}",
|
||||
"edit_subtitle": "Editar perfil de usuário hotspot: {name}",
|
||||
"settings": "Configurações de Perfil",
|
||||
"general": "Configurações Gerais",
|
||||
"limits_queues": "Limites e Filas",
|
||||
"pricing_validity": "Preços e Validade",
|
||||
"address_pool": "Pool de Endereços",
|
||||
"rate_limit_help": "Rx/Tx (Download/Upload). Exemplo: 512k/1M",
|
||||
"expired_mode_help": "Ação quando a validade expira.",
|
||||
"validity_help": "Dias / Horas / Minutos",
|
||||
"lock_user_help": "Bloquear usuário a um endereço MAC específico.",
|
||||
"save": "Salvar Perfil",
|
||||
"name_placeholder": "ex: Pacote-1Hora",
|
||||
"quick_tips": "Dicas Rápidas",
|
||||
"tip_rate_limit": "<strong>Limite de Velocidade</strong>: Rx/Tx (Download/Upload). Exemplo: <code>512k/1M</code>",
|
||||
"tip_expired_mode": "<strong>Modo Expirado</strong>: Selecione 'Remover' ou 'Aviso' para habilitar Validade.",
|
||||
"tip_parent_queue": "<strong>Fila Pai</strong>: Atribui usuários a uma fila pai específica para gerenciamento de largura de banda."
|
||||
}
|
||||
},
|
||||
"hotspot_users": {
|
||||
"add_user": "Adicionar Usuário",
|
||||
"edit_user": "Editar Usuário",
|
||||
"title": "Usuários Hotspot",
|
||||
"subtitle": "Gerencie usuários e vouchers",
|
||||
"name": "Nome",
|
||||
"profile": "Perfil",
|
||||
"uptime_limit": "Tempo Ativo / Limite",
|
||||
"bytes_in_out": "Bytes Ent/Sai",
|
||||
"comment": "Comentário",
|
||||
"no_users_selected": "Nenhum usuário selecionado.",
|
||||
"form": {
|
||||
"add_title": "Adicionar Usuário",
|
||||
"edit_title": "Editar Usuário",
|
||||
"subtitle": "Conta de usuário hotspot",
|
||||
"edit_subtitle": "Atualizar detalhes do usuário para: {name}",
|
||||
"username": "Usuário",
|
||||
"password": "Senha",
|
||||
"profile": "Perfil",
|
||||
"server": "Servidor",
|
||||
"time_limit": "Limite de Tempo",
|
||||
"data_limit": "Limite de Dados",
|
||||
"comment": "Comentário",
|
||||
"save": "Salvar Usuário",
|
||||
"username_help": "Nome de usuário único para login.",
|
||||
"password_help": "Senha forte.",
|
||||
"profile_help": "O perfil determina o limite de velocidade padrão e a política.",
|
||||
"time_limit_help": "Tempo total permitido (Dias, Horas, Minutos).",
|
||||
"data_limit_help": "Limite de uso de dados (0 para ilimitado).",
|
||||
"comment_help": "Notas adicionais ou info de contato.",
|
||||
"username_placeholder": "ex: voucher123",
|
||||
"password_placeholder": "ex: 123456",
|
||||
"comment_placeholder": "Nota opcional para este usuário",
|
||||
"quick_tips": "Dicas Rápidas",
|
||||
"tip_profiles": "<strong>Perfis</strong> definem limites de velocidade padrão, tempo de sessão e políticas.",
|
||||
"tip_time_limit": "<strong>Limite de Tempo</strong> é o tempo total acumulado permitido para este usuário.",
|
||||
"tip_data_limit": "<strong>Limite de Dados</strong> substituirá a configuração do perfil. Defina como 0 para usar o do perfil."
|
||||
}
|
||||
},
|
||||
"hotspot_generate": {
|
||||
"title": "Gerar Vouchers",
|
||||
"form": {
|
||||
"qty": "Quantidade",
|
||||
"server": "Servidor",
|
||||
"user_mode": "Modo de Usuário",
|
||||
"user_length": "Comprimento do Usuário",
|
||||
"prefix": "Prefixo",
|
||||
"characters": "Caracteres",
|
||||
"profile": "Perfil",
|
||||
"time_limit": "Limite de Tempo",
|
||||
"data_limit": "Limite de Dados",
|
||||
"comment": "Comentário",
|
||||
"generate": "Gerar Vouchers",
|
||||
"subtitle": "Criar múltiplos vouchers hotspot em lote para: {name}",
|
||||
"batch_settings": "Configurações de Geração em Lote",
|
||||
"core_config": "Configuração Principal",
|
||||
"qty_help": "Quantidade de vouchers a gerar.",
|
||||
"server_help": "Instância Hotspot alvo.",
|
||||
"user_mode_help": "Formato das credenciais.",
|
||||
"comment_help": "Nota para este lote.",
|
||||
"user_format": "Formato de Usuário",
|
||||
"name_length_help": "Comprimento do usuário/senha.",
|
||||
"prefix_placeholder": "ex: VIP-",
|
||||
"prefix_help": "Prefixo para usuários gerados.",
|
||||
"characters_help": "Tipos de caracteres a incluir.",
|
||||
"limits_profile": "Limites e Perfil",
|
||||
"profile_help": "Aplicar limites de velocidade do perfil.",
|
||||
"time_limit_help": "Tempo máx (ex: 1h, 30m).",
|
||||
"data_limit_help": "Transferência máx (MB).",
|
||||
"quick_tips": "Dicas Rápidas",
|
||||
"tip_user_mode": "<strong>Modo de Usuário</strong>: UP (separado), VC (mesmo).",
|
||||
"tip_format_examples": "<strong>Exemplos de Formato</strong>: abcd (minúsculo), 1234 (num), Mix (maiúsc/minúsc/num).",
|
||||
"tip_limits": "<strong>Limites</strong>: Tempo (ex: 1h, 30m), Dados (ex: 100MB). Deixe vazio para usar o padrão do perfil."
|
||||
}
|
||||
},
|
||||
"security": {
|
||||
"bindings": {
|
||||
"title": "IP Binding",
|
||||
"subtitle": "Gerencie IP binding (bypass/bloqueado) para: {name}",
|
||||
"all_types": "Todos os Tipos",
|
||||
"regular": "Regular",
|
||||
"bypassed": "Liberado",
|
||||
"blocked": "Bloqueado",
|
||||
"table": {
|
||||
"mac": "Endereço MAC",
|
||||
"address": "Endereço",
|
||||
"to_address": "Para Endereço",
|
||||
"type": "Tipo",
|
||||
"comment": "Comentário"
|
||||
},
|
||||
"form": {
|
||||
"add_title": "Adicionar Binding",
|
||||
"mac_address": "Endereço MAC",
|
||||
"address": "Endereço",
|
||||
"to_address": "Para Endereço",
|
||||
"type": "Tipo",
|
||||
"server": "Servidor",
|
||||
"comment": "Comentário",
|
||||
"mac_help": "Endereço MAC do dispositivo.",
|
||||
"address_help": "Endereço IP (opcional).",
|
||||
"to_address_help": "Traduzir para este IP (opcional).",
|
||||
"server_help": "Aplicar a servidor Hotspot específico.",
|
||||
"comment_help": "Nota para este binding.",
|
||||
"save": "Salvar & Vincular",
|
||||
"tip_bypassed": "<strong>Liberado</strong>: Acesso sem login.",
|
||||
"tip_blocked": "<strong>Bloqueado</strong>: Negar acesso completamente.",
|
||||
"tip_regular": "<strong>Regular</strong>: Cliente hotspot normal."
|
||||
}
|
||||
},
|
||||
"walled_garden": {
|
||||
"title": "Walled Garden",
|
||||
"subtitle": "Gerencie destinos permitidos (bypass sem login) para: {name}",
|
||||
"all_actions": "Todas as Ações",
|
||||
"allow": "Permitir",
|
||||
"deny": "Negar",
|
||||
"table": {
|
||||
"host_ip": "Host / IP Dest",
|
||||
"proto_port": "Protocolo / Porta",
|
||||
"action": "Ação",
|
||||
"comment": "Comentário"
|
||||
},
|
||||
"form": {
|
||||
"add_title": "Adicionar Entrada",
|
||||
"action": "Ação",
|
||||
"dst_host": "Host Dest (Domínio)",
|
||||
"dst_address": "Endereço Dest (IP)",
|
||||
"protocol": "Protocolo",
|
||||
"dst_port": "Porta Dest",
|
||||
"server": "Servidor",
|
||||
"comment": "Comentário",
|
||||
"host_help": "Domínio a permitir (curinga suportado).",
|
||||
"addr_help": "Endereço IP de destino.",
|
||||
"action_help": "Permitir (bypass) ou Negar acesso.",
|
||||
"server_help": "Aplicar a servidor Hotspot específico.",
|
||||
"comment_help": "Nota para esta regra.",
|
||||
"save": "Salvar Entrada",
|
||||
"tip_host": "<strong>Host Dest</strong>: Nome de domínio (ex: <code>*.google.com</code>).",
|
||||
"tip_ip": "<strong>IP Dest</strong>: Endereço IP específico.",
|
||||
"tip_action": "<strong>Ação</strong>: Permitir para pular autenticação."
|
||||
}
|
||||
}
|
||||
},
|
||||
"system_tools": {
|
||||
"scheduler_subtitle": "Gerencie tarefas automatizadas do RouterOS para:",
|
||||
"add_task": "Adicionar Tarefa",
|
||||
"add_title": "Adicionar Tarefa",
|
||||
"edit_title": "Editar Tarefa",
|
||||
"save_task": "Salvar Tarefa",
|
||||
"update_task": "Atualizar Tarefa",
|
||||
"delete_task": "Excluir Tarefa",
|
||||
"table_name": "Nome",
|
||||
"name": "Nome",
|
||||
"interval": "Intervalo",
|
||||
"next_run": "Próxima Execução",
|
||||
"status": "Status",
|
||||
"enabled": "Ativado",
|
||||
"disabled": "Desativado",
|
||||
"start_date": "Data Início",
|
||||
"start_time": "Hora Início",
|
||||
"on_event": "No Evento (Script)",
|
||||
"comment": "Comentário"
|
||||
},
|
||||
"toasts": {
|
||||
"profile_created": "Perfil Criado",
|
||||
"profile_created_desc": "O perfil de usuário \"{name}\" foi criado com sucesso.",
|
||||
"profile_updated": "Perfil Atualizado",
|
||||
"profile_updated_desc": "Alterações no perfil \"{name}\" foram salvas.",
|
||||
"profile_deleted": "Perfil Excluído",
|
||||
"profile_deleted_desc": "O perfil de usuário foi excluído.",
|
||||
"user_added": "Usuário Adicionado",
|
||||
"user_added_desc": "Usuário hotspot \"{name}\" foi criado.",
|
||||
"user_deleted": "Usuário(s) Excluído(s)",
|
||||
"user_deleted_desc": "Os usuários selecionados foram excluídos.",
|
||||
"user_updated": "Usuário Atualizado",
|
||||
"user_updated_desc": "Alterações no usuário \"{name}\" foram salvas.",
|
||||
"session_removed": "Sessão Removida",
|
||||
"session_removed_desc": "A sessão hotspot ativa foi encerrada.",
|
||||
"binding_added": "Binding Adicionado",
|
||||
"binding_added_desc": "IP Binding criado com sucesso.",
|
||||
"binding_removed": "Binding Removido",
|
||||
"binding_removed_desc": "IP Binding removido com sucesso.",
|
||||
"rule_added": "Regra Adicionada",
|
||||
"rule_added_desc": "Regra Walled Garden adicionada com sucesso.",
|
||||
"rule_removed": "Regra Removida",
|
||||
"rule_removed_desc": "Regra Walled Garden removida com sucesso.",
|
||||
"cookie_removed": "Cookie Removido",
|
||||
"cookie_removed_desc": "Cookie hotspot removido com sucesso.",
|
||||
"package_saved": "Pacote Salvo",
|
||||
"package_saved_desc": "Pacote de impressão rápida atualizado com sucesso.",
|
||||
"package_deleted": "Pacote Excluído",
|
||||
"package_deleted_desc": "Pacote de impressão rápida excluído com sucesso.",
|
||||
"vouchers_generated": "Vouchers Gerados",
|
||||
"vouchers_generated_desc": "{qty} usuários criados com sucesso.",
|
||||
"schedule_added": "Agendamento Adicionado",
|
||||
"schedule_added_desc": "Tarefa agendada com sucesso.",
|
||||
"schedule_updated": "Agendamento Atualizado",
|
||||
"schedule_updated_desc": "Alterações na tarefa salvas com sucesso.",
|
||||
"schedule_deleted": "Agendamento Excluído",
|
||||
"schedule_deleted_desc": "Tarefa agendada excluída com sucesso.",
|
||||
"router_added": "Roteador Adicionado",
|
||||
"router_added_desc": "Sessão {name} criada com sucesso.",
|
||||
"router_updated": "Roteador Atualizado",
|
||||
"router_updated_desc": "Configurações para {name} salvas com sucesso.",
|
||||
"router_deleted": "Roteador Excluído",
|
||||
"router_deleted_desc": "Sessão excluída com sucesso.",
|
||||
"password_updated": "Senha Atualizada",
|
||||
"password_updated_desc": "Senha do administrador alterada com sucesso.",
|
||||
"settings_saved": "Configurações Salvas",
|
||||
"settings_saved_desc": "Preferências globais atualizadas com sucesso.",
|
||||
"restore_success": "Restauração com Sucesso",
|
||||
"restore_success_desc": "Sessões e configurações restauradas do backup.",
|
||||
"restore_failed": "Restauração Falhou",
|
||||
"no_file_selected": "Nenhum arquivo de backup selecionado.",
|
||||
"invalid_file_type": "Tipo de arquivo inválido. Por favor envie um arquivo .mivo ou .json.",
|
||||
"invalid_file_type_mivo": "Tipo de arquivo inválido. Por favor envie um arquivo .mivo.",
|
||||
"file_empty": "O arquivo enviado está vazio.",
|
||||
"file_corrupted": "O arquivo está corrompido ou não é um backup Mivo válido.",
|
||||
"logo_uploaded": "Logo Enviado",
|
||||
"logo_uploaded_desc": "Novo logotipo adicionado com sucesso.",
|
||||
"logo_deleted": "Logo Excluído",
|
||||
"logo_deleted_desc": "Logotipo excluído com sucesso.",
|
||||
"template_created": "Modelo Criado",
|
||||
"template_created_desc": "Modelo de voucher \"{name}\" adicionado com sucesso.",
|
||||
"template_updated": "Modelo Atualizado",
|
||||
"template_updated_desc": "Alterações em \"{name}\" salvas com sucesso.",
|
||||
"template_deleted": "Modelo Excluído",
|
||||
"template_deleted_desc": "Modelo excluído com sucesso.",
|
||||
"test_alert": "Teste Alerta Mivo",
|
||||
"test_alert_desc": "Se você vê isso, o novo sistema de alertas funciona perfeitamente! 🚀",
|
||||
"cors_rule_added": "Regra CORS Adicionada",
|
||||
"cors_rule_added_desc": "Regra CORS para {origin} criada com sucesso.",
|
||||
"cors_rule_updated": "Regra CORS Atualizada",
|
||||
"cors_rule_updated_desc": "Alterações na regra CORS para {origin} salvas com sucesso.",
|
||||
"cors_rule_deleted": "Regra CORS Excluída",
|
||||
"cors_rule_deleted_desc": "Regra CORS excluída com sucesso.",
|
||||
"plugin_deleted": "Plugin Excluído",
|
||||
"plugin_deleted_desc": "Plugin excluído com sucesso.",
|
||||
"upload_failed": "Falha no Envio",
|
||||
"install_failed": "Instalação Falhou",
|
||||
"invalid_plugin_desc": "Estrutura de plugin inválida: plugin.php não encontrado.",
|
||||
"zip_open_failed_desc": "Falha ao abrir o arquivo zip enviado."
|
||||
},
|
||||
"status": {
|
||||
"check_title": "Verificar Status do Voucher",
|
||||
"check_desc": "Monitore seu uso de dados e validade do voucher em tempo real sem precisar fazer login novamente.",
|
||||
"voucher_code_label": "Código do Voucher",
|
||||
"voucher_code_placeholder": "Ex: QWASZX",
|
||||
"code_placeholder": "Ex: QWASZX",
|
||||
"check_now": "Verificar Agora",
|
||||
"details_title": "Detalhes do Voucher",
|
||||
"code": "Código do Voucher",
|
||||
"data_remaining": "Dados Restantes",
|
||||
"used": "Usado",
|
||||
"package": "Pacote",
|
||||
"validity": "Validade",
|
||||
"uptime": "Tempo Ativo",
|
||||
"expires": "Expira",
|
||||
"not_found_title": "Voucher Não Encontrado",
|
||||
"not_found_desc": "O código de voucher que você digitou não existe.",
|
||||
"try_again": "Tentar Novamente"
|
||||
},
|
||||
"errors": {
|
||||
"404_title": "Página Não Encontrada",
|
||||
"404_desc": "A página que você procura pode ter sido removida, renomeada ou está temporariamente indisponível.",
|
||||
"403_title": "Acesso Negado",
|
||||
"403_desc": "Você não tem permissão para acessar este recurso.",
|
||||
"500_title": "Erro no Servidor",
|
||||
"500_desc": "Algo deu errado do nosso lado. Por favor tente novamente mais tarde.",
|
||||
"503_title": "Serviço Indisponível",
|
||||
"503_desc": "O servidor não consegue lidar com a solicitação no momento devido a manutenção ou sobrecarga.",
|
||||
"router_not_found_title": "Roteador Não Encontrado",
|
||||
"router_not_found_desc": "A sessão do roteador que você está tentando acessar não existe ou foi excluída.",
|
||||
"return_home": "Voltar ao Início",
|
||||
"go_back": "Voltar"
|
||||
}
|
||||
}
|
||||
38
plugin.php
Normal file
38
plugin.php
Normal file
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Plugin Name: Portuguese (Brazil) Language Pack
|
||||
* Description: Adds Portuguese (Brazil) language support to Mivo.
|
||||
* Version: 1.0.0
|
||||
* Author: DyzulkDev
|
||||
*
|
||||
* Category: Language Pack
|
||||
* Scope: Global
|
||||
* Tags: language, portuguese, br, localization
|
||||
* Core Version: >= 1.2.0
|
||||
*/
|
||||
|
||||
use App\Core\Hooks;
|
||||
|
||||
Hooks::addFilter('get_available_languages', function($languages) {
|
||||
$languages[] = [
|
||||
'code' => 'br',
|
||||
'name' => 'Português (Brasil)',
|
||||
'flag' => 'br', // Correct ISO code
|
||||
'path' => '/lang/plugin/plugin-lang-br/br.json'
|
||||
];
|
||||
return $languages;
|
||||
});
|
||||
|
||||
// Register Route for Language File
|
||||
Hooks::addAction('router_init', function(\App\Core\Router $router) {
|
||||
$router->get('/lang/plugin/plugin-lang-br/br.json', function() {
|
||||
$path = __DIR__ . '/br.json';
|
||||
if (file_exists($path)) {
|
||||
header('Content-Type: application/json');
|
||||
readfile($path);
|
||||
exit;
|
||||
}
|
||||
http_response_code(404);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user