[IMPROVED] Internacionalizar ai_token.sh para usar variables de mensajes

- Reemplaza todos los strings hardcodeados por variables de mensajes
- Añade soporte completo para internacionalización
- Actualiza documentación en README.md sobre el gestor de tokens
- Incluye información detallada sobre proveedores soportados

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Mauro Rosero P. 2025-03-21 17:12:52 -05:00
parent 894235d7e5
commit 1ad34ff7b7
Signed by: mrosero
GPG key ID: 83BD2A5F674B7E26
3 changed files with 53 additions and 17 deletions

View file

@ -66,6 +66,7 @@ bin/update.sh
| `bin/aider_install.sh -u` | Desinstala Aider CLI |
| `bin/sora_enable.sh` | Activa el alias 'sora' para Aider permanentemente |
| `bin/sora_disable.sh` | Desactiva el alias 'sora' para Aider |
| `bin/ai_token.sh` | Gestiona tokens de múltiples proveedores de IA vía SOPS |
### Herramientas para Editores de Código
@ -162,6 +163,23 @@ bin/aider_install.sh -u
Aider es un asistente de código basado en IA que te permite colaborar con modelos de lenguaje de OpenAI directamente desde la terminal. El script de instalación utiliza el instalador oficial de Aider.
#### Gestor de Tokens de IA
```bash
# Gestionar tokens de diferentes proveedores de IA
bin/ai_token.sh
```
El script `ai_token.sh` proporciona una forma centralizada y segura de gestionar tokens de API para múltiples proveedores de IA:
- Muestra un menú interactivo con los proveedores disponibles definidos en `bin/config/ai.tokens`
- Solicita y valida el token de API de forma segura
- Encripta el token usando SOPS y lo almacena en `$HOME/sops/{provider}.sops.yaml`
- Incluye verificaciones de seguridad (longitud del token, caracteres válidos)
- Soporte completo para internacionalización
Proveedores soportados por defecto: Anthropic Claude, OpenAI ChatGPT, Google Gemini, Groq, DeepSeek, HuggingFace, Replicate, OpenRouter, Brave Search, Serper Search, Voyage RAG, Apify y más.
La configuración de proyectos se almacena en `bin/config/projects.dat`, donde se encuentra el nombre de la carpeta de proyectos utilizada por el sistema.
### Instalación de Helix Editor

View file

