{"adoption": {"forks": 402, "observed_at": "2026-08-28T04:10:07.738183+00:00", "stars": 7860}, "canonical_url": "https://ross.abutalabs.com/products/stranslate", "card": {"archived": false, "artifact_type": "application", "description": "A ready-to-go translation ocr tool developed with WPF/WPF 开发的一款即用即走的翻译、OCR工具", "domain": ["developer-tools", "cross-platform"], "enriched": true, "function": ["ocr", "nlp", "tts", "plugin-system", "gui"], "health_score": 98, "homepage": "https://stranslate.zggsong.com", "language": "C#", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["STranslate/STranslate"], "name": "STranslate/STranslate", "platform": ["windows"], "pushed_at": "2026-08-19T08:34:10+00:00", "repo": "STranslate/STranslate", "stars": 7860, "tags": ["translation", "screen-ocr", "hotkey", "wordbook", "llm-translation", "wpf", "natural-language-processing", "localization", "desktop"], "topics": ["wpf", "ocr", "plugin", "translate", "stranslate"], "urls": [], "use_cases": ["translate selected text with a hotkey", "compare translations from multiple services at once", "extract text from screenshots with OCR", "translate text inside images preserving layout", "read text aloud with text-to-speech", "polish or summarize text with an LLM", "save vocabulary to a personal wordbook"], "what_it_is": "STranslate is a ready-to-go Windows desktop translation and OCR tool built with WPF. It aggregates dozens of translation services (OpenAI, Gemini, DeepL, Google, etc.), offers offline OCR, TTS, and an extensible plugin system.", "when_to_avoid": ["you need a Linux or macOS tool", "you need a CLI or API-only translation service", "you need a web-based translation interface"], "when_to_choose": ["you use Windows and want an instant, portable translator/OCR utility", "you want to query multiple translation engines concurrently", "you need offline OCR without sending images to the cloud", "you want to extend functionality via plugins (TTS, OCR, custom services)"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/stranslate", "repo": "STranslate/STranslate", "role": "main", "score": 95}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:07.738183+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:33:46.713459+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "76eb9518718f2ad0e1412961adca9619d2b224c7a80c42c3b2d7ff81eb94f604", "fetched_at": "2026-08-28T04:10:07.738183+00:00", "kind": "readme", "missing": false, "url": "https://github.com/STranslate/STranslate"}, {"content_hash": "b7f3b1bf96f80f469bc61f3a45ae6aa52ded108352168315932e58a1ac7aa013", "fetched_at": "2026-08-29T08:30:16.740929+00:00", "kind": "homepage", "missing": false, "url": "https://stranslate.zggsong.com"}, {"content_hash": "75d5b5b1f695b42d5a9092a3356740089c4ef1312bbd84271152f8804517b5f0", "fetched_at": "2026-08-29T08:30:16.743739+00:00", "kind": "site_page", "missing": false, "url": "https://stranslate.zggsong.com/docs"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:07.738183+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:33:46.713459+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "76eb9518718f2ad0e1412961adca9619d2b224c7a80c42c3b2d7ff81eb94f604", "fetched_at": "2026-08-28T04:10:07.738183+00:00", "kind": "readme", "missing": false, "url": "https://github.com/STranslate/STranslate"}, {"content_hash": "b7f3b1bf96f80f469bc61f3a45ae6aa52ded108352168315932e58a1ac7aa013", "fetched_at": "2026-08-29T08:30:16.740929+00:00", "kind": "homepage", "missing": false, "url": "https://stranslate.zggsong.com"}, {"content_hash": "75d5b5b1f695b42d5a9092a3356740089c4ef1312bbd84271152f8804517b5f0", "fetched_at": "2026-08-29T08:30:16.743739+00:00", "kind": "site_page", "missing": false, "url": "https://stranslate.zggsong.com/docs"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:33:46.713459+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "76eb9518718f2ad0e1412961adca9619d2b224c7a80c42c3b2d7ff81eb94f604", "fetched_at": "2026-08-28T04:10:07.738183+00:00", "kind": "readme", "missing": false, "url": "https://github.com/STranslate/STranslate"}, {"content_hash": "b7f3b1bf96f80f469bc61f3a45ae6aa52ded108352168315932e58a1ac7aa013", "fetched_at": "2026-08-29T08:30:16.740929+00:00", "kind": "homepage", "missing": false, "url": "https://stranslate.zggsong.com"}, {"content_hash": "75d5b5b1f695b42d5a9092a3356740089c4ef1312bbd84271152f8804517b5f0", "fetched_at": "2026-08-29T08:30:16.743739+00:00", "kind": "site_page", "missing": false, "url": "https://stranslate.zggsong.com/docs"}], "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:10:07.738183+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:07.738183+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:07.738183+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:33:46.713459+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "76eb9518718f2ad0e1412961adca9619d2b224c7a80c42c3b2d7ff81eb94f604", "fetched_at": "2026-08-28T04:10:07.738183+00:00", "kind": "readme", "missing": false, "url": "https://github.com/STranslate/STranslate"}, {"content_hash": "b7f3b1bf96f80f469bc61f3a45ae6aa52ded108352168315932e58a1ac7aa013", "fetched_at": "2026-08-29T08:30:16.740929+00:00", "kind": "homepage", "missing": false, "url": "https://stranslate.zggsong.com"}, {"content_hash": "75d5b5b1f695b42d5a9092a3356740089c4ef1312bbd84271152f8804517b5f0", "fetched_at": "2026-08-29T08:30:16.743739+00:00", "kind": "site_page", "missing": false, "url": "https://stranslate.zggsong.com/docs"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:07.738183+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:07.738183+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:33:46.713459+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "76eb9518718f2ad0e1412961adca9619d2b224c7a80c42c3b2d7ff81eb94f604", "fetched_at": "2026-08-28T04:10:07.738183+00:00", "kind": "readme", "missing": false, "url": "https://github.com/STranslate/STranslate"}, {"content_hash": "b7f3b1bf96f80f469bc61f3a45ae6aa52ded108352168315932e58a1ac7aa013", "fetched_at": "2026-08-29T08:30:16.740929+00:00", "kind": "homepage", "missing": false, "url": "https://stranslate.zggsong.com"}, {"content_hash": "75d5b5b1f695b42d5a9092a3356740089c4ef1312bbd84271152f8804517b5f0", "fetched_at": "2026-08-29T08:30:16.743739+00:00", "kind": "site_page", "missing": false, "url": "https://stranslate.zggsong.com/docs"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:07.738183+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:07.738183+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:07.738183+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:33:46.713459+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "76eb9518718f2ad0e1412961adca9619d2b224c7a80c42c3b2d7ff81eb94f604", "fetched_at": "2026-08-28T04:10:07.738183+00:00", "kind": "readme", "missing": false, "url": "https://github.com/STranslate/STranslate"}, {"content_hash": "b7f3b1bf96f80f469bc61f3a45ae6aa52ded108352168315932e58a1ac7aa013", "fetched_at": "2026-08-29T08:30:16.740929+00:00", "kind": "homepage", "missing": false, "url": "https://stranslate.zggsong.com"}, {"content_hash": "75d5b5b1f695b42d5a9092a3356740089c4ef1312bbd84271152f8804517b5f0", "fetched_at": "2026-08-29T08:30:16.743739+00:00", "kind": "site_page", "missing": false, "url": "https://stranslate.zggsong.com/docs"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:07.738183+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:07.738183+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:33:46.713459+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "76eb9518718f2ad0e1412961adca9619d2b224c7a80c42c3b2d7ff81eb94f604", "fetched_at": "2026-08-28T04:10:07.738183+00:00", "kind": "readme", "missing": false, "url": "https://github.com/STranslate/STranslate"}, {"content_hash": "b7f3b1bf96f80f469bc61f3a45ae6aa52ded108352168315932e58a1ac7aa013", "fetched_at": "2026-08-29T08:30:16.740929+00:00", "kind": "homepage", "missing": false, "url": "https://stranslate.zggsong.com"}, {"content_hash": "75d5b5b1f695b42d5a9092a3356740089c4ef1312bbd84271152f8804517b5f0", "fetched_at": "2026-08-29T08:30:16.743739+00:00", "kind": "site_page", "missing": false, "url": "https://stranslate.zggsong.com/docs"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:33:46.713459+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "76eb9518718f2ad0e1412961adca9619d2b224c7a80c42c3b2d7ff81eb94f604", "fetched_at": "2026-08-28T04:10:07.738183+00:00", "kind": "readme", "missing": false, "url": "https://github.com/STranslate/STranslate"}, {"content_hash": "b7f3b1bf96f80f469bc61f3a45ae6aa52ded108352168315932e58a1ac7aa013", "fetched_at": "2026-08-29T08:30:16.740929+00:00", "kind": "homepage", "missing": false, "url": "https://stranslate.zggsong.com"}, {"content_hash": "75d5b5b1f695b42d5a9092a3356740089c4ef1312bbd84271152f8804517b5f0", "fetched_at": "2026-08-29T08:30:16.743739+00:00", "kind": "site_page", "missing": false, "url": "https://stranslate.zggsong.com/docs"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:33:46.713459+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "76eb9518718f2ad0e1412961adca9619d2b224c7a80c42c3b2d7ff81eb94f604", "fetched_at": "2026-08-28T04:10:07.738183+00:00", "kind": "readme", "missing": false, "url": "https://github.com/STranslate/STranslate"}, {"content_hash": "b7f3b1bf96f80f469bc61f3a45ae6aa52ded108352168315932e58a1ac7aa013", "fetched_at": "2026-08-29T08:30:16.740929+00:00", "kind": "homepage", "missing": false, "url": "https://stranslate.zggsong.com"}, {"content_hash": "75d5b5b1f695b42d5a9092a3356740089c4ef1312bbd84271152f8804517b5f0", "fetched_at": "2026-08-29T08:30:16.743739+00:00", "kind": "site_page", "missing": false, "url": "https://stranslate.zggsong.com/docs"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:33:46.713459+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "76eb9518718f2ad0e1412961adca9619d2b224c7a80c42c3b2d7ff81eb94f604", "fetched_at": "2026-08-28T04:10:07.738183+00:00", "kind": "readme", "missing": false, "url": "https://github.com/STranslate/STranslate"}, {"content_hash": "b7f3b1bf96f80f469bc61f3a45ae6aa52ded108352168315932e58a1ac7aa013", "fetched_at": "2026-08-29T08:30:16.740929+00:00", "kind": "homepage", "missing": false, "url": "https://stranslate.zggsong.com"}, {"content_hash": "75d5b5b1f695b42d5a9092a3356740089c4ef1312bbd84271152f8804517b5f0", "fetched_at": "2026-08-29T08:30:16.743739+00:00", "kind": "site_page", "missing": false, "url": "https://stranslate.zggsong.com/docs"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 96, "rhythm": 91}, "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": 1355, "days_push": 14, "days_rel": 63, "gap_med": 6, "n_releases_24m": 36}, "score": 95, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}