{"adoption": {"forks": 452, "observed_at": "2026-08-28T04:09:28.440643+00:00", "stars": 5746}, "canonical_url": "https://ross.abutalabs.com/products/misakatranslator", "card": {"archived": false, "artifact_type": "application", "description": "御坂翻译器—Galgame/文字游戏/漫画多语种实时机翻工具", "domain": ["gaming-tools", "cross-platform"], "enriched": true, "function": ["ocr", "nlp", "tts", "image-processing", "gui"], "health_score": 23, "homepage": null, "language": "C#", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "maintenance", "member_repos": ["hanmin0822/MisakaTranslator"], "name": "hanmin0822/MisakaTranslator", "platform": ["windows", "dotnet"], "pushed_at": "2025-02-05T05:31:48+00:00", "repo": "hanmin0822/MisakaTranslator", "stars": 5746, "tags": ["visual-novel", "galgame", "manga-translation", "text-hooking", "machine-translation", "real-time-translation", "textractor", "natural-language-processing", "localization", "desktop"], "topics": ["galgame", "visual-novel", "translator", "csharp", "manga", "comic", "manga-reader", "translate"], "urls": [], "use_cases": ["translate visual novels in real time while playing", "play Japanese galgames with automatic English or Chinese translation", "extract game text via hook or OCR for translation", "translate manga and comics with OCR", "look up words with Mecab tokenization and dictionaries while reading Japanese games", "use offline translation without an internet connection"], "what_it_is": "MisakaTranslator is a Windows desktop application that provides real-time machine translation for Galgames, text-based games, and manga. It extracts game text via hooking (Textractor-based) or OCR, then translates it through multiple online and offline translation APIs.", "when_to_avoid": ["you need a maintained tool with new features - the project is in maintenance mode only", "you are not on Windows - the app targets .NET Framework 4.7.2 and Windows game hooking", "you want to translate non-game desktop applications or web content", "you need a mobile or Linux/macOS translation tool"], "when_to_choose": ["you play visual novels or text-heavy games in a language you don't read and want live translated text overlay", "you need both hook-based and OCR-based text extraction to cover many games", "you want offline translation capability or dictionary/TTS support for language learning", "you want to translate manga panels"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/misakatranslator", "repo": "hanmin0822/MisakaTranslator", "role": "main", "score": 25}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:28.440643+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:53:19.338101+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "78920a6eb54e3f1a926c12505ea2b92340fee20472251dc849482db7443b1228", "fetched_at": "2026-08-28T04:09:28.440643+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hanmin0822/MisakaTranslator"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:28.440643+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:53:19.338101+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "78920a6eb54e3f1a926c12505ea2b92340fee20472251dc849482db7443b1228", "fetched_at": "2026-08-28T04:09:28.440643+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hanmin0822/MisakaTranslator"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:53:19.338101+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "78920a6eb54e3f1a926c12505ea2b92340fee20472251dc849482db7443b1228", "fetched_at": "2026-08-28T04:09:28.440643+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hanmin0822/MisakaTranslator"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:09:28.440643+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:28.440643+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:28.440643+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:53:19.338101+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "78920a6eb54e3f1a926c12505ea2b92340fee20472251dc849482db7443b1228", "fetched_at": "2026-08-28T04:09:28.440643+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hanmin0822/MisakaTranslator"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:28.440643+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:28.440643+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:53:19.338101+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "78920a6eb54e3f1a926c12505ea2b92340fee20472251dc849482db7443b1228", "fetched_at": "2026-08-28T04:09:28.440643+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hanmin0822/MisakaTranslator"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:28.440643+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:28.440643+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:28.440643+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:53:19.338101+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "78920a6eb54e3f1a926c12505ea2b92340fee20472251dc849482db7443b1228", "fetched_at": "2026-08-28T04:09:28.440643+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hanmin0822/MisakaTranslator"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:28.440643+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:28.440643+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:53:19.338101+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "78920a6eb54e3f1a926c12505ea2b92340fee20472251dc849482db7443b1228", "fetched_at": "2026-08-28T04:09:28.440643+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hanmin0822/MisakaTranslator"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:53:19.338101+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "78920a6eb54e3f1a926c12505ea2b92340fee20472251dc849482db7443b1228", "fetched_at": "2026-08-28T04:09:28.440643+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hanmin0822/MisakaTranslator"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:53:19.338101+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "78920a6eb54e3f1a926c12505ea2b92340fee20472251dc849482db7443b1228", "fetched_at": "2026-08-28T04:09:28.440643+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hanmin0822/MisakaTranslator"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:53:19.338101+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "78920a6eb54e3f1a926c12505ea2b92340fee20472251dc849482db7443b1228", "fetched_at": "2026-08-28T04:09:28.440643+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hanmin0822/MisakaTranslator"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 5, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2374, "days_push": 574, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 25, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}