Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion SimpleLoader/Languages/LanguageManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ class LanguageManager: ObservableObject {
}

func availableLanguages() -> [String] {
return ["en", "zh-Hans", "zh-Hant", "es", "it"] // 支持的语言列表
return ["en", "zh-Hans", "zh-Hant", "es", "it", "pt-BR"] // 支持的语言列表
}

func displayName(for language: String) -> String {
Expand All @@ -43,6 +43,7 @@ class LanguageManager: ObservableObject {
case "zh-Hant": return "繁体中文"
case "es": return "Español"
case "it": return "Italian"
case "pt-BR": return "Brazilian"
default: return language
}
}
Expand Down
140 changes: 140 additions & 0 deletions SimpleLoader/Languages/pt-BR.lproj/Localizable.strings
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
//
// Localizable_pt_br.strings
// SimpleLoader
//
// Created by laobamac on 2025/7/28.
//

/*
Localizable.strings (Brazilian Potuguese)
SimpleLoader
*/

"app_title" = "SimpleLoader Instalador de Extensões do Sistema";
"app_subtitle" = "Mescla KDK automaticamente e instala Kext/Bundle em /System/Library/Extensions";
"installation_options" = "Opções de Instalação";
"show_advanced" = "Mostrar Opções Avançadas";
"hide_advanced" = "Ocultar Opções Avançadas";
"force_overwrite" = "Forçar sobrescrever arquivos existentes";
"backup_existing" = "Backup Kext/Framework existentes";
"advanced_options" = "Opções Avançadas";
"install_to_le" = "Instalar em /Library/Extensions";
"install_to_private" = "Premitir instalação do Framework em /System/Library/PrivateFrameworks";
"private_warning" = "Atenção:Instalar em PrivateFrameworks pode causar intermitencias no sistema";
"full_kdk_merge" = "Mesclar KDK completamente(incluindo Kernel)";
"kdk_warning" = "Não recomendado:Mesclar KDK completo pode ocupar espaço extra e trazem riscos de segurança";
"status" = "Status";
"ready" = "Pronto";
"installing_kext" = "Instalando Kexts em /System/Library/Extensions";
"merging_kdk" = "Mesclando Arquivos KDK";
"starting_merge_and_install" = "Iniciandi mesclagem KDK e instalação de Kext...";
"starting_install_kext" = "Iniciando a instalação do arquivo Kext...";
"select_kext" = "Selecione o arquivo Kext/Framework";
"drop_files" = "Arraste e solte aqui os arquivos Kext/Framework";
"select_files" = "Click aqui para selecionar arquivos...";
"operation_log" = "Logs da Operação";
"waiting" = "Aguardando operação...";
"open_kdk" = "Abrir Diretório KDK";
"merge_kdk" = "Mesclar Somente KDK";
"start_install" = "Iniciar Instalação";
"cancel" = "Cancelar";
"about" = "Sobre";
"rebuild_cache" = "Reconstruir Cache";
"create_snapshot" = "Criar Snapshot";
"restore_snapshot" = "Restaurar Snapshor";
"version" = "Versão";
"author" = "Autor";
"copyright" = "Copyright";
"contributors" = "Contribuidores";
"visit_github" = "Visitar o Repositório do GitHub";
"close" = "Fechar";
"rights_reserved" = "Todos os Direitos Reservados";
"contributor1" = "laobamac - 开发者";
"contributor2" = "perez987 - 提供英语翻译";
"contributor3" = "Anto65 - Partial Italian translation";
"contributor4" = "lshbluesky - Partial Korean translation";
"contributor5" = "JonasW8 - Brazilian Portuguese";
"auto_detect" = "Auto Detectar";
"language_settings" = "Configurações de Idioma";
"language" = "Idioma";
"change_language" = "Mudar Idioma";
"opLogs" = "Logs da Operação";
"installing" = "Instalando...";
"merging" = "Mesclando KDK...";
"found" = "Encontrado";
"warning_no_kdk" = "Atenção: KDK não encontrado,por favor instale o KDK primeiro";
"warning" = "Atenção";
"error" = "Erro";
"none_out" = "Sem Saída";
"unkn_error" = "Erro desconhecido";
"error_cant_read_kdk_dir" = "Erro: Não é possível ler o diretório KDK";
"error_not_selected_kdk" = "Erro: KDK não selecionado";
"error_merged_kdk_failed" = "Erro: Mesclar o KDK falhou";
"error_not_selected_bundle" = "Erro: Kext não selecionado";
"error_installed_failed" = "Erro: Instalação falhou";
"not_selected_kdk" = "KDK não selecionado";
"starting_merging" = "Iniciando mesclagem KDK";
"locating_root_vol" = "Localizando volume root...";
"starting_merging_to_root_vol" = "Iniciando a mesclagem do KDK no volume root";
"slow_step" = "Esta etapa é lenta, não force o desligat!";
"merged_completed_umounted" = "Mesclagem completa,volume root desmontado";
"merged_successfully" = "Mesclagem com sucesso";
"merged_failed" = "Mesclagem falhou";
"kdk_merged_successfully" = "KDK mesclado com sucesso";
"whether_select_kdk" = "Deve-se selecionar o KDK";
"info_not_selected_kdk" = "Informação: KDK não selecionado";
"options" = "Opções";
"force" = "Forçar Sobrescrever";
"backup" = "Cópia de Segurança";
"rebuild" = "Reconstruir Cache";
"install_completed" = "Instalação Completada";
"op_successfully" = "Operação satistatória";
"op_failed" = "Operação falhou";
"kext_has_been_installed" = "A extensão de kernel especificada foi bem instalada";
"op_canceled" = "Operação cancelada";
"open_kdk_dir" = "Abrir Diretório KDK";
"opened_kdk_dir" = "Diretório KDK aberto";
"kdk_dir_exists" = "O diretório KDK existe";
"warning_kdk_dir_doesnt_exist" = "O diretório KDK não existe";
"error_cant_gr_as" = "Não é possível criar objeto AppleScript";
"starting_rebuild" = "Iniciando a reconstrução do kernel cache...";
"rebuild_successfully" = "Cache do kernel reconstruído com sucesso";
"rebuild_failed" = "A reconstrução do kernel cache falhou";
"starting_snapshot" = "Iniciando a criação do snapshop do sistema...";
"snapshot_successfully" = "Snapshot do sistema criado com sucesso";
"snapshot_failed" = "A criação do snapshot do sistema falho";
"last_sealed_snapshot" = "Iniciando a restauração do ultimo snapshot...";
"revert_successfully" = "Snapshot restaurado com sucesso";
"revert_failed" = "Restauração do snapshot falhou";
"selected_kdk" = "KDK selecionado";
"only_merge_kdk" = "Somente Mesclar KDK";
"creat_snapshot" = "Criar Snapshot";
"restore_snapshot" = "Restaurar Snapshot";
"select_kdk" = "Selecionar KDK";
"select_installed_kdk" = "Selecionar KDK instalado";
"not_selected" = "Não selecionado";
"refresh" = "Atualizar";
"effective_kdk" = "KDK válido selecionado";
"choose_bundle" = "Selecionar arquivo Kext/Framework";
"drag_here" = "Arraste e solte os arquivos Kext/Framework aqui";
"or" = "Ou";
"click_to_choose" = "Click para selecionar aquivos...";
"operation_success_title" = "Operação com Sucesso";
"operation_success_restart_message" = "Operação completada com sucesso.Nós recomendamos reiniciar seu computador imediatamente para que as alterações tenham efeito.";
"restart_now" = "Reiniciar Agora";
"restart_later" = "Reiniciar Depois";
"operation_canceled_title" = "Operação Cancelada";
"operation_canceled_message" = "A operação atual foi abortada. Para garantir a integridade do sistema, recomendamos restaurar o snapshot e reconstruir o cache.";
"presets" = "Predefinições";
"select_preset_instruction" = "Selecione uma predefinição para configurar automaticamente as opções de instalação";
"requires_kdk" = "Requer KDK";
"rebuilding_cache" = "Reconstruindo kernel cache.";
"error_preset_files_dir_not_found" = "Erro: Diretório de arquivos predefinidos não encontrado";
"error_preset_requires_kdk" = "Erro: Esta predefinição requer que um KDK seja selecionado";
"warning_file_not_found" = "Atenção: Arquivo não encontrado";
"error_no_system_version_selected" = "Erro: Versão do sistema não selecionada";
"warning_version_not_found" = "Atenção: Versão do sistema não encontrada";
"confirm_install_preset" = "Confirmar Instalação do Preset";
"install" = "Instalar";
"creating_snapshot" = "Criando snapshot do sistema.";
"restore_snapshot" = "Restaurando snapshot.";
2 changes: 2 additions & 0 deletions SimpleLoader/Views/AboutView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ struct AboutView: View {
"contributor1".localized,
"contributor2".localized,
"contributor3".localized,
"contributor4".localized,
"contributor5".localized,
]

var body: some View {
Expand Down