es-es/strings.psd1

# Archivo de cadenas en español para DevDirManager
# Estas cadenas son utilizadas por Write-PSFMessage, Stop-PSFFunction y los bloques de script de validación de PSFramework
@{
    # Import-DevDirectoryList
    'ImportDevDirectoryList.Start'                                       = "Iniciando Import-DevDirectoryList desde la ruta: '{0}', Formato: '{1}'"
    'ImportDevDirectoryList.ConfigurationFormatExplicit'                 = "Usando formato explícitamente especificado: '{0}'"
    'ImportDevDirectoryList.ConfigurationFormatDefault'                  = "Usando formato predeterminado desde la configuración: '{0}'"
    'ImportDevDirectoryList.FileNotFound'                                = "El archivo de lista de repositorios especificado '{0}' no existe."
    'ImportDevDirectoryList.FileNotFoundWarning'                         = "Archivo de importación no encontrado: '{0}'"
    'ImportDevDirectoryList.Import'                                      = "Leyendo lista de repositorios desde: '{0}'"
    'ImportDevDirectoryList.InferFormatFailed'                           = "No se puede inferir el formato de importación de la ruta '{0}'. Especifique el parámetro Format."
    'ImportDevDirectoryList.FormatResolved'                              = "Formato de importación resuelto: '{0}'"
    'ImportDevDirectoryList.DeserializationStart'                        = "Iniciando deserialización desde formato {0}"
    'ImportDevDirectoryList.DeserializationCSV'                          = "Usando Import-Csv para deserialización CSV"
    'ImportDevDirectoryList.TypeConversionCSV'                           = "{0} objetos importados desde CSV, realizando conversiones de tipo"
    'ImportDevDirectoryList.StatusDateParsed'                            = "StatusDate analizado con éxito: '{0}'"
    'ImportDevDirectoryList.CompleteCSV'                                 = "{0} repositorios importados con éxito desde archivo CSV"
    'ImportDevDirectoryList.DeserializationJSON'                         = "Usando ConvertFrom-Json para deserialización JSON"
    'ImportDevDirectoryList.EmptyJSON'                                   = "El archivo JSON está vacío o solo contiene espacios en blanco"
    'ImportDevDirectoryList.TypeConversionJSON'                          = "{0} objetos importados desde JSON, agregando información de tipo"
    'ImportDevDirectoryList.CompleteJSON'                                = "{0} repositorios importados con éxito desde archivo JSON"
    'ImportDevDirectoryList.DeserializationXML'                          = "Usando Import-Clixml para deserialización XML"
    'ImportDevDirectoryList.TypeConversionXML'                           = "{0} objetos importados desde XML, agregando información de tipo"
    'ImportDevDirectoryList.CompleteXML'                                 = "{0} repositorios importados con éxito desde archivo XML"

    # Export-DevDirectoryList
    'ExportDevDirectoryList.Start'                                       = "Iniciando Export-DevDirectoryList a la ruta: '{0}', Formato: '{1}'"
    'ExportDevDirectoryList.ConfigurationFormatExplicit'                 = "Usando formato explícitamente especificado: '{0}'"
    'ExportDevDirectoryList.ConfigurationFormatDefault'                  = "Usando formato predeterminado desde la configuración: '{0}'"
    'ExportDevDirectoryList.CollectObject'                               = "Recopilando objeto de repositorio en lista de exportación"
    'ExportDevDirectoryList.ProcessExport'                               = "Procesando exportación de {0} objetos de repositorio"
    'ExportDevDirectoryList.NoRepositoryEntries'                         = "No se recibieron entradas de repositorio para exportar."
    'ExportDevDirectoryList.FormatResolved'                              = "Formato de exportación resuelto: '{0}'"
    'ExportDevDirectoryList.CreateOutputDirectory'                       = "Creando directorio de salida: '{0}'"
    'ExportDevDirectoryList.ActionExport'                                = "Exportar lista de repositorios como {0}"
    'ExportDevDirectoryList.ExportCanceled'                              = "Exportación cancelada por el usuario (WhatIf/Confirm)"
    'ExportDevDirectoryList.SerializationStart'                          = "Serializando {0} repositorios a '{1}' en formato {2}"
    'ExportDevDirectoryList.SerializationCSV'                            = "Usando Export-Csv para serialización CSV"
    'ExportDevDirectoryList.SerializationJSON'                           = "Usando ConvertTo-Json con profundidad 5 para serialización JSON"
    'ExportDevDirectoryList.SerializationXML'                            = "Usando Export-Clixml para serialización XML"
    'ExportDevDirectoryList.Complete'                                    = "{0} repositorios exportados con éxito a '{1}' en formato {2}"

    # Get-DevDirectory
    'GetDevDirectory.Start'                                              = "Iniciando Get-DevDirectory con RootPath: '{0}', SkipRemoteCheck: {1}"
    'GetDevDirectory.ConfigurationRemoteName'                            = "Usando nombre remoto '{0}' desde la configuración"
    'GetDevDirectory.ScanStart'                                          = "Escaneando árbol de directorios comenzando en: '{0}'"
    'GetDevDirectory.RepositoryFound'                                    = "Repositorio encontrado en: '{0}'"
    'GetDevDirectory.RemoteCheckStart'                                   = "Verificando accesibilidad del remoto: '{0}'"
    'GetDevDirectory.RemoteCheckResult'                                  = "Accesibilidad del remoto para '{0}': {1}"
    'GetDevDirectory.RemoteCheckNoUrl'                                   = "No se encontró URL remota para '{0}', marcando como inaccesible"
    'GetDevDirectory.DirectoryEnumerationFailed'                         = "Omitiendo directorio {0} debido a {1}."
    'GetDevDirectory.ScanComplete'                                       = "Escaneo de repositorios completado. {0} repositorios encontrados"

    # Restore-DevDirectory
    'RestoreDevDirectory.Start'                                          = "Iniciando Restore-DevDirectory al destino: '{0}', Force: {1}, SkipExisting: {2}, ShowGitOutput: {3}"
    'RestoreDevDirectory.ConfigurationGitExe'                            = "Usando ejecutable git: '{0}'"
    'RestoreDevDirectory.GitExeResolved'                                 = "Ejecutable git resuelto a: '{0}'"
    'RestoreDevDirectory.GitExeNotFound'                                 = "Ejecutable git no encontrado: '{0}'"
    'RestoreDevDirectory.GitExecutableMissing'                           = "No se puede localizar el ejecutable git '{0}'. Asegúrese de que Git esté instalado y disponible en PATH."
    'RestoreDevDirectory.DestinationNormalized'                          = "Ruta de destino normalizada: '{0}'"
    'RestoreDevDirectory.ProcessingRepositories'                         = "Procesando {0} repositorios para restauración"
    'RestoreDevDirectory.MissingRemoteUrl'                               = "Omitiendo repositorio con RemoteUrl faltante: {0}."
    'RestoreDevDirectory.MissingRelativePath'                            = "Omitiendo repositorio con RelativePath faltante para remoto {0}."
    'RestoreDevDirectory.UnsafeRelativePath'                             = "Omitiendo repositorio con ruta relativa no segura '{0}'."
    'RestoreDevDirectory.OutOfScopePath'                                 = "Omitiendo repositorio con ruta fuera de alcance '{0}'."
    'RestoreDevDirectory.ExistingTargetVerbose'                          = "Omitiendo destino de repositorio existente {0}."
    'RestoreDevDirectory.TargetExistsWarning'                            = "El directorio de destino {0} ya existe. Use -Force para sobrescribir o -SkipExisting para ignorar."
    'RestoreDevDirectory.ActionClone'                                    = "Clonar repositorio desde {0}"
    'RestoreDevDirectory.CloneFailed'                                    = "git clone para '{0}' falló con código de salida {1}."
    'RestoreDevDirectory.ConfigFailed'                                   = "Error al establecer git config {0} a '{1}' para repositorio en {2}. Código de salida: {3}"
    'RestoreDevDirectory.InaccessibleRemoteSkipped'                      = "Omitiendo repositorio '{0}' con remoto inaccesible: {1}"
    'RestoreDevDirectory.SystemFilterExcluded'                           = "Omitiendo repositorio '{0}' debido a SystemFilter '{1}' que no coincide con el equipo '{2}'"
    'RestoreDevDirectory.Complete'                                       = "Operación de restauración completada. {0} repositorios procesados"

    # Sync-DevDirectoryList
    'SyncDevDirectoryList.Start'                                         = "Iniciando Sync-DevDirectoryList con DirectoryPath: '{0}', RepositoryListPath: '{1}', Force: {2}, SkipExisting: {3}, ShowGitOutput: {4}"
    'SyncDevDirectoryList.ConfigurationRemoteName'                       = "Usando nombre remoto '{0}' desde la configuración"
    'SyncDevDirectoryList.DirectoryNormalized'                           = "Ruta de directorio normalizada: '{0}'"
    'SyncDevDirectoryList.SyncStart'                                     = "Iniciando proceso de sincronización"
    'SyncDevDirectoryList.ImportingFromFile'                             = "El archivo de lista de repositorios existe, importando entradas desde: '{0}'"
    'SyncDevDirectoryList.ActionCreateRootDirectory'                     = "Crear directorio raíz de repositorios"
    'SyncDevDirectoryList.ActionCloneFromList'                           = "Clonar {0} repositorio(s) desde la lista"
    'SyncDevDirectoryList.ActionCreateListDirectory'                     = "Crear directorio para archivo de lista de repositorios"
    'SyncDevDirectoryList.ActionUpdateListFile'                          = "Actualizar archivo de lista de repositorios"
    'SyncDevDirectoryList.ImportFailed'                                  = "No se puede importar lista de repositorios desde {0}: {1}"
    'SyncDevDirectoryList.UnsafeFileEntry'                               = "La entrada de lista de repositorios con ruta relativa no segura {0} ha sido omitida."
    'SyncDevDirectoryList.UnsafeLocalEntry'                              = "Ignorando repositorio local con ruta relativa no segura {0}."
    'SyncDevDirectoryList.RemoteUrlMismatch'                             = "Desajuste de URL remota para {0}. Manteniendo valor local {1} sobre valor de archivo {2}."
    'SyncDevDirectoryList.MissingRemoteUrl'                              = "La entrada de lista de repositorios {0} carece de RemoteUrl y no puede ser clonada."
    'SyncDevDirectoryList.MissingRootDirectory'                          = "El directorio raíz de repositorios {0} no existe; omitiendo operaciones de clonación."
    'SyncDevDirectoryList.InaccessibleRemoteSkipped'                     = "Omitiendo repositorio '{0}' con remoto inaccesible: {1}"
    'SyncDevDirectoryList.SystemFilterExcluded'                          = "Omitiendo repositorio '{0}' debido a SystemFilter '{1}' que no coincide con el equipo '{2}'"
    'SyncDevDirectoryList.Complete'                                      = "Sincronización completada. Recuento final de repositorios: {0}"

    # Set-DevDirectoryFilter
    'SetDevDirectoryFilter.Start'                                        = "Iniciando Set-DevDirectoryFilter con ParameterSetName: '{0}', SystemFilter: '{1}', Clear: {2}"
    'SetDevDirectoryFilter.ActionSet'                                    = "Establecer SystemFilter en '{0}' a '{1}'"
    'SetDevDirectoryFilter.Updating'                                     = "Actualizando SystemFilter para '{0}' de '{1}' a '{2}'"
    'SetDevDirectoryFilter.Updated'                                      = "SystemFilter actualizado para '{0}' a '{1}'"
    'SetDevDirectoryFilter.Complete'                                     = "Set-DevDirectoryFilter completado"

    # Publish-DevDirectoryList
    'PublishDevDirectoryList.Start'                                      = "Iniciando Publish-DevDirectoryList con ParameterSet: '{0}', Public: {1}, GistId: '{2}'"
    'PublishDevDirectoryList.AuthenticationDecrypt'                      = "Descifrando AccessToken para autenticación API de GitHub"
    'PublishDevDirectoryList.TokenEmpty'                                 = "El token de acceso proporcionado está vacío después de la conversión."
    'PublishDevDirectoryList.TokenEmptyError'                            = "AccessToken está vacío o es nulo"
    'PublishDevDirectoryList.ConfigurationApiUrl'                        = "Punto final de API configurado: '{0}'"
    'PublishDevDirectoryList.CollectPipelineObject'                      = "Recopilando objeto de repositorio desde pipeline"
    'PublishDevDirectoryList.NoPipelineData'                             = "No se recibieron metadatos de repositorio del pipeline."
    'PublishDevDirectoryList.ConvertToJson'                              = "Convirtiendo {0} objetos pipeline a JSON"
    'PublishDevDirectoryList.ReadFile'                                   = "Leyendo lista de repositorios desde archivo: '{0}'"
    'PublishDevDirectoryList.FormatDetected'                             = "Formato de archivo detectado: '{0}'"
    'PublishDevDirectoryList.ReadJsonDirect'                             = "El archivo es JSON, leyendo directamente"
    'PublishDevDirectoryList.ConvertFormat'                              = "Convirtiendo {0} a JSON"
    'PublishDevDirectoryList.EmptyContent'                               = "El contenido de la lista de repositorios está vacío. No se publicará nada."
    'PublishDevDirectoryList.SearchGist'                                 = "Buscando gist existente con descripción 'GitRepositoryList'"
    'PublishDevDirectoryList.GistFound'                                  = "Gist existente encontrado con ID: '{0}'"
    'PublishDevDirectoryList.GistNotFound'                               = "No se encontró gist existente, se creará uno nuevo"
    'PublishDevDirectoryList.QueryGistFailed'                            = "Error al consultar gists existentes: {0}"
    'PublishDevDirectoryList.UsingProvidedGistId'                        = "Usando GistId proporcionado: '{0}'"
    'PublishDevDirectoryList.PublishCanceled'                            = "Publicación cancelada por el usuario (WhatIf/Confirm)"
    'PublishDevDirectoryList.UpdatingGist'                               = "Actualizando gist existente: '{0}'"
    'PublishDevDirectoryList.CreatingGist'                               = "Creando nuevo gist"
    'PublishDevDirectoryList.Complete'                                   = "Lista de repositorios publicada con éxito en gist. GistId: '{0}', URL: '{1}'"
    'PublishDevDirectoryList.CleanupTokens'                              = "Limpiando tokens de autenticación"
    'PublishDevDirectoryList.ActionPublish'                              = "Publicar lista de repositorios DevDirManager en GitHub Gist"
    'PublishDevDirectoryList.TargetLabelCreate'                          = "Crear gist GitRepositoryList"
    'PublishDevDirectoryList.TargetLabelUpdate'                          = "Actualizar gist {0}"

    # Funciones internas - Get-DevDirectoryRemoteUrl
    'GetDevDirectoryRemoteUrl.Start'                                     = "Extrayendo URL remota para '{0}' desde repositorio: '{1}'"
    'GetDevDirectoryRemoteUrl.ConfigPath'                                = "Ruta de config git: '{0}'"
    'GetDevDirectoryRemoteUrl.ConfigMissing'                             = "No se encontró archivo .git\\config en {0}."
    'GetDevDirectoryRemoteUrl.ConfigNotFound'                            = "Archivo de config git no encontrado, devolviendo null"
    'GetDevDirectoryRemoteUrl.ReadingConfig'                             = "Leyendo archivo de config git"
    'GetDevDirectoryRemoteUrl.SearchingSection'                          = "Buscando patrón de sección: '{0}'"
    'GetDevDirectoryRemoteUrl.RemoteUrlFound'                            = "URL remota para '{0}': '{1}'"
    'GetDevDirectoryRemoteUrl.RemoteNotFound'                            = "Remoto '{0}' no encontrado o sin URL configurada"

    # Funciones internas - Get-DevDirectoryUserInfo
    'GetDevDirectoryUserInfo.Start'                                      = "Extrayendo información de usuario desde repositorio: '{0}'"
    'GetDevDirectoryUserInfo.ConfigPath'                                 = "Ruta de config git: '{0}'"
    'GetDevDirectoryUserInfo.ConfigMissing'                              = "No se encontró archivo .git\\config en {0}."
    'GetDevDirectoryUserInfo.ConfigNotFound'                             = "Archivo de config git no encontrado, devolviendo valores nulos"
    'GetDevDirectoryUserInfo.ReadingConfig'                              = "Leyendo archivo de config git"
    'GetDevDirectoryUserInfo.SectionFound'                               = "Sección [user] encontrada en config git"
    'GetDevDirectoryUserInfo.UserNameFound'                              = "user.name encontrado: '{0}'"
    'GetDevDirectoryUserInfo.UserEmailFound'                             = "user.email encontrado: '{0}'"
    'GetDevDirectoryUserInfo.Result'                                     = "Información de usuario extraída - UserName: '{0}', UserEmail: '{1}'"

    # Funciones internas - Test-DevDirectoryRemoteAccessible
    'TestDevDirectoryRemoteAccessible.EmptyUrl'                          = "La URL remota está vacía o contiene solo espacios en blanco; se omite la comprobación de accesibilidad remota."
    'TestDevDirectoryRemoteAccessible.CheckingRemote'                    = "Verificando accesibilidad del remoto: {0}"
    'TestDevDirectoryRemoteAccessible.Timeout'                           = "Tiempo de espera de verificación del remoto agotado después de {0} segundos para: {1}"
    'TestDevDirectoryRemoteAccessible.Accessible'                        = "El remoto es accesible: {0}"
    'TestDevDirectoryRemoteAccessible.NotAccessible'                     = "El remoto no es accesible (código de salida {0}): {1}"
    'TestDevDirectoryRemoteAccessible.Error'                             = "Error al verificar accesibilidad del remoto para {0} : {1}"
    'TestDevDirectoryRemoteAccessible.ProcessStartFailed'                = "No se pudo iniciar git ls-remote para el remoto '{0}'. Verifique la ruta del ejecutable de git."

    # Funciones internas - ConvertTo-NormalizedRelativePath
    'ConvertToNormalizedRelativePath.Start'                              = "Normalizando ruta relativa: '{0}'"
    'ConvertToNormalizedRelativePath.EmptyPath'                          = "La ruta está vacía, es espacio en blanco o '.', devolviendo '.'"
    'ConvertToNormalizedRelativePath.AfterTrim'                          = "Después de trim: '{0}'"
    'ConvertToNormalizedRelativePath.AfterCleanup'                       = "Después de limpieza de barras: '{0}'"
    'ConvertToNormalizedRelativePath.BecameEmpty'                        = "La ruta quedó vacía después de normalización, devolviendo '.'"
    'ConvertToNormalizedRelativePath.Result'                             = "Ruta normalizada: '{0}' -> '{1}'"

    # Funciones internas - Add-RepositoryTypeName
    'AddRepositoryTypeName.Start'                                        = "Agregando nombre de tipo DevDirManager.Repository al objeto"
    'AddRepositoryTypeName.Result'                                       = "Nombre de tipo agregado al objeto"

    # Show-DevDirectoryDashboard
    'ShowDevDirectoryDashboard.Start'                                    = "Iniciando Show-DevDirectoryDashboard con RootPath '{0}' (ShowWindow={1}, PassThru={2})."
    'ShowDevDirectoryDashboard.Complete'                                 = "Show-DevDirectoryDashboard finalizado."
    'ShowDevDirectoryDashboard.UnsupportedPlatform'                      = "Show-DevDirectoryDashboard requiere Windows con compatibilidad WPF."
    'ShowDevDirectoryDashboard.RequiresSta'                              = "Show-DevDirectoryDashboard debe ejecutarse en una sesión PowerShell configurada como STA."
    'ShowDevDirectoryDashboard.XamlMissing'                              = "No se pudo encontrar el archivo de diseño del panel '{0}'."
    'ShowDevDirectoryDashboard.WindowTitle'                              = "Panel DevDirManager"
    'ShowDevDirectoryDashboard.Header'                                   = "Centro de control DevDirManager"
    'ShowDevDirectoryDashboard.SubHeader'                                = "Descubra, exporte, restaure y sincronice repositorios en una sola ventana."
    'ShowDevDirectoryDashboard.DiscoverTabHeader'                        = "Explorar & Exportar"
    'ShowDevDirectoryDashboard.DiscoverPathLabel'                        = "Carpeta origen:"
    'ShowDevDirectoryDashboard.BrowseButton'                             = "Examinar"
    'ShowDevDirectoryDashboard.ScanButton'                               = "Analizar"
    'ShowDevDirectoryDashboard.ExportTabHeader'                          = "Exportar"
    'ShowDevDirectoryDashboard.ExportFormatLabel'                        = "Formato:"
    'ShowDevDirectoryDashboard.ExportPathLabel'                          = "Archivo destino:"
    'ShowDevDirectoryDashboard.ExportRunButton'                          = "Exportar"
    'ShowDevDirectoryDashboard.ImportTabHeader'                          = "Importar & Restaurar"
    'ShowDevDirectoryDashboard.ImportPathLabel'                          = "Archivo de datos:"
    'ShowDevDirectoryDashboard.ImportLoadButton'                         = "Cargar"
    'ShowDevDirectoryDashboard.RestoreTabHeader'                         = "Restaurar"
    'ShowDevDirectoryDashboard.RestoreListPathLabel'                     = "Archivo de datos:"
    'ShowDevDirectoryDashboard.RestoreDestinationLabel'                  = "Destino raíz:"
    'ShowDevDirectoryDashboard.RestoreRunButton'                         = "Restaurar"
    'ShowDevDirectoryDashboard.RestoreForce'                             = "Forzar reemplazo"
    'ShowDevDirectoryDashboard.RestoreSkipExisting'                      = "Omitir existentes"
    'ShowDevDirectoryDashboard.RestoreShowGitOutput'                     = "Mostrar salida de git"
    'ShowDevDirectoryDashboard.RestoreWhatIf'                            = "Simular"
    'ShowDevDirectoryDashboard.RestoreSummaryTemplate'                   = "Repositorios listos para restaurar: {0}"
    'ShowDevDirectoryDashboard.SyncTabHeader'                            = "Sincronizar"
    'ShowDevDirectoryDashboard.SyncDirectoryLabel'                       = "Área de trabajo:"
    'ShowDevDirectoryDashboard.SyncListPathLabel'                        = "Archivo de datos:"
    'ShowDevDirectoryDashboard.SyncRunButton'                            = "Sincronizar"
    'ShowDevDirectoryDashboard.SyncForce'                                = "Forzar reemplazo"
    'ShowDevDirectoryDashboard.SyncSkipExisting'                         = "Omitir existentes"
    'ShowDevDirectoryDashboard.SyncShowGitOutput'                        = "Mostrar salida de git"
    'ShowDevDirectoryDashboard.SyncWhatIf'                               = "Simular"
    'ShowDevDirectoryDashboard.SyncSummaryTemplate'                      = "Repositorios disponibles para sincronizar: {0}"
    'ShowDevDirectoryDashboard.Format.JSON'                              = "JSON (recomendado)"
    'ShowDevDirectoryDashboard.Format.CSV'                               = "CSV"
    'ShowDevDirectoryDashboard.Format.XML'                               = "XML"
    'ShowDevDirectoryDashboard.DiscoverSummaryTemplate'                  = "Repositorios descubiertos: {0}"
    'ShowDevDirectoryDashboard.ExportSummaryTemplate'                    = "Repositorios listos para exportar: {0}"
    'ShowDevDirectoryDashboard.ImportSummaryTemplate'                    = "Repositorios importados: {0}"
    'ShowDevDirectoryDashboard.Column.RelativePath'                      = "Ruta relativa"
    'ShowDevDirectoryDashboard.Column.RemoteName'                        = "Nombre remoto"
    'ShowDevDirectoryDashboard.Column.RemoteUrl'                         = "URL remota"
    'ShowDevDirectoryDashboard.Column.IsRemoteAccessible'                = "Acceso remoto"
    'ShowDevDirectoryDashboard.Column.UserName'                          = "Usuario"
    'ShowDevDirectoryDashboard.Column.UserEmail'                         = "Correo"
    'ShowDevDirectoryDashboard.Column.StatusDate'                        = "Fecha estado"
    'ShowDevDirectoryDashboard.Status.Ready'                             = "Listo."
    'ShowDevDirectoryDashboard.Status.ScanStarted'                       = "Analizando {0} ..."
    'ShowDevDirectoryDashboard.Status.ScanComplete'                      = "Análisis completado. Repositorios encontrados: {0}"
    'ShowDevDirectoryDashboard.Status.ExportStarted'                     = "Exportando a {0} ..."
    'ShowDevDirectoryDashboard.Status.ExportComplete'                    = "Exportación completada: {0}"
    'ShowDevDirectoryDashboard.Status.ImportStarted'                     = "Importando desde {0} ..."
    'ShowDevDirectoryDashboard.Status.ImportComplete'                    = "Importación completada. Repositorios cargados: {0}"
    'ShowDevDirectoryDashboard.Status.RestoreStarted'                    = "Restaurando repositorios en {0} ..."
    'ShowDevDirectoryDashboard.Status.RestoreComplete'                   = "Restauración completada en {0}"
    'ShowDevDirectoryDashboard.Status.SyncStarted'                       = "Sincronizando {0} con {1} ..."
    'ShowDevDirectoryDashboard.Status.SyncComplete'                      = "Sincronización completada. Repositorios procesados: {0}"
    'ShowDevDirectoryDashboard.Status.OperationFailed'                   = "Operación fallida: {0}"
    'ShowDevDirectoryDashboard.Message.NoRepositories'                   = "No hay repositorios para procesar. Ejecute un análisis o importe datos primero."
    'ShowDevDirectoryDashboard.Message.ExportPathMissing'                = "Seleccione un archivo de salida antes de exportar."
    'ShowDevDirectoryDashboard.Message.ImportPathMissing'                = "Seleccione un archivo de datos para importar."
    'ShowDevDirectoryDashboard.Message.RestorePathsMissing'              = "Seleccione un destino antes de restaurar."
    'ShowDevDirectoryDashboard.Message.SyncPathsMissing'                 = "Indique carpeta y archivo de datos antes de sincronizar."
    'ShowDevDirectoryDashboard.Message.ExportSuccess'                    = "Lista de repositorios exportada a {0}."
    'ShowDevDirectoryDashboard.InfoTitle'                                = "DevDirManager"
    'ShowDevDirectoryDashboard.ErrorTitle'                               = "Error de DevDirManager"
    'ShowDevDirectoryDashboard.ScanCompleted'                            = "Análisis finalizado para '{0}' con {1} repositorios."
    'ShowDevDirectoryDashboard.ExportCompleted'                          = "Exportación completada en '{0}' con formato {1} y {2} repositorios."
    'ShowDevDirectoryDashboard.ImportCompleted'                          = "Importación completada desde '{0}' con {1} repositorios."
    'ShowDevDirectoryDashboard.RestoreCompleted'                         = "Restauración completada en '{0}' con {1} repositorios."
    'ShowDevDirectoryDashboard.SyncCompleted'                            = "Sincronización completada del directorio '{0}' con la lista '{1}' y {2} repositorios."

    # Genéricos / Compartidos
    'RepositoryList.UsingDefaultFormat'                                  = "Usando formato predeterminado configurado '{0}' para archivo '{1}'."
    'GetDevDirectoryStatusDate.GitFolderMissing'                         = "No se encontró carpeta .git en {0}."

    # Get-DevDirectorySetting
    'GetDevDirectorySetting.Start'                                       = "Recuperando configuración del sistema DevDirManager"
    'GetDevDirectorySetting.FileNotFound'                                = "Archivo de configuración no encontrado: '{0}'. La configuración no ha sido inicializada. Ejecute primero Set-DevDirectorySetting."
    'GetDevDirectorySetting.ReadFailed'                                  = "Error al leer el archivo de configuración '{0}': {1}"
    'GetDevDirectorySetting.ReturnSingleValue'                           = "Devolviendo valor de configuración único: '{0}'"
    'GetDevDirectorySetting.Complete'                                    = "Configuración del sistema recuperada para el equipo '{0}'"
    'GetDevDirectorySetting.End'                                         = "Get-DevDirectorySetting completado"

    # Set-DevDirectorySetting
    'SetDevDirectorySetting.Start'                                       = "Configurando ajustes del sistema DevDirManager"
    'SetDevDirectorySetting.PathNormalized'                              = "{0} normalizado a: '{1}'"
    'SetDevDirectorySetting.PathTraversalError'                          = "{0} contiene secuencia de travesía de ruta no segura (..): '{1}'"
    'SetDevDirectorySetting.PathValidation'                              = "Validando ruta: '{0}'"
    'SetDevDirectorySetting.PathNotFound'                                = "Advertencia: La ruta '{0}' no existe"
    'SetDevDirectorySetting.ConfigUpdated'                               = "Configuración actualizada: {0} = '{1}'"
    'SetDevDirectorySetting.DirectoryCreated'                            = "Directorio de configuración creado: '{0}'"
    'SetDevDirectorySetting.Persisted'                                   = "Configuración guardada en '{0}'"
    'SetDevDirectorySetting.Complete'                                    = "Ajustes del sistema configurados exitosamente. Configuración guardada en '{0}'"
    'SetDevDirectorySetting.ShouldProcess.Target'                        = "Configuración del sistema DevDirManager"
    'SetDevDirectorySetting.ShouldProcess.Action'                        = "Establecer configuración '{0}' a '{1}'"
    'SetDevDirectorySetting.ShouldProcess.Reset'                         = "Restablecer todas las configuraciones a valores predeterminados"
    'SetDevDirectorySetting.ReadFailed'                                  = "Error al leer el archivo de configuración '{0}': {1}"
    'SetDevDirectorySetting.ScheduledTaskRegistered'                     = "Tarea programada registrada para sincronización automática."
    'SetDevDirectorySetting.ScheduledTaskRegisterFailed'                 = "Error al registrar la tarea programada: {0}"
    'SetDevDirectorySetting.ScheduledTaskUnregistered'                   = "Tarea programada desregistrada."
    'SetDevDirectorySetting.ScheduledTaskUnregisterFailed'               = "Error al desregistrar la tarea programada: {0}"

    # Invoke-DevDirectorySyncSchedule
    'InvokeDevDirectorySyncSchedule.Start'                               = "Iniciando sincronización configurada por el sistema para el equipo '{0}'"
    'InvokeDevDirectorySyncSchedule.NotConfigured.RepositoryListPath'    = "RepositoryListPath no está configurado. Ejecute 'Set-DevDirectorySetting -RepositoryListPath <ruta>' para configurar la ruta del archivo de lista de repositorios."
    'InvokeDevDirectorySyncSchedule.NotConfigured.LocalDevDirectory'     = "LocalDevDirectory no está configurado. Ejecute 'Set-DevDirectorySetting -LocalDevDirectory <ruta>' para configurar el directorio de desarrollo local."
    'InvokeDevDirectorySyncSchedule.RepositoryListNotFound'              = "Archivo de lista de repositorios no encontrado: '{0}'"
    'InvokeDevDirectorySyncSchedule.FilterApplied'                       = "{0} de {1} repositorios coinciden con el filtro del sistema para '{2}'"
    'InvokeDevDirectorySyncSchedule.NoMatchingRepositories'              = "Ningún repositorio coincide con el filtro del sistema para el equipo '{0}'"
    'InvokeDevDirectorySyncSchedule.Complete'                            = "Sincronización completada: {0} repositorios sincronizados"
    'InvokeDevDirectorySyncSchedule.ConfigUpdateFailed'                  = "Error al actualizar la configuración con el estado de error: {0}"
    'InvokeDevDirectorySyncSchedule.ShouldProcess.Target'                = "{0} repositorios desde '{1}'"
    'InvokeDevDirectorySyncSchedule.ShouldProcess.Action'                = "Sincronizar hacia '{0}'"
    'InvokeDevDirectorySyncSchedule.End'                                 = "Invoke-DevDirectorySyncSchedule completado"

    # Register-DevDirectoryScheduledSync
    'RegisterDevDirectoryScheduledSync.Start'                            = "Creando tarea programada '{0}'"
    'RegisterDevDirectoryScheduledSync.NotConfigured.RepositoryListPath' = "RepositoryListPath no está configurado. Ejecute 'Set-DevDirectorySetting -RepositoryListPath <ruta>' para configurar la ruta del archivo de lista de repositorios."
    'RegisterDevDirectoryScheduledSync.NotConfigured.LocalDevDirectory'  = "LocalDevDirectory no está configurado. Ejecute 'Set-DevDirectorySetting -LocalDevDirectory <ruta>' para configurar el directorio de desarrollo local."
    'RegisterDevDirectoryScheduledSync.Exists'                           = "La tarea programada '{0}' ya existe. Use -Force para sobrescribir."
    'RegisterDevDirectoryScheduledSync.RemovingExisting'                 = "Eliminando tarea programada existente '{0}'"
    'RegisterDevDirectoryScheduledSync.UnregisterFailed'                 = "Error al eliminar la tarea programada existente '{0}'"
    'RegisterDevDirectoryScheduledSync.RegisterFailed'                   = "Error al registrar la tarea programada '{0}'"
    'RegisterDevDirectoryScheduledSync.TaskNotReturned'                  = "La tarea programada '{0}' no se creó exitosamente"
    'RegisterDevDirectoryScheduledSync.Created'                          = "Tarea programada '{0}' creada: se ejecuta cada {1} minutos"
    'RegisterDevDirectoryScheduledSync.Complete'                         = "Registro de tarea programada completado"
    'RegisterDevDirectoryScheduledSync.TaskDescription'                  = "Sincronización automática de repositorios DevDirManager. Sincroniza repositorios desde la lista central configurada al directorio de desarrollo local."
    'RegisterDevDirectoryScheduledSync.AutoSyncEnabled'                  = "El ajuste AutoSyncEnabled se ha establecido en true."
    'RegisterDevDirectoryScheduledSync.ShouldProcess.Target'             = "Tarea programada '{0}'"
    'RegisterDevDirectoryScheduledSync.ShouldProcess.Action'             = "Registrar con intervalo de {0} minutos"

    # Unregister-DevDirectoryScheduledSync
    'UnregisterDevDirectoryScheduledSync.Start'                          = "Eliminando tarea programada '{0}'"
    'UnregisterDevDirectoryScheduledSync.NotFound'                       = "Tarea programada '{0}' no encontrada"
    'UnregisterDevDirectoryScheduledSync.UnregisterFailed'               = "Error al eliminar la tarea programada '{0}'"
    'UnregisterDevDirectoryScheduledSync.Removed'                        = "Tarea programada '{0}' eliminada"
    'UnregisterDevDirectoryScheduledSync.Complete'                       = "Eliminación de tarea programada completada"
    'UnregisterDevDirectoryScheduledSync.AutoSyncDisabled'               = "El ajuste AutoSyncEnabled se ha establecido en false."
    'UnregisterDevDirectoryScheduledSync.ShouldProcess.Target'           = "Tarea programada '{0}'"
    'UnregisterDevDirectoryScheduledSync.ShouldProcess.Action'           = "Eliminar tarea programada"

    # Write-ConfigFileWithRetry (internal helper)
    'WriteConfigFileWithRetry.Start'                                     = "Escribiendo archivo de configuración: '{0}'"
    'WriteConfigFileWithRetry.AcquiringLock'                             = "Adquiriendo bloqueo exclusivo en '{0}' (intento {1})"
    'WriteConfigFileWithRetry.LockAcquired'                              = "Bloqueo exclusivo adquirido en '{0}'"
    'WriteConfigFileWithRetry.Success'                                   = "Archivo de configuración '{0}' escrito exitosamente en el intento {1}"
    'WriteConfigFileWithRetry.IOError'                                   = "Intento de escritura {0} fallido: {1}"
    'WriteConfigFileWithRetry.Retrying'                                  = "Reintentando en {0}ms ({1} intentos restantes)"
    'WriteConfigFileWithRetry.UnexpectedError'                           = "Error inesperado al escribir el archivo: {0}"
    'WriteConfigFileWithRetry.AllAttemptsFailed'                         = "Error al escribir el archivo de configuración después de {0} intentos. El archivo puede estar bloqueado por otro proceso."
    'WriteConfigFileWithRetry.Complete'                                  = "Write-ConfigFileWithRetry completado para '{0}'"

    # DevDirSettingsImport (internal script)
    'DevDirSettingsImport.ConfigLoaded'                                  = "Configuración de DevDirManager cargada desde '{0}'"
    'DevDirSettingsImport.ConfigLoadFailed'                              = "Error al cargar la configuración desde '{0}': {1}"
    'DevDirSettingsImport.ConfigNotFound'                                = "No se encontró archivo de configuración en '{0}'. Usando valores predeterminados."
    'DevDirSettingsImport.CreateDefaultConfig'                           = "Creando archivo de configuración predeterminado en '{0}'"
    'DevDirSettingsImport.ConfigFileCreated'                             = "Archivo de configuración creado exitosamente en '{0}'"
    'DevDirSettingsImport.AutoSyncInconsistent.TaskMissing'              = "AutoSyncEnabled es true, pero la tarea programada '{0}' no existe. Ejecute Register-DevDirectoryScheduledSync para crearla."
    'DevDirSettingsImport.AutoSyncInconsistent.TaskDisabled'             = "AutoSyncEnabled es true, pero la tarea programada '{0}' está desactivada. Actívela o establezca AutoSyncEnabled en false."
    'DevDirSettingsImport.AutoSyncInconsistent.TaskExists'               = "AutoSyncEnabled es false, pero la tarea programada '{0}' existe y está activada. Elimine la tarea o establezca AutoSyncEnabled en true."

    # Test-DevDirectorySystemFilter
    'TestDevDirectorySystemFilter.EmptyFilter'                           = "SystemFilter está vacío, todos los sistemas coinciden"
    'TestDevDirectorySystemFilter.WildcardFilter'                        = "SystemFilter es '*', todos los sistemas coinciden"
    'TestDevDirectorySystemFilter.MatchedExclusion'                      = "El equipo '{0}' coincide con el patrón de exclusión '{1}'"
    'TestDevDirectorySystemFilter.MatchedInclusion'                      = "El equipo '{0}' coincide con el patrón de inclusión '{1}'"
    'TestDevDirectorySystemFilter.Excluded'                              = "El equipo '{0}' excluido por el filtro '{1}'"
    'TestDevDirectorySystemFilter.InclusionResult'                       = "Resultado de verificación de inclusión del equipo '{0}': {1}"
    'TestDevDirectorySystemFilter.NotExcluded'                           = "El equipo '{0}' no excluido, permitido"

    # Show-DevDirectoryDashboard - Settings Tab
    'ShowDevDirectoryDashboard.SettingsTabHeader'                        = "Configuración"
    'ShowDevDirectoryDashboard.Settings.ConfigSection'                   = "Configuración"
    'ShowDevDirectoryDashboard.Settings.RepoListPathLabel'               = "Lista de repos:"
    'ShowDevDirectoryDashboard.Settings.LocalDevDirLabel'                = "Carpeta dev local:"
    'ShowDevDirectoryDashboard.Settings.AutomationSection'               = "Automatización"
    'ShowDevDirectoryDashboard.Settings.AutoSyncEnabled'                 = "Habilitar sincronización automática"
    'ShowDevDirectoryDashboard.Settings.SyncIntervalLabel'               = "Intervalo de sync:"
    'ShowDevDirectoryDashboard.Settings.SyncIntervalUnit'                = "minutos"
    'ShowDevDirectoryDashboard.Settings.RegisterSyncButton'              = "Crear tarea programada"
    'ShowDevDirectoryDashboard.Settings.UnregisterSyncButton'            = "Eliminar tarea programada"
    'ShowDevDirectoryDashboard.Settings.StatusSection'                   = "Estado"
    'ShowDevDirectoryDashboard.Settings.ComputerNameLabel'               = "Nombre del equipo:"
    'ShowDevDirectoryDashboard.Settings.TaskStatusLabel'                 = "Tarea programada:"
    'ShowDevDirectoryDashboard.Settings.LastSyncTimeLabel'               = "Última sync:"
    'ShowDevDirectoryDashboard.Settings.LastSyncResultLabel'             = "Último resultado:"
    'ShowDevDirectoryDashboard.Settings.QuickSyncButton'                 = "Sync rápido"
    'ShowDevDirectoryDashboard.Settings.SaveButton'                      = "Guardar"
    'ShowDevDirectoryDashboard.Settings.ResetButton'                     = "Restablecer"
    'ShowDevDirectoryDashboard.Settings.NeverSynced'                     = "Nunca"
    'ShowDevDirectoryDashboard.Settings.TaskRegistered'                  = "Registrada ({0})"
    'ShowDevDirectoryDashboard.Settings.TaskNotRegistered'               = "No registrada"

    # Show-DevDirectoryDashboard - SystemFilter Column
    'ShowDevDirectoryDashboard.Column.SystemFilter'                      = "Filtro de sistema"

    # Show-DevDirectoryDashboard - Settings Tab Status Messages
    'ShowDevDirectoryDashboard.Status.SavingSettings'                    = "Guardando configuración..."
    'ShowDevDirectoryDashboard.Status.SettingsSaved'                     = "Configuración guardada correctamente."
    'ShowDevDirectoryDashboard.Status.ResettingSettings'                 = "Restableciendo configuración predeterminada..."
    'ShowDevDirectoryDashboard.Status.SettingsReset'                     = "Configuración restablecida a valores predeterminados."
    'ShowDevDirectoryDashboard.Status.RegisteringTask'                   = "Creando tarea programada..."
    'ShowDevDirectoryDashboard.Status.TaskRegistered'                    = "Tarea programada creada."
    'ShowDevDirectoryDashboard.Status.UnregisteringTask'                 = "Eliminando tarea programada..."
    'ShowDevDirectoryDashboard.Status.TaskUnregistered'                  = "Tarea programada eliminada."
    'ShowDevDirectoryDashboard.Status.QuickSyncStarted'                  = "Iniciando sync rápido para {0}..."
    'ShowDevDirectoryDashboard.Status.QuickSyncComplete'                 = "Sync rápido completado. Repositorios sincronizados: {0}"

    # Show-DevDirectoryDashboard - Settings Tab Messages
    'ShowDevDirectoryDashboard.Message.InvalidSyncInterval'              = "El intervalo de sync debe ser un número entre 1 y 1440 minutos."
    'ShowDevDirectoryDashboard.Message.ConfirmReset'                     = "¿Está seguro de que desea restablecer toda la configuración a los valores predeterminados?"
    'ShowDevDirectoryDashboard.Message.TaskRegistered'                   = "La tarea de sincronización programada se ha creado correctamente."
    'ShowDevDirectoryDashboard.Message.TaskUnregistered'                 = "La tarea de sincronización programada se ha eliminado."
    'ShowDevDirectoryDashboard.Message.QuickSyncComplete'                = "Sync rápido completado correctamente. {0} repositorios sincronizados."

    # Show-DevDirectoryDashboard - Settings Tab Log Strings
    'ShowDevDirectoryDashboard.SettingsSaved'                            = "Configuración guardada a través del panel."
    'ShowDevDirectoryDashboard.SettingsReset'                            = "Configuración restablecida a través del panel."
    'ShowDevDirectoryDashboard.TaskRegistered'                           = "Tarea programada creada a través del panel."
    'ShowDevDirectoryDashboard.TaskUnregistered'                         = "Tarea programada eliminada a través del panel."
    'ShowDevDirectoryDashboard.QuickSyncCompleted'                       = "Sync rápido completado a través del panel. Repositorios: {0}"
}