From 1ad34ff7b7cf2228226a84d499d38eac1e8048d2 Mon Sep 17 00:00:00 2001 From: "Mauro Rosero P." Date: Fri, 21 Mar 2025 17:12:52 -0500 Subject: [PATCH] [IMPROVED] Internacionalizar ai_token.sh para usar variables de mensajes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- README.md | 18 ++++++++++++++++++ bin/ai_token.sh | 34 +++++++++++++++++----------------- bin/msg/developers.es | 18 ++++++++++++++++++ 3 files changed, 53 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 355cb38..f48db90 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/bin/ai_token.sh b/bin/ai_token.sh index c1a6aa3..6eee3d7 100755 --- a/bin/ai_token.sh +++ b/bin/ai_token.sh @@ -5,7 +5,7 @@ #Author : 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 diff --git a/bin/msg/developers.es b/bin/msg/developers.es index 7628d91..3be2d85 100644 --- a/bin/msg/developers.es +++ b/bin/msg/developers.es @@ -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." +