{"id":30735547,"url":"https://github.com/quackster/ollama.codetranslator","last_synced_at":"2026-05-14T12:32:52.429Z","repository":{"id":312971868,"uuid":"1049502930","full_name":"Quackster/Ollama.CodeTranslator","owner":"Quackster","description":"Bulk translate source code files from one language to another using Ollama LLM API.","archived":false,"fork":false,"pushed_at":"2025-10-01T08:53:00.000Z","size":72,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-27T03:06:27.046Z","etag":null,"topics":["amd","api","artificial-intelligence","code-converter","code-translator","nvidia","ollama","ollama-app","tool"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Quackster.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-03T04:39:53.000Z","updated_at":"2026-04-17T14:21:57.000Z","dependencies_parsed_at":null,"dependency_job_id":"c902acb7-28b6-4365-b97b-543f22d22a92","html_url":"https://github.com/Quackster/Ollama.CodeTranslator","commit_stats":null,"previous_names":["quackster/ollama.codetranslator"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Quackster/Ollama.CodeTranslator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Quackster%2FOllama.CodeTranslator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Quackster%2FOllama.CodeTranslator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Quackster%2FOllama.CodeTranslator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Quackster%2FOllama.CodeTranslator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Quackster","download_url":"https://codeload.github.com/Quackster/Ollama.CodeTranslator/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Quackster%2FOllama.CodeTranslator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33024986,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["amd","api","artificial-intelligence","code-converter","code-translator","nvidia","ollama","ollama-app","tool"],"created_at":"2025-09-03T20:09:39.192Z","updated_at":"2026-05-14T12:32:52.417Z","avatar_url":"https://github.com/Quackster.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CodeTranslator\n\nA command-line tool that automatically translates source code between different programming languages using AI models via Ollama API.\n\n## Table of Contents\n\n1. [Features](#features)\n2. [Requirements](#requirements)\n3. [Installation](#installation)\n4. [Usage](#usage)\n   - [Basic Usage](#basic-usage)\n   - [Advanced Usage](#advanced-usage)\n   - [Command Line Options](#command-line-options)\n   - [Supported Languages](#supported-languages)\n5. [File Extensions Configuration](#file-extensions-configuration)\n   - [extensions.json](#extensionsjson)\n   - [Adding Custom Extensions](#adding-custom-extensions)\n   - [Example Configuration](#example-configuration)\n6. [Custom Prompts](#custom-prompts)\n   - [Prompt Variables](#prompt-variables)\n   - [Example Prompt File](#example-prompt-file)\n7. [Examples](#examples)\n8. [Output Structure](#output-structure)\n9. [Logging](#logging)\n10. [Error Handling](#error-handling)\n11. [Contributing](#contributing)\n12. [License](#license)\n\n---\n\n## Features\n\n- **Multi-language Support**: Translate between 40+ programming languages\n- **Batch Processing**: Convert entire directories at once\n- **Custom Prompts**: Fine-tune translation behavior with custom prompt files\n- **Flexible Output**: Custom output directories and file organization\n- **Detailed Logging**: Track translation progress\n- **Safety Features**: Overwrite protection and dry-run mode\n- **AI Integration**: Works with any Ollama-compatible model\n- **Configurable Extensions**: Customize file extensions through extensions.json\n\n## Requirements\n\n- .NET 6.0 or later\n- [Ollama](https://ollama.ai/) running locally or access to an Ollama-compatible API endpoint\n- An AI model capable of code translation (default: `qwen2.5-coder:3b`)\n\n## Installation\n\n1. Clone the repository:\n```bash\ngit clone https://github.com/Quackster/Ollama.CodeTranslator.git\ncd Ollama.CodeTranslator\n```\n\n2. Build the project:\n```bash\ndotnet build -c Release\n```\n## Usage\n\n### Basic Usage\n\n```bash\nCodeTranslator --directory /path/to/source/code\n```\n\nThis will translate all Java files to C# by default.\n\n### Advanced Usage\n\n```bash\nCodeTranslator --directory ./my-project \\\n               --source Java \\\n               --target Python \\\n               --model llama2:13b \\\n               --output ./converted \\\n               --log ./translation.log \\\n               --verbose\n```\n\n### Command Line Options\n\n| Option | Description | Default |\n|--------|-------------|---------|\n| `--directory` | **Required.** Input directory containing source files | - |\n| `--source` | Source programming language | `Java` |\n| `--target` | Target programming language | `CSharp` |\n| `--model` | Ollama model name | `qwen2.5-coder:3b` |\n| `--api-url` | Ollama API endpoint | `http://localhost:11434/api/generate` |\n| `--output` | Output directory | `{input-dir}/converted_{target}` |\n| `--log` | Log file path | `{input-dir}/translation_dispatch.log` |\n| `--overwrite` | Overwrite existing output files | `false` |\n| `--dry-run` | Show what would be translated without doing it | `false` |\n| `--verbose` | Enable verbose logging output | `false` |\n\n### Supported Languages\n\n**Programming Languages:**\nC#, VB.NET, F#, Java, Kotlin, Scala, Groovy, C, C++, Objective-C, Rust, Go, JavaScript, TypeScript, Python, Ruby, PHP, Perl, Dart, Lua, CoffeeScript, R, Shell/Bash, PowerShell, Haskell, Clojure, Elixir, Erlang, Lisp, Scheme, MATLAB, Racket, Elm\n\n**Markup \u0026 Data Languages:**\nHTML, XML, CSS, JSON, YAML, Markdown, TOML, INI, CSV, SQL, GraphQL\n\n**Build Systems:**\nDockerfile, Makefile, CMake\n\n## File Extensions Configuration\n\n### extensions.json\n\nCodeTranslator uses a configurable `extensions.json` file to map programming languages to their corresponding file extensions. This file is automatically created in your working directory when you first run the tool.\n\n**Key Features:**\n- **Auto-generation**: The file is created automatically with sensible defaults if it doesn't exist\n- **Case-insensitive**: Language names are matched case-insensitively\n- **Multiple extensions**: Each language can have multiple file extensions\n- **Customizable**: You can edit the file to add your own extensions or modify existing ones\n\n### Adding Custom Extensions\n\nTo add support for additional file extensions or new languages:\n\n1. **Run the tool once** to generate the default `extensions.json` file\n2. **Edit the file** to add your custom mappings\n3. **Use your custom language names** in the `--source` and `--target` parameters\n\n### Example Configuration\n\nHere's a sample of what the `extensions.json` file looks like:\n\n```json\n{\n  \"csharp\": [\".cs\"],\n  \"java\": [\".java\"],\n  \"python\": [\".py\", \".pyw\"],\n  \"javascript\": [\".js\", \".mjs\", \".cjs\"],\n  \"typescript\": [\".ts\", \".tsx\"],\n  \"cpp\": [\".cpp\", \".cc\", \".cxx\"],\n  \"lingo\": [\".ls\"],\n  \"shockwave\": [\".ls\"]\n}\n```\n\n**Adding a new language:**\n```json\n{\n  \"myCustomLang\": [\".mcl\", \".custom\"],\n  \"assembly\": [\".asm\", \".s\"]\n}\n```\n\n**Multiple aliases for the same language:**\n```json\n{\n  \"csharp\": [\".cs\"],\n  \"c#\": [\".cs\"],\n  \"cs\": [\".cs\"]\n}\n```\n\n**Note**: After modifying `extensions.json`, the changes take effect immediately on the next run.\n\n## Custom Prompts\n\nCodeTranslator supports custom prompt files to fine-tune translation behavior. Create a prompt file with one of these naming patterns:\n\n- `{source}-to-{target}.prompt` (e.g., `Java-to-Python.prompt`)\n- `{target}.prompt` (e.g., `Python.prompt`) \n- `{source}.prompt` (e.g., `Java.prompt`)\n\n### Prompt Variables\n\nYour prompt file can use these placeholders:\n- `{sourceLang}` - Source language name\n- `{targetLang}` - Target language name  \n- `{code}` - The source code to translate\n\n### Example Prompt File\n\n```\nYou are an expert code translator specializing in {sourceLang} to {targetLang} conversion.\n\nConvert the following {sourceLang} code to idiomatic {targetLang}, following these guidelines:\n- Preserve all functionality and logic\n- Use {targetLang} naming conventions\n- Add appropriate comments explaining complex translations\n- Ensure the code follows {targetLang} best practices\n\nSource code:\n{code}\n\nProvide only the translated {targetLang} code, no explanations or markdown formatting.\n```\n\n## Examples\n\n### Translate Java project to C#\n```bash\nCodeTranslator --directory ./java-project --source Java --target CSharp\n```\n\n### Convert Python scripts to JavaScript with custom model\n```bash\nCodeTranslator --directory ./python-scripts \\\n               --source Python \\\n               --target JavaScript \\\n               --model codellama:13b-instruct\n```\n\n### Dry run to preview translations\n```bash\nCodeTranslator --directory ./source --dry-run --verbose\n```\n\n### Use remote Ollama instance\n```bash\nCodeTranslator --directory ./code \\\n               --api-url http://remote-server:11434/api/generate\n```\n\n### Working with custom extensions\n```bash\n# First run creates extensions.json with defaults\nCodeTranslator --directory ./my-code\n\n# Edit extensions.json to add your language mappings\n# Then use your custom language names:\nCodeTranslator --directory ./legacy-code --source Lingo --target JavaScript\n```\n\n## Output Structure\n\nCodeTranslator preserves the directory structure of your input files:\n\n```\ninput-directory/\n├── src/\n│   ├── Main.java\n│   └── utils/\n│       └── Helper.java\n├── extensions.json          # Auto-generated config file\n└── converted_CSharp/\n    └── src/\n        ├── Main.cs\n        └── utils/\n            └── Helper.cs\n```\n\n## Logging\n\nAll translation activities are logged with timestamps:\n\n```\n2024-03-15T10:30:00.000Z SENT src/Main.java -\u003e src/Main.cs\n2024-03-15T10:30:15.000Z TRANSLATED src/Main.java -\u003e src/Main.cs\n2024-03-15T10:30:20.000Z SENT src/utils/Helper.java -\u003e src/utils/Helper.cs\n```\n\n## Error Handling\n\n- **Missing directories**: Tool exits with error code 2 if input directory doesn't exist\n- **Missing prompt files**: Exits with error if user-specified prompt file is not found  \n- **Existing files**: Skipped with warning unless `--overwrite` is specified\n- **API errors**: Individual file failures are logged and processing continues\n- **Incomplete translations**: Detected by keywords like \"incomplete\" or \"provide more details\"\n- **Network timeouts**: 30-minute timeout per API request to handle large files\n- **File system errors**: Proper error handling for file I/O operations\n\n**Exit Codes:**\n- `0`: Success - all files processed\n- `1`: Invalid command line arguments\n- `2`: Missing input directory or prompt file\n\n## License\n\nThis project is licensed under the Apache 2.0 license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquackster%2Follama.codetranslator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fquackster%2Follama.codetranslator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquackster%2Follama.codetranslator/lists"}