@ -5,7 +5,7 @@
#Author : Sora Rosero One <sora@rosero.one>
#Generated by : Claude Code (claude-3-7-sonnet-20250219)
#Created : 2025/03/21 16:06:20
#Modified : 2025/03/21 16:53:56
#Modified : 2025/03/21 17:11:27
#Version : 1.0.0
#Use Notes :
# Gestiona múltiples tokens de IA definidos en ai.tokens
@ -55,20 +55,20 @@ source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/console.lib"
# Cargar mensajes en el idioma del sistema o español por defecto
load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head"
load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "developers"
apps_title="Gestor de Tokens de IA"
apps_title="${aimsg_100}"
title="${head_000} ${head_002}"
# Comprobar dependencias necesarias
check_dependencies() {
# Verificar que 'dialog' esté instalado
if ! command -v dialog &>/dev/null; then
echo "${npm_001}"
echo "${qrmsg_013}"
exit 1
fi
# Verificar que 'sops' esté instalado
if ! command -v sops &>/dev/null; then
dialog --backtitle "$title" --title "${head_error}" --msgbox "${npm_051}" 7 50
dialog_error_box "${head_error}" "${aimsg_115}"
exit 1
fi
}
@ -79,7 +79,7 @@ load_providers() {
local config_file="$BIN_HOME/$BIN_BASE/$BIN_CFGS/ai.tokens"
if [ ! -f "$config_file" ]; then
echo "ERROR: El archivo de configuración de proveedores no existe: $config_file"
echo "${aimsg_111} $config_file"
exit 1
fi
@ -148,15 +148,15 @@ show_provider_menu() {
done
# Añadir opción para salir
options+="\n999:Salir"
options+="\n999:${aimsg_113}"
# Mostrar menú usando console.lib
choice=$(menu_actions "Seleccione el proveedor de IA para configurar su token:" "$options" 12)
choice=$(menu_actions "${aimsg_101}" "$options" 12)
# Verificar salida
if [ "$choice" == "${head_key_end}" ] || [ "$choice" == "999" ]; then
clear
echo "Operación cancelada por el usuario."
echo "${aimsg_108}"
exit 0
fi
@ -174,7 +174,7 @@ get_token() {
while true; do
# Usar dialog_input_pass de console.lib
dialog_input_pass "Token de API para $provider_name" "Ingrese su token de API para $provider_code:" ""
dialog_input_pass "${aimsg_102} $provider_name" "${aimsg_103} $provider_code:" ""
# Comprobar si el usuario canceló
if [ $codex -ne 0 ]; then
@ -183,16 +183,16 @@ get_token() {
# Validar token
if [ -z "$value" ]; then
dialog_error_box "${head_error}" "El token no puede estar vacío. Por favor ingrese un token válido."
dialog_error_box "${head_error}" "${aimsg_104}"
continue
fi
# Comprobar longitud del token (debe tener al menos 20 caracteres)
if [ ${#value} -lt 20 ]; then
dialog_error_box "${head_warning}" "El token parece ser demasiado corto. Verifique que haya copiado el token completo."
dialog_error_box "${head_warning}" "${aimsg_105}"
# Preguntar si continuar
dialog_yesno "¿Desea continuar de todos modos con este token?"
dialog_yesno "${aimsg_106}"
if [ $result -ne 0 ]; then
continue
fi
@ -225,10 +225,10 @@ main() {
sops_file="$BIN_HOME/$BIN_SOPS/${provider_code}.sops.yaml"
if [ -f "$sops_file" ]; then
# Preguntar con dialog_yesno de console.lib
dialog_yesno "El archivo $sops_file ya existe. ¿Desea sobrescribirlo?"
dialog_yesno "${aimsg_107}"
if [ $result -ne 0 ]; then
dialog_error_box "${head_canceled}" "Operación cancelada por el usuario."
dialog_error_box "${head_canceled}" "${aimsg_108}"
clear
exit 0
fi
@ -237,16 +237,16 @@ main() {
# Obtener token
token=$(get_token "$provider_desc" "$provider_code")
if [ $? -ne 0 ]; then
dialog_error_box "${head_canceled}" "Operación cancelada por el usuario."
dialog_error_box "${head_canceled}" "${aimsg_108}"
clear
exit 0
fi
# Encriptar token
if encrypt_token "$provider_code" "$token"; then
dialog_error_box "${head_success}" "El token de $provider_desc ha sido encriptado exitosamente en: $sops_file"
dialog_error_box "${head_success}" "${aimsg_109} $sops_file"
else
dialog_error_box "${head_error}" "Falló la encriptación del token de $provider_desc."
dialog_error_box "${head_error}" "${aimsg_110}"
clear
exit 1
fi

View file

@ -243,3 +243,21 @@ glmsg_050="Para autenticarse con GitLab, ejecute:"
glmsg_051="Para más información, visite: https://gitlab.com/gitlab-org/cli/blob/main/docs/index.md"
glmsg_052="ERROR: La instalación de GitLab CLI falló."
# Mensajes para ai_token.sh
aimsg_100="GESTOR DE TOKENS DE IA"
aimsg_101="Seleccione el proveedor de IA para configurar su token:"
aimsg_102="Token de API para"
aimsg_103="Ingrese su token de API para"
aimsg_104="El token no puede estar vacío. Por favor ingrese un token válido."
aimsg_105="El token parece ser demasiado corto. Verifique que haya copiado el token completo."
aimsg_106="¿Desea continuar de todos modos con este token?"
aimsg_107="El archivo ya existe. ¿Desea sobrescribirlo?"
aimsg_108="Operación cancelada por el usuario."
aimsg_109="El token ha sido encriptado exitosamente en:"
aimsg_110="Falló la encriptación del token."
aimsg_111="Error: El archivo de configuración de proveedores no existe:"
aimsg_112="El token contiene caracteres no estándar. Verifique que sea correcto."
aimsg_113="Salir"
aimsg_114="Selección inválida. Intente nuevamente."
aimsg_115="SOPS no está instalado. Por favor, ejecute bin/bootstrap.sh para instalar las herramientas necesarias."