{"meta":{"title":"Traducción de código a un lenguaje de programación diferente","intro":"Chat de Copiloto puede ayudarle a reescribir el código para realizar las mismas operaciones, pero en un lenguaje de programación diferente.","product":"GitHub Copilot","breadcrumbs":[{"href":"/es/copilot","title":"GitHub Copilot"},{"href":"/es/copilot/tutorials","title":"Tutoriales"},{"href":"/es/copilot/tutorials/copilot-cookbook","title":"Recetario de GitHub Copilot"},{"href":"/es/copilot/tutorials/copilot-cookbook/refactor-code","title":"Refactorización de código"},{"href":"/es/copilot/tutorials/copilot-cookbook/refactor-code/translate-code","title":"Traducción de código"}],"documentType":"article","redirectedFrom":"/es/copilot/tutorials/copilot-chat-cookbook/refactor-code/translate-code"},"body":"# Traducción de código a un lenguaje de programación diferente\n\nChat de Copiloto puede ayudarle a reescribir el código para realizar las mismas operaciones, pero en un lenguaje de programación diferente.\n\nHay muchas razones por las que es posible que quieras mover código de un lenguaje de programación a otro. Cada lenguaje de programación tiene sus propias ventajas y debilidades, y es posible que quieras aprovechar las características que están disponibles en otro lenguaje. Por ejemplo, es posible que quieras mover código a un lenguaje que tenga un mejor rendimiento o que use escritura segura para ayudar a evitar errores.\n\nPara facilitar el mantenimiento del código, es posible que quieras mover código a un lenguaje que se use más ampliamente en tu organización. Por ejemplo, si pocas personas de tu organización conocen un lenguaje más antiguo, como Perl, es posible que quieras mover cualquier código de Perl que todavía esté en uso para un lenguaje más usado, como Python o JavaScript.\n\nCopilot puede ayudarle a traducir código de un idioma a otro. Traducir un archivo independiente, como un script, es sencillo. Este proceso se describe en este artículo.\n\nTraducir un proyecto que contiene varios archivos es un proceso más complejo y se describe en [Uso de GitHub Copilot para migrar un project a otro lenguaje de programación](/es/copilot/tutorials/using-copilot-to-migrate-a-project).\n\n## Escenario de ejemplo\n\nEl siguiente script de Perl solicita al usuario que escriba la ruta de acceso a un archivo de texto. Comprueba lo que el usuario escribe y si se encuentra un archivo de texto en esa ruta de acceso, genera un recuento de palabras y un recuento de caracteres para el contenido del archivo.\n\n```perl copy id=perl-script\n#!/usr/bin/perl\nuse strict;\nuse warnings;\nuse File::Spec;\nuse File::Basename;\n\nprint \"Please enter the path to a local text file: \";\nchomp(my $file_path = <STDIN>);\n\nif ($file_path =~ /[`|;&<>(){}\\[\\]]/ || !File::Spec->file_name_is_absolute($file_path) && dirname($file_path) ne '.') {\n    die \"Invalid file path. Please provide a valid path.\\n\";\n}\nif (!-e $file_path) {\n    die \"File not found. Please provide an existing file path.\\n\";\n}\n\nopen(my $fh, '<', $file_path) or die \"Could not open file '$file_path': $!\\n\";\n\nmy $is_binary = 0;\nwhile (read($fh, my $buffer, 1024)) {\n    if ($buffer =~ /[^\\x09\\x0A\\x0D\\x20-\\x7E]/) {\n        $is_binary = 1;\n        last;\n    }\n}\nclose($fh);\n\nif ($is_binary) {\n    die \"The file '$file_path' is a binary file. Please provide a text file.\\n\";\n}\n\nopen($fh, '<', $file_path) or die \"Could not open file '$file_path': $!\\n\";\nmy $content = do { local $/; <$fh> };\nclose($fh);\n\nmy $word_count = scalar(split /\\s+/, $content);\nmy $char_count = length($content);\n\nprint \"The file '$file_path' contains $word_count words and $char_count characters.\\n\";\n```\n\n## Mensaje de ejemplo\n\n```copilot copy prompt ref=perl-script\nTell me how I can convert this Perl script to Typescript. The functionality and output of the new script should be exactly the same as the existing one. Also tell me how to run the new file using Node.\n```\n\n## Respuesta de ejemplo\n\nCopilot genera el código Typescript siguiente.\n\n> \\[!NOTE]\n> Chat de Copiloto las respuestas son no deterministas, por lo que puede obtener una respuesta diferente de la que se muestra aquí.\n\n```typescript copy\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport * as readline from 'readline';\n\nconst rl = readline.createInterface({\n    input: process.stdin,\n    output: process.stdout\n});\n\nrl.question('Please enter the path to a local text file: ', (filePath) => {\n    rl.close();\n\n    if (/[`|;&<>(){}\\[\\]]/.test(filePath) || (!path.isAbsolute(filePath) && path.dirname(filePath) !== '.')) {\n        console.error('Invalid file path. Please provide a valid path.');\n        process.exit(1);\n    }\n\n    if (!fs.existsSync(filePath)) {\n        console.error('File not found. Please provide an existing file path.');\n        process.exit(1);\n    }\n\n    const fileBuffer = fs.readFileSync(filePath);\n    const isBinary = fileBuffer.some(byte => byte < 9 || (byte > 13 && byte < 32) || byte > 126);\n\n    if (isBinary) {\n        console.error(`The file '${filePath}' is a binary file. Please provide a text file.`);\n        process.exit(1);\n    }\n\n    const content = fileBuffer.toString('utf-8');\n    const wordCount = content.split(/\\s+/).length;\n    const charCount = content.length;\n\n    console.log(`The file '${filePath}' contains ${wordCount} words and ${charCount} characters.`);\n});\n```\n\nGuarde el archivo como `wordcount.ts`.\n\nCopilot continúa para explicar cómo ejecutar el nuevo archivo mediante Node.\n\n1. **Instala Node.js:** si aún no lo tienes, descarga e instala Node.js desde el sitio web oficial: <https://nodejs.org/>.\n\n2. **Instala TypeScript:**\n\n   ```shell\n   npm install -g typescript\n   ```\n\n3. **Compila el código TypeScript:**\n\n   ```shell\n   tsc wordcount.ts\n   ```\n\n   Esto creará un archivo `wordcount.js` en el mismo directorio.\n\n4. **Ejecuta el archivo JavaScript con Node.js:**\n\n   ```shell\n   node wordcount.js\n   ```\n\n## Lectura adicional\n\n* [Ingeniería de mensajes para GitHub Copilot Chat](/es/copilot/using-github-copilot/prompt-engineering-for-github-copilot)\n* [Procedimientos recomendados para usar GitHub Copilot](/es/copilot/using-github-copilot/best-practices-for-using-github-copilot)"}