{"id":17012467,"url":"https://github.com/keksuccino/linguji","last_synced_at":"2025-07-21T08:03:01.927Z","repository":{"id":228047160,"uuid":"769167867","full_name":"Keksuccino/Linguji","owner":"Keksuccino","description":"AI batch translator for subtitle files that also translates video files with subtitles!","archived":false,"fork":false,"pushed_at":"2025-05-26T19:22:55.000Z","size":509,"stargazers_count":15,"open_issues_count":8,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-05-26T20:32:16.061Z","etag":null,"topics":["ai","ass-subtitles","batch-translation","deepl","deeplx","ffmpeg","gemini","gemini-pro","generative-ai","java","large-language-models","libre-translate","llm","mkv","mkvtoolnix","srt-subtitles","subtitle","subtitle-translation","subtitle-translator","translator"],"latest_commit_sha":null,"homepage":"","language":"Java","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/Keksuccino.png","metadata":{"files":{"readme":"README.md","changelog":"changelog_notes.txt","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}},"created_at":"2024-03-08T13:37:15.000Z","updated_at":"2025-05-26T19:22:58.000Z","dependencies_parsed_at":"2025-04-12T08:51:10.085Z","dependency_job_id":null,"html_url":"https://github.com/Keksuccino/Linguji","commit_stats":null,"previous_names":["keksuccino/linguji"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/Keksuccino/Linguji","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Keksuccino%2FLinguji","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Keksuccino%2FLinguji/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Keksuccino%2FLinguji/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Keksuccino%2FLinguji/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Keksuccino","download_url":"https://codeload.github.com/Keksuccino/Linguji/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Keksuccino%2FLinguji/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266263057,"owners_count":23901354,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["ai","ass-subtitles","batch-translation","deepl","deeplx","ffmpeg","gemini","gemini-pro","generative-ai","java","large-language-models","libre-translate","llm","mkv","mkvtoolnix","srt-subtitles","subtitle","subtitle-translation","subtitle-translator","translator"],"created_at":"2024-10-14T06:10:40.705Z","updated_at":"2025-07-21T08:03:01.921Z","avatar_url":"https://github.com/Keksuccino.png","language":"Java","funding_links":["https://paypal.me/TimSchroeter","https://www.patreon.com/keksuccino"],"categories":[],"sub_categories":[],"readme":"\u003ca href=\"https://discord.gg/rhayah27GC\"\u003e\u003cimg src=\"https://img.shields.io/discord/704163135787106365?style=flat\u0026label=Discord\u0026labelColor=%234260f5\u0026color=%2382aeff\" /\u003e\u003c/a\u003e \u003ca href=\"https://paypal.me/TimSchroeter\"\u003e\u003cimg src=\"https://img.shields.io/badge/Donate%20via%20PayPal-%233d91ff?style=flat\" /\u003e\u003c/a\u003e \u003ca href=\"https://www.patreon.com/keksuccino\"\u003e\u003cimg src=\"https://img.shields.io/badge/Support%20me%20on%20Patreon-%23ff9b3d?style=flat\" /\u003e\u003c/a\u003e\n\n# Linguji\n\n_**lingua** : Italian word for \"language\"._\u003cbr\u003e\n_**jimaku** ( 字幕 / じまく ) : Japanese word for \"subtitles\"._\n\n\u003cbr\u003e\n\nLinguji is a subtitle translator powered by AI!\u003cbr\u003e\nIt automatically batch-translates subtitle files and even video files with subtitles!\n\n## Key Features\n\n- **Batch Translation:** Automatically translate multiple files at once without manually choosing the next file!\n- **GUI:** Everything in Linguji can be done in a GUI, so no need for manually editing configs or typing commands.\n- **Supported Formats:**\n  - **Subtitles:** Currently handles ASS and SRT (SubRip) files.\n  - **Videos:** Works with MKV files containing ASS and SRT subtitles.\n- **Translation Engines:** Linguji supports various translation engines, including Gemini, OpenRouter, DeepL, [DeepLX](https://github.com/OwO-Network/DeepLX), and Libre Translate. Choose the engine that best suits your needs.\n- **Formatting Preservation:** One of Linguji's priorities is to preserve the original subtitle text formatting as good as possible during translation.\n- **Advanced Error Handling:** Linguji strives to keep the translation process going by working around various errors. This includes adapting its translation process to avoid triggering the same error again, like adjusting Gemini's safety threshold after encountering profanity or safety-related blocks.\n- **Fallback Translator:** The fallback translation engine is used when the primary engine fails to translate the given subtitles.\n\n\u003cbr\u003e\n\n[\u003cimg width=\"634\" src=\"https://github.com/Keksuccino/Linguji/assets/35544624/1ca53281-df10-4684-bea5-f21bd71b005d\"\u003e](https://www.youtube.com/watch?v=JTlyWOfve20)\n\n# Getting Started\n\nDownload the [latest release](https://github.com/Keksuccino/Linguji/releases) for your operating system, then run the `linguji` executable inside.\n\nTo start translating subtitle files, simply **set a valid Gemini API key** and put all your subtitle files and video files into the `input_subtitles` folder (by default) that should be at the same path as the `linguji` executable.\n\nNow simply hit the **Start Translation Process** button and see the magic happen!\n\nIf you need help getting Linguji to work or have any questions, please join my [Discord](https://discord.gg/rhayah27GC).\n\n# Add Custom Translatable Languages\n\nYour language is missing from the languages menu? No problem!\u003cbr\u003e\nYou can add custom languages by adding them to the `custom_locales.json` file that gets created at the same path as Linguji's exectuable when running it for the first time.\n\nFor example, lets add a custom language to the file:\n\n```\n[\n  {\n    \"name\": \"example_name_lowercase_without_spaces\",\n    \"display_name\": \"Example Display Name\",\n    \"iso\": \"ex\",\n    \"iso3\": \"exa\"\n  },\n  {\n    \"name\": \"example_name_lowercase_without_spaces_2\",\n    \"display_name\": \"Example Display Name 2\",\n    \"iso\": \"ex\",\n    \"iso3\": \"exa\"\n  },\n  {\n    \"name\": \"trigedasleng\",\n    \"display_name\": \"Trigedasleng\",\n    \"iso\": \"ts\",\n    \"iso3\": \"tri\"\n  }\n]\n```\n\nWe added the fictional language `trigedasleng` below the existing two example entries.\u003cbr\u003e\nDon't forget the **comma** after every `}`, except the very last one!\n\nWhen adding **real languages**, make sure to use the correct **ISO** and **ISO-3** language codes!\u003cbr\u003e\nThere's a pretty good [list with language codes](https://www.loc.gov/standards/iso639-2/php/code_list.php) you can use for that.\u003cbr\u003e\nThe first code (3-letter-code) is the ISO-3 code, the second one (2-letter-code) is the ISO code.\u003cbr\u003e\nIf there are two or more ISO-3 codes for the same language, use the one with the `(T)` at the end, but don't include the `(T)`.\n\nKeep an eye on the **debug log** when using custom languages, to see if the translation engines support it!\n\n# Requirements\n\n- Java 17\n\n- Linguji needs [FFMPEG](https://www.gyan.dev/ffmpeg/builds/) (full build) and [MkvToolNix](https://mkvtoolnix.download/downloads.html) for video file support.\u003cbr\u003e\nIf you plan to translate video files, make sure to place all FFMPEG executables in the `ffmpeg` directory and all MkvToolNix executables in the `mkvtoolnix` directory. Both directories get created at the same path as the Linguji executable when running Linguji for the first time.\n\n# Copyright \u0026 Licensing\n\nLinguji © Copyright 2025 Keksuccino.\u003cbr\u003e\nLinguji is licensed under Apache-2.0.\n\nLinguji uses a modified version of [JavaFX Dark Theme](https://github.com/antoniopelusi/JavaFX-Dark-Theme) by Antonio Pelusi.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeksuccino%2Flinguji","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkeksuccino%2Flinguji","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeksuccino%2Flinguji/lists"}